tazvld Posté(e) le 14 août 2020 Partager Posté(e) le 14 août 2020 Bonjour, Voilà, en suivant les commentaires sur la V7 du site, beaucoup sont comme moi et apprécié voir rapidement les news du jour. J'ai proposé alors de remplacer la date de l'article par "Aujourd'hui' avec une mise en forme assez visible comme ici : Je me suis donc lancer dans pour proposer un userscript pour faire ça. Malheureusement, je n'ai jamais fait beaucoup de JS, et ça fait des années que je n'en ai pas touché. Autant dire que j'ai codé ça sans connaissance du langage (et que déjà qu'en français je n'étais pas terrible, l'anglais est pire). J'ai donc créé ce script dans tampermonkey normalement accessible sur tout les navigateurs et je pense que ça doit être compatible avec Greasemonkey. v0.2.1 : support de l'heure relative // ==UserScript== // @name nxiV7todayEmph // @namespace http://tampermonkey.net/ // @version 0.2.2 // @description emphasize the news of the day for nextInpact v7. // @author tazvld // @match *://www.nextinpact.com* // @grant none // ==/UserScript== (function() { 'use strict'; //########### console.log("Script nxiV7todayEmph start"); var addStyle =function(){ /* add new style to document head */ var cssTodaySubtitle='.TodaySubtitle {color: #ea7e19;}'; var head=document.head; var style=document.createElement('style'); head.appendChild(style); style.type='text/css'; style.appendChild(document.createTextNode(cssTodaySubtitle)); } var ilyaRegex=RegExp("il y a (\\d+) heures","g"); var ilyauneHeureRegex=RegExp("il y a une heure","g"); var ilyaMinRegex=RegExp("il y a (\\d+) minutes", "g"); var isToday=function(dateStr){ /* return if dateStr correspond to today date */ console.log(`test today on ${dateStr}`); var match=ilyaMinRegex.exec(dateStr); ilyaMinRegex.lastIndex = 0; if (match!==null){ //XXX : I considered that no articles will be published after 23h00. return true; } match=ilyauneHeureRegex.exec(dateStr); ilyauneHeureRegex.lastIndex = 0 if (match!==null){ //XXX : I considered that no articles will be published after 23h00. return true; } match=ilyaRegex.exec(dateStr); ilyaRegex.lastIndex = 0 if(match!== null){ console.log(`match found : ${match[1]}`); var today=new Date(); var currentHour=today.getHours(); var articleAge=parseInt(match[1]); if(articleAge<=currentHour){ return true; } } return false; } var applyTodayModif=function(sbtDateElem){ /* apply modification on sbtDateElem elem. */ var previousInnerHTML=sbtDateElem.innerHTML sbtDateElem.innerHTML=`<span class="TodaySubtitle">Aujourd\'hui</span>, ${previousInnerHTML}`; } var modifTodayDate=function(sbtDateElem){ /* apply modification on sbtDateElem elem if sbtDateElem correspond to today date. */ var dateStr=sbtDateElem.innerHTML; if(isToday(dateStr)){ applyTodayModif(sbtDateElem); } } //########### //add style to document addStyle() //add obserder to modify date as soon as document is modified var observed=document.body; var observeOpt={childList: true, substree: true}; var observerFunc=function(mutations){ /* find all subtitle dates elem in document and apply modification if this elem correspond to today date */ var subtitleDates=document.querySelectorAll(".subtitle span"); console.log(`Script nxiV7todayEmph : ${subtitleDates.length} subtitle date found`); for(let i=0; i<subtitleDates.length; i++){ modifTodayDate(subtitleDates[i]); } } //apply a first the the observFunc if page is already loaded. // XXX : because JavaScript is monothread, this should be directly followed by the MutationObserver. observerFunc(null); //look for modification in observed to change if necessary //FIXME : may be launched 2 times in a row, because the modification may be also observed var mutationObs1=new MutationObserver(observerFunc); mutationObs1.observe(observed, observeOpt); })(); v0.1 Divulgâcheur Lien vers le commentaire Partager sur d’autres sites More sharing options...
ecatomb Posté(e) le 14 août 2020 Partager Posté(e) le 14 août 2020 Demande d'avoir "aujourd'hui" sur le github, ce sera peut être plus pratique s'ils ajoutent une fonction pour ça 😉 https://github.com/NextINpact/nextinpactv7/issues Lien vers le commentaire Partager sur d’autres sites More sharing options...
tazvld Posté(e) le 14 août 2020 Auteur Partager Posté(e) le 14 août 2020 Il y a 17 minutes, ecatomb a écrit : Demande d'avoir "aujourd'hui" sur le github, ce sera peut être plus pratique s'ils ajoutent une fonction pour ça 😉 https://github.com/NextINpact/nextinpactv7/issues J'avais fait la proposition sur le forum, la réponse de David fut : Citer Parce que ça fait sapin de Noël. Et même s'il y avait un indicateur, il ne serait pas lié au jour (plutôt à ce qui est nouveau, ce qui n'est pas lié au jour de publication). Par contre les dates récentes (< 12h/24h) vont être relatives (idem pour la colonne de droite et IH) Donc j'ai fait un script. Cependant, je vois que ça ne fonctionne pas quand on revient sur la page d'accueil, le script ne fonctionne seulement lorsque la page est chargé directement sur la page d'accueil. (j'ai modifié le "@match" pour correspondre à tout NxI) Lien vers le commentaire Partager sur d’autres sites More sharing options...
jeje07bis Posté(e) le 14 août 2020 Partager Posté(e) le 14 août 2020 Grand merci à toi, ça semble fonctionner parfaitement. Je ne comprends pas la réponse de David qui trouve que ça fait sapin de noel. ça apporte une bien meilleure lisibilité pour voir les news du jour. MERCI! Lien vers le commentaire Partager sur d’autres sites More sharing options...
jeje07bis Posté(e) le 14 août 2020 Partager Posté(e) le 14 août 2020 je partage mon code CSS (la première partie étant de Jarod) : .sidebar-tab-container, .sidebar-container, .rs-container, .img-container, .pub-container, .mainbar, .bandeau-acces-libre { display: none; } .article-container, .main-container { width: 100%; padding: 40 0px; margin-left : 215px; margin-top : -20px; } .head-menu > li:nth-child(1) > a:nth-child(1) { margin-left: 120px; } .base .comment-quote, .orange-clair .comment-quote, .rose-clair .comment-quote, .yinyang-clair .comment-quote{ margin: 15px 35px; } .base .comment-quote, .orange-clair .comment-quote, .rose-clair .comment-quote, .yinyang-clair .comment-quote { color: rgb(157,157,167); border-left: 0.2em solid rgb(232, 130, 39) !important; } .comment-quote { font-weight:normal } Dans l'ordre : suppression de certains éléments, modification de quelques marges, et surtout augmentation du décalage des citations dans les commentaires, et changement de la couleur de ces mêmes citations (gris clair), légère réduction de l'épaisseur de la barre orange devant les commentaires. Lien vers le commentaire Partager sur d’autres sites More sharing options...
tazvld Posté(e) le 14 août 2020 Auteur Partager Posté(e) le 14 août 2020 Il y a 2 heures, jeje07bis a écrit : Grand merci à toi, ça semble fonctionner parfaitement. Je ne comprends pas la réponse de David qui trouve que ça fait sapin de noel. ça apporte une bien meilleure lisibilité pour voir les news du jour. MERCI! De rien. Pour l'instant ça fait le taf, même si comme je l'ai dit plus haut, ça ne fonctionne pas parfaitement. C'est un choix comme un autre, bon, ce n'est pas forcément le mien, j'ai fait un script qui fait le taf, je m'en fous du reste. Il n'y a pas forcément de mauvais choix. C'est vraiment le genre de détail que je n'ai pas envie de me prendre la tête avec quelqu'un. Si tu veux changer le CSS, remplace la ligne //add style to document addStyle() par : //add style to document //addStyle() et dans ton CSS personnalisé rajoute ce que tu veux pour la class css .TodaySubtitle{ ... } genre un truc tout con, c'est d'utiliser la pseudo class `.TodaySubtitle::before` pour rajouter un texte (comme un emote calendrier : 📅) avant la date. Lien vers le commentaire Partager sur d’autres sites More sharing options...
jeje07bis Posté(e) le 14 août 2020 Partager Posté(e) le 14 août 2020 merci, je testerais ce week end! mais c'est chaud bordel quand on n'est pas du tout dev... Lien vers le commentaire Partager sur d’autres sites More sharing options...
jeje07bis Posté(e) le 14 août 2020 Partager Posté(e) le 14 août 2020 Bon je viens de tester. ça fonctionne! Merci, je vais pouvoir m'éclater :D Lien vers le commentaire Partager sur d’autres sites More sharing options...
tazvld Posté(e) le 20 août 2020 Auteur Partager Posté(e) le 20 août 2020 Mise à jour pour supporter les heures relatives // ==UserScript== // @name nxiV7todayEmph // @namespace http://tampermonkey.net/ // @version 0.2.2 // @description emphasize the news of the day for nextInpact v7. // @author tazvld // @match *://www.nextinpact.com* // @grant none // ==/UserScript== (function() { 'use strict'; //########### console.log("Script nxiV7todayEmph start"); var addStyle =function(){ /* add new style to document head */ var cssTodaySubtitle='.TodaySubtitle {color: #ea7e19;}'; var head=document.head; var style=document.createElement('style'); head.appendChild(style); style.type='text/css'; style.appendChild(document.createTextNode(cssTodaySubtitle)); } var ilyaRegex=RegExp("il y a (\\d+) heures","g"); var ilyauneHeureRegex=RegExp("il y a une heure","g"); var ilyaMinRegex=RegExp("il y a (\\d+) minutes", "g"); var isToday=function(dateStr){ /* return if dateStr correspond to today date */ console.log(`test today on ${dateStr}`); var match=ilyaMinRegex.exec(dateStr); ilyaMinRegex.lastIndex = 0; if (match!==null){ //XXX : I considered that no articles will be published after 23h00. return true; } match=ilyauneHeureRegex.exec(dateStr); ilyauneHeureRegex.lastIndex = 0 if (match!==null){ //XXX : I considered that no articles will be published after 23h00. return true; } match=ilyaRegex.exec(dateStr); ilyaRegex.lastIndex = 0 if(match!== null){ console.log(`match found : ${match[1]}`); var today=new Date(); var currentHour=today.getHours(); var articleAge=parseInt(match[1]); if(articleAge<=currentHour){ return true; } } return false; } var applyTodayModif=function(sbtDateElem){ /* apply modification on sbtDateElem elem. */ var previousInnerHTML=sbtDateElem.innerHTML sbtDateElem.innerHTML=`<span class="TodaySubtitle">Aujourd\'hui</span>, ${previousInnerHTML}`; } var modifTodayDate=function(sbtDateElem){ /* apply modification on sbtDateElem elem if sbtDateElem correspond to today date. */ var dateStr=sbtDateElem.innerHTML; if(isToday(dateStr)){ applyTodayModif(sbtDateElem); } } //########### //add style to document addStyle() //add obserder to modify date as soon as document is modified var observed=document.body; var observeOpt={childList: true, substree: true}; var observerFunc=function(mutations){ /* find all subtitle dates elem in document and apply modification if this elem correspond to today date */ var subtitleDates=document.querySelectorAll(".subtitle span"); console.log(`Script nxiV7todayEmph : ${subtitleDates.length} subtitle date found`); for(let i=0; i<subtitleDates.length; i++){ modifTodayDate(subtitleDates[i]); } } //apply a first the the observFunc if page is already loaded. // XXX : because JavaScript is monothread, this should be directly followed by the MutationObserver. observerFunc(null); //look for modification in observed to change if necessary //FIXME : may be launched 2 times in a row, because the modification may be also observed var mutationObs1=new MutationObserver(observerFunc); mutationObs1.observe(observed, observeOpt); })(); j'ai aussi maj sur le premier post edit : j'ai corrigé pour les dates relatives en minutes. edit2 : cette fois je viens de corriger pour les dates en "il y a une heure". Est ce qu'il reste d'autre date relative ? Lien vers le commentaire Partager sur d’autres sites More sharing options...
jeje07bis Posté(e) le 20 août 2020 Partager Posté(e) le 20 août 2020 Hi J'ai pris ton dernier script. Pour moi c'est parfait comme ça. Le fait d'afficher "aujourd'hui" + le nombre d'heures / minutes depuis le moment ou un post a été mis en ligne, pour moi c'est vraiment top en lisibilité. bravo pour le boulot et la réactivité, et merci pour le partage! Lien vers le commentaire Partager sur d’autres sites More sharing options...
Messages recommandés
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.