.
Cerrar Ventana

Algunas cookies de este sitio son esenciales, y el sitio no funcionará como se espera sin ellas. Estas cookies se establecen en el momento de enviar un formulario, inicie sesión o interactuar con el sitio realizando una acción que va más allá de hacer clic en un simple enlace.


Leer Más

Encuesta ¿Qué diseño os gustaría?

Para que se habrán los enlaces de descarga pulsar el  Botón Gracias.

Complementos Terminados Karma (Reputación) AJAX V1 (Act 1.3)



02-01-2021, 07:07 PM #1
2
Mejor respuesta del mensaje Karma (Reputación) AJAX V1 (Act 1.3)
[img]Registrate o inicia tu sesión para ver este contenido[/img]
 
[img]Registrate o inicia tu sesión para ver este contenido[/img]



Ejecutar las siguientes consultas (una por una):
 
ALTER TABLE `u_miembros` ADD `user_karma` TINYINT( 4 ) NOT NULL

ALTER TABLE `w_configuracion` ADD `c_karma_settings` ENUM( '1', '2' ) NOT NULL

CREATE TABLE IF NOT EXISTS `u_karma_votes` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`vote` enum('1','2') NOT NULL,
`ip` varchar(16) NOT NULL,
`user` int(10) unsigned NOT NULL,
`user_to` int(10) unsigned NOT NULL,
`time` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;


Abrir c.admin en inc/class

Buscar:
 
'sump' => empty($_POST['sump']) ? 0 : 1,


Debajo agregar:
 
'karma' => ($_POST['karma_opt'] != '1' && $_POST['karma_opt'] != '2' ? '1' : $_POST['karma_opt']),


Buscar:
 
, `offline_message` = \'' . $c['offline_message'] . '\'


Al lado agregar:
 
, `c_karma_settings` = \'' . $c['karma'] . '\'


Abrir c.user.php en inc/class

Buscar:
 
/*++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++*/
							// MANEJAR SESSIONES \\


Arriba agregar:
 
function userKarma() 
	{
        global $tsCore;
       // sólo usuarios logueados
        if (!$this->uid)
        return false;
        // comprobación de variables
		if (!ctype_digit($_POST['karma']) || ($_POST['karma'] != '1' && $_POST['karma'] != '2') || !ctype_digit($_POST['uid']))
		return 'Error provocado';
		// comprobamos que no se de karma a sí mismo
		if ($_POST['uid'] == $this->uid)
		return 'No es posible darte puntos de karma a ti mismo';
		//si está la opción 2 en la configuración del karma, no se podrá dar votos negativos, comprobamos eso:
		if ($_POST['karma'] == '2' && $tsCore->settings['c_karma_settings'] == '2')
		return 'Sólo votos positivos';
		// el usuario existe?
		if(db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT user_id FROM u_miembros WHERE user_id = \'' . $_POST['uid'] . '\'')))
		return 'El usuario no existe';
		// comprobamos clones
		if(db_exec('num_rows', db_exec(array(__FILE__, __LINE__), 'query', 'SELECT id FROM u_karma_votes WHERE (user = \''.$this->uid.'\' || ip = \''.$tsCore->getIP().'\') && time > \''.(time() - 3600).'\' && user_to = \''.$_POST['uid'].'\'')))
		return 'Debes esperar una hora para poder volver a votar a ese usuario';
		// pasó por acá y todo bien? actualizamos karma y guardamos voto
		db_exec(array(__FILE__, __LINE__), 'query', 'UPDATE u_miembros SET user_karma = user_karma ' . ($_POST['karma'] == '2' ? '-' : '+') . ' 1 WHERE user_id = \'' . $_POST['uid'] . '\' LIMIT 1');
		db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO u_karma_votes (user, ip, user_to, vote, time) VALUES (\'' . $this->uid . '\', \'' . $tsCore->getIP() . '\', \'' . $_POST['uid'] . '\', ' . ($_POST['karma'] == '2' ? '2' : '1') . ', \'' . time() . '\')');
		//
        return '1';
    }


Abrir c.posts.php en inc/class

Buscar:
 
// DATOS DEL AUTOR
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.user_firma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1');


reemplazar por
 
