Votos con Emojis [Beta]

Perfil del autor

Iniciado por Miguel92
En Plugins Hace 28 días


Público Privacidad
Normal Tipo
5 Respuestas
44 Visitas
3 Puntos
Miguel92 Fundador 153 13
Topics 24
Respuestas 76
Miguel92 Fundador
Hace 28 días
Bueno como dice el titulo es beta, aunque sirve bien...
Fue realizado de esta manera hasta que se pueda mejorar y luego haré un post para retirar lo que seria los votos por puntos, ya que agregando esto existirían 2 sistemas de votos "puntos" y "emojis"

Captura:


Pero no me salió como quería, sigan los siguientes pasos:
1 - Ejecutan esta consulta
CREATE TABLE `sistema_votos` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `id_post` int(11) NOT NULL,
  `id_usuario` int(11) NOT NULL,
  `tipo` varchar(20) NOT NULL,
  PRIMARY KEY (`id`),
  KEY `id_post` (`id_post`),
  KEY `id_usuario` (`id_usuario`),
  KEY `tipo` (`tipo`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

2 - Abren inc/php/ajax/ajax.posts.tpl y buscan
'posts-votar' =>  array('n' => 2, 'p' => ''),
debajo agregan
'posts-votos' => array('n' => 2, 'p' => ''),
más abajo buscan
case 'posts-votar':
//<--
echo $tsPosts->votarPost();
//-->
break;
y agregan
case 'posts-votos':
// <--
echo $tsPosts->VotosPorEmoji();
// -->
break;

3 - Ahora en inc/class/c.posts.php buscan
      // TAGS
$postData['post_tags'] = explode(",", $postData['post_tags']);
y arriba agregaremos [NOTA: Esto es lo que no me gusto como ha quedado, lo quiero reducir para que no sean tantas líneas]      
// ME GUSTA
$megusta = db_exec(array(__FILE__, __LINE__), 'query', "SELECT COUNT(tipo) FROM sistema_votos WHERE id_post = {$postData['post_id']} AND tipo = 'megusta'");
$postData['megusta'] = db_exec('fetch_row', $megusta);
// LO AMO
$loamo = db_exec(array(__FILE__, __LINE__), 'query', "SELECT COUNT(tipo) FROM sistema_votos WHERE id_post = {$postData['post_id']} AND tipo = 'loamo'");
$postData['loamo'] = db_exec('fetch_row', $loamo);
// SIN PALABRAS
$sinpalabras = db_exec(array(__FILE__, __LINE__), 'query', "SELECT COUNT(tipo) FROM sistema_votos WHERE id_post = {$postData['post_id']} AND tipo = 'sinpalabras'");
$postData['sinpalabras'] = db_exec('fetch_row', $sinpalabras);
// WTF
$wtf = db_exec(array(__FILE__, __LINE__), 'query', "SELECT COUNT(tipo) FROM sistema_votos WHERE id_post = {$postData['post_id']} AND tipo = 'wtf'");
$postData['wtf'] = db_exec('fetch_row', $wtf);
// LO ODIO
$loodio = db_exec(array(__FILE__, __LINE__), 'query', "SELECT COUNT(tipo) FROM sistema_votos WHERE id_post = {$postData['post_id']} AND tipo = 'loodio'");
$postData['loodio'] = db_exec('fetch_row', $loodio);
luego abajo de todos arriba de la última llave '}' agregan
   /** NUEVO SISTEMA DE VOTACIÓN POR EMOJIS **/
public function VotosPorEmoji() {
global $tsCore, $tsUser;
$postVoto = array(
'tipo' => $tsCore->setSecure($_POST['tipo']),
'usuario' => intval($_POST['user_key']),
'postid' => intval($_POST['postid']),
); 
# Comprobamos que el usuario no haya votado anteriormente
$q = db_exec('fetch_row', db_exec(array(__FILE__, __LINE__), 'query', "SELECT id_usuario FROM sistema_votos WHERE id_post = {$postVoto['postid']} AND id_usuario = {$tsUser->uid}"));
$dato = $q[0];
if($dato == NULL && $dato != $tsUser->uid) {
if(db_exec(array(__FILE__, __LINE__), 'query', "INSERT INTO sistema_votos (id_post, id_usuario, tipo) VALUES ('{$postVoto['postid']}', '{$postVoto['usuario']}', '{$postVoto['tipo']}')")) {
return '1: Gracias por tu voto. | ' . $postVoto['tipo'];
}
} else return '0: Ya votaste.';
}

4 - Ahora van a su theme/js/funciones.js y abajo de todos agregan
$(document).ready(function() {
$("ul.emojis li a").click(function(e) {
e.preventDefault(); 
var voto = $(this).data("voto"),
usuario =  $(this).data("user"),
objeto = $(this).closest("li").find(".count").text(); 
votar(voto, usuario, objeto); 
});
});
function alerta(mensaje,modo) {
$("body").append("<div class='mensaje position-fixed bottom-3 left-3 rounded flat py-2 px-4 bg-" + modo + "'>" + mensaje + "</div>");
$('.mensaje').fadeOut(8000, function(){ 
$(this).remove(); 
});
}
function votar(tipo, usuario, objeto) {
$.ajax({
method: "POST",
url: global_data.url + '/posts-votos.php',
data: 'tipo=' + tipo + '&user_key=' + usuario + '&postid=' + gget('postid'),
success: function(h) {
switch (h.charAt(0)) {
case '0': //Error
alerta(h.substring(3), "danger");
break;
case '1': //OK
h = h.split('|');
alerta(h[0].substring(3), "success");
objeto = parseInt(objeto);
$('a[data-voto='+h[1]+'] > .count').text(objeto + 1);
break;
}
}
})
}

5 - Ahora en hoja de estilo que sea global como "estilo.css" agregan, lo pueden editar a su manera ya que lo uso con un framework, pueden usar bootstrap tranquilamente
/** Sistema de votos por emojis **/
/* PUEDEN AGREGAR SUS ESTILOS A SU MANERA SI QUIEREN */
.emojis {
}
.emojis li {
margin-right: 10px;
filter: grayscale(100%);
transition: filter .2s ease-in-out;
}
.emojis li:hover,
.emojis li:hover .tooltip{
filter: grayscale(0%);
transition: filter .4s ease-in-out;
}
.emojis li .smile {
font-size: 26px;
line-height: 20px;
}
.emojis .count {
position: relative;
background: var(--success);
border-radius: 5px;
margin-top: 8px;
margin-left: 26px;
line-height: 18px;
padding: 0 10px;
font-size: 12px;
height: 18px;
color: #FFF
}

6 - En templates/m.posts_metadata.tpl o donde quieran agregan
El enlace git-paso-6 ya que me da problemas no agrega todo el código por alguna razón

3 puntos
5
Loading...

¿Como comentar?

Para poder comentar necesitas estar Registrado.


Si ya eres miembro ingresa a tu cuenta.


¿Quién está conectado?
Actualmente están conectados (4):
Austra
El record de usuarios conectados fue el día El 11 de agosto a las 10:00 y fueron 179 miembros online.
Enlaces importantes
Chat
Ayuda
Contacto
Report Abuse - DMCA
Sobre nosotros

NewRisus Social Community Script es un software basado en el sistema PHPost, con el cual se espera ofrecer un software Bulletin Board, que permitirá crear comunidades o foros de forma gratuita. NewRisus trabaja bajo el software de PHPost, por lo que está prohibido retirar el copyright de ambos sin autorización.


Temas
196
Comentarios
746
Miembros
86
Último miembro