Limiter nombre de post par 24h

2 participants

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

Résolu Limiter nombre de post par 24h

Message par photoclic Mar 11 Oct 2022 - 1:46

Bonjour,

J'utilisais ce code pour limiter le nombre de sujet posté par membre.
Je l'ai paramétré pour 1 sujet par jour pour les forum f4,f5 et f6.
Quand le nombre est atteint, un message est affiché

Et voici qu'il ne fonctionne plus.

Code:

//Limiter le nombre de photos postées par jour ttes pages
   //Les forums concernés:
   //https://photoclic.forum-pro.fr/f4-phototest
   //https://photoclic.forum-pro.fr/f5-reportage-series-au-long-cours
   //https://photoclic.forum-pro.fr/f6-le-club-du-clic

$(function(){
    var forumsConcernes='4,5,6',
    etendueHeures=24,
    limiteSujets=1,
    message="Hello "+_userdata["username"]+". Tu as déjà posté "+limiteSujets+" sujets ces dernières 24 heures. Tu peux aussi commenter les photos des cliqueurs.",
    timeStamp=Date.now();
    if(!my_getcookie('topic_posted')||timeStamp>(JSON.parse(my_getcookie('topic_posted'))['date']+etendueHeures*60*60*1000))my_setcookie('topic_posted',JSON.stringify({"nb_topic":0,"date":timeStamp}),1);
    forumsConcernes=forumsConcernes.split(',');
    $('form[action="/post"]').filter(function(){
        var r=$('input[name="mode"]', this).val()=='newtopic'&&forumsConcernes.indexOf($('input[name="f"]',this).val())!=-1;
        if(r){          
            //$('input[name="subject"]',this).attr("required","required");
            if(JSON.parse(my_getcookie('topic_posted'))['nb_topic']>=limiteSujets)$(this).before($("<div>",{"class":"topic_posted_limit_reached","text":message}));
        }
        return r;
    }).find('input[name="post"]').on('click',function(e) {
        var cookie=JSON.parse(my_getcookie('topic_posted')),msg=$('#text_editor_textarea').sceditor('instance').val();
        if(!msg.length||msg=='0'||$(this).closest('form[name="post"]').find('input[name="subject"]').val().length<10)return;
        var cookie=JSON.parse(my_getcookie('topic_posted'));
        cookie['nb_topic']+=1;
        my_setcookie('topic_posted', JSON.stringify(cookie),1);
    });
});

Je ne comprends pas pourquoi ce code ne fonctionne plus.

Dans un second temps, si ce point est résolu, serait-il possible de bloquer le membre pour qu'il ne puisse plus poster s'il essaie de poster limiteSujets +2. C'est à dire s'il poste 1 sujet c'est ok, s'il en poste 2, il a le message et le sujet est posté quand même, s'il en poste 3 le 3ième ne peut pas être posté.

Merci pour votre aide.
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Limiter nombre de post par 24h

Message par photoclic Mer 12 Oct 2022 - 12:50

Petit up.
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Limiter nombre de post par 24h

Message par photoclic Jeu 13 Oct 2022 - 22:58

Petit up.
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Limiter nombre de post par 24h

Message par photoclic Ven 14 Oct 2022 - 23:54

Bonsoir,
Personne pour m'aider.
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Limiter nombre de post par 24h

Message par photoclic Lun 17 Oct 2022 - 23:42

petit up
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Limiter nombre de post par 24h

Message par photoclic Mer 19 Oct 2022 - 0:18

Bonsoir,
Quelqu'un aurait-il essayé pour savoir si le problème viendrait de mon forum?
Merci pour votre réponse.
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Limiter nombre de post par 24h

Message par photoclic Jeu 20 Oct 2022 - 18:46

Petit up.
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Limiter nombre de post par 24h

Message par Toryudo Ven 21 Oct 2022 - 19:23

Bonjour !

