[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 ?>add('header', WARNING_INSTALL_DIRECTORY_EXISTS, 'warning'); } } // check if the configure.php file is writeable if (WARN_CONFIG_WRITEABLE == 'true') { if ( (file_exists(dirname($HTTP_SERVER_VARS['SCRIPT_FILENAME']) . '/includes/configure.php')) && (is_writeable(dirname($HTTP_SERVER_VARS['SCRIPT_FILENAME']) . '/includes/configure.php')) ) { $messageStack->add('header', WARNING_CONFIG_FILE_WRITEABLE, 'warning'); } } // check if the session folder is writeable if (WARN_SESSION_DIRECTORY_NOT_WRITEABLE == 'true') { if (STORE_SESSIONS == '') { if (!is_dir(tep_session_save_path())) { $messageStack->add('header', WARNING_SESSION_DIRECTORY_NON_EXISTENT, 'warning'); } elseif (!is_writeable(tep_session_save_path())) { $messageStack->add('header', WARNING_SESSION_DIRECTORY_NOT_WRITEABLE, 'warning'); } } } // check session.auto_start is disabled if ( (function_exists('ini_get')) && (WARN_SESSION_AUTO_START == 'true') ) { if (ini_get('session.auto_start') == '1') { $messageStack->add('header', WARNING_SESSION_AUTO_START, 'warning'); } } if ( (WARN_DOWNLOAD_DIRECTORY_NOT_READABLE == 'true') && (DOWNLOAD_ENABLED == 'true') ) { if (!is_dir(DIR_FS_DOWNLOAD)) { $messageStack->add('header', WARNING_DOWNLOAD_DIRECTORY_NON_EXISTENT, 'warning'); } } if ($messageStack->size('header') > 0) { echo $messageStack->output('header'); } ?> [SI-LINDER-PARTNER-2][OSC][MultiTaskDescriptions]:{ - 1/ on place aussi les liens de construction du menu (Mon Compte et Contact etc..), qui servira en mode non-responsive dans le nouveau design: une bande de couleur uniforme tout en haut du site) à noter, dans le fichier: /includes/header.php (cherchez le CODETAG: [MY_ACCOUNT_MENU_IS_ALSO_HERE] et [CONTACT_MENU_IS_ALSO_HERE]), car les liens du menu/contact s'y trouve aussi! à la différence du système de détection imaginé (et fonctionnel) pour la boite de recherche du site on a pas besoin de charger de fichiers externes, donc, pas besoin de différencier les blocs, car, les deux blocs sont dans la même page! donc on va juste différencier ici les éléments à afficher dans les différents modes: (Nested), (Tabled). mais à l'aide de classe CSS. ici, c'est le mode (Nested) qui sera construit, donc on ajoute la classe correspondante à ce mode dans le conteneur affichant le bloc désiré. ainsi, on pourra aisément piloter via la nouvelle classe CSS son affichage ou pas (display: none ou block) ! l'idée, c'est d'afficher la version (Nested) uniquement sur grand écran (genre en mode non-responsive). l'idée, c'est d'afficher la version (Tabled) uniquement sur petit écran (genre en mode responsive). - 2/ comme le système de traduction est géré par un script google traduction, il n'est pas obligatoire de créér des constantes de langages donc, pour dire l'infobulle "Du lundi au vendredi de 8h à 12 et de 13h à 17h" "Téléphone: 03 69 57 64 36" "Bienvenue" on va l'écrire en brut dans le code, pas dynamique (ainsi, ne sera pas modifiable sans éditer le code source php). - 3/ on ajoute aussi en dur, un nouveau lien "Créez votre compte" précédé du séparateur: "ou", pointant sur /create_account.php ! de cette manière un visiteur peut rapidement créér un compte. - 4/ on ajoute aussi en dur, "Connexion à", et on transforme alors le texte dans HEADER_TITLE_MY_ACCOUNT en miniscule (str_tolower()) et on y remplace 'Mon' par 'votre', c'est plus professionnel. } */ ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN /* [MY_ACCOUNT_MENU_IS_ALSO_HERE] [CONTACT_MENU_IS_ALSO_HERE] */ ?>
|
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?>
phone_in_talk
Téléphone: 03 69 57 64 36
mail_outline
Contacts
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
' . VDPRO_HEADER_TITLE_TEXT . ''; echo '|'; } ?> ' . tep_output_string_protected($customer_first_name) . ' ・ '; } else { echo 'Bienvenue, '; } if (tep_session_is_registered('customer_id')) { echo '(' . HEADER_TITLE_LOGOFF . ') ・ '; } echo ''; if (tep_session_is_registered('customer_id')) { echo 'Gérer mon compte'; } else { // ([4])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END echo 'Connexion à '. strtolower(str_replace('Mon', 'votre', HEADER_TITLE_MY_ACCOUNT)). ''; } echo ''; // ([3])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN if (!tep_session_is_registered('customer_id')) { echo ' ou '; echo 'Créez votre compte'; } // ([3])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?> |
|
'
// ([2])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN
. tep_image(
// ([5])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
// ([1])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
DIR_WS_DESIGN . '_BerenButtonHamburgerPlaneteCercle.svg',
'logo',
// ([5])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN
'',
'',
// ([5])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
'class="size-img responsiveButton _berenIconeUtilisateurHoveredCraftedEffect" uk-toggle="target: #offcanvas-nav"'
)
// ([2])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
. '' ;
if (LPOSC_SALES_ENABLED == "True"){
$logo_path = DIR_WS_DESIGN . '_logo_soldes.svg';
}
else {
$logo_path = DIR_WS_DESIGN . '_logo.svg';
}
echo
''
// ([2])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN
. tep_image(
// ([5])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
// ([1])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
$logo_path,
'logo',
// ([5])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN
'',
'',
// ([5])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
'class="size-logo-lp"'
)
// ([2])-->[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][SubTaskDescription]::BEGIN
// CODETAG[USING_CARTINFOS] ?>
count_contents() > 0)
{
$headerInclude__ephemereal['stringProductsInstances'] = sizeof($cart->get_products());
if (tep_session_is_registered('customer_id')) {
if ($is_partner == true OR is_pro_customer() == true) {
$headerInclude__ephemereal['stringCartTotalPrice'] = ''
// prix hors-taxe (ht):
. ''
. str_replace(
'EUR',
'€',
$currencies->format($cart->show_total( 'HT', $is_partner, $coeff_partner)) . ' ' . 'HT'
)
. '';
} else {
$headerInclude__ephemereal['stringCartTotalPrice'] = ''
// prix hors-taxe (ht):
. ''
. str_replace(
'EUR',
'€',
$currencies->format($cart->show_total( 'TTC',$is_partner,$coeff_partner )) . ' ' . 'TTC'
)
. '';
}
} else {
$headerInclude__ephemereal['stringCartTotalPrice'] = ''
// prix toutes-taxes-comprises (ttc):
. ''
. str_replace(
'EUR',
'€',
$currencies->format($cart->show_total( 'TTC',$is_partner,$coeff_partner )) . ' ' . 'TTC'
)
. '';
}
?>
1) { ?>
produits:
produit:
[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
/* [SHOPPING_CART_IS_ALSO_HERE] */
// ([9])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN
if ($cart->count_contents() > 0) { ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
} ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN ?>
shopping_cart
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END ?>
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN
/* [PREVIEWING_SHOPPING_CART_IS_TRIGGERED_HERE] */ ?>
Pré-visualisation du panier
[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN $cart_contents_string = ''; if ($cart->count_contents() > 0) { $cart_contents_string = ' '
// ([11])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
// ([5])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
. ' ';
// ([6])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
?>
'
. '|'
// ([11])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::BEGIN
// prix hors-taxe (ht):
. ''
. str_replace(
'EUR',
'€',
$currencies->format($cart->show_total( 'HT', $is_partner, $coeff_partner)) . ' ' . 'HT'
)
. ''
// ([11])-->[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
. '/'
// prix toutes-taxes-comprises (ttc):
. ''
. str_replace(
'EUR',
'€',
$currencies->format($cart->show_total( 'TTC',$is_partner,$coeff_partner )) . ' ' . 'TTC'
)
// ([10])-->BEGIN[SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END
. ''
. ' '
. ' |
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?>
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?> [SI-LINDER-PARTNER-2][OSC][SubTaskDescription]::END /* | ), pour que Safari ne pose pas de problèmes, (alors que tout les autres navigateurs n'ont pas besoin de ça) cela mène à la création d'une div spécialement pour permettre la reconnaissance de la valeur space-between sur Safari, marche aussi sur les autres navigateurs - 4/ étape suggérée par Bérengère: nous devons éviter que OSCommerce depuis sa fonction PHP de génération d'images HTML, à savoir, tep_image(), ne gère le redimensionnement des icones, (ceci est à contrôler, car, ce n'est pas le fonctionnement attendu par cette fonction PHP appartenant à OSCommerce), mais cela est important pour éviter de forcer le redimensionnement pour l'annuler ou le contrôler depuis le responsive initialement, la taille était de 80x80 - 5/ nous devons éviter que OSCommerce depuis sa fonction PHP de génération d'images HTML, à savoir, tep_image(), ne gère le balisage alt des icones, (ceci est à contrôler, car, ce n'est pas le fonctionnement attendu par cette fonction PHP appartenant à OSCommerce), mais cela est important pour éviter d'afficher un texte de balisage inutile au survol initialement, la valeur était un texte de remplacement au survol (sous forme d'étiquette navigateur) } */ // ([1])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> |
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?>
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
echo
''
. tep_image(
DIR_WS_DESIGN . '_berenIconeAccesPro.svg',
// ([5])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
'',
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'class="position_acces_pro _berenIconeUtilisateurHoveredCraftedEffect _berenIconeAccesPro"'
)
. '';
// ([2])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
echo
''
. tep_image(
DIR_WS_DESIGN . '_berenIconeAccesPros.svg',
// ([5])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
'',
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'class="size-img _berenIconeUtilisateurHoveredCraftedEffect _berenIconeAccesPros"'
)
. '';
echo
''
. tep_image(
DIR_WS_DESIGN . '_berenIconeTel.svg',
// ([5])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
'',
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'class="size-img _berenIconeUtilisateurHoveredCraftedEffect _berenIconeTel" uk-tooltip="title: 03 69 57 64 36; pos: bottom;"'
)
. '';
echo
''
. tep_image(
DIR_WS_DESIGN . '_berenIconeContact.svg',
// ([5])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
'',
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'class="size-img _berenIconeUtilisateurHoveredCraftedEffect _berenIconeContact"'
)
. '';
echo
''
. tep_image(
DIR_WS_DESIGN . '_berenIconeFacebook.svg',
// ([5])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
'',
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'class="size-img _berenIconeUtilisateurHoveredCraftedEffect _berenIconeFacebook"'
)
. '';
echo
''
. tep_image(
DIR_WS_DESIGN . '_berenIconePanier.svg',
// ([5])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
'',
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'class="size-img _berenIconeUtilisateurHoveredCraftedEffect"'
)
. '';
echo
''
. tep_image(
DIR_WS_DESIGN . '_berenIconeUtilisateur.svg',
// ([5])-->BEGIN[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN
'',
'',
// ([4])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
'class="size-img _berenIconeUtilisateurHoveredCraftedEffect"'
)
. '';
// ([2])-->[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
?>
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?>
|
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END
/*
||||||
| .. | pour créer une nouvelle cellule dans le tableau - 4/ nous localisons désormais ici le fil d'arianne à l'origine, il était situé ailleur (voir CODETAG[BREADCRUMB_BAR_WAS_INITIALLY_HERE]) - 5/ désormais dans la nouvelle version de 2022, on va déplacer le système de traduction Google Translate Element Gadget ici à l'origine, il était situé ailleur (voir CODETAG[GOOGLE_TRANSLATE_ELEMENT_GADGET_WAS_INITIALLY_HERE]) autrement, rien n'a été changé ici, mais, il est important de préciser cela: (voir le fichier /includes/footer.php, tag: [GOOGLE_TRANSLATE_ELEMENT_GADGET_ON_MATERIAL_DESIGN_ICONS_BUGFIX_HERE]) car dans le fichier pré-cité.. .. ... il s'agit d'une réparation d'une énorme bêtise de Google Translate Element gadget.. suite à ce problème: https://github.com/google/material-design-lite/issues/1721 "Goggle translate destroying material-icons tags" en effet: ça bousille entièrement les icones Material Design Icons pourtant, Google Translate Element gadget et Google Material Design Icons sont tout deux des produits.. Google.. : mais ils ne sont pas d'accord voici une explication plus concise du problème (en anglais), par l'auteur du post-initial du problème: * Sorry if I'm not doing this correctly, but I just joined GitHub to submit this issue! * * I'm using MDL for the first time on a new site and discovered some major problems when users use google translate to translate the page. * Google translate replaces any text with it's translated version and surrounds it with double tags. * * First I thought the font tags where the problem, * then I realized it's translating the icon label withing the tag, * so MDL now has no idea which icon you want and it seems like the tags additionally mess with the layout. * * I'm working around the problem by adding the class "notranslate" to the tags which does seem to work, * but it doesn't fix the problem for the "hamburger" drawer icon since that is injected by the JS. * Is there a way to work around this so it's fixed out of the box for MDL? * * Seems like a big issue and unfortunate if the answer is that everyone has to had class="notranslate" to every tag. * * Also, any ideas on how to fix the hamburger icon? un collaborateur de Google Material Design Icons est au courant de ce souci, voici sa réponse: cf: https://github.com/google/material-design-lite/issues/1721#issuecomment-167230926 * Commit 04beffa solves the menu icon being translated by using the codepoint. * * Either using notranslate with ligatures or the codepoints solves the problem, at least with icons. * * For other Translate issues... Probably best to wait for 2.x when we refactor loads of stuff including layout. * * We can clearly see layout and possibly grid are completely screwed in translate, but for no *apparent reason. * * Rather than spend time debugging this now we should do testing ahead of releasing 2.x to make sure it works better in these cases. * * Marking this as a 2.x milestone thing as a reminder. sauf que.. ça n'a jamais été fixé.. depuis 2015... 5 ans pu--.. et toujours pas de patch de Google pour ce souci complètement idiot où Google Translate Element gadget s'entête à traduire les noms de codes des icones Material Design Icons... bref, j'ai donc mis au point mon propre patch.. c'est très simple: j'associe une fois la page chargée à chaque élément du DOM qui possèdent une classe material-icons une seconde classe: notranslate, et cela, à l'aide d'un code Javascript et d'une boucle! (car utiliser les Code Points, aurait été une plaie, dans le sens où j'aurait du reprendre chacun des fichiers 1 par 1 et donner un nom différent à l'icone en correspondance avec son Code Point code-points material design icons: https://github.com/google/material-design-icons/blob/master/iconfont/codepoints) l'effet est réussi: toutes les icone Material Design Icons sont alors préservées, car chaque élément qui possède une classe material-icons sont en réalité des icones Material Design Icons contre-coup: ça peut faire ramer la page si il y a plus de 10000 icones, mais.. on en est à milles lieues! */ ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?> [VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::BEGIN ?>||||||||||
[VTAB-TEAM-LINDER-PARTNER-1][OSC][AddClassDescription(headerNavigation)]:{" permet de cibler cet élément depuis une règle CSS "}
|
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?>
[VTAB-TEAM-LINDER-PARTNER-1][OSC][SubTaskDescription]::END ?>
| ', '', 'ù'), htmlspecialchars(urldecode($HTTP_GET_VARS['error_message']))); ?> |
| ', '', 'ù'), htmlspecialchars($HTTP_GET_VARS['info_message'])); ?> |