[SI-LINDER-PARTNER-2][OSC] - Refonte du site Internet pour supporter le Responsive Design /* ATTENTION - le design du site ne peut pas être passé en doctype html (html 5) dans la révision 1 du design. bien qu'une révision 2 sera instanciée plus tard (l'année prochaine), il faudra se contenter de nombreux workaround en restant en HTML TRANSITIONAL 4.01 Du fait du nombre massif des éléments DE CETTE PAGE (et de ce qui en découlerait) qui seront à revoir pour transformer le design en design responsive.. .. il est alors plus judicieux de globaliser un TAG unique pour cette tâche pour ne pas alourdir de commentaires le code déjà suffisemment alourdi comme cela! En gros, ici, pour cette méga-tâche, je vais utiliser un format maison de commentaires pour cette tâche précise: --> pour en comprendre les méandres, voir le fichier /[!] - Saphyra-Interactive-TaskList-Explanations/[SI-LINDER-PARTNER-2][OSC]--semantic.php */ // <- [SI-LINDER-PARTNER-2][OSC] - Refonte du site Internet pour supporter le Responsive Design ?> 0000003: icirelais/exapaq // Added for ICI Relais : let this code here to be reconize the first time we are in this page $function_address = 'tep_address_label'; // End added for ICI Relais // <- 0000003 // 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')); } // VDVAC11 - begin $page_type_vacances = 8; $page_query = tep_db_query("select pages_id from " . TABLE_PAGES . " where status = 1 and page_type = " . $page_type_vacances); while ($page = tep_db_fetch_array($page_query)) { $link = FILENAME_PAGES . '?pages_id=' . $page['pages_id']; tep_redirect(tep_href_link($link)); } // VDVAC11 - end // -> VDVOISIN: gestion des voisins define(TEXT_NEW_INFO, "
Nouveau : vous pouvez indiquer les coordonnées de votre voisin en cas d'absence.
"); // <- VDVOISIN // 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)); } // 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 // -> 0000003: icirelais/exapaq // Added for ICI Relais $tab_shipping = explode('_', $HTTP_POST_VARS['shipping']); if($tab_shipping[0] == 'icirelais') { $check_address_query = tep_db_query("select count(*) as total from icirelais where relay_id = '" . $tab_shipping[1] . "' "); //$sendto = $HTTP_POST_VARS['shipping']; if we rewrite sentdo, icirelais_get_point will find the wrong address $function_address = 'ici_address_label'; } else { $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 . "'");; $function_address = 'tep_address_label'; } // End added for ICI Relais // <- 0000003 $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 // -> VDVCAT : gestion des produits virtuels // if ($order->content_type == 'virtual') { if ($order->content_type == 'virtual' or $cart->has_only_virtual_products()) { // <- VDVCAT if (!tep_session_is_registered('shipping')) tep_session_register('shipping'); $shipping = false; $sendto = false; // [SI-LINDER-PARTNER-2][OSC][SimpleTaskDescription]:{"LP-113: on fixe une date d'événement étant donné que la page des livraisons saute "} if (!tep_session_is_registered('comments')) tep_session_register('comments'); $comments = "[ Date de l'évènement: " . date("d/m/Y") . " ]"; // [SI-LINDER-PARTNER-2][OSC][SimpleTaskDescription]:{"LP-113: on fixe une date d'événement étant donné que la page des livraisons saute "} 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'])) ) { // -> 0000003: icirelais/exapaq // Added for ICI Relais if($tab_shipping[0] == 'icirelais') { // $quote[0]['methods'] Key Search for the ICI relais point selected $icirelais_id = null; foreach($quote[0]['methods'] as $key => $value){ if($value['id'] == $tab_shipping[1]){ $icirelais_id = $key; } } $shipping = array('id' => $shipping, // ICI Relais modification : if the field 'text' si isset, we take it. Whereas, we take the field 'title' defined per default (witch is to long with html code in ici relais case) //'title' => (($free_shipping == true) ? $quote[0]['methods'][0]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][0]['title'] . ')'), 'title' => (($free_shipping == true) ? $quote[0]['methods'][$icirelais_id]['title'] : (isset($quote[0]['methods'][$icirelais_id]['text']) ? $quote[0]['methods'][$icirelais_id]['text'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][$icirelais_id]['title'] . ')')), 'cost' => $quote[0]['methods'][0]['cost']); } else { $shipping = array('id' => $shipping, // ICI Relais modification : if the field 'text' si isset, we take it. Whereas, we take the field 'title' defined per default (witch is to long with html code in ici relais case) 'title' => (($free_shipping == true) ? $quote[0]['methods'][0]['title'] : $quote[0]['module'] . ' (' . $quote[0]['methods'][0]['title'] . ')'), 'cost' => $quote[0]['methods'][0]['cost']); } // End added for ICI Relais // <- 0000003 tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); } } } else { tep_session_unregister('shipping'); } } } else { $shipping = false; // -> VDFIXFREEAMOUNT // tep_redirect(tep_href_link(FILENAME_CHECKOUT_PAYMENT, '', 'SSL')); tep_redirect(tep_href_link(FILENAME_CHECKOUT_SHIPPING, '', 'SSL')); // <- VDFIXFREEAMOUNT } } // 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->cheapest(); 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')); ?> 0000007: ajout de la date d'evenement ?> <?php echo TITLE; ?> [SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions]:{ - 1/ on déclare une petite variable, sous forme de tableau associatif, ce tableau servira à identifier la page (au lieu d'utiliser PHP_SELF etc..) et cette identification servira dans le nouveau fichier d'inclusion de design dynamique inclu en [2] c'est tout simple ! - 2/ inclusion du fichier PHP chargeur du design, ce sera à ce fichier inclu de décider quels assets (scripts, feuilles de styles, autres) charger! } */ ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN // [RESPONSIVE_DESIGN_2020_IMPLEMENTATION_CARDBOARD_2020_SAPHYRA_INTERACTIVE_ETAPE_1] $_SI__NewDesign = array( 'pageFilepath' => '/checkout_shipping.php' ); // ([1])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([2])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END require_once('--SI--2020DesignInitializer.php'); /* [SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions] ************************************************************************/ ?> 0000003: icirelais/exapaq ?> [SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions]:{ - 1/ on conserve ce code déclarant Prototype, (styles CSS, script JS et plugin Window JS), mais on le commente, on ne commente pas icirelais.css ou icirelais.js ni maps.google.com [LOCATION_FILES_FOR_ICIRELAIS_DETAILS_SHOW_TRIGGER] car déjà.. a) cela ne fonctionne de toutes façons pas ce code.. (que ce soit avec l'ancienne version du site, OU cette nouvelle l'erreur: "" apparaît au clic du faux-bouton-texte "Plus de détails" - ce faux-bouton-texte est censé afficher une MODALE via la fonction openDialog() déclarée dans: /includes/icirelais.js - le faux-bouton-texte quand à lui est déclaré (apparemment) dans 4 fichiers, mais seul 1 semble être chargé à chaque fois (le 4ème), voici les 4 fichiers de sa déclaration HTML (construction HTML): dans chacun de ces fichiers suivants.. c'est déclaré à la partie: // Details link => open a window the the ici relais point details -1- /exapaq/catalog/includes/classes/icirelais_get_point_PHP5.php -2- /includes/classes/icirelais_get_point_PHP5.php -3- /exapaq/catalog/includes/classes/icirelais_get_point.php -4- /includes/classes/icirelais_get_point.php b) et avec cette nouvelle version de design reposant sur le framework UI Kit, "Prototype" fait conflit avec "Prototype" de UI Kit car causant un crash! donc commenter ce code me paraît plus qu'important, à l'exception du /includes/icirelais.js qui lui, utilise une fonction utile de Google Maps API (version NON ENREGISTREE AUPRES DE GOOGLE).. donc sans API KEY oh.. et le déclarateur du script Google Maps API, fonctionnant encore au moins pour la latitude et longitude est déclaré aussi à cet endroit. à noter que j'ai développé un tout nouveau système qui intercepte la chaîne construite par le fichier ici_relais_get_point*.php qui se trouve être les détails des points de relais ET le déclencheur de fenêtre modale, voir CODETAG [NEW_SYSTEM_FOR_ICIRELAIS_DETAILS_SHOWER] } */ ?> */ ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END /* [SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions] ************************************************************************/ ?> 0000007: ajout de la date d'evenement ?> [SI-LINDER-PARTNER-2][OSC][AddClassDescription(isPage--CheckoutShipping isResponsive--Main)]:{" ATTENTION (ne pas oublier cette ligne!) servira à cibler cette page précise dans un sélecteur css.. // [RESPONSIVE_DESIGN_2020_IMPLEMENTATION_CARDBOARD_2020_SAPHYRA_INTERACTIVE_ETAPE_2] "} ?> [SI-LINDER-PARTNER-2][OSC][SimpleTaskDescription]:{" on requière l'inclusion unique du tout nouveau fragment contenant le tout nouveau fil d'ariane correspondant aux étapes du processus de commande, et cela invalide l'entièreté de l'ancien fil d'arianne des étapes du processus de commande (voir CODETAG[VTAB_1_OLD_BREADCRUMBAR_ORDER_STEPS]) "} ?> [SI-LINDER-PARTNER-2][OSC][SimpleTaskDescription]:{" on modifie la taille de cette cellule, qui est celle de gauche (avant) gérée via la constante PHP BOX_WIDTH de OSCommerce, (désormais), gérée par une valeur en dur, pourquoi? (1) la valeur initiale est gérée par une constante PHP, mais sa valeur... est aussi la modificatrice de la cellule de droite.. Ce qui pose problème quand on veut juste modifier celle de gauche et ne pas intervenir sur celle de droite, donc, ici, on modifie le echo BOX_WIDTH par une valeur fixée plus souple et enfin, on ajoute une classe pour pouvoir cibler cette cellule de tableau afin de la masquer en responsive ou autres ! // [RESPONSIVE_DESIGN_2020_IMPLEMENTATION_CARDBOARD_2020_SAPHYRA_INTERACTIVE_ETAPE_3] "} ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SimpleTaskDescription]:{" on va ici juste ajouter un
qui englobera le formulaire et le tableau, et on donnera à ce
une classe CSS pour être en mesure de le cibler plus tard "} ?>
BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> 0) { ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?>
) cette classe servira à pouvoir cibler plus efficacement cette partie sensible du design, autant en affichage normal qu'en responsive au besoin.. (impossible de se priver, ça n'en sera que plus facile à relire le code plus tard), on restructure au besoin.. on ajoute des sauts de lignes
- 5/ on va ajouter une classe à la cellule du tableau () cette classe servira à pouvoir cibler plus efficacement cette partie sensible du design, autant en affichage normal qu'en responsive au besoin.. (impossible de se priver, ça n'en sera que plus facile à relire le code plus tard), on restructure au besoin.. on ajoute des sauts de lignes
au besoin.. on commente l'image on rajoute un double-point et/ou un espace après le texte - 6/ à cet emplacement, on va juste afficher un icone à l'aide de Material Icons - 7/ à la différence des autres pages, ici, on va restyliser chaque , et on va pas y aller de mains-mortes: on va ajouter une classe à la ligne du tableau (..) cette classe servira à pouvoir cibler plus efficacement cette partie sensible du design, autant en affichage normal qu'en responsive on va aussi reformater au cas par cas la structure HTML, car là, c'est pas très lisible pour un développeur qui éditerai le code plus tard - 8/ on va aussi donner une classe à la cellule ici, de manière à forcer son style d'affichage visuel - 9/ on place un ici afin de pouvoir restyliser précisemment CET élément, ce qui nous oblige à lui donner une classe pour l'occasion, ici on affiche l'indicateur d'état comme adresse principale on utiliser ici différentes balises pour symboliser la valeur de l'élément listé avec des classes différentes, car certains doivent afficher des informations "statiques" d'autres dynamiques - 10/ à cet emplacement, on va juste donner une classe à la cellule et y afficher un icone à l'aide de Material Icons à la place de l'initiale image de conteneur-fake de séparateur (commentée pour l'occasion) - 11/ on donne une classe CSS aux liens href et éventuellement on modifie leur texte - 12/ retrait ou modification de l'attribut width de la cellule ici (pouvant être 75% en initial) - 13/ on va ici revoir le style visuel des points-relais OU moyens d'expéditions (quel qu'ils soient) que ce soit leur titres, descriptions, mentions, prix et bouton radio - 14/ ici, il faut savoir que à cause de l'ancien système obsolète et en plus cassé (qui fonctionnait pas avec prototype.. Voir CODETAG [OLD_SYSTEM_FOR_ICIRELAIS_DETAILS_SHOWER]), on n'aura pas les informations de détails des points relais fonctionnels pour le transporteur (méthode d'expédition) ICI RELAIS ainsi, toute cette étape va englober différentes sous-étapes pour donner une alternative d'affichage (se passer de l'ancien système) aux détails de points-relais l'ancien système se servait de : PROTOTYPE + son plugin Window, et sa méthode de fonction Dialog() notre nouveau système se sert de : PHP (afin de créér des variables, et des expressions régulières), JAVASCRIPT PUR, HTML = pas de surcouches! l'idée est très simple: - intercepter et réécrire (tout en masquant) l'ancien système d'affichage de détail du point-relais icirelais - modifier le contenu de l'affichage du code de la méthode à son écriture, ainsi, on ne modifie jamais la variable OSCommerce, mais une autre spécialement créée à cet effet - 15/ on a besoin de créér différentes variables temporaires de support pour faire que notre nouveau système fonctionne, ce que l'on fait, on utilise pas le modèle de références (dans le sens où de toutes façons, l'on rensignera ces variables uniquement pour une portion du code, et on va les détruire juste après leur inutilité $dataArrayRegex1 de type tableau PHP sera utilisée pour stocker via un résultat de preg_match() une expression régulière (regex) très longue et complexe, on en reparlera dans les étapes suivantes $dataStringMethodSearcher de type chaîne PHP sera utilisée pour stocker une chaîne à rechercher (à l'aide d'un str_replace()), là pareil on en reparlera plus tard $dataStringMethodReplacer de type chaîne PHP sera utilisée pour stocker une chaîne de remplacement (à l'aide d'un str_replace()), là pareil on en reparlera plus tard - 16/ la fameuse expression régulière dont on a parlé un peu en [15] très complexe avec parenthèses de captures nommées (afin de proprement pouvoir reconstruire la chaîne voulue) globalement, elle doit trouver une suite précise dans la chaîne suivante (attention, comprendre que la chaîne suivante sera interprétée par PHP au préalable, donc on recherche dans sa version interprétée: -
'.TEXT_MORE_DETAILS.'
NOTE - $offset est égal à un int, et pour les $point['coord_lat'] (latitude) ou $point['coord_long'] (longitude), on s'en moque chaîne, qui elle, est générée dans le fichier: - voir CODETAG [LOCATION_FILES_FOR_ICIRELAIS_DETAILS_SHOW_TRIGGER] pour la liste des fichiers qui génère de la même façon cette chaîne.. (un seul n'est utilisé soit-dit en passant).. - 17/ debug des résultats de l'expression régulière à garder - 18/ on renseigne une des variables déclarées en [15], ici, il s'agit de la variable de recherche, le but: trouver une chaîne reconstruite précise - 19/ on renseigne une des variables déclarées en [15], ici, il s'agit de la variable de remplacement, le but: là c'est compliqué, on créé surtout TOUT un système JAVASCRIPT (forçant les éléments à porter une classe CSS que l'on a aussi créé pour l'occasion, chaque élément ainsi réécri aura un bouton-texte qui déclenchera LUI le VRAI (et sans crash) affichage des DETAILS du point-relais ICI RELAIS! ah, et l'usage de ` au lieu de \' pour englober certaine chaîne (comme l'icone) est IMPORTANT ici, car on se sert déjà de \' pour l'attribut de uk-icon, donc, ça casserait la chaîne JAVASCRIPT sinon.. - 20/ et c'est ici que nous réécrivons la chaîne contenue dans l'itération actuelle de la variable (elle, créée par OSCommerce): $quotes[$i]['methods'][$j]['title'] oh, un simple str_replace() avec nos deux variables de recherche et de remplacement, valorisées aux étapes respectives [18] et [19] cela a le mérite de ne pas réécrire la variable et donc, on n'altère pas la vraie variable déclarée par OSCommerce et sa valeur récupérée du module d'expédition en cours d'itération - 21/ et on nullifie dans l'itération toutes les variables employées (encore déclarées), dans l'étape [15] - 22/ on va ajouter une petite structure pour faire contenir le total à payer (pas de mentions HT ou TTC ici, car, les frais d'expédition sont calculés en fonction du profil du client) TODO - un jour, choisir d'ajouter une mention TTC ou HT, qui sait? A méditer.. - 23/ on ajoutes des classes UI-Kit à l'élément de formulaire afin de lui donner plus de style, et on le restructure un peu - 24/ on a besoin de traiter différemment l'affichage des moyens d'expéditions, certains comme icirelais ou devisChronopost sont alors traités différemment, voir les étapes respectives pour tout ça et afin de vérifier cela, à travers l'itération, on amorce un switch() pour trouver la valeur du NOM (id) MOYEN D'EXPEDITION, et agir en conséquence - 25/ ici l'on vérifie dans le switch le cas de "Livraison dans un espace ICI relais pour les particuliers", pour lui on lui a réservé un traitement spécial, voir [14] à [21] - 26/ ici l'on vérifie dans le switch le cas de "Demande de devis Chronopost", pour lui on lui va modifier son encodage (de ISO-8859-1 à UTF-8), en effet, il s'affiche très mal pour ce qui est des accents sinon ensuite on utilise un preg_replace directement à l'affichage de sa valeur, afin de corriger l'erreur grossière que le fichier: /includes/modules/shipping/devisChronopost.php cf: $this->title initialise: il ne considère pas l'encodage des entités < et >, ce qui cassait le HTML et créait un tag HTML .. WTF! - 27/ et là, tout les cas restants (par défaut) qui ne nécessitent aucunes interventions d'affichage ou de logique - 28/ ici on revoit UNIQUEMENT l'affichage visuel de la date d'évènement, pas son système, cela implique de modifier 3 fichiers pour son fonctionnement! - le premier: /includes/date_event.php qui en réalité charge et génère tout le formatage HTML du bouton de date et du calendrier on va juste avoir besoin ici de reformater visuellement le bouton de date! (pas le calendrier) - le deuxième: /js_includes/jQueryUI/Modules/datePicker/jquery.ui.datepicker.js qui lui est tout bonnement l'ensemble du code javascript du plugin DatePicker pour jQuery UI (framework visuel pour jQuery) on va seulement intercepter le droit à Google de traduire le calendrier, et l'interdire de traduction automatique - le troisième: ce fichier même où vous lisez ces lignes tout cela est affiché à cet endroit (voir CODETAG [ALTERATION_OF_OLD_DESIGN_BUTTON_DATE_OF_EVENT_WILL_BE_DISPLAYED_HERE]) voici ce qu'on y fait on donne à la cellule une largeur de 20% (sinon le bouton serait coupé en deux), donc on ajoute l'attribut width à la cellule on donne à la cellule un alignement central (sinon c'est pas joli), donc on altère l'attribut align de la cellule on donne à la cellule un alignement en haut (sinon c'est pas joli), donc on ajoute l'attribut valign à la cellule on corrige les accents des commentaires cassés suite à l'encodage ISO8859-1n <=> UTF8 puis l'on fera un dernier truc, qui sera expliqué dans à étapes [29] voir [13][VTAB-TEAM-LINDER-PARTNER-1] - 29/ alors là on revoit UNIQUEMENT l'affichage visuel du bouton continuer (de OSCommerce), qui est bloqué si on n'a pas choisi de date d'évènement, ce qui est ce que l'on veut voici ce qu'on va faire on revoit son design (tout en implémentant le code de bloquage du bouton si aucune date d'évènement n'est saisie) pour l'adapter au design du reste on retravaille son code de manière à l'aérer on reformate aussi de manière à moins utiliser PHP pour écrire le javascript à cet endroit on ajoute un évènement ondblclick (pour effectuer autant l'avertissement sur un double clic, mais si on clique sauvagement à la suite, on pourra quand même passer outre cette 'protection'.. on n'affiche plus la fenêtre d'ALERT en javascript, mais via une superbe fenêtre modale construite en [32] via UI Kit (et quelques classes CSS de mon cru) voir [13][VTAB-TEAM-LINDER-PARTNER-1]- 30/ on commente l'ancien code au besoin de se rebaser dessus?.. Bah, ça peut pas faire de mal, alors oui.. voir [13][VTAB-TEAM-LINDER-PARTNER-1]- 31/ remplacement de l'ancien bouton (lien) ou (soumission), pour l'avoir désormais géré par UI Kit, mais aussi, avec une classe précise voir [13][VTAB-TEAM-LINDER-PARTNER-1]- 32/ on va maintenant construire une structure Modale ici, c'est pas compliqué, on choisi une fenêtre modale avec la possibilité de bouton et de titre, afin d'afficher l'avertissement initial modifié en [29] on déclenchera l'affichage de la modale en effectuant la simulation d'un clic sur le lien ici de [29] on donne différentes classes CSS à la fenêtre modale, mais en réalité, très peu seront stylisée, il n'y a pas besoin de grand chose là en revanche, on remplace tout les sauts de lignes JAVSCRIPT (\n) par des sauts de lignes HTML (
) (car la chaîne TEXT_DISPLAY_EVENTDATE_DATEISREQUIRED ne contient pas de HTML, vu que c'était censé initialement s'afficher depuis une alert() javascript, ce qui n'était vraiment plus très beau en 2020 NOTE - les \n étaient des SAUTS DE LIGNES au format Javascript pour sauter des lignes dans l'affichage de l'alert() on retire les éventuels derniers slash '/' avec stripslashes() on retire enfin les éventuels espaces AVANT et APRES la chaîne avec trim() - 33/ ici, une incohérence de cette page, et surtout de nativement OSCommerce doit être réglée.. en effet, OSCommerce veut créér un pixel (à l'époque c'était requis pour cette connerie de Internet Explorer), pour correctement positionner le tableau, sauf que.. ben, ça utilise: tep_draw_separator('pixel_silver.gif', ....) au lieu de: tep_draw_separator('pixel_trans.gif', ....) ce qui cause le pixel imagé, à s'afficher (très estompé, mais visible quand même!) donc, on remplace ici: pixel_silver.gif par pixel_trans.gif ça fonctionnait.. mais, on avait un décalage au final avec notre bel icone Material Icons, désormais implémenté en [34] résultat des courses, on va juste... placer un style="display: none !important;" sur chaque cellule contenant un pixel_silver de manière à dissimuler la cellule et réagencer proprement l'icone Material Icons - 34/ ici, on va utiliser un icone material icone à la place de l'ancienne image que l'on va virer, pas commenter, elle n'ira jamais dans le nouveau design de par sa vieillesse visuelle - 35/ on va juste recentrer la cellule, cela centre proprement l'icone Material Icons désormais avec le Texte de l'étape actuelle dans la procédure de commande voir [13][VTAB-TEAM-LINDER-PARTNER-1] - 36/ on ajoute un nom de classe CSS qui nous servira à spécifiquement cibler cet élément soit en responsive, soit sans responsive [VTAB-TEAM-LINDER-PARTNER-1][OSC][MultiTaskDescriptions] - Revue de la charte Graphique: - voir [13][VTAB-TEAM-LINDER-PARTNER-1] 1/ ajout du nouveau bouton vtab à la place de l'ancien bouton, géré par la fonction vtab_tep_button() qui se trouve dans le fichier vtab_html_output.php cela remplace l'étape [31] de la tâche [SI-LINDER-PARTNER-2][OSC] - 2/ mise en commentaire (pour ignorer l'affichage) de la première ligne du tableau avec les textes : TEXT_CHOOSE_SHIPPING_METHOD; / TITLE_PLEASE_SELECT - 3/ retrait de la classe "moduleRowSelected" en attendant de pouvoir modifier le fichier de styles CSS associé - 4/ retrait du texte Adresse d'expédition : pas de doublon avec le titre - 5/ on déplace la classe d'un cran au dessus afin de pouvoir englober la première cellule de la première ligne qui elle même contient les infos de l'adresse traduction: structuration d'une nouvelle ligne de tableau qu'on souhaite ici pour cet englobage - 6/ ajout d'une classe css ici pour permettre de cibler la ligne qui encadre (ou non) la cellule qui contient les infos de l'adresse et la 2è cellule qui contient le bouton modifier - 7/ transformation des deux cellules
pour pouvoir les aligner les unes en dessous de l'autre - 8/ on invalide l'affichage (on le commente pour l'instant) de tout l'ancien système de fil d'arianne correspondant aux étapes du processus de commande (voir CODETAG[VTAB_1_OLD_BREADCRUMBAR_ORDER_STEPS]) il s'affiche désormais différemment en haut de page, ailleurs (voir CODETAG[VTAB_1_NEW_FRAGMENT_BREADCRUMBAR_ORDER_STEPS]) - 9/ mise en commentaire du séparateur OSCommerce à l'ancienne qui émule l'action: clear: both; de CSS (à l'origine présent ici pour être compatible avec de vieilles versions d'Internet Explorer) - 10/ on commente le bloc entier qui contient le texte statique: " Nouveau : vous pouvez indiquer les coordonnées de votre voisin en cas d'absence. Veuillez choisir dans votre carnet d'adresses l'adresse où vous voudriez que les articles soient livrés. " - voir [13][VTAB-TEAM-LINDER-PARTNER-1] 11/ on retire les textes "informations requises", cette information sera mise en avant lorsque l'utilisateur clique sur le bouton qui passe à la page checkout_payment. à trois endroits : dans adresse d'expédition, méthode d'expédition, continuer la procédure de commande - 12/ on retire l'affichage des commentaires ici - 13/ nouveau concept pour rendre la selection de la date d'événement obligatoire, dorénavant le datepicker de jQuery, soutenu par jQuery UI sera affiché lorsque l'utilisateur cliquera sur le bouton suivant intitulé: "Date de l'événement/livraison souhaitée". L'utilisateur sera contraint techniquement à sélectionner une date, on s'affranchit donc de tous les tests pour vérifier qu'il a bien sélectionné une date. le champ SystemeDeCalendier n'est plus affiché (display: none), mais le sera (suppression du style display none et activation du focus) quand l'utilisateur cliquera sur le bouton "Date de l'événement/livraison souhaitée". Une fois la date sélectionnée, le formulaire sera validé (form.submit() appelé dans "onSelect" du datepicker) Par ailleurs, la vérification de la sélection d'une méthode de paiement s'effectue maintenant en javascript à l'aide de vtab_js_alerte comme technique de notification tout ceci remplace les étapes: - [3], [28], [29], [30], [31], [32], [36] de la tâche [SI-LINDER-PARTNER-2][OSC] et - [1], [11] de la tâche [VTAB-TEAM-LINDER-PARTNER-1] } */ ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?>
[SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions]:{ - 1/ petits changements sur la structure et sur le texte sert uniquement à restyliser l'élément pour le centrer par exemple et le re-marger - 2/ on modifie l'ancien texte "Information livraison" par "Renseignements pour l'Expédition" [VTAB-TEAM-LINDER-PARTNER-1][OSC][MultiTaskDescriptions] - Revue de la charte Graphique: - 1/ désormais ce bloc de texte statique ne sera plus utilisé, alors on le commente } */ ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions] ************************************************************************ */ ?>
[SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions]:{ - 1/ on va pas se mentir, cette partie de code mixant html et php a une structure de code affreuse pour la relecture développeur, mais, de toutes façons, on restructurera quelques morceaux clefs! au lieu de cela, on va ajouter un tas de petites modifications, des classes, des styles, et peut-être du comportement à différents éléments de ce tableau à noter que cette partie de code du tableau contient le contenu visuel de la page - 2/ on va ajouter une classe au tableau (..
) cette classe servira à pouvoir cibler plus efficacement cette partie sensible du design, autant en affichage normal qu'en responsive - voir [13][VTAB-TEAM-LINDER-PARTNER-1] 3/ on ajoute une cellule de plus afin de pouvoir afficher l'état d'importance de la section - 4/ on va ajouter une classe à la cellule du tableau (
....
en deux lignes
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> VDVOISIN: gestion des voisins ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?>

'; ?>
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> ' . TITLE_SHIPPING_ADDRESS . ' 
' / *. tep_image(DIR_WS_IMAGES . 'arrow_south_east.gif')* /; ?> */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> 0000003: icirelais/exapaq ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
' ); ?>
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?>
1 && sizeof($quotes[0]) > 1) { ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> 0000004: ajout icone dans choix de livraison ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> 0000004: ajout icone dans choix de livraison ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> 0000003: icirelais/exapaq $change_address_link = ''; if($quotes[$i]['id'] == 'icirelais') { // ([11])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN $change_address_link = '      ( ' . str_replace(TEXT_CHANGE_ADDRESS, 'Choisir ou créer une autre adresse', TEXT_CHANGE_ADDRESS) .' )'; // ([11])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END } // <- 0000003 ?> 0000004: ajout icone dans choix de livraison ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
add_location ' . TITLE_PLEASE_SELECT . '' . '
' // ([6])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END . 'add_location' / *. tep_image(DIR_WS_IMAGES . 'arrow_east_south.gif')* /; ?>
add_location
add_location [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>  
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> ', $currencies->format(MODULE_ORDER_TOTAL_SHIPPING_FREE_SHIPPING_OVER) ) ) . tep_draw_hidden_field('shipping', 'free_free'); ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> 0000003: icirelais/exapaq ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN // -> 0000003: icirelais/exapaq // Added for ICI relais if($quotes[$i]['id'] == 'icirelais') { // ([7])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN echo '' // ([8])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN // ([12])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END . '' // ([8])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END . ''; // ([7])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN } // End added for ICI relais // <- 0000003 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) ) { // ([7])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([3])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END echo ' ' . "\n"; } else { // ([7])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END echo ' ' . "\n"; } ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([21])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN $dataArrayRegex1 = null; $dataStringMethodSearcher = null; $dataStringMethodReplacer = null; // ([21])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([14])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> 1) || ($n2 > 1) ) { ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
' // ([9])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN . '' . TEXT_INTRODUCTION_ICIRELAIS_POINT . '' // ([9])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END . '
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN switch ($quotes[$i]['id']) { // ([25])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN case 'icirelais': // ([14])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN // [NEW_SYSTEM_FOR_ICIRELAIS_DETAILS_SHOWER] // ([15])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN $dataArrayRegex1 = array(); $dataStringMethodSearcher = ''; $dataStringMethodReplacer = ''; // ([15])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([16])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN preg_match( '/' . '(?P\)' . '(?P\)' . '(?P\relaydetail[0-9]{0,})\',\'(?Pmap_canvas[0-9]{0,})(?P).*\)">)' . '(?P\)' . '(?P'.TEXT_MORE_DETAILS.')' . '(?P\<\/u\>)' . '(?P\<\/span\>)' . '(?P\<\/center\>)' . '(?P\<\/span\>)' . '/', $quotes[$i]['methods'][$j]['title'], $dataArrayRegex1 ); // ([16])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([17])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN /* print_r($dataArrayRegex1); echo ''; */ // ([17])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([18])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN $dataStringMethodSearcher = $dataArrayRegex1['htmltag_span_s3_open'] . $dataArrayRegex1['htmltag_center_open'] . $dataArrayRegex1['htmltag_span_onclick_open'] . $dataArrayRegex1['htmltag_u_open'] . $dataArrayRegex1['html_u_content'] . $dataArrayRegex1['htmltag_u_close'] . $dataArrayRegex1['htmltag_span_onclick_close'] . $dataArrayRegex1['htmltag_center_close'] . $dataArrayRegex1['htmltag_span_s3_close']; // ([18])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([19])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN // A cause de l'ancien système perrave qui fonctionnait pas avec prototype.. Voir CODETAG [OLD_SYSTEM_FOR_ICIRELAIS_DETAILS_SHOWER] $dataStringMethodReplacer = $dataArrayRegex1['htmltag_span_s3_open'] . $dataArrayRegex1['htmltag_center_open'] . str_replace('onClick=', 'style="display: none;" onClick=', $dataArrayRegex1['htmltag_span_onclick_open']) . $dataArrayRegex1['htmltag_u_open'] . $dataArrayRegex1['html_u_content'] . $dataArrayRegex1['htmltag_u_close'] . $dataArrayRegex1['htmltag_span_onclick_close'] . $dataArrayRegex1['htmltag_center_close'] . '' . str_replace($dataArrayRegex1['html_u_content'], '', $dataArrayRegex1['html_u_content']) . '' . $dataArrayRegex1['htmltag_span_s3_close']; // ([19])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([20])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN echo str_replace( $dataStringMethodSearcher, $dataStringMethodReplacer, $quotes[$i]['methods'][$j]['title'] ); // ([20])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END break; // ([25])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN // ([26])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN case 'devisChronopost': echo utf8_decode( preg_replace( '/\,\s{0,}Veuillez\s{0,}selectionner\s{0,}<>\s{0,}comme\s{0,}moyen\s{0,}de\s{0,}paiement/', '.
Au moment de payer, veuillez selectionner <<  Devis Hors France Métropolitaine  >> comme méthode de paiement', $quotes[$i]['methods'][$j]['title'] ) ); break; // ([26])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([27])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN default: echo $quotes[$i]['methods'][$j]['title']; break; // ([27])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END } // ([24])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> €', $currencies->format(tep_add_tax($quotes[$i]['methods'][$j]['cost'], (isset($quotes[$i]['tax']) ? $quotes[$i]['tax'] : 0))) ); ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> €', $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']) ); ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][AddClassDescription(--colorTitlePageCheckoutShipping)]:{" on ajoute la classe de manière à styliser l'élément "} ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
0000007: ajout de la date d'evenement ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> person_pin_circle
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions] ************************************************************************ */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SimpleTaskDescription]:{" on va ici juste ajouter un qui pour refermer le div> ouvert après la fermeture du tableau et du du formulaire "} ?> [SI-LINDER-PARTNER-2][OSC][SimpleTaskDescription]:{" on ajoute une classe pour pouvoir cibler cette cellule de tableau afin de la masquer en responsive ou autres ! // [RESPONSIVE_DESIGN_2020_IMPLEMENTATION_CARDBOARD_2020_SAPHYRA_INTERACTIVE_ETAPE_4] "} ?>
[SI-LINDER-PARTNER-2][OSC][SimpleTaskDescription]:{" on ajoute un élément HTML et une classe pour pouvoir cibler cette zone afin de la styliser en responsive ou autres ! "} ?>