une question sur du php , pourquoi ca ne fonctionne pas ?

WRInaute impliqué
Salut,

Je suis confrontée à un probleme sur ma boutique Oscommerce et j'ai besoin de faire un truc qui n'existe pas en contribution et personne ne peut apparemment m'aider sur le forum dOs Commerce.

Serait-il possible à l'un d'entre vous, de lire ce que j'ai fait et me corriger. Mais surtout me dire pourquoi ca ne fonctionne pas.

Mon besoin:
J'offre 2 options de prix pour la livraison.

Prix 1 = Avec assurance
Prix 2 = SANS assurance.
Par default, le bouton coché est celui AVEC assurance.

Ce que je souhaite faire, c'est si le client change l'option pour quand meme prendre la livraison sans assurance, qu'un popup s'ouvre avec un message dedans pour qu'il soit bien contient des risques qu'il prend.

Ce que j'ai fait,

J'ai créé un fichier popup.php
Puis dans ma page de checkout-shipping.php sous le code
Code:
// Ca c'est le code pour que le prix avec assurance soit séléctionné par default
if ( !tep_session_is_registered('shipping') || ( tep_session_is_registered('shipping') && ($shipping == false) && (tep_count_shipping_modules() > 1) ) )
 {
 $shipping = $shipping_modules->shipping_default('chronopost');
}

// Si je mets zones a la place de chronopost alors c'est mon tarif sans assurance qui est sélectionné par défault.


// Ce que j'ai ajouté ensuite pour mon popup
if ($shipping == 'zones') 
{ 
require(DIR_WS_INCLUDES . 'popup.php'); 
}


// et la fin 
require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_SHIPPING);

  $breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
  $breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));

  $content = CONTENT_CHECKOUT_SHIPPING;
  $javascript = $content . '.js';

  require(DIR_WS_TEMPLATES . TEMPLATE_NAME . '/' . TEMPLATENAME_MAIN_PAGE);

  require(DIR_WS_INCLUDES . 'application_bottom.php');

Alors ca doit sse voir que je suis completement nulle mais j'aimerai savoir et comprendre pourquoi mon popup ne fonctionne pas

Si quelqu'un peut me guider un peu ce serait super a vous!


Merci d'avance :wink:
 
WRInaute impliqué
salut,

Merci pour ton interet!

Et bien le pop up ne s'affiche pas.

Je viens de supprimer le code que j'ai mis dans le pop up pour avoir la taille. Mais je crois que ca vient surtout de checkout-shipping !

Merci d'avance
 
WRInaute occasionnel
Il faudrait avoir le code javascript et/ou html qui fait en sorte que le pop-up s'affiche...
 
WRInaute impliqué
J'ai fait un test hors Os commerce avec une page : mapage.php et popup.php et cela marche bien.
Sauf que ce n'est pas cela que j'ai besoin car ce n'est pas dans la page elle meme et si le visiteur a un antipop up ca ne sert à rien, le message d'alerte ne sera pas vu.

Je cherche une espece de rectangle qui fassce une alerte, un peu comme les carrés gris windows d'alerte ou il y a le message d'erreur grace à un Onclic ou quelque chose du genre.

Ou alors un peu comme la:
http://www1.france-jeunes.net/
Il y a une fenetre interieure mais il me la faut uniquement lorsque la personne change le mode de transport.

Je pense que c'est bien plus complexe que ce que j'imaginais :oops:
 
Nouveau WRInaute
Bonjour,

Pourquoi pas :
Code:
// Ce que j'ai ajouté ensuite pour mon popup
if ($shipping == 'zones')
{
echo '<div id="danger">';
echo '<p>'.Ton texte.'</p>';
echo '</div>;
}

Avec un div dans le css, position: absolute, background : ....

Je sais qu'un div dans un tableau c'est pas top mais en absolute .... Ca passe des fois.

Cordialement
 
WRInaute impliqué
The ghost a dit:
Bonjour,


Code:
// Ce que j'ai ajouté ensuite pour mon popup
if ($shipping == 'zones')
{
echo '<div id="danger">';
echo '<p>'.Ton texte.'</p>';
echo '</div>';
}

Avec un div dans le css, position: absolute, background : ....

Je sais qu'un div dans un tableau c'est pas top mais en absolute .... Ca passe des fois.

Cordialement
Salut,

Merci pour ton aide mais je ne comprends pas bien. J'ai testé et cela me donne une parse error sur la ligne de "danger" mais j'aimerai bien plus ta solution a ce que je suis en train d'essayer car avec le css, je pourrais en plus mettre aux couleurs et ce serait super :D