// DATOS DEL AUTOR
        $query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_rango, u.user_puntos, u.user_lastactive, u.user_last_ip, u.user_activo, u.user_baneado, p.user_pais, p.user_sexo, p.user_firma, u.user_karma FROM u_miembros AS u LEFT JOIN u_perfil AS p ON u.user_id = p.user_id WHERE u.user_id = \''.(int)$user_id.'\' LIMIT 1');


Añadido:
 
, u.user_karma 


Abrir c.cuenta.php en inc/class

Buscar:
 
// INFORMACION GENERAL
		$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_registro, u.user_lastactive, u.user_activo, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');


reemplazar por:
 
// INFORMACION GENERAL
		$query = db_exec(array(__FILE__, __LINE__), 'query', 'SELECT u.user_id, u.user_name, u.user_registro, u.user_lastactive, u.user_karma, u.user_activo, u.user_baneado, p.user_sexo, p.user_pais, p.p_nombre, p.p_avatar, p.p_mensaje, p.p_socials, p.p_empresa, p.p_configs FROM u_miembros AS u, u_perfil AS p WHERE u.user_id = \''.(int)$user_id.'\' AND p.user_id = \''.(int)$user_id.'\'');


Añadido:
 
, u.user_karma 


Abrir ajax-posts.php que está en inc/php/ajax

Buscar:
 
case 'posts-last-comentarios':
			//<--
			    $smarty->assign("tsComments",$tsPosts->getLastComentarios());
			//-->
		break;


Debajo agregar:
 
case 'posts-user-karma':
		   //<!--
		        echo $tsUser->userKarma();
		   //<--
		break;



Abrir m.perfil_headinfo.tpl que está en themes/tutheme/templates/modules

Buscar:
 
<li>
                					<strong>{$tsInfo.stats.user_fotos}</strong>
                					<span>Fotos</span>
                				</li>


Debajo agregar:
 
<li>
									<strong>{$tsInfo.user_karma}</strong>
									<span>Karma</span>
                                </li>


Abrir m.posts_autor.tpl que está en themes/tutheme/templates/modules

Buscar:
 
<span style="color: #456c00" class="nData">{$tsAutor.user_comentarios}</span>
                                <span class="txtData">Comentarios</span>
                            </div>


Debajo agregar:
 
<hr class="divider"/>
							Karma: <b><div id="uKarma">{$tsAutor.user_karma}</div></b>
							<div id="karmaOpts" style="display:inline;">
							    <a onclick="users_karma({$tsAutor.user_id}, 1)" title="Dar voto positivo"><img src="{$tsConfig.tema.t_url}/images/rep_up.png"></a>
							    {if $tsConfig.c_karma_settings == 1}
							    <a onclick="users_karma({$tsAutor.user_id}, 2)" title="Dar voto negativo"><img src="{$tsConfig.tema.t_url}/images/rep_down.png"></a>
							    {/if}
                            </div>


Abrir acciones.js que está en /themes/tutheme/js/

Buscar:
 
function actualizar_comentarios(cat, nov){
    $('#loading').fadeIn(250);
	$('#ult_comm, #ult_comm > ol').slideUp(150);
	$.ajax({
		type: 'GET',
		url: global_data.url + '/posts-last-comentarios.php',
		cache: false,
		data: 'cat='+cat+'&nov='+nov,
		success: function(h){
			$('#ult_comm').html(h);
			$('#ult_comm > ol').hide();
			$('#ult_comm, #ult_comm > ol:first').slideDown( 1500, 'easeInOutElastic');
            $('#loading').fadeOut(350);
			//$('#ult_comm, #ult_comm > ol:first').slideDown({duration: 'slow', easing: 'easeOutBack'});
			// La animación easeOutBack me pareció buena, la otra también o.O aunque easeInOutElastic se ve raro con tantas letras.
		},
		error: function(){
			$('#ult_comm, #ult_comm > ol:first').slideDown({duration: 1000, easing: 'easeOutBounce'});
            $('#loading').fadeOut(350);
			// Esta animación se usaba anteriormente en caso de que saliese bien, puede volver a utilizarse.
		}
	});
}


Debajo agregar:
 
