02-20-2022, 03:51 PM
6
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
y debajo agregamos
2 - En tema/templates/t.cuenta.tpl y reemplazamos el contenido por esto
3 - Luego acceden a tema/templates/modules y buscan todos los m.cuenta_*.tpl y le quitan (al inicio del archivo)
también (7 el numero puede variar, dependiendo de la sección)
y luego en los divs con la clase .buttons lo reemplazan por
4 - En inc/php/cuenta.php buscan
y debajo agregan
5 - Luego inc/class/c.cuenta.php en la funcion "savePerfil()" cambian
por
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
justo debajo de eso seleccionan
y lo reemplazan por
6 - Crean un archivo llamado ajax.cuenta.php en inc/php/ajax y agregan lo siguiente
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...
9 - Ahora se viene lo genial, busca en tema/js/cuenta.js , justo antes que empieza var avatar = {
y lo reemplazas por
Eso sería todo, espero no olvidarme de ningún paso.
1 - En .htaccess buscamos
Código: ( Seleccionar Todo )
RewriteRule ^cuenta.php$ inc/php/cuenta.php [QSA,L]
y debajo agregamos
Código: ( Seleccionar Todo )
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
Código: ( Seleccionar Todo )
{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)
Código: ( Seleccionar Todo )
style="display:none"
también (7 el numero puede variar, dependiendo de la sección)
Código: ( Seleccionar Todo )
<div class="alert-cuenta cuenta-7"></div>
y luego en los divs con la clase .buttons lo reemplazan por
Código: ( Seleccionar Todo )
<div class="buttons">
<input type="button" value="Guardar" onclick="cuenta.guardar_datos()" class="mBtn btnOk">
</div>
4 - En inc/php/cuenta.php buscan
Código PHP: ( Seleccionar Todo )
} elseif($action == 'desactivate'){
if(!empty($_POST['validar'])) echo $tsCuenta->desCuenta();
}
y debajo agregan
Código PHP: ( Seleccionar Todo )
$smarty->assign("tsAccion", $_GET["accion"]);
5 - Luego inc/class/c.cuenta.php en la funcion "savePerfil()" cambian
Código PHP: ( Seleccionar Todo )
$save = $_POST['save'];
Código PHP: ( Seleccionar Todo )
$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
Código PHP: ( Seleccionar Todo )
// COMPROBAR PORCENTAJE
$total = array(5,8,9,8,9); // CAMPOS EN CADA CATEGORIA
$tid = $save - 1;
if($save > 1 && $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
Código PHP: ( Seleccionar Todo )
// 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($perfilData, 0, 1); // 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í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ínea '.__LINE__.' de '.__FILE__.'.', 'db'));
}
//
if(is_array($msg_return)) return $msg_return;
else return array('porc' => $porcenNow);
y lo reemplazan por
Código PHP: ( Seleccionar Todo )
// 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($perfilData, 0, 1);
}
$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án aplicados.") : die(show_error('Error al ejecutar la consulta de la lí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
Código PHP: ( Seleccionar Todo )
<?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']) ? 1 : 0;
// DEPENDE EL NIVEL
$tsLevelMsg = $tsCore->setLevel($tsLevel, true);
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...
Código PHP: ( Seleccionar Todo )
<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í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 == 1} checked{/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 == $val} selected{/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 = {
Código: ( Seleccionar Todo )
var cuenta = {... HASTA ... }
y lo reemplazas por
Código: ( Seleccionar Todo )
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.