Este es el MOD de agregar amigos con Ajax desde los posts vean caps , esta basado en DrDexter .
CARACTERISTICAS:-Usa Mydialog
-Enviar solicitud sin salir del post.
-Dejar de ser amigo sin salir del post.
-Verifica estado de amistad y de eso depende el boton a mostrar( amigo , no amigo )
-Enviar solicitud con AJAX en los posts.
-Dejar de ser amigos AJAX en los posts.
CAPS:
PASOS:NOTA: Si ya tienes el MyDialog evitar los pasos de Nº 1,2,3
1- Abre tu acciones-sp-1.1.js de Themes/tutheme y al final agregas://MYDIALOG INICIO
/* MyDialog */
var mydialog = {
is_show: false,
class_aux: '',
mask_close: true,
close_button: false,
show: function(class_aux){
if(this.is_show)
return;
else
this.is_show = true;
if($('#mydialog').html()=='') //Primera vez
$('#mydialog').html('<div id="dialog"><div id="title"></div><div id="cuerpo"><div id="procesando"><div id="mensaje"></div></div><div id="modalBody"></div><div id="buttons"></div></div></div>');
if(class_aux==true)
$('#mydialog').addClass(this.class_aux);
else if(this.class_aux != ''){
$('#mydialog').removeClass(this.class_aux);
this.class_aux = '';
}
if(this.mask_close)
$('#mask').click(function(){ mydialog.close() });
else
$('#mask').unbind('click');
if(this.close_button)
$('#mydialog #dialog').append('<img class="close_dialog" src="/Themes/default/icons/close_dialog.png" width="16px" onclick="mydialog.close()" />');
else
$('#mydialog #dialog .close_dialog').remove();
$('#mask').css({'width':$(document).width(),'height':$(document).height(),'display':'block'});
if(jQuery.browser.msie && jQuery.browser.version<7) //Fix IE<7 <- fack you
$('#mydialog #dialog').css('position', 'absolute');
else
$('#mydialog #dialog').css('position', 'fixed');
$('#mydialog #dialog').fadeIn('fast');
},
close: function(){
//Vuelve todos los parametros por default
this.class_aux = '';
this.mask_close = true;
this.close_button = false;
this.is_show = false;
$('#mask').css('display', 'none');
$('#mydialog #dialog').fadeOut('fast', function(){ $(this).remove() });
this.procesando_fin();
},
center: function(){
if($('#mydialog #dialog').height() > $(window).height()-60)
$('#mydialog #dialog').css({'position':'absolute', 'top':20});
else
$('#mydialog #dialog').css('top', $(window).height()/2-$('#mydialog #dialog').height()/2);
$('#mydialog #dialog').css('left', $(window).width()/2-$('#mydialog #dialog').width()/2);
},
title: function(title){
$('#mydialog #title').html(title);
},
body: function(body, width, height){
if(!width && (jQuery.browser.opera || (jQuery.browser.msie && jQuery.browser.version<7)))
width = '400px';
$('#mydialog #dialog').width(width?width:'').height(height?height:'');
$('#mydialog #modalBody').html(body);
},
buttons: function(display_all, btn1_display, btn1_val, btn1_action, btn1_enabled, btn1_focus, btn2_display, btn2_val, btn2_action, btn2_enabled, btn2_focus){
if(!display_all){
$('#mydialog #buttons').css('display', 'none').html('');
return;
}
if(btn1_action=='close')
btn1_action='mydialog.close()';
if(btn2_action=='close' || !btn2_val)
btn2_action='mydialog.close()';
if(!btn2_val){
btn2_val = 'Cancelar';
btn2_enabled = true;
}
var html = '';
if(btn1_display)
html += '<input type="button" class="Boton BtnBlue'+(btn1_enabled?'':' disabled')+'" style="display:'+(btn1_display?'inline-block':'none')+'"'+(btn1_display?' value="'+btn1_val+'"':'')+(btn1_display?' onclick="'+btn1_action+'"':'')+(btn1_enabled?'':' disabled')+' />';
if(btn2_display)
html += ' <input type="button" class="Boton BntRed'+(btn1_enabled?'':' disabled')+'" style="display:'+(btn2_display?'inline-block':'none')+'"'+(btn2_display?' value="'+btn2_val+'"':'')+(btn2_display?' onclick="'+btn2_action+'"':'')+(btn2_enabled?'':' disabled')+' />';
$('#mydialog #buttons').html(html).css('display', 'inline-block');
if(btn1_focus)
$('#mydialog #buttons .mBtn.btnOk').focus();
else if(btn2_focus)
$('#mydialog #buttons .mBtn.btnCancel').focus();
},
buttons_enabled: function(btn1_enabled, btn2_enabled){
if($('#mydialog #buttons .Boton.Small.BtnBlue'))
if(btn1_enabled)
$('#mydialog #buttons .Boton.BtnBlue').removeClass('disabled').removeAttr('disabled');
else
$('#mydialog #buttons .Boton.BtnBlue').addClass('disabled').attr('disabled', 'disabled');
if($('#mydialog #buttons .Boton.BtnRed'))
if(btn2_enabled)
$('#mydialog #buttons .mBtn.btnCancel').removeClass('disabled').removeAttr('disabled');
else
$('#mydialog #buttons .Boton.BtnRed').addClass('disabled').attr('disabled', 'disabled');
},
alert: function(title, body, reload){
this.show();
this.title(title);
this.body(body);
this.buttons(true, true, 'Aceptar', 'mydialog.close();' + (reload ? 'location.reload();' : 'close'), true, true, false);
this.center();
},
error_500: function(fun_reintentar){
setTimeout(function(){
mydialog.procesando_fin();
mydialog.show();
mydialog.title('Error detectado!');
mydialog.body(lang['error procesar']);
mydialog.buttons(true, true, 'Reintentar', 'mydialog.close();'+fun_reintentar, true, true, true, 'Cancelar', 'close', true, false);
mydialog.center();
}, 200);
},
procesando_inicio: function(value, title){
if(!this.is_show){
this.show();
this.title(title);
this.body('');
this.buttons(false, false);
this.center();
}
$('#mydialog #procesando #mensaje').html('<br /><img src="/Themes/default/loading.gif" />');
$('#mydialog #procesando').fadeIn('fast');
},
procesando_fin: function(){
$('#mydialog #procesando').fadeOut('fast');
}
};
// MYDIALOG FIN
2 - Abrir tu estilos-sp.css de Themes/tutheme Agregar al final esto (esta comprimido por eso esta en tinypaste):
http://tinypaste.com/cc37f2c23- Abrir el index.template.php de Themes/tuthemeBuscar:
<body>
Colocar despues:
<div id="mask"></div>
<div id="mydialog"></div>
Tambien buscas:
/acciones-sp-1.1.js"></script>
Agregas despues:
<script>
var boardurl = "'.$boardurl.'";
</script>
4- Abrir el acciones-sp-1.1.jsAgregar al final:
//////////////////////////////////////////////AMIGOS//////////////////////////////////////////
/* Agregar amigo - enviar solicitud */
function agregar_amigo(id){
mydialog.close_button = true;
mydialog.procesando_inicio('Cargando...', 'Cargando :)');
$.ajax({
type: 'POST',
url: boardurl+'/Ajax/amigos.peticion.php',
data: 'user=' + id,
success: function(h){
switch(h.charAt(0)){
case '0': // Error
mydialog.alert('Error', h.substring(3));
break;
case '1': // OK
mydialog.title('Agregar amigo');
mydialog.body(h.substring(3), 400);
mydialog.buttons(true, true, 'Enviar solicitud de amistad', 'agregar_amigo_solicitud_send('+id+')', true, true, true);
mydialog.center();
break;
}
},
error: function(){
mydialog.error_500("agregar_amigo("+id+")");
return;
},
complete: function(){
mydialog.procesando_fin();
}
});
}
/* Si aceptó , Luego enviando la solicitud */
function agregar_amigo_solicitud_send(id){
mydialog.close_button = true;
mydialog.procesando_inicio('Enviando...', 'Cargando :)');
$.ajax({
type: 'POST',
url: boardurl+'/Ajax/amigos.enviarpeticion.php',
data: 'user=' + id,
success: function(h){
switch(h.charAt(0)){
case '0': // Error
mydialog.alert('Error', h.substring(3));
break;
case '1': // OK
mydialog.alert('Solicitud enviada', h.substring(3));
$('#mostrar_agregar').hide('fast');
$('#mostrar_eliminar').show('fast');
break;
}
},
error: function(){
mydialog.error_500("agregar_amigo_solicitud_send("+id+")");
return;
},
complete: function(){
mydialog.procesando_fin();
}
});
}
/* Dejar de ser amigos */
function eliminar_amigo(id){
mydialog.close_button = true;
mydialog.procesando_inicio('Cargando...', 'Cargando :)');
$.ajax({
type: 'POST',
url: boardurl+'/Ajax/amigos.dejar.php',
data: 'user=' + id,
success: function(h){
switch(h.charAt(0)){
case '0': // Error
mydialog.alert('Error', h.substring(3));
break;
case '1': // OK
mydialog.title('Eliminar amistad :( ');
mydialog.body(h.substring(3), 400);
mydialog.buttons(true, true, 'Eliminar amistad', 'eliminar_amigo_send('+id+')', true, true, true);
mydialog.center();
break;
}
},
error: function(){
mydialog.error_500("agregar_amigo("+id+")");
return;
},
complete: function(){
mydialog.procesando_fin();
}
});
}
/* Si aceptó , Luego dejamos de ser amigos :( so sad */
function eliminar_amigo_send(id){
mydialog.close_button = true;
mydialog.procesando_inicio('Enviando...', 'Cargando :)');
$.ajax({
type: 'POST',
url: boardurl+'/Ajax/amigos.dejardeser.php',
data: 'user=' + id,
success: function(h){
switch(h.charAt(0)){
case '0': // Error
mydialog.alert('Error', h.substring(3));
break;
case '1': // OK
mydialog.alert('Amistad eliminada con exito', h.substring(3));
$('#mostrar_agregar').show('fast');
$('#mostrar_eliminar').hide('fast');
break;
}
},
error: function(){
mydialog.error_500("eliminar_amigo_send("+id+")");
return;
},
complete: function(){
mydialog.procesando_fin();
}
});
}
/////////////////////////////FIN AMIGOS (brayan2259)//////////////////////////////////////////
5- Crear una carpeta llamada "Ajax" en la raiz y subir alli los siguiente archivos del .zip adjunto: amigos.dejar.php , amigos.dejardeser.php , amigos.enviarpeticion.php , amigos.peticion.php
6- Subir a "/Themes/default/images" esto:loading.gif , botones-bg.png , close_dialog.png
7 - Abrir tu Display.template.phpBuscar:
<span class="size11">',$txt['disp_images'],'</span></a></span></div>';
}
Agregar Despues:
//PETICION AMIGO AJAX (brayan2259)
//verifica estado (amigo o no amigo) now
$ver = db_query("SELECT ID_MEMBER, BUDDY_ID FROM {$db_prefix}buddies
WHERE ID_MEMBER = {$context['user']['id']}
AND BUDDY_ID = {$message['member']['id']}
LIMIT 1",__FILE__,__LINE__);
$ok = mysql_num_rows($ver);
if($ok > 0){
if($message['member']['id'] != $context['user']['id'] && $context['user']['is_logged']){
echo'<span id="mostrar_eliminar"><br class="space"><hr class="divider"><input style="width:131px;font-size:12px;" onclick="eliminar_amigo(\''.$message['member']['id'].'\'); return false;" value="Dejar de ser amigos" title="Dejar de ser amigos" class="Boton BtnGray" type="button"></span>
<span id="mostrar_agregar" style="display:none"><br class="space"><hr class="divider"><input onclick="agregar_amigo(\''.$message['member']['id'].'\'); return false;" value="Añadir a mis amigos" title="Añadir a mis amigos" style="width:131px;font-size:12px;" class="Boton BtnGray" type="button"></span>
';}
}
else {
if($message['member']['id'] != $context['user']['id'] && $context['user']['is_logged']){
echo'<span id="mostrar_agregar"><br class="space"><hr class="divider"><input onclick="agregar_amigo(\''.$message['member']['id'].'\'); return false;" style="width:131px;font-size:12px;" value="Añadir a mis amigos" title="Añadir a mis amigos" class="Boton BtnGray" type="button"></span>
<span id="mostrar_eliminar" style="display:none"><br class="space"><hr class="divider"><input style="width:131px;font-size:12px;" onclick="eliminar_amigo(\''.$message['member']['id'].'\'); return false;" value="Dejar de ser amigos" title="Dejar de ser amigos" class="Boton BtnGray" type="button"></span>';}}
//FIN PETICION AMIGO AJAX (brayan2259)