Jump to content
  • Sky
  • Blueberry
  • Slate
  • Blackcurrant
  • Watermelon
  • Strawberry
  • Orange
  • Banana
  • Apple
  • Emerald
  • Chocolate
  • Charcoal
Miguel92

[Mod] Localización del usuario LIVE V2[2018]

Recommended Posts

Desgraciadamente lo tengo para mi theme MozzFire v.4.x

 Así que les dejaré un diseño que se adapta a cualquier theme!

 

Obviamente deben tener el mod [Mod] Localización del usuario en tu web V1

Por: @Kmario19


Luego hacemos lo siguiente 
1 - Vamos a inc/php/ajax/ y crearemos un archivo llamado ajax.localizacion.php y en el colocaremos lo siguiente:

<?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script');
/**
 * Controlador AJAX
 *
 * @name    ajax.localizacion.php
 * @author  @Miguel92
*/

// NIVELES DE ACCESO Y PLANTILLAS DE CADA ACCIÓN
$files = array( 
    'localizacion' =>  array('n' => 0, 'p' => 'localizacion'), 
);

// REDEFINIR VARIABLES
$tsPage = 'php_files/p.'.$files[$action]['p'];
$tsLevel = $files[$action]['n'];
$tsAjax = empty($files[$action]['p']) ? 1 : 0;

// DEPENDE EL NIVEL
$tsLevelMsg = $tsCore->setLevel($tsLevel, true);
if($tsLevelMsg != 1) { 
    echo '0: '.$tsLevelMsg['mensaje']; 
    die(); // En el caso de error matamos la operación!
}

// CODIGO
switch($action){
    case 'localizacion':
        $smarty->assign("tsLocalizacion",$tsLoc->getLocalizacion());
    break;
}

 

2 - Luego vamos a tu_theme/js/acciones.js y abajo de todo pegamos (Puedes ver el mismo código más reducido se encuentra al final del topic)

/* 
    ==== Actualizar localizacion por ajax ====
    ====          :: 12/05/2018 ::       ====
    ====            By @Miguel92        ====
*/
function localizar(userid){
          $.ajax({
               type: 'POST',
               url: global_data.url + '/localizacion.php',
            data: 'userid=' + userid,
               cache: false,
               success: function(h){
                  $('#localizar').html(h);
                  $('#localizar').html(h);
            },
               error: function(){
                  $('#localizar ul').text("No se pueden cargar los usuarios. Lo lamento!");
            }
        });
}
setInterval(function(){ localizar(); },6000); // El intervalo en que se actualizará! (6s)

 

3 - Luego vamos a tu_theme/templates/t.php_files/ y creamos un archivo llamado p.localizacion.tpl y pegamos

