Suite du sujet pour l'ajout de la date dans une citation

+2
Toryudo
Cloo
6 participants

Voir le sujet précédent Voir le sujet suivant Aller en bas

Résolu Suite du sujet pour l'ajout de la date dans une citation

Message par Cloo Mer 13 Sep 2023 - 15:21

J'étais particulièrement intéressée au sujet qui demandait de rajouter la date à une citation, qui se trouve ici:
https://forum.forumactif.com/t409140-ajouter-la-date-lors-de-la-citation-d-un-message

Malheureusement, le sujet est fermé, et je ne peux rien y rajouter.

Ce matin, j'essaie de l'implanter sur  mon forum test, avant de l'implanter sur mon forum prnicipal. ça semble bien fonctionner, mais il semble y avoir un tout petit problème dans le script:

Dans mon premier essai, je suis tombée sur un mardi...   je cite un message du mardi 8 décembre 2020, et au lieu d'écrire "mar" pour la journée, ça écrit "mars" Wink
Grand Duc mars 8 décembre 2020 - 18h10, Le a écrit :

Fort probablement à cause de ceci, dans le script fait par @Toryudo
const days = ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'];
const month = {
 'Jan': 'janvier',
 'Fév': 'février',
 'Mar': 'mars',
 'Avr': 'avril',
 'Mai': 'mai',
 'Juin': 'juin',
 'Juil': 'juillet',
 'Aoû': 'août',
 'Sep': 'septembre',
 'Oct': 'octobre',
 'Nov': 'novembre',
 'Déc': 'décembre'
};
qui transforme "mar" en "mars" Wink

Y aurait-il un petit ajustement à faire? Wink


De plus, il semble y avoir un problème avec la détection du nom de la personne citée quand il y a  des espaces dans le nom, car ici le membre s'appelle "Le Grand Duc". Quand je cite un de mes messages (Cloo, nick très court, un seul mot), j'ai ceci, ce qui me convient très bien (pas vraiment besoin du libellé du jour, en fait)
Le 8 décembre 2020 - 18h49, Cloo a écrit :

Merci d'avance!
Cloo

Cloo
Membre habitué

Féminin
Messages : 1024
Inscrit(e) le : 09/07/2008

http://accrosjardin.forumactif.com/
Cloo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Toryudo Mer 13 Sep 2023 - 16:56

Bonjour !

Zut, effectivement... voici un petit correctif pour que les noms d'utilisateurs avec un ou plusieurs espaces fonctionnent correctement. Ça corrige par la même occasion le mardi qui se transforme en mars !

Code:
const days = ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'];
const month = {
  'Jan': 'janvier',
  'Fév': 'février',
  'Mar': 'mars',
  'Avr': 'avril',
  'Mai': 'mai',
  'Juin': 'juin',
  'Juil': 'juillet',
  'Aoû': 'août',
  'Sep': 'septembre',
  'Oct': 'octobre',
  'Nov': 'novembre',
  'Déc': 'décembre'
};