Alors, j'ai encore plus de problèmes pour le faire fonctionner, et il n'a pas l'air de faire ce qu'il faut (comprendre qu'il n'empêche pas d'écrire un nouveau message, il compte simplement le nombre de messages postés et il affiche une alerte quand on en a déjà posté au moins un). Du coup, je l'ai arrangé un peu :
  • je n'utilise plus de Cookies mais le LocalStorage, sensiblement la même chose mais ça marche mieux chez moi (et à terme, dans le futur, ce sera mieux d'utiliser ça plutôt que les Cookies pour ce genre de fonctionnalité)
  • j'ai ajouté un nbCharSujet, parce que le script ne met à jour le nombre de messages que si le sujet comporte plus de 9 caractères (à partir de 10 donc). A vérifier combien de caractères minimum il est possible d'entrer au niveau d'un nom de sujet sur le forum, et adapter la valeur de nbCharSujet en fonction
  • enfin, la technique choisie est la suivante : si pas encore de message, rien de spécial. Si un message, alors l'alerte apparait mais laisse la possibilité d'écrire un message. Si deux messages, le message d'alerte apparait et le bouton "Envoyer" est supprimé, impossible donc de poster

Et voilà le code correspondant :
Code:
 
//Limiter le nombre de photos postées par jour ttes pages
   //Les forums concernés:
   //https://photoclic.forum-pro.fr/f4-phototest
   //https://photoclic.forum-pro.fr/f5-reportage-series-au-long-cours
   //https://photoclic.forum-pro.fr/f6-le-club-du-clic
 
$(function(){
    var forumsConcernes = '4,5,6',
    nbCharSujet = 10,
    etendueHeures = 24,
    limiteSujets = 1,
    message = "Hello " + _userdata["username"] + ". Tu as déjà posté " + limiteSujets + " sujets ces dernières 24 heures. Tu peux aussi commenter les photos des cliqueurs.",
    timeStamp = Date.now();

    if(!localStorage.getItem('topic_posted') || timeStamp > (JSON.parse(localStorage.getItem('topic_posted'))['date'] + etendueHeures * 60 * 60 * 1000))
        localStorage.setItem('topic_posted', JSON.stringify({"nb_topic": 0, "date": timeStamp}));

    forumsConcernes = forumsConcernes.split(',');

    $('form[action="/post"]').filter(function(){
        var r = $('input[name="mode"]', this).val() == 'newtopic' && forumsConcernes.indexOf($('input[name="f"]',this).val()) != -1;
        if(r){
            var nbTopicPoste = JSON.parse(localStorage.getItem('topic_posted'))['nb_topic'];
            if (nbTopicPoste >= limiteSujets){
                $(this).before($("<div>",{"class":"topic_posted_limit_reached", "text": message}));
            }
            if (nbTopicPoste > limiteSujets){
                $(this).find("input[name=post]").remove();
            }
        }
        return r;
    }).on('submit', function(e){
        var btn = $(this).find("input[type=submit]:focus");
        if (btn.attr('name') == 'post'){
            var msg = $('#text_editor_textarea').sceditor('instance').val();
            if(!msg.length || msg == '0' || $(this).closest('form[name="post"]').find('input[name="subject"]').val().length < nbCharSujet)
                return;

            var cookie = JSON.parse(localStorage.getItem('topic_posted'));
            cookie['nb_topic']++;
            localStorage.setItem('topic_posted', JSON.stringify(cookie));
        }
    });
});
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1372
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: Limiter nombre de post par 24h

Message par photoclic Ven 21 Oct 2022 - 22:48

Bonsoir Toryudo,

Un grand merci pour ton aide sur ce script.
Il fonctionne à merveille.
Le bouton Envoyer est bien retiré quand le nbre est atteint.

Quand le message est affiché, serait-il possible de rajouter au bout du message un bouton intitulé "Retour" qui mènerait à la page d'accueil.
Si trop compliqué, laisser ainsi.

Merci encore pour ton aide.


