¡Bienvenido! ¿Aún no estás registrado?, deberás registrarte antes de poder usar el Chat, Comentar y Descargar en el Foro. Usa un email válido para la activación.
Calificación:
  • 0 voto(s) - 0 Media
  • 1
  • 2
  • 3
  • 4
  • 5

COMPLEMENTOS Sistema de Encuestas en Posts v1.0
#1

0
Sistema de Encuestas en Posts v1.0
Nuevo módulo para Risus Nova 2.0 — PHPost


Sistema de Encuestas en Posts v1.0 para Risus Nova 2.0: el Sistema de Encuestas en Posts. Al crear un post puedes añadir una encuesta opcional con hasta 8 opciones. Los usuarios votan directamente desde el post y los resultados se actualizan en tiempo real sin recargar la página.


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


📊 ¿Qué incluye?
 
  • Encuesta opcional al crear cualquier post
  • Hasta 8 opciones por encuesta
  • Duración configurable — se puede poner fecha de cierre o sin límite
  • Resultados en tiempo real con barras de progreso animadas
  • Anti-doble voto por usuario y por IP
  • Los usuarios no registrados ven los resultados pero no pueden votar
  • Encuestas cerradas siguen mostrando resultados
  • Al votar el formulario se transforma en resultados sin recargar
 


🛠️ Instalación

Paso 1 — Ejecutar el instalador

Sube la carpeta install/ a la raíz del sitio y accede a:

 
Registrate o inicia tu sesión para ver este contenido


Pulsa Instalar ahora. El instalador creará 3 tablas:
  • p_encuestas — encuestas ligadas a posts
  • p_encuestas_opciones — opciones de cada encuesta
  • p_encuestas_votos — registro de votos por usuario e IP

⚠️ Elimina la carpeta install/ del servidor cuando termine.

Paso 2 — Subir los archivos
 
inc/class/c.encuestas.php          →  inc/class/
inc/php/ajax/ajax.encuesta.php     →  inc/php/ajax/
themes/default/css/encuesta.css   →  themes/default/css/
themes/default/templates/modules/m.encuesta.tpl      →  themes/default/templates/modules/
themes/default/templates/modules/m.encuesta_form.tpl →  themes/default/templates/modules/

Paso 3 — c.posts.php

Abre inc/class/c.posts.php y busca el return $postID; al final de la función newPost(). Añade justo antes:
 
// ── Encuesta ──
if (!empty($_POST['enc_pregunta']) && !empty($_POST['enc_opciones'])) {
    require_once TS_CLASS . 'c.encuestas.php';
    $tsEncObj = new tsEncuestas();
    $tsEncObj->crearEncuesta(
        $postID,
        $_POST['enc_pregunta'],
        $_POST['enc_opciones'],
        (int)($_POST['enc_expira_dias'] ?? 0)
    );
}
// ────────────
return $postID;


Paso 4 — posts.php

Abre inc/php/posts.php y busca:
 
// PAGINAS
$total = $tsPost['post_comments'];

Añade justo antes:
 
// ── Encuesta ──
require_once TS_CLASS . 'c.encuestas.php';
$tsEncObj   = new tsEncuestas();
$tsEncuesta = $tsEncObj->getEncuesta($tsPost['post_id']);
if ($tsEncuesta && !empty($tsEncuesta['opciones'])) {
    foreach ($tsEncuesta['opciones'] as &$op) {
        $op['pct'] = $tsEncuesta['total_votos'] > 0
            ? round($op['votos'] / $tsEncuesta['total_votos'] * 100, 1)
            : 0;
    }
    unset($op);
}
$ip         = $tsCore->getIP();
$tsYaVoto   = $tsEncuesta ? $tsEncObj->yaVoto($tsEncuesta['enc_id'], $tsUser->uid, $ip) : false;
$tsMiOpcion = $tsEncuesta ? $tsEncObj->opcionVotada($tsEncuesta['enc_id'], $tsUser->uid, $ip) : 0;
$smarty->assign('tsEncuesta',  $tsEncuesta);
$smarty->assign('tsYaVoto',    $tsYaVoto);
$smarty->assign('tsMiOpcion',  $tsMiOpcion);
// ────────────


Paso 5 — Mostrar la encuesta en el post

Abre themes/default/templates/modules/m.posts_content.tpl y busca:
 
<div class="compartir-risus-banner">

Añade justo antes:
 
{include file='modules/m.encuesta.tpl'}


Paso 6 — Formulario al crear un post

Abre themes/default/templates/modules/m.agregar.form.tpl y busca el bloque de opciones de publicación (donde está el checkbox de "Solo usuarios registrados"). Añade después del cierre de ese bloque:

 
{include file='modules/m.encuesta_form.tpl'}


Paso 7 — Borrar la caché

Borra el contenido de la carpeta /cache/ del sitio.


🗑️ Desinstalar
 
DROP TABLE IF EXISTS p_encuestas;
DROP TABLE IF EXISTS p_encuestas_opciones;
DROP TABLE IF EXISTS p_encuestas_votos;


Elimina los archivos subidos y quita los hooks añadidos en los pasos 3, 4, 5 y 6.

 
Descarga
Debes agradecer para ver el contenido...

Debes agradecer para ver el contenido...




¿Tienes dudas o encuentras algún problema? Déjalo en los comentarios.


Responder


Compartir en:

Salto de foro:


Usuarios navegando en este tema: 1 invitado(s)