$(function() {
  // Récupération date messages cités
  $('blockquote cite').each(function() {
    var $this = $(this);
    var mcite = $(this).text().split('Ŧ');

    if (mcite.length > 1) {
      $.get("/viewtopic.php?p=" + mcite[0], function(data) {
        let date = $(data).find('#p' + mcite[0] + ' .author').text();
        let dateArray = date.split(' ');

        let author = dateArray.shift().replace('par', '').trim();
        while (dateArray.length > 6){
          author += ' ' + dateArray.shift();
        }
        date = dateArray.join(' ');
        date = date.replace(',', ', à');
        date = date.replace(':', 'h');
        if (days.includes(date.slice(0, 3))) {
          date = 'Le ' + date.slice(3).trim();
        }
        for (var prop in month) {
          if (month.hasOwnProperty(prop)) {
            date = date.replace(prop, month[prop]);
          }
        }

        $this.text(date + ', ' + author + ' a écrit :');
      });
    }
  });

  // Ajout du numéro de message dans le quote
  $(function() {
    const params = new URLSearchParams(window.location.search);
    const message = params.get('p');
    const mode = params.get('mode');

    if (mode && (mode == 'quote') && message) {
      const txtPost = $('textarea').sceditor('instance').val();
      $('textarea').sceditor('instance').val(txtPost.replace(/\[quote="?([^"]*)"?\]/i, '[quote="' + message + 'Ŧ$1"]'));
    }
  });
});
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1564
Inscrit(e) le : 31/03/2020

https://deus-academia.forumactif.com/
Toryudo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Cloo Mer 13 Sep 2023 - 17:44

Ahhh... voilà qui est beaucoup mieux, j'obtiens ceci:

Le 8 décembre 2020 - 18h10, Le Grand Duc a écrit :

Je l'installe sur mon forum principal Smile


Peut-être mettre cette version sur le sujet initial, d'une part pour la personne qui a posé la question en premier, d'autre part pour ceux qui vont trouver cette astuce plus tard? Wink
Cloo

Cloo
Membre habitué

Féminin
Messages : 1024
Inscrit(e) le : 09/07/2008

http://accrosjardin.forumactif.com/
Cloo a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Toryudo Mer 13 Sep 2023 - 21:23

Je fusionnerai les deux sujets une fois que celui-ci sera résolu ! Very Happy
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1564
Inscrit(e) le : 31/03/2020

https://deus-academia.forumactif.com/
Toryudo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Cloo Mer 13 Sep 2023 - 21:36

En fait, j'aurais une autre demande... Le Grand Duc, justement, avait fait une script pour ne garder dans la citation que le texte sélectionné dans le message qu'on veut citer (on surligne une portion du texte, et on clique sur le bouton "Citer"... il ne reste dans la citation que le texte surligné). Qui, elle, ne fonctionne pas avec la date. Je me demande s'il serait possible d'ajouter cette fonctionnalité à votre script?

Au besoin, je peux vous transmettre son code Smile
Cloo

Cloo
Membre habitué

Féminin
Messages : 1024
Inscrit(e) le : 09/07/2008

http://accrosjardin.forumactif.com/
Cloo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Le Grand Duc Mer 13 Sep 2023 - 22:21

Cloo a écrit:Ahhh... voilà qui est beaucoup mieux, j'obtiens ceci:

Le 8 décembre 2020 - 18h10, Le Grand Duc a écrit :
Le Grand Duc vous remercie Mme Cloo ! Lunette
Le Grand Duc

Le Grand Duc
****

Masculin
Messages : 259
Inscrit(e) le : 29/01/2017

https://accropedia.com
Le Grand Duc a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Le Grand Duc Mer 13 Sep 2023 - 22:23

Cloo a écrit:En fait, j'aurais une autre demande... Le Grand Duc, justement, avait fait une script pour ne garder dans la citation que le texte sélectionné dans le message qu'on veut citer (on surligne une portion du texte, et on clique sur le bouton "Citer"... il ne reste dans la citation que le texte surligné). Qui, elle, ne fonctionne pas avec la date. Je me demande s'il serait possible d'ajouter cette fonctionnalité à votre script?

Au besoin, je peux vous transmettre son code Smile

Je vérifie que mon script fonctionne toujours après la modification pour la date, et je serais prêt à partager le code.
Dans quelques jours.
Le Grand Duc

Le Grand Duc
****

Masculin
Messages : 259
Inscrit(e) le : 29/01/2017

https://accropedia.com
Le Grand Duc a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Cloo Mer 13 Sep 2023 - 22:25

Le Grand Duc a écrit:
Cloo a écrit:En fait, j'aurais une autre demande... Le Grand Duc, justement, avait fait une script pour ne garder dans la citation que le texte sélectionné dans le message qu'on veut citer (on surligne une portion du texte, et on clique sur le bouton "Citer"... il ne reste dans la citation que le texte surligné). Qui, elle, ne fonctionne pas avec la date. Je me demande s'il serait possible d'ajouter cette fonctionnalité à votre script?

Au besoin, je peux vous transmettre son code Smile

Je vérifie que mon script fonctionne toujours après la modification pour la date, et je serais prêt à partager le code.
Dans quelques jours.
Pour le moment, il ne fonctionne pas avec la date, il est vraiment indépendant du code fait par Toryudo Wink


Edit à 16h47/22h47: il semble y avoir encore un problème avec les noms avec des espaces. Ça fonctionnait sur mon forum test, mais sur mon forum principal, j'ai ceci:
Grand Duc Aujourd'hui à 13h06, Le a écrit :

J'ai pourtant bien recopié la même script, je suis revenue chercher le code ici même.

J'ai vérifié dans un autre post, avec un autre nick qui a un espace (Tulipe 127), c'est le même problème:
127 Aujourd'hui à 10h04, Tulipe a écrit :


Autre edit à 17h44/23h44:
Quand tu mets "Aujourd'hui" ou "Hier", ça va rester ainsi dans le message cité? Parce que dans une semaine, quand on va lire la citatoin... ce ne sera plus "Aujourd'hui ou Hier, et il va falloir la bonne date Wink
Cloo

Cloo
Membre habitué

Féminin
Messages : 1024
Inscrit(e) le : 09/07/2008

http://accrosjardin.forumactif.com/
Cloo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Toryudo Jeu 14 Sep 2023 - 9:55

Bonjour !

Hmmm, effectivement, cette histoire d'espaces dans le pseudo complique un peu les choses...
Bon, on va changer de stratégie pour se faciliter la vie. Au niveau du Template viewtopic_body, on va remplacer la ligne suivante :
Code:
<p class="author"><img src="{postrow.displayed.MINI_POST_IMG}" alt="{postrow.displayed.L_MINI_POST_ALT}" title="{postrow.displayed.L_MINI_POST_ALT}" />&nbsp;{L_TOPIC_BY}&nbsp;{postrow.displayed.POSTER_NAME} {postrow.displayed.POST_DATE_NEW}</p>

Par :
Code:
<p class="author"><img src="{postrow.displayed.MINI_POST_IMG}" alt="{postrow.displayed.L_MINI_POST_ALT}" title="{postrow.displayed.L_MINI_POST_ALT}" />&nbsp;{L_TOPIC_BY}&nbsp;<span class="author_postername">{postrow.displayed.POSTER_NAME}</span> <span class="author_postdate">{postrow.displayed.POST_DATE_NEW}</span></p>

Comme ça, on délimite bien techniquement le nom de l'auteur et la date.
Ne reste plus qu'à adapter le Javascript et normalement, ça devrait passer tout seul à tous les coups :
Code:
const days = ['Lun', 'Mar', 'Mer', 'Jeu', 'Ven', 'Sam', 'Dim'];
const month = {
  'Jan': 'janvier',
  'Fév': 'février',
  'Mar': 'mars',
  'Avr': 'avril',
  'Mai': 'mai',
  'Juin': 'juin',
  'Juil': 'juillet',
  'Aoû': 'août',
  'Sep': 'septembre',
  'Oct': 'octobre',
  'Nov': 'novembre',
  'Déc': 'décembre'
};
 
$(function() {
  // Récupération date messages cités
  $('blockquote cite').each(function() {
    var $this = $(this);
    var mcite = $(this).text().split('Ŧ');
 
    if (mcite.length > 1) {
      $.get("/viewtopic.php?p=" + mcite[0], function(data) {
        let date = $(data).find('#p' + mcite[0] + ' .author .author_postdate').text();
        let author = $(data).find('#p' + mcite[0] + ' .author .author_postername').text();

        date = date.replace(',', ', à');
        date = date.replace(':', 'h');
        if (days.includes(date.slice(0, 3))) {
          date = 'Le ' + date.slice(3).trim();
        }
        for (var prop in month) {
          if (month.hasOwnProperty(prop)) {
            date = date.replace(prop, month[prop]);
          }
        }
 
        $this.text(date + ', ' + author + ' a écrit :');
      });
    }
  });
 
  // Ajout du numéro de message dans le quote
  $(function() {
    const params = new URLSearchParams(window.location.search);
    const message = params.get('p');
    const mode = params.get('mode');
 
    if (mode && (mode == 'quote') && message) {
      const txtPost = $('textarea').sceditor('instance').val();
      $('textarea').sceditor('instance').val(txtPost.replace(/\[quote="?([^"]*)"?\]/i, '[quote="' + message + 'Ŧ$1"]'));
    }
  });
});

Concernant le script de Le Grand Duc, il est tout à fait possible qu'il faille une adaptation. Mon script se base sur l'url pour trouver le message qu'on veut citer : https://forum.forumactif.com/post?p=3409322&mode=quote permet de citer le message 3409322 par exemple. Si le script fonctionne différemment, ouvre une url qui ne ressemble pas, il faudra chercher une autre manière de trouver le numéro de message cité !

Enfin, concernant les "Aujourd'hui" ou "Hier" qui s'affichent, la date est récupérée automatiquement sur le forum à chaque fois qu'on ouvre une page. Si le forum affiche Aujourd'hui, le script affiche Aujourd'hui. Demain, le forum affichera Hier, donc le script affichera automatiquement Hier. Et ensuite, la date précise. La seule chose que "sauvegarde" le script, c'est le numéro du message cité : l'affichage, lui, est dynamique, donc change automatiquement !
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1564
Inscrit(e) le : 31/03/2020

https://deus-academia.forumactif.com/
Toryudo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Cloo Jeu 14 Sep 2023 - 13:57

Bonjour Toryudo,

Je viens d'implanter ceci, ça semble fonctionner, tant sur le forum test que sur le forum prncipal.

J'obtiens ceci, pour le même message que j'essayais de citer hier:
Hier à 16h36, Le Grand Duc a écrit :

Et en effet, les "Aujourd'hui" et Hier" ont bien l'air de se mettre à jour ok  thumright
Cloo

Cloo
Membre habitué

Féminin
Messages : 1024
Inscrit(e) le : 09/07/2008

http://accrosjardin.forumactif.com/
Cloo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Le Grand Duc Sam 16 Sep 2023 - 15:54

Bonjour,
J'ai bien examiné le code de ce module, et j'y ai trouvé une chose qui m'inquiète : à chaque page qui est chargée, le module inspecte toutes les citations qui y figurent et va relire le message cité sur le serveur pour y retrouver la date du message. Au début j'ai été rempli d'admiration d'avoir trouvé ce truc rusé pour relire les messages. Mais ce qui m'inquiète, c'est que par exemple dans notre forum, qui par ailleurs est assez actif, nous avons 25 messages par page et une page peut contenir jusqu'à une 20aine de citations et citations dans les citations (oui, on est des placoteux Humour ). Cela veut dire que pour chaque page on peut avoir entre 10 et 20 requêtes supplémentaires sur le serveur de FA.
On peut remarquer que souvent certaines pages mettent du temps à se charger, ma crainte c'est que ces délais finissent par s'accroître suite à l'utilisation de ce module, et pas seulement pour le forum qui l'utilisera, mais pour tous les autres sur le même serveur.

Mais il se trouve que j'ai développé il y a un certain temps un module qui permet de réduire une citation à une zone sélectionnée dans le texte du message cité. La technique que j'utilise ne nécessite pas de relire le message et j'ai pu facilement reprendre l'idée de Toyudo avec le même processus sans relire le message, dans mon module.
Je vais incessamment en publier le code ici.




Bon, alors voici la description de mon module. Il permet deux choses :
1° limiter une citation à ce qui est sélectionné dans le message. Si rien n'est sélectionné, la citation est exécutée au complet;
2° ajouter la date du message cité (inspiré du code de Toryudo)

1° Citations sur sélection

Notre forum (jardinage) peut être qualifié de très actif. Les messages peuvent contenir beaucoup de texte et/ou pire, beaucoup de photos. De plus, souvent, plusieurs points peuvent être soulevés dans un même message, on peut donc avoir besoin de ne répondre qu'à un seul de ces points en particulier. Bien sûr, on peut toujours éditer la citation en même temps que le message, mais ça peut être fastidieux à la longue et être même la source d'erreurs.

Ici par exemple nous avons un message qui contient 9 photos avec du texte en dessous de chaque photo. On veut juste poser une question précise sans s'embarrasser des photos dans la question.
Suite du sujet pour l'ajout de la date dans une citation Image110

Tout ce qu'on veut savoir c'est où se procurer cette plante du nom de « Chicago Apache ». On sélectionne donc juste ce nom dans le message...
Suite du sujet pour l'ajout de la date dans une citation Image210

... et on clique sur l'icône Citation. Dès que l'éditeur s'affiche, on voit que tout le texte dans la citation est remplacé par celui qui était sélectionné.
Suite du sujet pour l'ajout de la date dans une citation Image410

On peut alors poser sa question sur ce point en particulier.
Suite du sujet pour l'ajout de la date dans une citation Image610

2° Insertion de la date dans une citation

Comme le fait le module de Toryudo, on voit qu'en même temps la date du message cité est ajoutée dans la citation. Quelques particularités sont à noter :
- le module ne relit pas tous les messages dans chaque page pour retrouver la date des messages cités et mettre à jour les citations contenues dans la page. Au contraire, il place les dates dès le début dans la citation. En plus comme ça on la voit dans l'éditeur.
- il convertit tout de suite Aujourd'hui et Hier en une date qui restera dans la citation.
- le module fonctionne également pour les anciens messages postés avant son installation, de même que pour les messages privés.
- le format de la date qu'il met dans la citation est sous forme abrégée conforme aux messages eux-mêmes.
- le : dans l'heure pour séparer les heures et les minutes (norme anglaise) est remplacé par la norme française : la lettre h précédée et suivie d'un espace.
- le tiret entre la date et l'heure est remplacé par "à", c'est plus clair et ça ne prend pas plus de place.
En bref, c'est ce qui ressemble le plus aux autres affichages dans le forum tout en étant plus conforme à la norme en français.

3° le code

J'avais développé le module citation sur sélections il y a trois ans. La technique utilisée pour transmettre le contenu de la sélection est de le mettre dans un cookie AVANT que l'éditeur soit appelé. Celui-ci peut alors trouver ce cookie et remplacer l'intérieur de la balise quote par le contenu de la sélection. Cette astuce fonctionne chez nous sans problème depuis ces trois années. Donc quand j'ai vu le module pour insérer la date, j'ai pensé qu'il serait plus simple d'utiliser le même truc, c-à-d. aller chercher la date du message avant de passer la main à l'éditeur, pendant qu'on est encore dans le message (sur le click de l'icône Citation) et de lui transmettre cette date dans un autre cookie.
Note 1 : Pour phpBB 3, non testé sur les autres.
Note 2 : Il y a une ligne de code, la ligne 80 :
Code:
let message = el.target.parentElement.parentElement.parentElement.parentElement.innerHTML;
qui pourrait poser problème pour une autre version ou selon les implantations.
Son rôle est de retrouver l'élément qui contient le message cité. Il se pourrait qu'il faille remonter d'un niveau de plus ou de moins, détail à vérifier lors de l'implantation si on a un problème.

Code:
// citation avec pré-sélection du texte à citer et ajout des dates
var _debut = "Citation sur sélection";
function corrigeQuote()
  {
  var link;
  var links = document.getElementsByTagName("A");
  // traiter les liens pour citation
  for (var i = 0; i < links.length; i++)
    {
    if(links[i].search.indexOf("mode=quote") > 0)
      {
      addEventHandler(links[i], "click", clickQuote);
      links[i].title = "Pour les longs messages, sélectionner un extrait et répondre en citant";
      }
    }
  // chercher si dans un textarea d'édition
  var tArea = document.getElementById ("text_editor_textarea");
  if (tArea)
    {
    // récupérer la date du message cité
    var dateMess = $.cookie('dateMessageCite');
    console.log("dateMess = " + dateMess);
    // trouver s'il y a eu sélection dans le message cité
    var selHTML = $.cookie('citationSelHTML');
    var editor=$("#text_editor_textarea").sceditor("instance");
    var citationBBCODE = editor.getWysiwygEditorValue();
    var BBcode;
    
    if(dateMess)
      {
      // trouver le nom de l'auteur
      var auteur = citationBBCODE.match(/^\[quote="[^\]]*\]/i);
      console.log("auteur = " + auteur);
      const lPremQuote = auteur[0].length;
      // ajouter la date
      console.log("auteur1 = " + auteur);
      auteur = auteur[0].replace('^\d*T','');
      console.log("auteur2 = " + auteur);
      auteur = auteur.replace('"', '"Le ' + dateMess + ', ');
      console.log("auteur3 = " + auteur);
      if (selHTML)BBcode = editor.toBBCode( auteur + selHTML + "[/quote]"); //BBcode pour remplacer la citation
      else
        {
        // enlever l'ancien quote
        citationBBCODE = citationBBCODE.slice(lPremQuote);
        BBcode = editor.toBBCode( auteur + citationBBCODE);
        }
      if(editor.inSourceMode())editor.setSourceEditorValue(BBcode);
      else
        {
        editor.toggleSourceMode();
        editor.setSourceEditorValue(BBcode);
        editor.toggleSourceMode();
        }
      }
    }
    // effacer les cookies
    $.cookie('dateMessageCite', null);
    $.cookie('citationSelHTML', null);
  }
function clickQuote(el)
  {
  // trouver la sélection
  var selHTML = "";
  var range;
  var selection = window.getSelection();
  var tArea = document.getElementById ("text_editor_textarea");
  var expDate = new Date();
  if (selection.rangeCount > 0)
    {
    range = selection.getRangeAt(0);
    var clonedSelection = range.cloneContents();
    var span = document.createElement('span');
    span.appendChild(clonedSelection);
    selHTML = span.innerHTML;
    expDate.setTime(expDate.getTime() + (5 * 60 * 1000)); // add 5 minutes
    $.cookie('citationSelHTML', selHTML, expDate);
    }
  // Maintenant trouver la date du message
  let message = el.target.parentElement.parentElement.parentElement.parentElement.innerHTML;
  // Ex : </a> Jeu 11 Aoû 2022 - 17:07</p>
  let regex = /((Aujourd'hui|Hier)\sà\s\d{1,2}:\d{1,2})|(Lun|Mar|Mer|Jeu|Ven|Sam|Dim)\s\d{1,2}\s.{3}\s\d{4}\s-\s\d{1,2}:\d{1,2}/;
  var dateMess = message.match(regex);
  if (dateMess)
    {
    let options = { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' };
    dateMess = dateMess[0];
    // trouvé la date : remplacer Aujourd'hui et Hier
    var jourdhui = new Date(), hier = new Date();
    hier.setDate(hier.getDate() - 1);
    jourdhui = jourdhui.toLocaleDateString("fr-FR", options);
    hier = hier.toLocaleDateString("fr-FR", options);
    dateMess = dateMess.replace("Aujourd'hui", jourdhui);
    dateMess = dateMess.replace("Hier", hier);
    dateMess = dateMess.replace(":", " h ");
    dateMess = dateMess.replace("-", "à");
    // mettre la date dans un cookie pour l'éditeur
    $.cookie('dateMessageCite', dateMess, expDate);
    }
  }
function addEventHandler(elem,eventType,handler) {
  if (elem.addEventListener) elem.addEventListener (eventType,handler,false);
  else if (elem.attachEvent) elem.attachEvent ('on'+eventType,handler);}
addEventHandler(window, "load", corrigeQuote);
var _fin = "Citation sur sélection";

Suite du sujet pour l'ajout de la date dans une citation Qa9sXQJLes triples messages ne sont pas autorisés, conformément au Règlement du forum de support. Merci d'utiliser le bouton éditer !
Bonne journée sur Forumactif.


Dernière édition par Le Grand Duc le Sam 16 Sep 2023 - 18:18, édité 1 fois
Le Grand Duc

Le Grand Duc
****

Masculin
Messages : 259
Inscrit(e) le : 29/01/2017

https://accropedia.com
Le Grand Duc a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Chacha Ven 22 Sep 2023 - 9:11

Suite du sujet pour l'ajout de la date dans une citation UmaslZ4Bonjour,

Attention, cela fait 8 jours que nous n'avons pas de nouvelles concernant votre demande, si vous ne voulez pas voir votre sujet déplacé à la corbeille, merci de poster dans les 24h qui suivent ce message.

Si votre sujet est résolu, merci d'éditer votre premier message et de cocher l'icône « résolu »
Chacha

Chacha
Modéractif
Modéractif

Masculin
Messages : 70035
Inscrit(e) le : 21/08/2010

https://forum.forumactif.com/
Chacha a été remercié(e) par l'auteur de ce sujet.
  • 0

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Cloo Ven 22 Sep 2023 - 13:05

Bonjour,

Ce que Le Grand Duc  a partagé ici est installé et fonctionnel sur notre forum depuis déjà plusieurs jours Smile

En fait, nous nous attendions à un retour de la part de votre équipe (même juste un petit mot...) , parce que LGD a partagé son code, et on trouvait que ce serait très intéressant et très utile pour d'autres personnes, dont celle qui est à l'origine de la demande initiale Wink


Dernière édition par Cloo le Ven 22 Sep 2023 - 20:26, édité 1 fois
Cloo

Cloo
Membre habitué

Féminin
Messages : 1024
Inscrit(e) le : 09/07/2008

http://accrosjardin.forumactif.com/
Cloo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Chacha Ven 22 Sep 2023 - 13:18

Cloo a écrit:Bonjour,

Ce que Le Grand Duc  a partagé ici est installé et fonctionnel sur notre forum depuis déjà plusieurs jours Smile

En fait, nous nous attendions à un retour de la part de votre équipe (même juste un petit mot...) , parce que LGD a partagé son code, et on trouvait que ce serait très intéressant et très utile pour d'autres personnes Smile
Bonjour @Cloo,

Le sujet est signalé au staff professionnel.

Cordialement.
Chacha

Chacha
Modéractif
Modéractif

Masculin
Messages : 70035
Inscrit(e) le : 21/08/2010

https://forum.forumactif.com/
Chacha a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Bipo Dim 24 Sep 2023 - 6:10

Bonjour @Cloo,

Cloo a écrit:En fait, nous nous attendions à un retour de la part de votre équipe (même juste un petit mot...) , parce que LGD a partagé son code, et on trouvait que ce serait très intéressant et très utile pour d'autres personnes

La solution proposée n'est fonctionnelle, a priori, que sur PhpBB3. Il serait intéressant que cette astuce soit compatible sur l'ensemble des versions des forums Forumactif pour envisager une publication officielle. Si vous souhaitez vous lancer dans ce projet, il suffit de nous envoyer l'astuce par MP (voir Proposer un tutoriel ou une astuce).

Bon dimanche sur Forumactif.
Bipo

Bipo
Rédactif
Rédactif

Messages : 3901
Inscrit(e) le : 23/09/2010

Bipo a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par chattigre Mer 27 Sep 2023 - 20:32

Suite du sujet pour l'ajout de la date dans une citation DeXXKqF
Où en-est votre problème ?

  • Votre problème est résolu, dans ce cas pensez à nous le signaler en cochant l'icône RÉSOLU en éditant votre premier message,

  • Votre problème est toujours d'actualité, dans ce cas pensez à faire des UP régulièrement, afin de ne pas voir votre sujet délesté.


chattigre
Aidactif

Pour une aide efficace...
Right Mettez un titre explicite
Right Communiquez vos personnalisations
Right Rendez le forum et votre problème directement visible

Right Si votre problème est résolu, éditez votre premier message et cochez l'icône résolu
Right Consultez la liste des Questions et réponses fréquentes avant d'ouvrir un sujet si nécessaire
chattigre

chattigre
Aidactif
Aidactif

Masculin
Messages : 3682
Inscrit(e) le : 17/04/2019

https://test1-chattigre.forumactif.fr
chattigre a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Le Grand Duc Jeu 28 Sep 2023 - 0:13

Bipo a écrit:Bonjour @Cloo,
La solution proposée n'est fonctionnelle, a priori, que sur PhpBB3. Il serait intéressant que cette astuce soit compatible sur l'ensemble des versions des forums Forumactif pour envisager une publication officielle.
C'est sûr qu'on ne peut pas l'essayer sur toutes les versions qui existent. Ça ne doit pas empêcher de proposer du code à ceux que ça peut intéresser et qui seraient capables de l'essayer et de l'adapter si nécessaire sur une autre version. Et est-ce que ce n'est pas le même SCeditor présent sur toutes les versions ?

Si vous souhaitez vous lancer dans ce projet, il suffit de nous envoyer l'astuce par MP (voir Proposer un tutoriel ou une astuce).
Je l'ai fait une fois, ça a pris plus d'un an pour avoir une réponse. Et pendant ce temps, personne n'a pu ni voir ni profiter de mon code.
Il serait agréable d'avoir une section dédiée à la publication de codes ajoutés à nos forum, sans aucun protocole, juste pour échanger des idées et des solutions, proposer des améliorations,  en discuter tout simplement. On n'a pas toujours que des problèmes, mais aussi des solutions.


Dernière édition par Le Grand Duc le Jeu 28 Sep 2023 - 0:23, édité 2 fois
Le Grand Duc

Le Grand Duc
****

Masculin
Messages : 259
Inscrit(e) le : 29/01/2017

https://accropedia.com
Le Grand Duc a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Le Grand Duc Jeu 28 Sep 2023 - 0:21

J'ai légèrement modifié le code depuis que je l'ai publié. Corrigé le défaut qui supprimait les sauts de ligne dans les citations sans sélection.
Code:
// citation avec pré-sélection du texte à citer et ajout des dates
var _debut = "Citation sur sélection";
function corrigeQuote()
  {
  var link;
  var links = document.getElementsByTagName("A");
  // traiter les liens pour citation
  for (var i = 0; i < links.length; i++)
    {
    if(links[i].search.indexOf("mode=quote") > 0)
      {
      addEventHandler(links[i], "click", clickQuote);
      links[i].title = "Pour les longs messages, sélectionner un extrait et répondre en citant";
      }
    }
  // chercher si dans un textarea d'édition
  var tArea = document.getElementById ("text_editor_textarea");
  if (tArea)
    {
    // récupérer la date du message cité
    var dateMess = $.cookie('dateMessageCite');
    console.log("dateMess = " + dateMess);
    // trouver s'il y a eu sélection dans le message cité
    var selHTML = $.cookie('citationSelHTML');
    var editor=$("#text_editor_textarea").sceditor("instance");
    var citationBBCODE = editor.getWysiwygEditorValue();
    var BBcode;
    if(dateMess)
      {
      // trouver le nom de l'auteur
      var auteur = citationBBCODE.match(/^\[quote="[^\]]*\]/i);
      const lPremQuote = auteur[0].length;
      // ajouter la date
      auteur = auteur[0].replace('^\d*T','');
      auteur = auteur.replace('"', '"Le ' + dateMess + ', ');
      if (selHTML)BBcode = editor.toBBCode( auteur + selHTML + "[/quote]"); //BBcode pour remplacer la citation
      else
        {
        // enlever l'ancien quote
        citationBBCODE = citationBBCODE.slice(lPremQuote);
        //BBcode = editor.toBBCode( auteur + citationBBCODE, true);
        BBcode = auteur + citationBBCODE;
        }
      editor.val(BBcode);
      }
    }
    // effacer les cookies
    $.cookie('dateMessageCite', null);
    $.cookie('citationSelHTML', null);
  }
function clickQuote(el)
  {
  // trouver la sélection
  var selHTML = "";
  var range;
  var selection = window.getSelection();
  var tArea = document.getElementById ("text_editor_textarea");
  var expDate = new Date();
  if (selection.rangeCount > 0)
    {
    range = selection.getRangeAt(0);
    var clonedSelection = range.cloneContents();
    var span = document.createElement('span');
    span.appendChild(clonedSelection);
    selHTML = span.innerHTML;
    expDate.setTime(expDate.getTime() + (5 * 60 * 1000)); // add 5 minutes
    $.cookie('citationSelHTML', selHTML, expDate);
    }
  // Maintenant trouver la date du message
  let message = el.target.parentElement.parentElement.parentElement.parentElement.innerHTML;
  // Ex : </a> Jeu 11 Aoû 2022 - 17:07</p>
  let regex = /((Aujourd'hui|Hier)\sà\s\d{1,2}:\d{1,2})|(Lun|Mar|Mer|Jeu|Ven|Sam|Dim)\s\d{1,2}\s.{3}\s\d{4}\s-\s\d{1,2}:\d{1,2}/;
  var dateMess = message.match(regex);
  if (dateMess)
    {
    let options = { weekday: 'short', year: 'numeric', month: 'short', day: 'numeric' };
    dateMess = dateMess[0];
    // trouvé la date : remplacer Aujourd'hui et Hier
    var jourdhui = new Date(), hier = new Date();
    hier.setDate(hier.getDate() - 1);
    jourdhui = jourdhui.toLocaleDateString("fr-FR", options);
    hier = hier.toLocaleDateString("fr-FR", options);
    dateMess = dateMess.replace("Aujourd'hui", jourdhui);
    dateMess = dateMess.replace("Hier", hier);
    dateMess = dateMess.replace(":", " h ");
    dateMess = dateMess.replace("-", "à");
    // mettre la date dans un cookie pour l'éditeur
    $.cookie('dateMessageCite', dateMess, expDate);
    }
  }
function addEventHandler(elem,eventType,handler) {
  if (elem.addEventListener) elem.addEventListener (eventType,handler,false);
  else if (elem.attachEvent) elem.attachEvent ('on'+eventType,handler);}
addEventHandler(window, "load", corrigeQuote);
var _fin = "Citation sur sélection";
Suite du sujet pour l'ajout de la date dans une citation Qa9sXQJLes doubles messages ne sont pas autorisés, conformément au Règlement du forum de support. Merci d'utiliser le bouton éditer !
Bonne journée sur Forumactif.
Le Grand Duc

Le Grand Duc
****

Masculin
Messages : 259
Inscrit(e) le : 29/01/2017

https://accropedia.com
Le Grand Duc a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Suite du sujet pour l'ajout de la date dans une citation

Message par Bipo Jeu 28 Sep 2023 - 15:50

Bonjour @Le Grand Duc,

Le Grand Duc a écrit:Je l'ai fait une fois, ça a pris plus d'un an pour avoir une réponse. Et pendant ce temps, personne n'a pu ni voir ni profiter de mon code. Il serait agréable d'avoir une section dédiée à la publication de codes ajoutés à nos forum, sans aucun protocole, juste pour échanger des idées et des solutions, proposer des améliorations,  en discuter tout simplement. On n'a pas toujours que des problèmes, mais aussi des solutions.

Je vous invite à en faire le suggestion dans ce sous-forum : Suggestions pour ce forum d'entraide.

Les éléments de réponse de la part de l'équipe Forumactif ayant été donnés, le sujet est, par conséquent, verrouillé.

Belle fin de journée à toutes et à tous.
Bipo.
Bipo

Bipo
Rédactif
Rédactif

Messages : 3901
Inscrit(e) le : 23/09/2010

Bipo a été remercié(e) par l'auteur de ce sujet.

Voir le sujet précédent Voir le sujet suivant Revenir en haut

- Sujets similaires

Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum