Like/Dislike με εμφάνιση ονόματος

Επισκόπηση προηγούμενης Θ.Ενότητας Επισκόπηση επόμενης Θ.Ενότητας Πήγαινε κάτω

Λύθηκε Like/Dislike με εμφάνιση ονόματος

Δημοσίευση από Giotis Τρι Ιαν 12, 2016 2:00 pm

Καλησπέρα.
Χρησιμοποιώ τον παρακάτω κώδικα για σύστημα Like/Dislike:

Κώδικας:
$(function() {
 // General Configuration of the plugin
 var config = {
   position_left : true, // 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 : 'Like %{USERNAME}\'s post',
   title_minus : 'Dislike %{USERNAME}\'s post',
   
   title_like_singular : '%{VOTES} person likes %{USERNAME}\'s post',
   title_like_plural : '%{VOTES} people like %{USERNAME}\'s post',
   
   title_dislike_singular : '%{VOTES} person dislikes %{USERNAME}\'s post',
   title_dislike_plural : '%{VOTES} people dislike %{USERNAME}\'s post',
   
   title_vote_bar : '%{VOTES} people liked %{USERNAME}\'s post %{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() {
     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   ')');
     }
   });
   
   // 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('wrap') ? 1 : $('.pun')[0] ? 2 : document.getElementById('ipbwrapper') ? 3 : 'badapple', // version check
 
 // version data so we don't have to redefine these arrays during the loop
 vdata = {
   tag : ['SPAN', 'LI', 'SPAN', 'LI'][version],
   name : ['.name', '.postprofile dt > strong', '.username', '.popmenubutton'][version],
   actions : ['.post-options', '.profile-icons', '.post-options', '.posting-icons'][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]).parentsUntil('.post').parent()[0];
   bar = $('.vote-bar', vote[i])[0]; // vote bar
   button = $('.vote-button', 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 ? '


Έχει επεξεργασθεί από τον/την Giotis στις Πεμ Ιαν 21, 2016 1:55 am, 1 φορά
Giotis

Giotis
Νικητής διαγωνισμού
Νικητής διαγωνισμού

Δημοσιεύσεις : 90



Giotis ο/η συγγραφέας σας ευχαριστήσε για την απάντησή σας.

Λύθηκε Απ: Like/Dislike με εμφάνιση ονόματος

Δημοσίευση από Luffy Σαβ Ιαν 16, 2016 1:46 pm

@Giotis σε phpbb2 είναι κάπως δύσκολο να γίνει αυτό. Αν θυμάμαι καλά γίνεται σε phpbb3 και punbb αλλά σε phpbb2 δεν το νομίζω.

Ας κάνουμε tag τον @Van-Helsing να δούμε τι έχει να πει κι αυτός! Smile
Luffy

Luffy
Διαχειριστής
Διαχειριστής

Άντρας
Τόπος : Ελλάδα
Δημοσιεύσεις : 2340



Luffy ο/η συγγραφέας σας ευχαριστήσε για την απάντησή σας.

Λύθηκε Απ: Like/Dislike με εμφάνιση ονόματος

Δημοσίευση από Van-Helsing Σαβ Ιαν 16, 2016 1:58 pm

Καλησπέρα σας,
Δυστυχώς αυτό το project λειτούργησε μόνο σε phpbb3 και μετά ο συγγραφέας του σταμάτησε την υποστήριξη αυτού το project γιατί λειτουργούσε με ψευδό-βάσεις δεδομένων και επιβάρυνε πολύ τα φόρουμς και πιθανόν να δημιουργούσε πρόβλημα στην πραγματική βάση δεδομένων του φόρουμ αυτός ήταν και ο λόγος εγκατάληψης του project όπως με ενημέρωσε ο συγγραφέας του κώδικα.
Van-Helsing

Van-Helsing
Διαχειριστής
Διαχειριστής

Άντρας
Ηλικία : 49
Δημοσιεύσεις : 1990



Van-Helsing ο/η συγγραφέας σας ευχαριστήσε για την απάντησή σας.

Λύθηκε Απ: Like/Dislike με εμφάνιση ονόματος

Δημοσίευση από Giotis Τετ Ιαν 20, 2016 9:26 pm

Van-Helsing έγραψε:Καλησπέρα σας,
Δυστυχώς αυτό το project λειτούργησε μόνο σε phpbb3 και μετά ο συγγραφέας του σταμάτησε την υποστήριξη αυτού το project γιατί λειτουργούσε με ψευδό-βάσεις δεδομένων και επιβάρυνε πολύ τα φόρουμς και πιθανόν να δημιουργούσε πρόβλημα στην πραγματική βάση δεδομένων του φόρουμ αυτός ήταν και ο λόγος εγκατάληψης του project όπως με ενημέρωσε ο συγγραφέας του κώδικα.
Μάλιστα. Δηλαδή υπάρχει περίπτωση να μου δημιουργήσει πρόβλημα στο φόρουμ; Προς το παρόν λειτουργεί άψογα.
Giotis

Giotis
Νικητής διαγωνισμού
Νικητής διαγωνισμού

Δημοσιεύσεις : 90



Giotis ο/η συγγραφέας σας ευχαριστήσε για την απάντησή σας.
  • 0

Λύθηκε Απ: Like/Dislike με εμφάνιση ονόματος

Δημοσίευση από Van-Helsing Τετ Ιαν 20, 2016 11:54 pm

Καλησπέρα @Giotis,
Ο κώδικας αυτός ήταν beta (δοκιμαστικός) δηλαδή. Αν σου δουλεύει και δεν σου δημιουργεί προβλήματα μπορείς να τον κρατήσεις. Στους δοκιμαστικούς κώδικες δεν μπορούμε να εγγυηθούμε κάτι γιαυτό και σας λέμε ότι τους χρησιμοποιείτε με δική σας ευθύνη.
Van-Helsing

Van-Helsing
Διαχειριστής
Διαχειριστής

Άντρας
Ηλικία : 49
Δημοσιεύσεις : 1990



Van-Helsing ο/η συγγραφέας σας ευχαριστήσε για την απάντησή σας.

Λύθηκε Απ: Like/Dislike με εμφάνιση ονόματος

Δημοσίευση από Giotis Πεμ Ιαν 21, 2016 1:55 am

Μάλιστα. Ευχαριστώ!
Giotis

Giotis
Νικητής διαγωνισμού
Νικητής διαγωνισμού

Δημοσιεύσεις : 90



Giotis ο/η συγγραφέας σας ευχαριστήσε για την απάντησή σας.

Λύθηκε Απ: Like/Dislike με εμφάνιση ονόματος

Δημοσίευση από Van-Helsing Πεμ Ιαν 21, 2016 3:04 am

To θέμα λύθηκε, κλειδώθηκε και αρχειοθετήθηκε.
Van-Helsing

Van-Helsing
Διαχειριστής
Διαχειριστής

Άντρας
Ηλικία : 49
Δημοσιεύσεις : 1990



Van-Helsing ο/η συγγραφέας σας ευχαριστήσε για την απάντησή σας.

Επισκόπηση προηγούμενης Θ.Ενότητας Επισκόπηση επόμενης Θ.Ενότητας Επιστροφή στην κορυφή

- Παρόμοια θέματα

Δικαιώματα σας στην κατηγορία αυτή
Δεν μπορείτε να απαντήσετε στα Θέματα αυτής της Δ.Συζήτησης