J'ai essayé cela avant de voir ta réponse:
Code:
if ($shipping == 'zones') 
{ 
echo '<SCRIPT language="Javascript">
<!--
alert("Attention, Sans assurance vous comprenez que General Market n\'est pas responsable des pertes !!!");

// -->

</SCRIPT>';

Mais ca ne change rien, pas de message d'alerte qui s'ouvre. je pense qu'en fait le probleme vient surement a ce niveau:

Code:
if ($shipping == 'zones')
Je pense que ce n'est pas écrit correctement mais je ne sais plus quoi essayer. :(
 
Nouveau WRInaute
Bonjour,

Essaye comme ça , ce sera sûrement mieux :oops:

Code:
// Ce que j'ai ajouté ensuite pour mon popup
if ($shipping == 'zones')
{
echo '<div id="danger">';
echo '<p>'.'Attention, Sans assurance vous comprenez que General Market n\'est pas responsable des pertes !!!.'.</p>';
echo '</div>';
}

dans le Css :
Code:
#danger
{
position: absolute;
top: 200px;
right: 300px;
margin: 0;
padding: 0px;
background-color: #fbebdb;
width: 100px;
height: 25px;
border: 2px solid #7a9d59;
text-align: center;
}

Par exemple. Le code n'est pas testé.

Cordialement.
 
WRInaute accro
Pour que ce qui est là dessus fonctionne, il faut que la page soit rechargée non ???

>> Pourquoi pas un simple javascript en "onclick" ?
 
Nouveau WRInaute
Et oui il faut recharger la page ou plutôt placer ce code dans la suivante (mieux !) , le javascript devrait également fonctionner mais il faudrait changer je pense le formulaire de choix pour pouvoir l'intégrer donc renter un peu plus dans le code ce qui est faisable mais pas en 5mn ! Et puis il la fameuse possibilité qu'a le visiteur de désactiver cette fonction (rajouter liens d'évitement ...)
 
WRInaute impliqué
Merci beaucoup pour vos réponses.

Je suis obligée d'attendre un peu pour tester cela directement qu'il n'y est personne en ligne (23h00 environ).

En attendant, je vais le tester comme cela pour le comprendre.

Je vous tiens informés dés que j'ai pu le faire.

Pour le java, oui j'y avais pensé aussi s'il est désactivé, la personne ne verra pas non plus, comme les pop up avec les antipopup mais je crois qu'il y a plus de personne qui ont un anti popup que ceux qui désactivent le java.

enfin, je suis un peu sur une terre inconnue mais ca me plait beaucoup! :D

Merci pour votre aide

A tout a l'heure
 
WRInaute impliqué
j'ai presque fini !

Pour le moment , sur des feuilles blanches et feuille de style neuve. Ca fonctionne bien. J'ai donc modifié les couleurs, l'emplacement et le texte.

sinon, je me suis apercue, que je collais le code dans la mauvaise page . Je suis en train de faire des tests mais ca ne s'affiche pas encore au bon moment .

Voila je continue et je vous dis comment j'y arrive en esperant pouvoir finir toute seule.

Merci encore!!!!
 
WRInaute impliqué
Finalement y a un truc que je ne comprends pas.

Ca ne s'affiche pas au moment du clic et ca ne prend plus l'effet DIV:

Voici ce que j'ai écrit:

Code:
<?php// set the radio button to be checked if it is the method chosen
            $checked = (($quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'] == $shipping['id']) ? true : false);

            if ( ($checked == true) || ($n == 1 && $n2 == 1) ) {
              echo '                  <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
            } else {
              
			  echo '                  <tr class="moduleRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')" >' . "\n";
				echo '<div class="danger">'; 
				echo '<p>'.'<strong>***Attention***</strong> <br>Sans assurance vous comprenez que General Market n\'est pas responsable des pertes !!!. <br> <strong>Vivez Assuré et Rassuré</strong>'.'</p>'; 
				echo '</div>'; 
		    }?>

Et voici ce que cela donne en image:

essaipopup.jpg
 
Nouveau WRInaute
Tu as un conflit entre deux class
Code:
         echo '                  <tr class="moduleRow" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')" >' . "\n";
            echo '<div class="danger">';
            echo '<p>'.'<strong>***Attention***</strong> <br>Sans assurance vous comprenez que General Market n\'est pas responsable des pertes !!!. <br> <strong>Vivez Assuré et Rassuré</strong>'.'</p>';
            echo '</div>';
          }?>

Modifie ta class moduleRow en y integrant les valeurs de la class danger et ça devrait le faire
 
WRInaute impliqué
salut,

En fait c'est surtout le Onclick qui m'interesse car j'aimerai que ca s'allume quand le visteur clique dessus.

Le Onclick =
onclick="selectRowEffect(this, ' . $radio_buttons . ')" dans ma page checkout-shipping.tpl.php

En fait selectRowEffet ne figure pas dans la page css mais dans une page de javascript de cette facon:

Code:
<script language="javascript"><!--
var selected;

function selectRowEffect(object, buttonSelect) {
  if (!selected) {
    if (document.getElementById) {
      selected = document.getElementById('defaultSelected');
    } else {
      selected = document.all['defaultSelected'];
    }
  }

  if (selected) selected.className = 'moduleRow';
  object.className = 'moduleRowSelected';
  selected = object;

// one button is not an array
  if (document.checkout_address.shipping[0]) {
    document.checkout_address.shipping[buttonSelect].checked=true;
  } else {
    document.checkout_address.shipping.checked=true;
  }
}

function rowOverEffect(object) {
  if (object.className == 'moduleRow') object.className = 'moduleRowOver';
}

function rowOutEffect(object) {
  if (object.className == 'moduleRowOver') object.className = 'moduleRow';
}
//--></script>

Je comprends dans cela que la function SelectRowEffect a 2 choix: si c'est sélectionné et si cela ne l'est pas.
Si c'est sélectionné, je crois avoir compris que l'on est renvoyé vers
moduleRow et moduleRowSelected

Ca je trouve dans ma css,de cette facon

Code:
.moduleRow {}
.moduleRowOver { background-color: #D7E9F7; cursor: pointer; cursor: hand; }
.moduleRowSelected { background-color: #E9F4FC; }


.danger 
{ 
position: absolute; 
top: 350px; 
right: 350px; 
margin: 0; 
padding: 0px; 
background-color: #fbebdb; 
width: 260px; 
height: 80px; 
border: 3px solid #FF0000; 
text-align: center;
color: #000000;
font-family: Verdana, Arial, sans-serif;
  font-size: 12px;
 
}

Et pour ma page checkout:
Code:
  if ( ($checked == true) || ($n == 1 && $n2 == 1) ) {
              echo '                  <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
            } else {
              
			  echo '                  <tr class="moduleRow" onmouseover="rowOverEffect(this)"   onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')" >' . "\n";
echo '<p>'.'<strong>***Attention***</strong> <br>Sans assurance vous comprenez que General Market n\'est pas responsable des pertes !!!. <br> <strong>Vivez Assuré et Rassuré</strong>'.'</p>';

Je pensais que ca fonctionnerait dans la mesure ou les ordres sont mis dans une seule classe maintenant, il ne devrait plus y avoir de conflit.

Je m'apercois que c'est bie nplus compliqué que ce que je pensais et ca va vite se résumer à un texte dans la page en rouge sans effet. :cry:
 
Nouveau WRInaute
Bonjour,

Je commence à mieux comprendre!
en fait, il ne faut pas modifier la class moduleRowSelected car comme c'est un module utilisé plusieurs fois, ça risque de te "polluer" tout tes formulaires.

Il faudrait trouver la valeur du document.checkout_address.shipping[] correspondant à l'assurance pour pouvoir y faire un if dessus du genre


Code:
  $assurance=''; // à placer avant le require vers le java
  if ( ($checked == true) || ($n == 1 && $n2 == 1) ) {
              echo '                  <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
            } else {

           echo '                  <tr class="moduleRow" onmouseover="rowOverEffect(this)"   onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')" >' . "\n";

if ($assurance=='ok')
{
echo '<p class="danger"><strong>***Attention***</strong> <br>Sans assurance vous comprenez que General Market n\'est pas responsable des pertes !!!. <br> <strong>Vivez Assuré et Rassuré</strong></p>';
}

et dans la page du java
Code:
<script language="javascript"><!--
var selected;

function selectRowEffect(object, buttonSelect) {
  if (!selected) {
    if (document.getElementById) {
      selected = document.getElementById('defaultSelected');
    } else {
      selected = document.all['defaultSelected'];
    }
  }

  if (selected) selected.className = 'moduleRow';
  object.className = 'moduleRowSelected';
  selected = object;

// one button is not an array
  if (document.checkout_address.shipping[0]) {
    document.checkout_address.shipping[buttonSelect].checked=true;
  } else {
    document.checkout_address.shipping.checked=true;
  }

// assurance
  if (document.checkout_address.shipping[ On doit trouver !!]) {
    $assurance='ok';

}

function rowOverEffect(object) {
  if (object.className == 'moduleRow') object.className = 'moduleRowOver';
}

function rowOutEffect(object) {
  if (object.className == 'moduleRowOver') object.className = 'moduleRow';
}
//--></script>

Il faut aussi définir ta class danger et remettre les autres à leurs valeurs d'origine.

C'est pas évident à voir sans avoir le source complet ou même un lien vers ton site serait pas mal...

ça m'étonnerait que ça marche du premier coup (les joies d'osCom) mais c'est une piste à peut être suivre. Sinon poste le code souce de l'affichage de ta page
 
WRInaute impliqué
salut,
J'ai un peu penché sur le sujet aujourd'hui mais pas en forme, je n'ai pas bien suivi le truc. Je vais reessayer demain, j'ai de la fievre, pas le courage, j'ai l'impression qu'un autobus m'est passé sur le dos!

On verra aprés une bonne nuit de sommeil!

A demain. Merci



EDIT:
Ben ca va mieux aujourd'hui, je vais m'y mettre dans un instant.

Voici un exemple de ce que j'ai trouvé par hazard ce matin et que j'aimerai faire:
http://www.mon-pharmacien.com/main.php? ... 0404f82a52

Prenez n'importe quel produit et descendez le menu dérouleur voir les Carrés ( "frais de port" et l'autre "que choisir?"). Quand on passe dessus, un cadre apparait avec un commentaire.
C'est ce que je souhaite faire soit en over ou en onclick. Peu importe!

Je reviens quand j'aurai plus travailler dessus d'ici une heure ou 2.

Merci a+
 
WRInaute impliqué
Bon pour l'URL c'est www. :wink: ).

Sinon, je pense qu'au total cela se joue sur 5 fichiers.

checkout_shipping.php à la racine de la boutique
Code:
<?php
  require('includes/application_top.php');
  require('includes/classes/http_client.php');

// BOF: WebMakers.com Added: Downloads Controller - Free Shipping
// Reset $shipping if free shipping is on and weight is not 0
if (tep_get_configuration_key_value('MODULE_SHIPPING_FREESHIPPER_STATUS') and $cart->show_weight()!=0) {
  tep_session_unregister('shipping');
}
// EOF: WebMakers.com Added: Downloads Controller - Free Shipping
// if the customer is not logged on, redirect them to the login page
  if (!tep_session_is_registered('customer_id')) {
    $navigation->set_snapshot();
    tep_redirect(tep_href_link(FILENAME_LOGIN, '', 'SSL'));
  }

// if there is nothing in the customers cart, redirect them to the shopping cart page
  if ($cart->count_contents() < 1) {
    tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
  }
// BOF: WebMakers.com Added: Attributes Sorter and Copier and Quantity Controller
// Validate Cart for checkout
  $valid_to_checkout= true;
  $cart->get_products(true);
  if (!$valid_to_checkout) {
    $messageStack->add_session('header', 'Please update your order ...', 'error');
    tep_redirect(tep_href_link(FILENAME_SHOPPING_CART));
  }
// EOF: WebMakers.com Added: Attributes Sorter and Copier and Quantity Controller

// if no shipping destination address was selected, use the customers own address as default
  if (!tep_session_is_registered('sendto')) {
    tep_session_register('sendto');
    $sendto = $customer_default_address_id;
  } else {
// verify the selected shipping address
    $check_address_query = tep_db_query("select count(*) as total from " . TABLE_ADDRESS_BOOK . " where customers_id = '" . (int)$customer_id . "' and address_book_id = '" . (int)$sendto . "'");
    $check_address = tep_db_fetch_array($check_address_query);

    if ($check_address['total'] != '1') {
      $sendto = $customer_default_address_id;
      if (tep_session_is_registered('shipping')) tep_session_unregister('shipping');
    }
  }

  require(DIR_WS_CLASSES . 'order.php');
  $order = new order;

// register a random ID in the session to check throughout the checkout procedure
// against alterations in the shopping cart contents
  if (!tep_session_is_registered('cartID')) tep_session_register('cartID');
  $cartID = $cart->cartID;

// if the order contains only virtual products, forward the customer to the billing page as
// a shipping address is not needed
// ICW CREDIT CLASS GV AMENDE LINE BELOW
//  if ($order->content_type == 'virtual') {
  if (($order->content_type == 'virtual') || ($order->content_type == 'virtual_weight') ) {
    if (!tep_session_is_registered('shipping')) tep_session_register('shipping');
    $shipping = false;
    $sendto = false;
    tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
  }

  $total_weight = $cart->show_weight();
  $total_count = $cart->count_contents();

// load all enabled shipping modules
  require(DIR_WS_CLASSES . 'shipping.php');
  $shipping_modules = new shipping;

  if ( defined('MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING') && (MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING == 'true') ) {
    $pass = false;

    switch (MODULE_ORDER_TOTAL_SHIPPING_DESTINATION) {
      case 'national':
        if ($order->delivery['country_id'] == STORE_COUNTRY) {
          $pass = true;
        }
        break;
      case 'international':
        if ($order->delivery['country_id'] != STORE_COUNTRY) {
          $pass = true;
        }
        break;
      case 'both':
        $pass = true;
        break;
    }

    $free_shipping = false;
    if ( ($pass == true) && ($order->info['total'] >= MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) {
      $free_shipping = true;

      include(DIR_WS_LANGUAGES . $language . '/modules/order_total/ot_shipping.php');
    }
  } else {
    $free_shipping = false;
  }

// process the selected shipping method
  if ( isset($HTTP_POST_VARS['action']) && ($HTTP_POST_VARS['action'] == 'process') ) {
    if (!tep_session_is_registered('comments')) tep_session_register('comments');
    if (tep_not_null($HTTP_POST_VARS['comments'])) {
      $comments = tep_db_prepare_input($HTTP_POST_VARS['comments']);
    }

    if (!tep_session_is_registered('shipping')) tep_session_register('shipping');

    if ( (tep_count_shipping_modules() > 0) || ($free_shipping == true) ) {
      if ( (isset($HTTP_POST_VARS['shipping'])) && (strpos($HTTP_POST_VARS['shipping'], '_')) ) {
        $shipping = $HTTP_POST_VARS['shipping'];

        list($module, $method) = explode('_', $shipping);
        if ( is_object($$module) || ($shipping == 'free_free') ) {
          if ($shipping == 'free_free') {
            $quote[0]['methods'][0]['title'] = FREE_SHIPPING_TITLE;
            $quote[0]['methods'][0]['cost'] = '0';
          } else {
            $quote = $shipping_modules->quote($method, $module);
          }
          if (isset($quote['error'])) {
            tep_session_unregister('shipping');
          } else {
            if ( (isset($quote[0]['methods'][0]['title'])) && (isset($quote[0]['methods'][0]['cost'])) ) {
              $shipping = array('id' => $shipping,
                                'title' => (($free_shipping == true) ?  $quote[0]['methods'][0]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][0]['title'] . ')'),
                                'cost' => $quote[0]['methods'][0]['cost']);

              tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
            }
          }
        } else {
          tep_session_unregister('shipping');
        }
      }
    } else {
      $shipping = false;
                
      tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL'));
    }    
  }

// get all available shipping quotes
  $quotes = $shipping_modules->quote();

// if no shipping method has been selected, automatically select the cheapest method.
// if the modules status was changed when none were available, to save on implementing
// a javascript force-selection method, also automatically select the cheapest shipping
// method if more than one module is now enabled
if ( !tep_session_is_registered('shipping') || ( tep_session_is_registered('shipping') && ($shipping == false) && (tep_count_shipping_modules() > 1) ) )
 {
 $shipping = $shipping_modules->shipping_default('chronopost');
//echo '<div id="danger">'; 
//echo '<p>'.'Attention, Sans assurance vous comprenez que General Market n\'est pas responsable des pertes !!!.'.'</p>'; 
//echo '</div>'; 

}






  require(DIR_WS_LANGUAGES . $language . '/' . FILENAME_CHECKOUT_SHIPPING);

  $breadcrumb->add(NAVBAR_TITLE_1, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));
  $breadcrumb->add(NAVBAR_TITLE_2, tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL'));

  $content = CONTENT_CHECKOUT_SHIPPING;
  $javascript = $content . '.js';

  require(DIR_WS_TEMPLATES . TEMPLATE_NAME . '/' . TEMPLATENAME_MAIN_PAGE);

  require(DIR_WS_INCLUDES . 'application_bottom.php');
?>

Je pense que la valeur que l'on cherche c'est zones, à moins que je ne me trompe. En fait, les 2 modules d'envoi que j'utilise sont zones.php et chronopost.php

Voici pour zones, c'est celui là qui me sert sans assurance:
zones.php
Code:
<?php
 class zones {
    var $code, $title, $description, $enabled, $num_zones;

// class constructor
    function zones() {
      $this->code = 'zones';
      $this->title = MODULE_SHIPPING_ZONES_TEXT_TITLE;
      $this->description = MODULE_SHIPPING_ZONES_TEXT_DESCRIPTION;
      $this->sort_order = MODULE_SHIPPING_ZONES_SORT_ORDER;
      $this->icon = '';
      $this->tax_class = MODULE_SHIPPING_ZONES_TAX_CLASS;
      $this->enabled = ((MODULE_SHIPPING_ZONES_STATUS == 'True') ? true : false);

      // CUSTOMIZE THIS SETTING FOR THE NUMBER OF ZONES NEEDED
      $this->num_zones = 7;
    }

// class methods
    function quote($method = '') {
      global $order, $shipping_weight, $shipping_num_boxes;

      $dest_country = $order->delivery['country']['iso_code_2'];
      $dest_zone = 0;
      $error = false;

      for ($i=1; $i<=$this->num_zones; $i++) {
        $countries_table = constant('MODULE_SHIPPING_ZONES_COUNTRIES_' . $i);
        $country_zones = split("[,]", $countries_table);
        if (in_array($dest_country, $country_zones)) {
          $dest_zone = $i;
          break;
        }
      }

      if ($dest_zone == 0) {
        $error = true;
      } else {
        $shipping = -1;
        $zones_cost = constant('MODULE_SHIPPING_ZONES_COST_' . $dest_zone);

        $zones_table = split("[:,]" , $zones_cost);
        $size = sizeof($zones_table);
        for ($i=0; $i<$size; $i+=2) {
          if ($shipping_weight <= $zones_table[$i]) {
            $shipping = $zones_table[$i+1];
            $shipping_method = MODULE_SHIPPING_ZONES_TEXT_WAY . ' ' . $dest_country . ' : ' . $shipping_weight . ' ' . MODULE_SHIPPING_ZONES_TEXT_UNITS;
            break;
          }
        }

        if ($shipping == -1) {
          $shipping_cost = 0;
          $shipping_method = MODULE_SHIPPING_ZONES_UNDEFINED_RATE;
        } else {
          $shipping_cost = ($shipping * $shipping_num_boxes) + constant('MODULE_SHIPPING_ZONES_HANDLING_' . $dest_zone);
        }
      }

      $this->quotes = array('id' => $this->code,
                            'module' => MODULE_SHIPPING_ZONES_TEXT_TITLE,
                            'methods' => array(array('id' => $this->code,
                                                     'title' => $shipping_method,
                                                     'cost' => $shipping_cost)));

      if ($this->tax_class > 0) {
        $this->quotes['tax'] = tep_get_tax_rate($this->tax_class, $order->delivery['country']['id'], $order->delivery['zone_id']);
      }

      if (tep_not_null($this->icon)) $this->quotes['icon'] = tep_image($this->icon, $this->title);

      if ($error == true) $this->quotes['error'] = MODULE_SHIPPING_ZONES_INVALID_ZONE;

      return $this->quotes;
    }

    function check() {
      if (!isset($this->_check)) {
        $check_query = tep_db_query("select configuration_value from " . TABLE_CONFIGURATION . " where configuration_key = 'MODULE_SHIPPING_ZONES_STATUS'");
        $this->_check = tep_db_num_rows($check_query);
      }
      return $this->_check;
    }

    function install() {
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, set_function, date_added) VALUES ('Zones Enable Zones Method', 'MODULE_SHIPPING_ZONES_STATUS', 'True', 'Do you want to offer zone rate shipping?', '6', '0', 'tep_cfg_select_option(array(\'True\', \'False\'), ', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, use_function, set_function, date_added) values ('Zones Tax Class', 'MODULE_SHIPPING_ZONES_TAX_CLASS', '0', 'Use the following tax class on the shipping fee.', '6', '0', 'tep_get_tax_class_title', 'tep_cfg_pull_down_tax_classes(', now())");
      tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zones Sort Order', 'MODULE_SHIPPING_ZONES_SORT_ORDER', '0', 'Sort order of display.', '6', '0', now())");
      for ($i = 1; $i <= $this->num_zones; $i++) {
        $default_countries = '';
        if ($i == 1) {
          $default_countries = 'US,CA';
        }
        tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Countries', 'MODULE_SHIPPING_ZONES_COUNTRIES_" . $i ."', '" . $default_countries . "', 'Comma separated list of two character ISO country codes that are part of Zone " . $i . ".', '6', '0', now())");
        tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Shipping Table', 'MODULE_SHIPPING_ZONES_COST_" . $i ."', '3:8.50,7:10.50,99:20.00', 'Shipping rates to Zone " . $i . " destinations based on a group of maximum order weights. Example: 3:8.50,7:10.50,... Weights less than or equal to 3 would cost 8.50 for Zone " . $i . " destinations.', '6', '0', now())");
        tep_db_query("insert into " . TABLE_CONFIGURATION . " (configuration_title, configuration_key, configuration_value, configuration_description, configuration_group_id, sort_order, date_added) values ('Zone " . $i ." Handling Fee', 'MODULE_SHIPPING_ZONES_HANDLING_" . $i."', '0', 'Handling Fee for this shipping zone', '6', '0', now())");
      }
    }

    function remove() {
      tep_db_query("delete from " . TABLE_CONFIGURATION . " where configuration_key in ('" . implode("', '", $this->keys()) . "')");
    }

    function keys() {
      $keys = array('MODULE_SHIPPING_ZONES_STATUS', 'MODULE_SHIPPING_ZONES_TAX_CLASS', 'MODULE_SHIPPING_ZONES_SORT_ORDER');

      for ($i=1; $i<=$this->num_zones; $i++) {
        $keys[] = 'MODULE_SHIPPING_ZONES_COUNTRIES_' . $i;
        $keys[] = 'MODULE_SHIPPING_ZONES_COST_' . $i;
        $keys[] = 'MODULE_SHIPPING_ZONES_HANDLING_' . $i;
      }

      return $keys;
    }
  }
