.
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

Nueva sección de JUEGOS en pruebas. Próximamente campeonatos con premios. Más información AQUÍ
Hosting Gratis (P2H) y de pago, más información AQUÍ o AQUÍ    (Ver PLANES).
Solicitar Hosting de Pruebas AQUÍ .
Para que se habrán los enlaces de descarga pulsar el  Botón Gracias.

Tutorial Mejorar la sección "Cuenta"



02-20-2022, 03:51 PM #1
4
Mejor respuesta del mensaje Mejorar la sección "Cuenta"Esto le va a gustar ya que vamos a simplificar un poco más lo que sería la sección de cuenta, y será bastante largo, y en mi caso le he quitado el porcentaje que se muestra en cuenta y varias opciones que ningún usuario se toma el tiempo en completar, como por ejemplo "Intereses y preferencias"

1 - En .htaccess buscamos 
RewriteRule ^cuenta.php$ inc/php/cuenta.php [QSA,L]

y debajo agregamos
RewriteRule ^cuenta/([A-Za-z0-9_-]+)$ inc/php/cuenta.php?accion=$1 [QSA,L]


2 - En tema/templates/t.cuenta.tpl y reemplazamos el contenido por esto
{include file='sections/main_header.tpl'}
<script src="{$tsConfig.js}/cuenta.js"></script>
<script>
   $(document).ready(() => {
      avatar.uid = '{$tsUser->uid}';
      avatar.current = '{$tsConfig.url}/files/avatar/{if $tsPerfil.p_avatar}{$tsPerfil.user_id}{else}avatar{/if}.jpg';
   });