{if $tsLocalizacion.data}
    {foreach from=$tsLocalizacion.data item=l}
        <tr>
            <td>
                {if $l.id_user == 0}
                <img src="{$tsConfig.url}/files/avatar/{$l.id_user}_120.jpg" width="40" height="40" alt="{$l.user_name}"/>
                {else}
                <img src="{$tsConfig.url}/files/avatar/{$l.id_user}_120.jpg" width="40" height="40" alt="{$l.user_name}"/>
                {/if}
            </td>
            <td style="text-align: left;color:#2186D6;">
                {if $l.id_user == 0}
                 Visitante
                {else}
                <a href="{$tsConfig.url}/perfil/{$l.user_name}" title="Ver perfil de {$l.user_name}" style="color:#2186D6;">{$l.user_name}</a>
                {/if}
            </td>
            <td>
                {if $l.tipo == 1}
                    {$l.titulo} {$tsConfig.titulo}
                {elseif $l.tipo == 2}
                    Viendo el post <a href="{$tsConfig.url}/{$l.url}" title="{$l.titulo}">{$l.titulo}</a>
                {elseif $l.tipo == 3}
                    {$l.titulo} <a href="{$tsConfig.url}/perfil/{$l.url}" title="Ver perfil de {$l.url}" data-vcard="{$l.lugar}">{$l.url}</a>
                {elseif $l.tipo == 5}
                    Viendo la foto <a href="{$tsConfig.url}/{$l.url}" title="{$l.titulo}">{$l.titulo}</a>
                {elseif $l.tipo == 6}
                Viendo el <a href="{$tsConfig.url}/{$l.url}" title="{$l.titulo}">album</a> de fotos de <a href="{$tsConfig.url}/perfil/{$l.titulo}" title="{$l.titulo}">{$l.titulo}</a>
                {elseif $l.tipo == 7}
                    {$l.titulo} <a href="{$tsConfig.url}/top/{$l.url}/" title="{$l.url}">{$l.url}</a>
                {elseif $l.tipo == 8}
                {$l.titulo} <a href="{$tsConfig.url}/top/{$l.url}/" title="{$l.url}">{$l.url}</a>
                {elseif $l.tipo == 13}
                {$l.titulo} <a href="{$tsConfig.url}/{$l.url}/" title="Mi">Portal</a>
                {elseif $l.tipo == 17}
                {$l.titulo} <a href="{$tsConfig.url}/pages/{$l.url}/" title="Chat">Chat</a>
                {else}
                    {$l.titulo}
                {/if}
            </td>
            <td>{$l.fecha|hace}</td>
        </tr>
   {/foreach}
{else}
    <tr>
        <td colspan="3" style="padding:10px">Los usuarios no hacen actividad, procura... -yao</td>
    <tr>
{/if}

 

4 - Luego abrir y reemplazar tu_theme/templates/t.localizacion.tpl por este

{include file='sections/main_header.tpl'}                    
<div class="loc-contenedor">
    <div class="loc-tarjeta">
        <div class="loc-encabezado">
            <h5>Localización de los usuarios</h5>
        </div>
        <div class="loc-cuerpo">
        <table class="loc-tabla">
            <thead>
                <tr>
                    <th>Avatar</th>
                    <th>Usuario</th>
                    <th>Localización</th>
                    <th>Tiempo</th>
                </tr>
            </thead>                        
            <tbody id="localizar">
            </tbody>
            <tfoot>                
                {if $tsLocalizacion.inicio > 0 || $tsLocalizacion.hay == $tsLocalizacion.limite}
                    <tr>
                        <td colspan="4">
                        {if $tsLocalizacion.inicio > 0}
                            <a class="loc-boton" href="{$tsConfig.url}/localizacion/?l={$tsLocalizacion.inicio-$tsLocalizacion.limite}">Anterior</a>
                        {/if}
                        {if $tsLocalizacion.hay == $tsLocalizacion.limite}
                            <a class="loc-boton" href="{$tsConfig.url}/localizacion/?l={$tsLocalizacion.inicio+$tsLocalizacion.limite}">Siguiente</a>
                        {/if}
                        </td>
                    </tr>
                {/if}
            </tfoot>
        </table>
        </div>
    </div>                    
</div>
{include file='sections/main_footer.tpl'}

5 - Por último agregan el css donde quieran