?>


Ensuite ceux que l'on a déjà vu:
checkout_shipping.tpl qui est le template de cette page:
Code:
  <?php echo tep_draw_form('checkout_address', tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')) . tep_draw_hidden_field('action', 'process'); ?><table border="0" width="100%" cellspacing="0" cellpadding="<?php echo CELLPADDING_SUB; ?>">
<?php
// BOF: Lango Added for template MOD
if (SHOW_HEADING_TITLE_ORIGINAL == 'yes') {
$header_text = '&nbsp;'
//EOF: Lango Added for template MOD
?>
      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td class="pageHeading"><?php echo HEADING_TITLE; ?></td>
            <td class="pageHeading" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'table_background_delivery.gif', HEADING_TITLE, HEADING_IMAGE_WIDTH, HEADING_IMAGE_HEIGHT); ?></td>
          </tr>
        </table></td>
      </tr>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
<?php





// BOF: Lango Added for template MOD
}else{
$header_text = HEADING_TITLE;
}
// EOF: Lango Added for template MOD
?>

<?php
// BOF: Lango Added for template MOD
if (MAIN_TABLE_BORDER == 'yes'){
table_image_border_top(false, false, TABLE_HEADING_SHIPPING_ADDRESS);
}else{
?>
      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
          <tr>
            <td class="main"><b><?php echo TABLE_HEADING_SHIPPING_ADDRESS; ?></b></td>
          </tr>
        </table></td>
      </tr>
<?php
}
// EOF: Lango Added for template MOD
?>
      <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><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
                <td class="main" width="50%" valign="top"><?php echo TEXT_CHOOSE_SHIPPING_DESTINATION . '<br><br><a href="' . tep_href_link(FILENAME_CHECKOUT_SHIPPING_ADDRESS, '', 'SSL') . '">' . tep_template_image_button('button_change_address.gif', IMAGE_BUTTON_CHANGE_ADDRESS) . '</a>'; ?></td>
                <td align="right" width="50%" valign="top"><table border="0" cellspacing="0" cellpadding="2">
                  <tr>
                    <td class="main" align="center" valign="top"><?php echo '<b>' . TITLE_SHIPPING_ADDRESS . '</b><br>' . tep_image(DIR_WS_IMAGES . 'arrow_south_east.gif'); ?></td>
                    <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
                    <td class="main" valign="top"><?php echo tep_address_label($customer_id, $sendto, true, ' ', '<br>'); ?></td>
                    <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
                  </tr>
                </table></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
