[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 ?>[SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions]:{ - 1/ on va commencer par structurer le nouveau fichier, de manière à facilement le reconnaître dans le code source, et surtout on respecte le système d'infobox de OSCommerce, afin de préserver la structure ET la philosophie d'affichage d'OSCommerce, soit usage de $info_box_contents = array(); $info_box_contents[] = array('text' .. menuInfoBoxHeading() et $info_box_contents = array(); $info_box_contents[] = array('text' .. menuInfoBox() on n'oublie pas d'ouvrir et de fermer les lignes du tableau ( et ) ainsi que la cellule contenante ( et ), cela est requis car en réalité, ici, l'on se trouve dans une )
qui est construite depuis le fichier .php accédé (exemple: index.php). ce n'en sera que plus simple après en cas de besoin d'adapter à une version future! et pour pouvoir identifier en responsive cette cellule via un sélecteur CSS, on va ajouter au [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN $dynamicnavigationboxNouveauxArrivages__referencers = null; $boxDynamicNavigationBoxNouveauxArrivages__phpvar_cellBox_content = null; // ([3])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END } // ([6])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END } // ([1])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END /* [SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions] ************************************************************************ */
une petite classe CSS ! - 2/ cette boite-dynamique-de-navigation est censée manipuler des données de la base de données ou autres, ainsi, l'on crée quelques requêtes SQL (ou les conditions qui vont bien) afin d'extraire ou d'insérer des données de ou vers la base de données ou d'autres sources, on créé donc une variable PHP (à index nommés associatifs) qui serviront à la logique de la boite-dynamique-de-navigation, (car c'est bien une boite-dynamique-de-navigation et non une boite, en apparence visuelle), certaines de ces variables nous serviront plus d'une fois dans ce fichier.. concernant le tableau associatif, chaque index nommé du tableau associatif sont destinés à être employé de manière bien précises spécialement pour cette boite-dynamique-de-navigation: on se base sur la logique du fichier original /includes/boxes/mvt_stock.php et on y récupère aussi les commentaires, codes et commentaires initiaux, seront aussi repris et inclus sous forme refactorisés (c'est-à-dire proprement organisé) au code source mais on conserve éventuellement les NOMS DES VARIABLES INITIALES. BUG - regarder le CODETAG [BUG_ASSOCIATIVE_ARRAY_INDEX_SEEMS_UNUSABLE] - 3/ nous n'oublions pas de nullifier les variables déclarées en [2] et [5] (de les détruire), à la fin du fichier comme une purge donc, - 4/ il est très important que cette boite-dynamique-de-navigation dispose d'un titre géré par OSCommerce du-moins, donc, on écrit bel et bien un titre essentiel à l'éco-système et philosophie de OSCommerce - 5/ on utilise une variable pour définir le contenu de la boite-dynamique-de-navigation aussi, on développe la structure HTML de la boite-dynamique-de-navigation ici elle sera stylisée plus tard par du code CSS et c'est là que certaines variables définies en [2], vont servir, dans le sens où, on va afficher le contenu désiré enfin, on se sert de la variable contenant le contenu de la structure HTML de la boite-dynamique-de-navigation, et on l'affiche à l'aide d'une infoxbox: menuInfoBox() - 6/ ATTENTION - avant octobre 2020, le client, aimait l'affichage de la boite Nouveaux Arrivages - depuis octobre 2020, le client, finalement préfèrait que cette boite soit masquée, mais après lui avoir proposé de ne l'activer que pour les professionnels ou partenaires, il a dit ok pour ça donc ici, on va ajouter une condition pour tester si le profil du client est Professionnel ou Partenaire), si oui, on générera et affichera la boite si non, on ne générera pas l'affichage de la boite } */ ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN // ([6])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END if ($is_partner || is_pro_customer()) { // ([2])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN /** ANCIEN CODE REPRIS::(begin):: **{ peut avoir été refactorisé/changé pour s'adapter aux besoin de développements) }** ** **/ // -- on récupère les données des 100 derniers mouvements de stock $products_query = tep_db_query(" SELECT sa.products_name, sa.date, sa.products_id, sa.qtyadd FROM " . ' stockadd ' . " sa ORDER BY sa.date DESC LIMIT 0,100 "); // -- ces deux lignes ne sont pas issues du code original, mais, elles serviront à titre de debug (éventuel) $legacy_mvt_stock_counts = tep_db_num_rows($products_query); $legacy_mvt_stock_fetchs = tep_db_fetch_array($products_query); /** ANCIEN CODE REPRIS::(end):: **/ $dynamicnavigationboxNouveauxArrivages__referencers = array( 'mvt-stock-counts' => $legacy_mvt_stock_counts, 'mvt-stock-fetchs' => $legacy_mvt_stock_fetchs, 'mvt-stock-html-structure' => '', 'mvt-stock-show-quantity' => false ); // > [start]{"boucle de gestion du listing des nouveaux arrivages"} // /** ANCIEN CODE REPRIS::(begin):: **{ peut avoir été refactorisé/changé pour s'adapter aux besoin de développements) }** ** **/ /** PHP 5.3 N'AIME PAS CA.. : // [BUG_ASSOCIATIVE_ARRAY_INDEX_SEEMS_UNUSABLE] $product_ids = ''; while ($orders = $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-fetchs']) { $product_ids .= (int)$orders['products_id'] . ','; } $product_ids = substr($product_ids, 0, -1); // très.. curieux: // - soit un bug de ma part, suite à un illogisme d'usage, // mais aussi très probablement un bug de PHP 5.3 sur le serveur, car c'est bien encore PHP 5.3 qui y tourne à l'heure où j'écris ces lignes: (mercredi 11 décembre 2019): // // car utiliser: // $legacy_mvt_stock_fetchs = tep_db_fetch_array($products_query); // $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-fetchs'] = $legacy_mvt_stock_fetchs; // while ($products = $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-fetchs'] { ... } // // SEMBLE DIFFERENT DE // while ($products = tep_db_fetch_array($products_query)) { ... } // // --- CONCLUSION: BUG de PHP (ou un bug à moi?) ? // Au final, on utilise le tep_db_fetch_array() directement.. au moins ça fonctionne comme ça.. c'est dommage, ça mochifie le code.. // Rhââ PHP 5.3... Saleté de vieille version de PHP 2003! **/ $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-html-structure'] = ''; $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-html-structure'] .= '
'; while ($products = tep_db_fetch_array($products_query)) { $plus = ( (int)$products['qtyadd'] > 0 ) ? "+" : ""; if ( $plus === "+" AND $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-show-quantity'] == true) { $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-html-structure'] .= '
  • (' . ''. $plus . $products['qtyadd'] . '' . ')  LE  [' . date("d/m", strtotime($products["date"])) . ']
    ' . $products["products_name"] . '
  • '; } else { $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-html-structure'] .= '
  • LE  [' . date("d/m", strtotime($products["date"])) . ']
    ' . $products["products_name"] . '
  • '; } } $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-html-structure'] .= ''; $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-html-structure'] .= '
    '; /** ANCIEN CODE REPRIS::(end):: **/ // // < [stop]{"boucle de gestion du listing des nouveaux arrivages"} if ($dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-counts']) { // ([2])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
    [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN $info_box_contents[] = array('text' => "  " . '' . 'Nouveaux Arrivages' . ''); new menuInfoBoxHeading($info_box_contents, false, false); // ([4])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END // ([5])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN $boxDynamicNavigationBoxNouveauxArrivages__phpvar_cellBox_content = '
    ' . $dynamicnavigationboxNouveauxArrivages__referencers['mvt-stock-html-structure'] . '
    '; $info_box_contents = array(); $info_box_contents[] = array('text' => $boxDynamicNavigationBoxNouveauxArrivages__phpvar_cellBox_content); new menuInfoBox($info_box_contents); // ([5])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> [start]{"inclusion des scripts Javascript distants nécéssaires à l'initialisation de jQuery pour le plugin de pagination initialement prévu"} // // { on prévoit un passage en tout HTTPS (ssl secure http) pour le site, et donc on peut avoir des inconsistances au niveau des protocoles HTTP pour les tierces-parties } // { tierces-parties qui peuvent êtres des scripts Javascript appelés sur des sites externes, en HTTP au lieu de HTTPS } // { ici on va fixer les liens HTTP en HTTPS } /** ANCIEN CODE REPRIS (depuis includes/boxes/mvt_stock.php)::(begin):: **{ peut avoir été refactorisé/changé pour s'adapter aux besoin de développements) }** ** **/ ?> [stop]{"inclusion des scripts Javascript distants nécéssaires à l'initialisation de jQuery pour le plugin de pagination initialement prévu"} // > [start]{"inclusion des styles CSS embarqués nécéssaires à l'initialisation de jQuery pour le plugin de pagination initialement prévu"}?>