.loc-contenedor {
    width: 95%;
    margin: 0 auto;
    margin-top: 15px;
    margin-bottom: 15px;
}
.loc-tarjeta .loc-encabezado {
    padding: 6px 0;
    text-align: center;
}
.loc-tarjeta .loc-encabezado h5 {
    font-size: 2.5em;
    margin: 0;
    padding: 0;
}
.loc-tarjeta .loc-cuerpo {
    padding-top: 0!important;
}
.loc-tarjeta .loc-cuerpo .loc-tabla {
    width: 80%;
    margin: 0 auto;
    padding: 4px;
    text-align: center;
}
.loc-tarjeta .loc-cuerpo .loc-tabla thead {
    font-weight: bold;
    font-size: 18px;
    border-top: 2px solid #555;
    border-bottom: 2px solid #555;
    background-color: #EEE;
}
.loc-tarjeta .loc-cuerpo .loc-tabla tbody td {
    padding: 4px 0;
}
.loc-tarjeta .loc-cuerpo .loc-tabla tbody tr:nth-child(2n+1) {
    background-color: #BAFAB8;
    transition: all .1s ease-in-out;
}    
.loc-tarjeta .loc-cuerpo .loc-tabla tbody tr:hover {
    background-color: #99BFF8;
    transition: all .1s ease-in-out;
}
.loc-tarjeta .loc-cuerpo .loc-tabla tfoot tr td {
    border-top: 2px solid #555;
    border-bottom: 2px solid #555;
    padding: 12px 0;
    text-align: center;
} 
.loc-tarjeta .loc-cuerpo .loc-tabla tfoot tr td .loc-boton {
    border: 1px solid #555;
    padding: 6px 20px;
    border-radius: 5px;
    color: #EEE;
    background-color: #17A2A0;
    text-transform: uppercase;
    text-decoration: none;
    transition: all .1s ease-in-out;
}
.loc-tarjeta .loc-cuerpo .loc-tabla tfoot tr td .loc-boton:hover {
    background-color: #0E7675;
    transition: all .1s ease-in-out;
}

ASI LES QUEDARÁ

21F.png

 

 

 

También pueden agregarle esto:
[FIX] Localización de usuarios - filtrado por IP - Risus 1.2 
Por: @rooteroman

 

 

PD: Se que me va a pedir una demo, mi respuesta es NO TENGO

Cualquier problema avisarme!

 

13/05/2018

[FIX] En el caso de ser necesario:

Si por esas casualidades les llegará a funcionar medio raro, en el punto 2 lo pueden hacer de la siguiente manera, en vez de ponerlo en acciones.js lo pueden agregar en templates/sections/main_footer.tpl arriba de 
 

</body>

</html>

y allí colocan este código

Spoiler
{if $tsPage == 'localizacion'}
  <script>
  /* 
    ==== Actualizar localizacion por ajax ====
    ====          :: 13/05/2018 ::       ====
    ====            By @Miguel92        ====
  */
  function localizar(userid){
        $.ajax({
          type: 'POST',
          url: global_data.url + '/localizacion.php',
        data: 'userid=' + userid,
          cache: false,
          success: function(h){
              $('#localizar').html(h);
              $('#localizar').html(h);
        },
          error: function(){
              $('#localizar ul').text("No se pueden cargar los usuarios. Lo lamento!");
        }
      });
  }
  setInterval(function(){ localizar(); },6); // El intervalo en que se actualizará!
  </script>
{/if}

 

 

 

Código reducido para el PASO 2

Spoiler
/* 
    ==== Código reducido para uso con ajax ====
    ====          :: 13/05/2018 ::       ====
    ====            By @Miguel92        ====
*/ 
$(document).ready(function(){
    setInterval(
      function() {
          $('#localizar').load(global_data.url + '/localizacion.php');
      }, 1000
    );
  });

 

 

Editado por Miguel92
Mini-Fix (si es necesario) y Código reducido
  • Me gusta 3
  • Gracias 1

Compartir este post


Enlace al post
Compartir en otros sitios

Nuevo agregados al topic:

1- [FIX] en el caso que sea necesario

2- Reducción del código con JS

Compartir este post


Enlace al post
Compartir en otros sitios
hace 11 horas, Kmario19 dijo:

Saludos. Algún día actualizare este mod, está muy mal implementado-optimizado, buen aporte.

Ah lo sé...ya que no soy experto en el tema no supe aplicarlo correctamente! (Algún día lo aprenderé a hacerlo de la forma correcta, ya que aprendería de mis errores)

  • Me gusta 1

Compartir este post


Enlace al post
Compartir en otros sitios

Registra una cuenta o conéctate para comentar