</script>
<div class="tabbed-d">
   <div class="floatL">
      <div id="alerta_guarda"></div>
      <ul class="menu-tab">
         <li{if $tsAccion == ''} class="active"{/if}><a href="{$tsConfig.url}/cuenta/">Cuenta</a></li>
         <li{if $tsAccion == 'perfil'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/perfil">Perfil</a></li>    
         <li{if $tsAccion == 'block'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/block">Bloqueados</a></li>
         <li{if $tsAccion == 'clave'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/clave">Cambiar Clave</a></li>
         <li{if $tsAccion == 'nick'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/nick">Cambiar Nick</a></li>
         <li{if $tsAccion == 'config'} class="active"{/if}><a href="{$tsConfig.url}/cuenta/config">Privacidad</a></li>
      </ul>
      <a name="alert-cuenta"></a>
      <form class="horizontal" method="post" name="editarcuenta">
         <input type="hidden" name="pagina" value="{$tsAccion}">
         {include file="modules/m.cuenta_$tsAccion.tpl"}
      </form>
   </div>
   <div class="floatR">
       {include file='modules/m.cuenta_sidebar.tpl'}
   </div>
</div>
<div style="clear:both"></div>          
{include file='sections/main_footer.tpl'}


3 - Luego acceden a tema/templates/modules y buscan todos los m.cuenta_*.tpl y le quitan (al inicio del archivo)
style="display:none"

también (7 el numero puede variar, dependiendo de la sección)
<div class="alert-cuenta cuenta-7"></div>

y luego en los divs con la clase .buttons lo reemplazan por
<div class="buttons">
   <input type="button" value="Guardar" onclick="cuenta.guardar_datos()" class="mBtn btnOk">
</div>


4 - En inc/php/cuenta.php buscan
    } elseif($action == 'desactivate'){
        if(!empty($_POST['validar'])) echo $tsCuenta->desCuenta();
    

y debajo agregan
   $smarty->assign("tsAccion"$_GET["accion"]); 


5 - Luego inc/class/c.cuenta.php en la funcion "savePerfil()" cambian
$save $_POST['save']; 
por 
$save $_POST['pagina']; 

dentro del switch hacen lo siguiente, cambian el número por el nombre
 - case 1 -> case ''
 - case 2 -> case 'perfil'
 - case 6 -> case 'clave'
 - case 7 -> case 'config'
 - case 8 -> case 'nick'

luego eliminan estos
 - case 3: ...todo hasta el break... break;
 - case 4: ...todo hasta el break... break;
 - case 5: ...todo hasta el break... break;


más abajo buscamos y borramos
        // COMPROBAR PORCENTAJE
        $total = array(5,8,9,8,9); // CAMPOS EN CADA CATEGORIA
        $tid $save 1;
        if($save && $save 6){
            $total[$tid] = $this->getPorcentTotal($perfilData$total[$tid]);
            if($save == 1$total[$tid] = $total[$tid] - 2;
            $porcen db_exec('fetch_assoc'db_exec(array(__FILE____LINE__), 'query''SELECT p_total FROM u_perfil WHERE user_id = \''.$tsUser->uid.'\' LIMIT 1'));
            $porcen unserialize($porcen['p_total']);
            $porcen[$tid] = $total[$tid];
            $porcenNow $this->getPorcentVal($porcen);
            $porcen serialize($porcen);
            db_exec(array(__FILE____LINE__), 'query''UPDATE u_perfil SET p_total = \''.$porcen.'\' WHERE user_id = \''.$tsUser->uid.'\'');
        

justo debajo de eso seleccionan
        // ACTUALIZAR
        if($save == 1) {
            db_exec(array(__FILE____LINE__), 'query''UPDATE u_miembros SET user_email = \''.$tsCore->setSecure($perfilData['email'], true).'\' WHERE user_id = \''.$tsUser->uid.'\'');
            array_splice($perfilData01); // HACK
            $updates $tsCore->getIUP($perfilData'user_');
            if(!db_exec(array(__FILE____LINE__), 'query''UPDATE u_perfil SET '.$updates.' WHERE user_id = \''.$tsUser->uid.'\'')) return array('error' => show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.''db'));
        } else {
            $updates $tsCore->getIUP($perfilData'p_');
            if(!db_exec(array(__FILE____LINE__), 'query''UPDATE u_perfil SET '.$updates.' WHERE user_id = \''.$tsUser->uid.'\'')) return array('error' => show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.''db')); 
        
}
        //
        if(is_array($msg_return)) return $msg_return;
        else return array('porc' => $porcenNow); 

y lo reemplazan por
        // ACTUALIZAR
        if($save == '' or $save == 'perfil' or $save == 'config') {
            if($save == '') {
                db_exec([__FILE____LINE__], "query""UPDATE u_miembros SET user_email = '{$perfilData['email']}' WHERE user_id = " $tsUser->uid);    
                array_splice
($perfilData01);            
            
}
            $updates $tsCore->getIUP($perfilData, ($save == '' 'user_' 'p_'));
           $msg_return = (db_exec([__FILE____LINE__], "query""UPDATE u_perfil SET {$updates} WHERE user_id = " $tsUser->uid)) ? array("error" => "Los cambios fueron aceptados y ser&aacute;n aplicados.") : die(show_error('Error al ejecutar la consulta de la l&iacute;nea '.__LINE__.' de '.__FILE__.'.''Base de datos'));
        }
        //
        return $msg_return


6 - Crean un archivo llamado ajax.cuenta.php en inc/php/ajax y agregan lo siguiente
<?php if ( ! defined('TS_HEADER')) exit('No se permite el acceso directo al script');

/**
 * Controlador AJAX
 *
 * @name    ajax.cuenta.php
 * @author  Miguel92
*/


$files = [
   'cuenta-guardar' => ['n' => 2'p' => ''],
];

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

// DEPENDE EL NIVEL
$tsLevelMsg $tsCore->setLevel($tsLeveltrue);
if(
$tsLevelMsg != 1):
    echo '0: '.$tsLevelMsg['mensaje']; 
    die
();
endif;

// CLASE
require("../class/c.cuenta.php");
$tsCuenta = new tsCuenta();

// CODIGO
switch($action){
    case 'cuenta-guardar':
        echo json_encode($tsCuenta->savePerfil());
    break;



7 - En tema/templates/modules/m.cuenta_cuenta.tpl lo renombran a m.cuenta_.tpl

8 - En tema/templates/modules/m.cuenta_perfil.tpl y reemplazan el contenido por esto, y aplica este Debes agradecer para ver el contenido...
<div class="content-tabs perfil">
   <
fieldset>
      <
div class="field">
         <
label for="nombrez">Nombre completo</label>
         <
input type="text" value="{$tsPerfil.p_nombre}maxlength="60" name="nombrez" id="nombrez" class="text cuenta-save-2" style="width:230px">
      </
div>
      <
div class="field">
         <
label for="sitio">Mensaje Personal</label>
         <
textarea value="" maxlength="60" name="mensaje" id="mensaje" class="cuenta-save-2">{$tsPerfil.p_mensaje}</textarea>
      </
div>
      <
div class="field">
         <
label for="sitio">Sitio Web</label>
         <
input type="text" value="{$tsPerfil.p_sitio}maxlength="60" name="sitio" id="sitio" class="text cuenta-save-2" style="width:230px">
      </
div>
      <
div class="field">
         <
label for="red">Redes sociales</label>
         <
div style="display:grid;grid-template-columns: repeat(2, 1fr);gap: 10px;">
            {foreach 
$tsPerfil.redes key=name item=red}
               <
div style="display:flex;justify-content: flex-start;align-items: center;">
                  <
div class="icon">
                      <
img src="{$tsConfig.images}/icons/{$name}.png" width="16" height="16" />
                  </
div>
                  <
input type="text" class="text cuenta-save-2" value="{$tsPerfil.p_socials.$name}placeholder="{$red}name="red[{$name}]">
               </
div>
            {/foreach}
         </
div>
      </
div>
      <
div class="field">
          <
label>Me gustar&iacute;a</label>
          <
div class="input-fake">
              <
ul>
               {foreach 
from=$tsPData.gustos key=val item=text}
                  <
li><input type="checkbox" name="g_{$val}class="cuenta-save-2" value="1"{if $tsPerfil.p_gustos.$val == 1checked{/if}>{$text}</li>
               {/foreach}
            </
ul>
         </
div>
      </
div>
      <
div class="field">
         <
label for="estado">Estado Civil</label>
         <
div class="input-fake">
            <
select class="cuenta-save-2" name="estado" id="estado">
                  {foreach 
from=$tsPData.estado key=val item=text}
                  <
option value="{$val}"{if $tsPerfil.p_estado == $valselected{/if}>{$text}</option>
               {/foreach}
            </
select>
         </
div>
      </
div>
        <
div class="buttons">
           <
input type="button" value="Guardar" onclick="cuenta.guardar_datos()" class="mBtn btnOk">
        </
div>
   </
fieldset>
   <
div class="clearfix"></div>
</
div


9 - Ahora se viene lo genial, busca en tema/js/cuenta.js , justo antes que empieza var avatar = {
var cuenta = {... HASTA ... }

y lo reemplazas por
var cuenta = {
    alerta: (alerta) => {
        $(".alert-cuenta").show();
        $("#alerta_guarda").html(`<div style="background:#FFFFCC;text-align:center;margin-bottom: 10px;"><p style="display: block;font-size: 16px;padding: 10px 0;">${alerta}</p></div>`)
        window.scrollTo(0, 0)
        // Despues de 5s quitamos el alerta
        setTimeout(() => $("#alerta_guarda").html(''), 5000)
    },
    chgpais: () => {
        // Campo pais
        const pais = $("select[name=pais]").val();
        const estado = $("select[name=estado]");
        if(empty(pais)) estado.addClass('disabled').attr('disabled', 'disabled').val('');
        else {
            //Obtengo las estados
            $(estado).html('');
         $('#loading').fadeIn(250); 
         $.get(global_data.url + '/registro-geo.php', 'pais_code=' + pais, h => {
             if(h.charAt(0) === '1') estado.append(h.substring(3)).removeAttr('disabled').val('').focus();
             $('#loading').fadeOut(250); 
         })
      }
    },
    guardar_datos: () => {
        $('#loading').slideDown(250);
        $.ajax({
            type: 'post', 
            url: global_data.url + '/cuenta-guardar.php', 
            data: $("form[name=editarcuenta]").serialize(), 
            dataType: 'json',
            success: response => cuenta.alerta(response.error)
        });
    }
}

Eso sería todo, espero no olvidarme de ningún paso.

 Responder



Compartir en:

Salto de foro:



Usuarios navegando en este tema:
1 invitado(s)