systeme de vote placé par forum/catégorie

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

Résolu systeme de vote placé par forum/catégorie

Message par adminplanetez Jeu 5 Avr 2018 - 16:28

Détails techniques


Version du forum : phpBB3
Poste occupé : Fondateur
Navigateur(s) concerné(s) : Mozilla Firefox
Personnes concernées par le problème : Tous les utilisateurs
Lien du forum : http://planetez-2018.forumactif.com/

Description du problème

Bonjour

https://forum.forumactif.com/t392578-ameliorer-le-systeme-de-vote-des-messages-sous-forme-de-like?highlight=syst%C3%A8me+de+vote

merci pour ce tutoriel , qui fonctionne très bien au passage,

seulement, j'aimerais que le "système de vote" soit actif seulement sur tel ou tel forum pour ne pas l'avoir partout...
(et ne pas l'avoir sur le forum principal)

je n'ai trouvé à ce sujet & je ne sais pas si c'est possible...

merci d'avance Very Happy
adminplanetez

adminplanetez
Nouveau membre

Messages : 24
Inscrit(e) le : 13/01/2018

http://planetez-2018.forumactif.com/
adminplanetez a été remercié(e) par l'auteur de ce sujet.

Résolu Re: systeme de vote placé par forum/catégorie

Message par adminplanetez Jeu 12 Avr 2018 - 0:58

UP reflexion Siffleur
adminplanetez

adminplanetez
Nouveau membre

Messages : 24
Inscrit(e) le : 13/01/2018

http://planetez-2018.forumactif.com/
adminplanetez a été remercié(e) par l'auteur de ce sujet.

Résolu Re: systeme de vote placé par forum/catégorie

Message par Invité Dim 15 Avr 2018 - 7:04

Hello adminplanetez,

peut être avec cette modification apportée au script:
Comment trouver le chiffre ou le nombre du forum en image:
systeme de vote placé par forum/catégorie 1180



Dans cette partie, on autorise les votes:
Code:

  //ON AFFICHE LES VOTES SUR LES FORUMS CI DESSOUS en séparant par une virgule
var e=$('a.nav[href^="/f9-"],a.nav[href^="/f13-"]').length;

J'ai autorisé les votes sur le forum f9 et f13


Code:

a.nav[href^="/f9-"]
a.nav[href^="/f13-"]
On sépare tout cela par une virgule:
Code:

$('a.nav[href^="/f9-"],a.nav[href^="/f13-"]')

tu peux ajouter autant de fofos que tu souhaites en prenant soin de recopier l'identique en séparant par
une virgule et de changer le forum concerné.
Admettons que tu souhaites ajouter le forum 60, la variable sera:

Code:
var e=$('a.nav[href^="/f9-"],a.nav[href^="/f13-"],a.nav[href^="/f60-"]').length;

Ensuite on dit au script si ma variable est différente de e on cache les votes:

Code:
if(!e) {$('.postbody').find('.vote').hide();}

Le script dans sa totalité:

Code:
$(function() {
  //ON AFFICHE LES VOTES SUR LES FORUMS CI DESSOUS en séparant par une virgule
var e=$('a.nav[href^="/f9-"],a.nav[href^="/f13-"]').length;
  //SINON ON CACHE LES VOTES
if(!e) {$('.postbody').find('.vote').hide();}
if(e) {  
  
  // General Configuration of the plugin
  var config = {
    position_left : true, // true for left || false for right
    mobile_position_left: false, // true for left || false for right
    negative_vote : true, // true for negative votes || false for positive only
    vote_bar : true, // display a small bar under the vote buttons
 
    // button config
    icon_plus : '<img src="http://i18.servimg.com/u/f18/18/21/41/30/plus10.png" alt="+"/>',
    icon_minus : '<img src="http://i18.servimg.com/u/f18/18/21/41/30/minus10.png" alt="-"/>',
 
    // language config
    title_plus : 'J\'aime',
    title_minus : 'Je n\'aime pas',
    error_limit : 'Vous ne pouvez plus voter aujourd\'hui',
 
    title_like_singular : '%{VOTES} personne aime le message de %{USERNAME}',
    title_like_plural : '%{VOTES} personnes aiment le message de %{USERNAME}',
 
    title_dislike_singular : '%{VOTES} personne n\'aime pas le message de %{USERNAME}',
    title_dislike_plural : '%{VOTES} personnes n\'aiment pas le message de %{USERNAME}',
 
    title_vote_bar : '%{VOTES} personne(s) aime(nt) le message de %{USERNAME} %{PERCENT}'
  },
  
  // function bound to the onclick handler of the vote buttons
  submit_vote = function() {
    var next = this.nextSibling, // the counter next to the vote button that was clicked
        box = this.parentNode,
        bar = box.getElementsByTagName('DIV'),
        vote = box.getElementsByTagName('A'),
        mode = /eval=plus/.test(this.href) ? 1 : 0,
        i = 0, j = vote.length, pos, neg, percent;

    // submit the vote asynchronously
    $.get(this.href, function(res) {
      if( res.search("Vous ne pouvez plus") == -1 ) {
        next.innerHTML = +next.innerHTML + 1; // add to the vote count
        next.title = next.title.replace(/(\d+)/, function(M, $1) { return +$1 + 1 });

        pos = +vote[0].nextSibling.innerHTML;
        neg = vote[1] ? +vote[1].nextSibling.innerHTML : 0;
        percent = pos == 0 ? '0%' : pos == neg ? '50%' : Math.round(pos / (pos + neg) * 100) + '%';

        if (bar[0]) {
          bar[0].style.display = '';
          bar[0].firstChild.style.width = percent;
          box.title = box.title.replace(/\d+\/\d+/, pos + '/' + ( pos + neg )).replace(/\(\d+%\)/, '(' + percent + ')');
        }
      } else {
        alert( config.error_limit );
      }
    });

    // revoke voting capabilities on the post once the vote is cast
    for (; i < j; i++) {
      vote[i].href = '#';
      vote[i].className = vote[i].className.replace(/fa_vote/, 'fa_voted');
      vote[i].onclick = function() { return false };
    }

    return false;
  },
  
  vote = $('.vote'), i = 0, j = vote.length,
  version = $('.bodylinewidth')[0] ? 0 :
    document.getElementById('phpbb') ? 1 :
    $('.pun')[0] ? 2 :
    document.getElementById('ipbwrapper') ? 3 :
    document.getElementById('modernbb') ? 4 :
    document.getElementById('mpage-body-modern') ? 5 :
    'badapple', // version check

  // version data so we don't have to redefine these arrays during the loop
  vdata = {
    tag : ['SPAN', 'LI', 'SPAN', 'LI', 'LI', 'LI'][version],
    name : ['.name', '.postprofile dt > strong', '.username', '.popmenubutton', '.postprofile-name', '.poster_name'][version],
    actions : ['.post-options', '.profile-icons', '.post-options', '.posting-icons', '.profile-icons', '.post-buttons'][version]
  },

  post, plus, minus, n_pos, n_neg, title_pos, title_neg, li, ul, bar, button, total, percent, span, pseudo, vote_bar; // startup variables for later use in the loop

  // prevent execution if the version cannot be determined
  if (version == 'badapple') {
    if (window.console) console.warn('This plugin is not optimized for your forum version. Please contact the support for further assistance.');
    return;
  }
 
  for (; i < j; i++) {
    post = $(vote[i]).closest('[class*="post--"]')[0];
    bar = $('.vote-bar', vote[i])[0]; // vote bar
    button = $('a[href*="p_vote"]', vote[i]); // plus and minus buttons
    pseudo = $(vdata.name, post).text() || 'MISSING_STRING'; // username of the poster
    ul = $(vdata.actions, post)[0]; // post actions
    li = document.createElement(vdata.tag); // vote system container
    li.className = 'fa_reputation';

    if (li.tagName == 'SPAN') li.style.display = 'inline-block';

    // calculate votes
    if (bar) {
      total = +bar.title.replace(/.*?\((\d+).*/, '$1');
      percent = +bar.title.replace(/.*?(\d+)%.*/, '$1');

      n_pos = Math.round(total * (percent / 100));
      n_neg = total - n_pos;
    } else {
      n_pos = 0;
      n_neg = 0;
    }

    // set up negative and positive titles with the correct grammar, votes, and usernames
    title_pos = (n_pos <= 1 ? config.title_like_singular : config.title_like_plural).replace(/%\{USERNAME\}/g, pseudo).replace(/%\{VOTES\}/g, n_pos);
    title_neg = (n_neg <= 1 ? config.title_dislike_singular : config.title_dislike_plural).replace(/%\{USERNAME\}/g, pseudo).replace(/%\{VOTES\}/g, n_neg);

    // define the vote counts
    li.innerHTML = '<span class="fa_count fa_positive" title="' + title_pos + '">' + n_pos + '</span>' + (config.negative_vote ? ' <span class="fa_count fa_negative" title="' + title_neg + '">' + n_neg + '</span>' : '');
    span = li.getElementsByTagName('SPAN'); // get the vote count containers for use as insertion points

    // create positive vote button
    plus = document.createElement('A');
    plus.href = button[0] ? button[0].href : '#';
    plus.onclick = button[0] ? submit_vote : function() { return false };
    plus.className = 'fa_vote' + (button[0] ? '' : 'd') + ' fa_plus';
    plus.innerHTML = config.icon_plus;
    plus.title = (button[0] ? config.title_plus : title_pos).replace(/%\{USERNAME\}/g, pseudo);

    span[0] && li.insertBefore(plus, span[0]);

    // create negative vote button
    if (config.negative_vote) {
      minus = document.createElement('A');
      minus.href = button[1] ? button[1].href : '#';
      minus.onclick = button[1] ? submit_vote : function() { return false };
      minus.className = 'fa_vote' + (button[1] ? '' : 'd') + ' fa_minus';
      minus.innerHTML = config.icon_minus;
      minus.title = (button[1] ? config.title_minus : title_neg).replace(/%\{USERNAME\}/g, pseudo);

      span[1] && li.insertBefore(minus, span[1]);
    }

    // create vote bar
    if (config.vote_bar) {
      vote_bar = document.createElement('DIV');
      vote_bar.className = 'fa_votebar';
      vote_bar.innerHTML = '<div class="fa_votebar_inner" style="width:' + percent + '%;"></div>';
      vote_bar.style.display = bar ? '' : 'none';
      li.title = config.title_vote_bar.replace(/%\{USERNAME\}/, pseudo).replace(/%\{VOTES\}/, n_pos + '/' + (n_pos + n_neg)).replace(/%\{PERCENT\}/, '(' + percent + '%)');
      li.appendChild(vote_bar);
    }
 
    // finally insert the vote system and remove the default one
    if(version != 4)
      config.position_left ? ul.insertBefore(li, ul.firstChild) : ul.appendChild(li);
    else
      config.mobile_position_left ? ul.insertBefore(li, ul.firstChild) : ul.appendChild(li);
 
    vote[i].parentNode.removeChild(vote[i]);
  }
}
 
});

Wink  

a++
Anonymous

Invité
Invité


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

Résolu Re: systeme de vote placé par forum/catégorie

Message par adminplanetez Dim 15 Avr 2018 - 10:39

Bonjour Milouze14

j'ai adapté le script
ça marche nickel, t'es un chef... Very Happy Very Happy Very Happy

je voulais essayer en récupérant le titre du forum/catégorie

et faire un test avec mais je ne connais pas la variable sous phpbb3...

Merci beaucoup Mr. Green
adminplanetez

adminplanetez
Nouveau membre

Messages : 24
Inscrit(e) le : 13/01/2018

http://planetez-2018.forumactif.com/
adminplanetez a été remercié(e) par l'auteur de ce sujet.

Résolu Re: systeme de vote placé par forum/catégorie

Message par Invité Dim 15 Avr 2018 - 10:42

Re,
de rien,
je voulais essayer en récupérant le titre du forum/catégorie
c'est plus simple ainsi avec cette méthode Wink .




a++
Anonymous

Invité
Invité


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

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


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