PS: Le LocalStorage à la place de Cookies, bravo pour cette astuce.
j'ai d'autres scripts qui utilisent les cookies mais ils semblent fonctionner jusqu'à présent. J'ouvrirai un autre sujet si je rencontre un problème.
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Limiter nombre de post par 24h

Message par Toryudo Sam 22 Oct 2022 - 8:27

Un bouton ou un lien tout simple ?
Voilà ce que ça donnerait avec le lien (et à la limite, je lui ai donné la class topic_posted_limit_reached pour qu'il puisse être personnalisé) :
Code:
 
//Limiter le nombre de photos postées par jour ttes pages
  //Les forums concernés:
  //https://photoclic.forum-pro.fr/f4-phototest
  //https://photoclic.forum-pro.fr/f5-reportage-series-au-long-cours
  //https://photoclic.forum-pro.fr/f6-le-club-du-clic
 
$(function(){
    var forumsConcernes = '4,5,6',
    nbCharSujet = 10,
    etendueHeures = 24,
    limiteSujets = 1,
    message = 'Hello ' + _userdata["username"] + '. Tu as déjà posté ' + limiteSujets + ' sujets ces dernières 24 heures. Tu peux aussi commenter les photos des cliqueurs. <a class="topic_posted_limit_reached_link" href="/">Retour</a>',
    timeStamp = Date.now();
 
    if(!localStorage.getItem('topic_posted') || timeStamp > (JSON.parse(localStorage.getItem('topic_posted'))['date'] + etendueHeures * 60 * 60 * 1000))
        localStorage.setItem('topic_posted', JSON.stringify({"nb_topic": 0, "date": timeStamp}));
 
    forumsConcernes = forumsConcernes.split(',');
 
    $('form[action="/post"]').filter(function(){
        var r = $('input[name="mode"]', this).val() == 'newtopic' && forumsConcernes.indexOf($('input[name="f"]',this).val()) != -1;
        if(r){
            var nbTopicPoste = JSON.parse(localStorage.getItem('topic_posted'))['nb_topic'];
            if (nbTopicPoste >= limiteSujets){
                $(this).before($('<div class="topic_posted_limit_reached">' + message + '</div>'));
            }
            if (nbTopicPoste > limiteSujets){
                $(this).find("input[name=post]").remove();
            }
        }
        return r;
    }).on('submit', function(e){
        var btn = $(this).find("input[type=submit]:focus");
        if (btn.attr('name') == 'post'){
            var msg = $('#text_editor_textarea').sceditor('instance').val();
            if(!msg.length || msg == '0' || $(this).closest('form[name="post"]').find('input[name="subject"]').val().length < nbCharSujet)
                return;
 
            var cookie = JSON.parse(localStorage.getItem('topic_posted'));
            cookie['nb_topic']++;
            localStorage.setItem('topic_posted', JSON.stringify(cookie));
        }
    });
});
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1372
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: Limiter nombre de post par 24h

Message par photoclic Sam 22 Oct 2022 - 14:22

Bonjour Toryudo,

C'est exactement ce que je souhaitais.
Un grand merci à toi pour ta rapidité et ton efficacité.

PS: j'ai vu aussi que tu avais fermé le div, je le cherchais et me posais justement la question.
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic a été remercié(e) par l'auteur de ce sujet.

Résolu Re: Limiter nombre de post par 24h

Message par Toryudo Sam 22 Oct 2022 - 15:42

A priori, après quelques tests fait rapidement, les deux façons d'écrire fonctionnent.
Autant utiliser celle qui nous plait le mieux !
Toryudo

Toryudo
Aidactif
Aidactif

Masculin
Messages : 1372
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: Limiter nombre de post par 24h

Message par photoclic Sam 22 Oct 2022 - 15:54

Ta dernière version est adoptée Very Happy

Merci encore pour ton aide.
photoclic

photoclic
Membre habitué

Masculin
Messages : 1373
Inscrit(e) le : 20/11/2015

http://photoclic.forum-pro.fr/
photoclic 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