Debes ser un miembro de la comunidad para dejar un comentario


  • Similar Content

    • Por Miguel92
      Pedido: [Mod] Imagen de cabecera en comunidades
      Por: @fellomix
       
      No sé si es exactamente lo que se pidió..
       
      Quedaría como la imagen, pero obviamente no tiene ese borde rojo ya que lo estaba probando...

       
      Ahora deben de seguir los siguientes pasos...(creo que les va a servir para cualquier theme con comunidades y cualquier versión de Risus)
      Buscamos en inc/class/c.comunidades.php
                  } elseif($type == 3) {                 $this->mod_history($comid, 5, $comid);                 $name = 'cf_'.(int)$comid.'.jpg';                 $root = TS_FILES.'uploads/'.$name;                 if(copy($file['tmp_name'],$root)) return '1: '.$tsCore->settings['url'].'/files/uploads/'.$name;                 else return '0: No se pudo subir la imagen';             }  y debajo o al lado de } pegamos
                   elseif($type == 4) {                 $this->mod_history($comid, 6, $comid);                 $name = 'head_'.(int)$comid.'.jpg';                 $root = TS_FILES.'uploads/'.$name;                 if(copy($file['tmp_name'],$root)) return '1: '.$tsCore->settings['url'].'/files/uploads/'.$name;                 else return '0: No se pudo subir la imagen';             } Luego buscamos en inc/php/ajax/ajax.comunidades.php
              case 'comunidades-edit_fondo':             //<--                 $result = $tsCom->uploadImagen($_FILES['background'], $_GET['comid'], 3);                 echo $tsCore->setJSON($result);             //-->         break; y debajo agregaremos
              case 'comunidades-edit_header':             //<--                 $result = $tsCom->uploadImagen($_FILES['header'], $_GET['comid'], 4);                 echo $tsCore->setJSON($result);             //-->         break; Luego vamos a themes/TUTHEME/js/comunidades.js y buscamos
          votar_tema: function(voto) {         $('#loading').fadeIn(250);         voto = (voto == 'pos') ? 'pos' : 'neg';         var votos = $('#votos_total');         var total_votos = parseInt(votos.text());         total_votos = (isNaN(total_votos)) ? 0 : total_votos; Arriba de esto pegamos lo siguiente
          subir_cabecera: function() {         $('#loading').fadeIn(250);         if ($('#head_input').val()) {             if(isImageFile($('#head_input').val())){                 $('#head_change').css({'opacity' : 0.5});                 $.ajaxFileUpload({                     url: global_data.url + '/comunidades-edit_header.php?' + cgget('comid', true),                     fileElementId: 'head_input',                     dataType: 'json',                     success: function(h){                         if(h.charAt(0) == 1) {                             $('#head_change').css({'opacity' : 1});                             $('#head_change').attr({'src' : h.substring(3) + '?' + new Date().getTime()});                         } else {                             mydialog.alert('Error', h.substring(3));                         }                                         $('#loading').fadeOut(250);                     }                 });             } else mydialog.alert('Error', 'El archivo no es una imagen válida.');         } else mydialog.alert('Error', 'No selecciono ningun archivo.');     },  
      Más abajo buscamos
          if(global_com.comid!='') {         $('body').css({'background-image' : 'url("' + global_data.url + '/files/uploads/cf_' + global_com.comid + '.jpg")'});     }
      y debajo agregamos
          if(global_com.comid!='') {         $('.headercom').css({'background-image' : 'url("' + global_data.url + '/files/uploads/head_' + global_com.comid + '.jpg")'});     } Solo tendríamos que agregar la clase .headercom en donde queramos que aparezca la cabecera de la comunidad
       
      Luego en themes/TUTHEME/templates/comunidades/c.crear_right.tpl y arriba de
      <input type="hidden" id="comid" value="{$tsDato.c_id}" /> <div class="com_box_title clearfix"><h2>Imagen de la comunidad</h2></div>
      Pegamos
          <div class="com_box_title clearfix"><h2>Cabecera de la comunidad</h2></div>     <div class="com_edit_imagen" align="center"> <img src="{$tsConfig.url}/files/uploads/head_{$tsDato.c_id}.jpg" id="head_change" height="180" width="100%" /> <input type="file" id="head_input" class="input_text" name="header" style="width: 100%;" onchange="com.subir_cabecera({$tsDato.c_id})" /> </div>  
      En themes/TUTHEME/templates/comunidades/c.com_info.tpl
      <div class="ver_com_info">     <div class="vci_left floatL">
      y la reemplazamos por
      <div class="ver_com_info headercom">     <div class="opacity">     <div class="vci_left floatL">
      luego más abajo buscamos
          <a href="#" onclick="$('.ver_com_info').toggle();return false;"><i class="com_icon icon_less"></i></a>     <div class="clearfix"></div> </div>
      y la reemplazamos por
          <a href="#" onclick="$('.ver_com_info').toggle();return false;"><i class="com_icon icon_less"></i></a>     <div class="clearfix"></div>     </div> </div> por último en themes/TUTHEME/css/comunidades.css agregamos
      .ver_com_info {     padding: 0; } .headercom { /* De acá podrán darle estilo al fondo */     background-position: center center;     background-size: cover;     background-repeat: no-repeat; } .opacity {     padding: 20px 8px;     background-color: rgba(255,255,255,.6); }  
      Luego trataré de hacer otro, pero que evite subir imagenes a nuestro servidor y que la suba a un web como por ejemplo imgur...creo, no sé...ya lo veré
      PD: Si al editar la imagen no cambia, presionen "CTRL + SHIFT + R" y para evitar eso busquen en t.comunidades.tpl 
      <script type="text/javascript" src="{$tsConfig.js}/comunidades.js"></script> y lo cambian por
      <script type="text/javascript" src="{$tsConfig.js}/comunidades.js?{$smarty.now}"></script>  
      VIDEO DE COMO IMPLEMENTARLO
    • Por Miguel92
      Pedido: [Mod] Imagen de cabecera en comunidades
      Por: @fellomix
       
      Una segunda forma de poder hacerlo!
       
      1 -  Ejecutar esta consulta
      ALTER TABLE `c_comunidades` ADD `c_headercom` VARCHAR(255) NOT NULL AFTER `c_nombre_corto`; 2 -  Buscar en c.comunidades.php en la función nueva_comunidad()
                      'fecha' => time(),                 'nombre' => $tsCore->setSecure($tsCore->parseBadWords($_POST['nombre']), true),                 'ncorto' => $tsCore->setSeo($tsCore->setSecure($_POST['ncorto'], true)),
      y debajo agregamos
                      'headercom' => $tsCore->setSeo($tsCore->setSecure($_POST['headercom'], true)),
      un poco más abajo buscamos
                  // Insertamos             if(db_exec(array(__FILE__, __LINE__), 'query', 'INSERT INTO c_comunidades (c_autor, c_nombre, c_nombre_corto,
      y le agregamos a lado 
                   c_headercom,
      un poquito más abajo de
                      VALUES (                     \''.$tsUser->uid.'\',                     \''.$dato['nombre'].'\',                     \''.$dato['ncorto'].'\',
      agregamos
                          \''.$dato['headercom'].'\',
      Luego buscamos la función editar_comunidad($comid)
                          'pais' => $tsCore->setSecure($_POST['pais']),                         'desc' => $tsCore->setSecure($_POST['descripcion']),                     'color' => $tsCore->setSecure($_POST['back_color']),
      y debajo pegamos
                          'headercom' => $tsCore->setSecure($_POST['headercom']),
      más abajo buscamos 
                          c_acceso = \''.(int)$dato['acceso'].'\',                     c_permisos = \''.$dato['permisos'].'\',
      y debajo pegamos
       
                         c_headercom = \''.$dato['headercom'].'\',             
      3 - Después buscamos en c.crear_left.tpl
          <div class="item_form clearfix">         <label>Categoría</label>         <select name="categoria" id="ShowCats" class="required" onChange="com.subcat()" tabindex="3">             <option value="0">Selecciona una categoría</option>             {foreach from=$tsCats item=c}             <option value="{$c.cid}" {if $tsDato.c_categoria == $c.cid}selected="selected"{/if}>{$c.c_nombre}</option>             {/foreach}         </select>     </div>
      y debajo o arriba pegamos
          <div class="item_form clearfix">         <label>Cabecera!</label>         <input type="text" name="headercom" tabindex="10" maxlength="180" size="60" class="required input_text https required" placeholder="URL de portada (debe tener https://)" pattern="https://.*" value="{$tsDato.c_headercom}" required>         <small class="mg-lt">Solo admitirá los https!</small>     </div> 4 - Después buscamos c.com_info.tpl [línea 24 y 25]
      <div class="ver_com_info">     <div class="vci_left floatL">
      y la reemplazamos por
      <div class="ver_com_info" style="background-image: url({$tsCom.c_headercom});">     <div class="opacity">     <div class="vci_left floatL">
      luego debajo de la línea 61 agregaremos un 
          </div> 5 -  Por último agregaremos esto a comunidades.css
      .ver_com_info {     padding: 0; } .headercom {      background-position: center center;     background-size: cover;     background-repeat: no-repeat; } .opacity {     padding: 20px 8px;     background-color: rgba(255,255,255,.6); }  
    • Por Miguel92
      Bueno estamos aquí reunidos para realizar una actualización del registro jajaja
       
      este es el registro que actualizaremos
       
      Para realizar estos cambios debes descargar el archivo, está subido a MEGA
      Registro-recaptchav2-2018.rar
       
      Luego hacer estos pasos
      1 - Buscar en templates/sections/head_menu.tpl estas líneas
                      <li class="tabbed registrate">                     <a title="Registrate!" onclick="registro_load_form(); return false" href=""><b>Registrate!</b></a>                 </li>
      y la deben reemplazar por
                      <li class="tabbed registrate">                     <a title="Registrate!" href="{$tsConfig.url}/registro/"><b>Registrate!</b></a>                 </li>  
      2 - Al tener 2 archivos registro.css y registro.min.css el script automáticamente usará el registro.css, si quieren usar el minificado solo deben cambiar el nombre o agregarlo al fichero de t.registro.tpl, pero en ese caso estaría usando los 2 archivos del registro por lo que deben eliminar "registro.css"
       
      3 - de hecho es eso solo, no hay más pasos que esperabas jajaja solo mira el tutorial si quieres! pd: Si quieres ver una demo del registro, solo mira el video!
       
      Nota personal: Tal vez los videos sean una porquería, pero lo que me interesa es que sepan como hacerlo sin importar la calidad de los videos, lo cual es solo para explicar de una manera mejor y porque mi pc es una mierda jajaja al ser all-in-one no se le puede hacer mucho, ni siquiera se puede agregar algo a la placa!
       
      Ver video tutorial
      las pestañas que se ven casi al final del video es que estaba buscando nuevos diseños para el formulario lastimosamente no encontré así que le mande fruta jajajaja, los inputs de radio use los mismos que tengo en la versión de mozzfire
    • Por LautaroSanchez
      Hola acabo de instalar el mod y lo migre para la 1.2 
      pero me surge el problema de que aparece todo, peero no manda los mps como deveria, le doy a enviar y se queda asi... Me fijo en el control de mensajes para ver si se mandaron y nada...
      Uso la V5 TO-UP.
      Esta es mi WEB
       

  • Navegando Recientemente   0 miembros

    No registered users viewing this page.

  • Patrocinador



  • ×