Suite du sujet pour l'ajout de la date dans une citation
+2
Toryudo
Cloo
6 participants
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1 • Partagez
Suite du sujet pour l'ajout de la date dans une citation
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"
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"
Y aurait-il un petit ajustement à faire?
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)
Merci d'avance!
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"
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"
Y aurait-il un petit ajustement à faire?
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!
Re: Suite du sujet pour l'ajout de la date dans une citation
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 !
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"]'));
}
});
});
Re: Suite du sujet pour l'ajout de la date dans une citation
Ahhh... voilà qui est beaucoup mieux, j'obtiens ceci:
Je l'installe sur mon forum principal
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?
Le 8 décembre 2020 - 18h10, Le Grand Duc a écrit :
Je l'installe sur mon forum principal
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?
Re: Suite du sujet pour l'ajout de la date dans une citation
Je fusionnerai les deux sujets une fois que celui-ci sera résolu !
Re: Suite du sujet pour l'ajout de la date dans une citation
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
Au besoin, je peux vous transmettre son code
Re: Suite du sujet pour l'ajout de la date dans une citation
Le Grand Duc vous remercie Mme Cloo !Cloo a écrit:Ahhh... voilà qui est beaucoup mieux, j'obtiens ceci:Le 8 décembre 2020 - 18h10, Le Grand Duc a écrit :
Re: Suite du sujet pour l'ajout de la date dans une citation
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
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.
Re: Suite du sujet pour l'ajout de la date dans une citation
Pour le moment, il ne fonctionne pas avec la date, il est vraiment indépendant du code fait par ToryudoLe 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
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.
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
Re: Suite du sujet pour l'ajout de la date dans une citation
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 :
Par :
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 :
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 !
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}" /> {L_TOPIC_BY} {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}" /> {L_TOPIC_BY} <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 !
Re: Suite du sujet pour l'ajout de la date dans une citation
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:
Et en effet, les "Aujourd'hui" et Hier" ont bien l'air de se mettre à jour
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
Re: Suite du sujet pour l'ajout de la date dans une citation
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 ). 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)
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.
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...
... 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é.
On peut alors poser sa question sur ce point en particulier.
- 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.
Note 1 : Pour phpBB 3, non testé sur les autres.
Note 2 : Il y a une ligne de code, la ligne 80 :
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.
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 ). 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.
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...
... 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é.
On peut alors poser sa question sur ce point en particulier.
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;
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";
Les 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
Re: Suite du sujet pour l'ajout de la date dans une citation
Bonjour, 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 » |
Re: Suite du sujet pour l'ajout de la date dans une citation
Bonjour,
Ce que Le Grand Duc a partagé ici est installé et fonctionnel sur notre forum depuis déjà plusieurs jours
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
Ce que Le Grand Duc a partagé ici est installé et fonctionnel sur notre forum depuis déjà plusieurs jours
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
Dernière édition par Cloo le Ven 22 Sep 2023 - 20:26, édité 1 fois
Re: Suite du sujet pour l'ajout de la date dans une citation
Bonjour @Cloo,Cloo a écrit:Bonjour,
Ce que Le Grand Duc a partagé ici est installé et fonctionnel sur notre forum depuis déjà plusieurs jours
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
Le sujet est signalé au staff professionnel.
Cordialement.
Re: Suite du sujet pour l'ajout de la date dans une citation
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. 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.
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- Rédactif
- Messages : 3901
Inscrit(e) le : 23/09/2010
Re: Suite du sujet pour l'ajout de la date dans une citation
Où en-est votre problème ?
|
chattigre
Aidactif
Aidactif
Pour une aide efficace...
Mettez un titre explicite
Communiquez vos personnalisations
Rendez le forum et votre problème directement visible
Si votre problème est résolu, éditez votre premier message et cochez l'icône
Consultez la liste des Questions et réponses fréquentes avant d'ouvrir un sujet si nécessaire
Re: Suite du sujet pour l'ajout de la date dans une citation
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 ?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.
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.
Si vous souhaitez vous lancer dans ce projet, il suffit de nous envoyer l'astuce par MP (voir Proposer un tutoriel ou une astuce).
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
Re: Suite du sujet pour l'ajout de la date dans une citation
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";
Les 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. |
Re: Suite du sujet pour l'ajout de la date dans une citation
Bonjour @Le Grand Duc,
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.
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- Rédactif
- Messages : 3901
Inscrit(e) le : 23/09/2010
Sujets similaires
» Code pour ne pas afficher une vidéo youtube dans une citation
» [Sujet] Affichage par défaut de l'année dans la date d'un post
» Plus d'email reçus suite à une réponse dans un sujet
» Disparition de photos dans un sujet à la suite d'un backup
» Existe-t-il un code/script/moyen pour fermer un sujet à une date définie
» [Sujet] Affichage par défaut de l'année dans la date d'un post
» Plus d'email reçus suite à une réponse dans un sujet
» Disparition de photos dans un sujet à la suite d'un backup
» Existe-t-il un code/script/moyen pour fermer un sujet à une date définie
Forum gratuit : Le forum des forums actifs :: Entraide & Support... :: Problème avec un script, un code :: Archives des problèmes avec un code
Page 1 sur 1
Permission de ce forum:
Vous ne pouvez pas répondre aux sujets dans ce forum