/* Karma V1 - By Alan - phpost.net */
function users_karma(uid, vote){
	if(!uid || !vote) return false;
	$('#loading').fadeIn(250);
	$.post(global_data.url + '/posts-user-karma.php', 'uid=' + uid + '&karma=' + vote, function(olakease){
	if(olakease != '1'){
	mydialog.alert('Error', olakease);
	} else {
	var uKarma = parseInt($('#uKarma').text());
	if(vote == '1'){
	$('#uKarma').text(++uKarma);
	} else {
	$('#uKarma').text(--uKarma);
	}
	$('#karmaOpts').fadeOut('slow');
	$('#loading').fadeOut(350);
	}
	});
}


Abrir m.admin_configs.tpl en themes/default/templates/admin_mods

Buscar:


<dl>
                <dt>
                    <label for="ai_met_welcome">Mensaje de Bienvenida:</label>
                    <br /><span id="desc_message_welcome" {if $tsConfig.c_met_welcome==0 }style="display:none;" {/if}> <br /> [usuario] => Nombre del registrado <br /> [welcome] => Bienvenido/a depende del sexo <br /> [web] => Nombre de esta web <br /> <br />(Se aceptan BBCodes y Smileys)</span></dt>
                <dd>
                    <select id="ai_met_welcome" name="met_welcome" style="width: 266px;" class="select" {if $tsConfig.c_met_welcome==0 } onchange="if($('#ai_met_welcome').val() != 0) $('textarea[name=message_welcome]').slideDown(); $('#desc_message_welcome').slideDown();" {/if}>
                        <option value="0" {if $tsConfig.c_met_welcome==0 }selected{/if}>No dar bienvenida</option>
                        <option value="1" {if $tsConfig.c_met_welcome==1 }selected{/if}>Muro</option>
                        <option value="2" {if $tsConfig.c_met_welcome==2 }selected{/if}>Mensaje privado</option>
                        <option value="3" {if $tsConfig.c_met_welcome==3 }selected{/if}>Aviso</option>
                    </select>
                    <br />
                    <textarea name="message_welcome" id="ai_met_welcome" style="width: 260px; height: 100px; {if $tsConfig.c_met_welcome == 0} display:none; {/if}">{$tsConfig.c_message_welcome}</textarea>
                </dd>
            </dl>


Debajo agregar:
 
<dl>
				<dt>
				    <label for="ai_karma_opt">Mod Karma:</label><br /><span> <br /> [Mostrar ambas opciones] => Permite dar karma positivo y negativo <br /> [Sólo karma positivo] => Sólo se podrá dar karma positivo</span>
				</dt>
				<dd>
					<select id="ai_karma_opt" name="karma_opt" style="width: 266px;" class="select">
					<option value="1"{if $tsConfig.c_karma_settings == 1} selected{/if} >Mostrar ambas opciones</option>
					<option value="2"{if $tsConfig.c_karma_settings == 2} selected{/if} >Sólo karma positivo</option>
					</select>
                </dd>
            </dl>



Y subir imágenes Debes agradecer para ver el contenido... y Debes agradecer para ver el contenido... a themes/tutheme/images/

[img]Registrate o inicia tu sesión para ver este contenido[/img]

[img]Registrate o inicia tu sesión para ver este contenido[/img]




Creditos: Debes agradecer para ver el contenido...

 Responder
04-17-2021, 09:41 PM #2
0
No entendí muy bien su función...

Los usuarios desde el post pueden votar para subir o bajar el karma de los usuarios? 

Buen aporte

 Responder
04-20-2021, 10:59 AM #3
1
(04-17-2021, 09:41 PM)zero escribió: Debes agradecer para ver el contenido...No entendí muy bien su función...

Los usuarios desde el post pueden votar para subir o bajar el karma de los usuarios? 

Buen aporte

Si, es igual que el bóton que hay aquí de Reputación, te ha tenido que llegar 2 puntos para que veas más o menos como es.

 Responder
04-20-2021, 07:14 PM #4
1
(04-20-2021, 10:59 AM)Tronlar escribió: Debes agradecer para ver el contenido...
(04-17-2021, 09:41 PM)zero escribió: Debes agradecer para ver el contenido...No entendí muy bien su función...

Los usuarios desde el post pueden votar para subir o bajar el karma de los usuarios? 

Buen aporte

Si, es igual que el bóton que hay aquí de Reputación, te ha tenido que llegar 2 puntos para que veas más o menos como es.

Ya veo, es parecido al que tienes aquí, me gusta la idea  Cool

 Responder



Salto de foro:



Usuarios navegando en este tema:
1 invitado(s)