Ελληνική Κοινότητα Υποστήριξης ForumGreek
Καλωσήρθατε στο Ελληνικό Φόρουμ Υποστήριξης της ForumGreek!!

Για να αποκτήσετε πλήρη πρόσβαση στο φόρουμ και στα όσα προσφέρει, μπορείτε πολύ απλά να κάνετε μια σύνδεση ή αν δεν έχετε λογαριασμό μία δωρεάν εγγραφή και μπείτε στην κοινότητά μας!!

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
Νικητής διαγωνισμού
Νικητής διαγωνισμού

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

Επιστροφή στην κορυφή Πήγαινε κάτω

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

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

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

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



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

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

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

Επιστροφή στην κορυφή Πήγαινε κάτω

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

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

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






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

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

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

Επιστροφή στην κορυφή Πήγαινε κάτω

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

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

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

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

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

Επιστροφή στην κορυφή Πήγαινε κάτω

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

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

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






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

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

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

Επιστροφή στην κορυφή Πήγαινε κάτω

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

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

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

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

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

Επιστροφή στην κορυφή Πήγαινε κάτω

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

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

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






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

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

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

Επιστροφή στην κορυφή Πήγαινε κάτω

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


 
Δικαιώματα σας στην κατηγορία αυτή
Δεν μπορείτε να απαντήσετε στα Θέματα αυτής της Δ.Συζήτησης
Χρειάζεστε βοήθεια;
Στις Συχνές Ερωτήσεις μπορείτε να βρείτε σημαντικές πληροφορίες που θα σας βοηθήσουν!