friendica-addons/jappixmini/jappix/js/name.js
2012-04-18 01:12:24 +02:00

132 lines
2.6 KiB
JavaScript

/*
Jappix - An open social platform
These are the buddy name related JS scripts for Jappix
-------------------------------------------------
License: AGPL
Author: Vanaryon
Last revision: 29/04/11
*/
// Gets an user name for buddy add tool
function getAddUserName(xid) {
var iq = new JSJaCIQ();
iq.setType('get');
iq.setTo(xid);
iq.appendNode('vCard', {'xmlns': NS_VCARD});
con.send(iq, handleAddUserName);
}
// Handles an user name for buddy add tool
function handleAddUserName(iq) {
// Was it an obsolete request?
if(!exists('.add-contact-name-get[data-for=' + escape(bareXID(getStanzaFrom(iq))) + ']'))
return false;
// Reset the waiting item
$('.add-contact-name-get').hide().removeAttr('data-for');
// Get the names
if(iq.getType() == 'result') {
var full_name = generateBuddyName(iq)[0];
if(full_name)
$('.add-contact-name').val(full_name);
}
return false;
}
// Generates the good buddy name from a vCard IQ reply
function generateBuddyName(iq) {
// Get the IQ content
var xml = $(iq.getNode()).find('vCard');
// Get the full name & the nickname
var pFull = xml.find('FN:first').text();
var pNick = xml.find('NICKNAME:first').text();
// No full name?
if(!pFull) {
// Get the given name
var pN = xml.find('N:first');
var pGiven = pN.find('GIVEN:first').text();
if(pGiven) {
pFull = pGiven;
// Get the family name (optional)
var pFamily = pN.find('FAMILY:first').text();
if(pFamily)
pFull += ' ' + pFamily;
}
}
return [pFull, pNick];
}
// Returns the given XID buddy name
function getBuddyName(xid) {
// Initialize
var cname, bname;
// Cut the XID resource
xid = bareXID(xid);
// This is me?
if(isAnonymous() && !xid)
bname = _e("You");
else if(xid == getXID())
bname = getName();
// Not me!
else {
cname = $('#buddy-list .buddy[data-xid=' + escape(xid) + ']:first .buddy-name').html();
// If the complete name exists
if(cname)
bname = cname.revertHtmlEnc();
// Else, we just get the nickname of the buddy
else
bname = getXIDNick(xid);
}
return bname;
}
// Gets the nickname of the user
function getNick() {
// Try to read the user nickname
var nick = getDB('profile', 'nick');
// No nick?
if(!nick)
nick = con.username;
return nick;
}
// Gets the full name of the user
function getName() {
// Try to read the user name
var name = getDB('profile', 'name');
// No name? Use the nickname instead!
if(!name)
name = getNick();
return name;
}
// Gets the MUC nickname of the user
function getMUCNick(id) {
return unescape($('#' + id).attr('data-nick'));
}