<?php
// BOF: Lango Added for template MOD
if (MAIN_TABLE_BORDER == 'yes'){
table_image_border_bottom();
}
// EOF: Lango Added for template MOD
?>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
<?php
  if (tep_count_shipping_modules() > 0) {
?>
<?php
// BOF: Lango Added for template MOD
if (MAIN_TABLE_BORDER == 'yes'){
table_image_border_top(false, false, TABLE_HEADING_SHIPPING_METHOD);
}else{
?>
      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
          <tr>
            <td class="main"><b><?php echo TABLE_HEADING_SHIPPING_METHOD; ?></b></td>
          </tr>
        </table></td>
      </tr>
<?php
}
// EOF: Lango Added for template MOD
?>
      <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">
<?php
    if (sizeof($quotes) > 1 && sizeof($quotes[0]) > 1) {
?>
              <tr>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td class="main" width="50%" valign="top"><?php echo TEXT_CHOOSE_SHIPPING_METHOD; ?></td>
                <td class="main" width="50%" valign="top" align="right"><?php echo '<b>' . TITLE_PLEASE_SELECT . '</b><br>' . tep_image(DIR_WS_IMAGES . 'arrow_east_south.gif'); ?></td>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
              </tr>
<?php
    } elseif ($free_shipping == false) {
?>
              <tr>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td class="main" width="100%" colspan="2"><?php echo TEXT_ENTER_SHIPPING_INFORMATION; ?></td>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
              </tr>
<?php
    }

    if ($free_shipping == true) {
?>
              <tr>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td colspan="2" width="100%"><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" colspan="3"><b><?php echo FREE_SHIPPING_TITLE; ?></b>&nbsp;<?php echo $quotes[$i]['icon']; ?></td>
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                  </tr>
                  <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, 0)">
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                    <td class="main" width="100%"><?php echo sprintf(FREE_SHIPPING_DESCRIPTION, $currencies->format(MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER)) . tep_draw_hidden_field('shipping', 'free_free'); ?></td>
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                  </tr>
                </table></td>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
              </tr>
<?php
    } else {
      $radio_buttons = 0;
      for ($i=0, $n=sizeof($quotes); $i<$n; $i++) {
?>
              <tr>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                <td colspan="2"><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" colspan="3"><b><?php echo $quotes[$i]['module']; ?></b>&nbsp;<?php if (isset($quotes[$i]['icon']) && tep_not_null($quotes[$i]['icon'])) { echo $quotes[$i]['icon']; } ?></td>
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                  </tr>
<?php
        if (isset($quotes[$i]['error'])) {
?>
                  <tr>
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                    <td class="main" colspan="3"><?php echo $quotes[$i]['error']; ?></td>
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                  </tr>
<?php
        } else {
          for ($j=0, $n2=sizeof($quotes[$i]['methods']); $j<$n2; $j++) {
// set the radio button to be checked if it is the method chosen

            $checked = (($quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'] == $shipping['id']) ? true : false);

            if ( ($checked == true) || ($n == 1 && $n2 == 1) ) {
              echo '                  <tr id="defaultSelected" class="moduleRowSelected" onmouseover="rowOverEffect(this)" onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')">' . "\n";
            } else {
              
			  echo '                  <tr class="moduleRow" onmouseover="rowOverEffect(this)"   onmouseout="rowOutEffect(this)" onclick="selectRowEffect(this, ' . $radio_buttons . ')" >' . "\n";
			// echo '<p>'.'<strong>***Attention***</strong> <br>Sans assurance vous comprenez que General Market n\'est pas responsable des pertes !!!. <br> <strong>Vivez Assuré et Rassuré</strong>'.'</p>'; 
 

					 
		    }

// pop up if cheapest shipping choosen
//if ($$checked != 'defaultSelected'){
//echo '<div id="danger">'; 
//echo '<p>'.'<strong>***Attention***</strong> <br>Sans assurance vous comprenez que General Market n\'est pas responsable des pertes !!!. <br> <strong>Vivez Assuré et Rassuré</strong>'.'</p>'; 
//echo '</div>'; 

//}

// pop up if cheapest shipping choosen
?>
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                    <td class="main" width="75%"><?php echo $quotes[$i]['methods'][$j]['title']; ?></td>
<?php
            if ( ($n > 1) || ($n2 > 1) ) {
?>
                    <td class="main"><?php echo $currencies->format(tep_add_tax($quotes[$i]['methods'][$j]['cost'], (isset($quotes[$i]['tax']) ? $quotes[$i]['tax'] : 0))); ?></td>
                    <td class="main" align="right"><?php echo tep_draw_radio_field('shipping', $quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id'], $checked); ?></td>
<?php
            } else {
?>
                    <td class="main" align="right" colspan="2"><?php echo $currencies->format(tep_add_tax($quotes[$i]['methods'][$j]['cost'], $quotes[$i]['tax'])) . tep_draw_hidden_field('shipping', $quotes[$i]['id'] . '_' . $quotes[$i]['methods'][$j]['id']); ?></td>
<?php
            }
?>
                    <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
                  </tr>
<?php
            $radio_buttons++;
          }
        }
?>
                </table></td>
                <td><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td> 
              </tr>
<?php
      }
    }
?>
            </table></td>
          </tr>
        </table></td>
      </tr>
<?php
// BOF: Lango Added for template MOD
if (MAIN_TABLE_BORDER == 'yes'){
table_image_border_bottom();
}
// EOF: Lango Added for template MOD
?>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
<?php
  }
?>
<?php
// BOF: Lango Added for template MOD
if (MAIN_TABLE_BORDER == 'yes'){
table_image_border_top(false, false, TABLE_HEADING_COMMENTS);
}else{
?>
      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="2">
          <tr>
            <td class="main"><b><?php echo TABLE_HEADING_COMMENTS; ?></b></td>
          </tr>
        </table></td>
      </tr>
<?php
}
// EOF: Lango Added for template MOD
?>
      <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><?php echo tep_draw_textarea_field('comments', 'soft', '60', '5'); ?></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
<?php
// BOF: Lango Added for template MOD
if (MAIN_TABLE_BORDER == 'yes'){
table_image_border_bottom();
}
// EOF: Lango Added for template MOD
?>
      <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 '<b>' . TITLE_CONTINUE_CHECKOUT_PROCEDURE . '</b><br>' . TEXT_CONTINUE_CHECKOUT_PROCEDURE; ?></td>
                <td class="main" align="right"><?php echo tep_template_image_submit('button_continue.gif', IMAGE_BUTTON_CONTINUE); ?></td>
                <td width="10"><?php echo tep_draw_separator('pixel_trans.gif', '10', '1'); ?></td>
              </tr>
            </table></td>
          </tr>
        </table></td>
      </tr>
      <tr>
        <td><?php echo tep_draw_separator('pixel_trans.gif', '100%', '10'); ?></td>
      </tr>
      <tr>
        <td><table border="0" width="100%" cellspacing="0" cellpadding="0">
          <tr>
            <td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
              <tr>
                <td width="50%" align="right"><?php echo tep_image(DIR_WS_IMAGES . 'checkout_bullet.gif'); ?></td>
                <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>
              </tr>
            </table></td>
            <td width="25%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>
            <td width="25%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>
            <td width="25%"><table border="0" width="100%" cellspacing="0" cellpadding="0">
              <tr>
                <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '100%', '1'); ?></td>
                <td width="50%"><?php echo tep_draw_separator('pixel_silver.gif', '1', '5'); ?></td>
              </tr>
            </table></td>
          </tr>
          <tr>
            <td align="center" width="25%" class="checkoutBarCurrent"><?php echo CHECKOUT_BAR_DELIVERY; ?></td>
            <td align="center" width="25%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_PAYMENT; ?></td>
            <td align="center" width="25%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_CONFIRMATION; ?></td>
            <td align="center" width="25%" class="checkoutBarTo"><?php echo CHECKOUT_BAR_FINISHED; ?></td>
          </tr>
        </table></td>
      </tr>
    </table></form>

<?php

?>

La feuille de style. Je ne remets que ce qui nous interesse car ca va faire trop long:
Code:
.moduleRow {}
.moduleRowOver { background-color: #D7E9F7; cursor: pointer; cursor: hand; }
.moduleRowSelected { 
position: absolute; 
top: 350px; 
right: 350px; 
margin: 0; 
padding: 0px; 
background-color: #fbebdb; 
width: 260px; 
height: 80px; 
border: 3px solid #FF0000; 
text-align: center;
color: #000000;
font-family: Verdana, Arial, sans-serif;
  font-size: 12px; }



.danger 
{ 
position: absolute; 
top: 350px; 
right: 350px; 
margin: 0; 
padding: 0px; 
background-color: #fbebdb; 
width: 260px; 
height: 80px; 
border: 3px solid #FF0000; 
text-align: center;
color: #000000;
font-family: Verdana, Arial, sans-serif;
  font-size: 12px;
 
}


Et enfin la feuille de javascript:checkout_shipping.js
Code:
<script language="javascript"><!--
var selected;

function selectRowEffect(object, buttonSelect) {
  if (!selected) {
    if (document.getElementById) {
      selected = document.getElementById('defaultSelected');
    } else {
      selected = document.all['defaultSelected'];
    }
  }

  if (selected) selected.className = 'moduleRow';
  object.className = 'moduleRowSelected';
  selected = object;

// one button is not an array
  if (document.checkout_address.shipping[0]) {
    document.checkout_address.shipping[buttonSelect].checked=true;
  } else {
    document.checkout_address.shipping.checked=true;
  }
}

function rowOverEffect(object) {
  if (object.className == 'moduleRow') object.className = 'moduleRowOver';
}

function rowOutEffect(object) {
  if (object.className == 'moduleRowOver') object.className = 'moduleRow';
}
//--></script>

Donc voila ce dans quoi je bidouille. A savoir qu'a essaie si ca ne marche pas, je fais marche arriere aussitot et donc c'est identique à l'original.
 
WRInaute impliqué
salut,

Je crois t'avoir vu passer sur la boutique il y a un instant.

Ne trouvant pas de solution qui fonctionne, j'ai donc modifié le cadre ou l'on peut mettre les commentaires. Il prenait toute la largeur, je l'ai alors mis a 75% et une autre colonne à 25% dans laquelle j'ai mis mon avertissement. C'est aussi bien car il se trouve juste au dessus du bouton pour continuer.

Je suis décue de ne pas y etre arrivée mais je ne peux pas mobiliser des personnes et moi meme y passer une semaine.

Donc je pense que je vais en rester la, sur ce cadre dans le coin, il a bien sa place.

En tout cas, merci pour le support. C'est vraiment sympa!
 
Discussions similaires
Haut