mirror of
https://github.com/YunoHost-Apps/jappix_ynh.git
synced 2024-09-03 19:26:19 +02:00
197 lines
4.1 KiB
JavaScript
Executable file
197 lines
4.1 KiB
JavaScript
Executable file
/*
|
|
|
|
Jappix - An open social platform
|
|
This is the server features JS script for Jappix
|
|
|
|
-------------------------------------------------
|
|
|
|
License: AGPL
|
|
Author: Valérian Saliou, Maranda
|
|
Last revision: 07/06/13
|
|
|
|
*/
|
|
|
|
// Gets the features of a server
|
|
function getFeatures() {
|
|
/* REF: http://xmpp.org/extensions/xep-0030.html */
|
|
|
|
// Get the main values
|
|
var to = getServer();
|
|
var caps = con.server_caps;
|
|
var xml = null;
|
|
|
|
// Try to get the stored data
|
|
if(caps)
|
|
xml = XMLFromString(getPersistent('global', 'caps', caps));
|
|
|
|
// Any stored data?
|
|
if(xml) {
|
|
handleFeatures(xml);
|
|
|
|
logThis('Read server CAPS from cache.');
|
|
}
|
|
|
|
// Not stored (or no CAPS)!
|
|
else {
|
|
var iq = new JSJaCIQ();
|
|
|
|
iq.setTo(to);
|
|
iq.setType('get');
|
|
iq.setQuery(NS_DISCO_INFO);
|
|
|
|
con.send(iq, handleDiscoInfos);
|
|
|
|
logThis('Read server CAPS from network.');
|
|
}
|
|
}
|
|
|
|
// Handles the features of a server
|
|
function handleFeatures(xml) {
|
|
// Selector
|
|
var selector = $(xml);
|
|
|
|
// Markers
|
|
var pep = false;
|
|
var pubsub = false;
|
|
var pubsub_cn = false;
|
|
var mam = false;
|
|
var commands = false;
|
|
|
|
// Scan the features
|
|
if(selector.find('identity[category="pubsub"][type="pep"]').size())
|
|
pep = true;
|
|
if(selector.find('feature[var="' + NS_PUBSUB + '"]').size())
|
|
pubsub = true;
|
|
if(selector.find('feature[var="' + NS_PUBSUB_CN + '"]').size())
|
|
pubsub_cn = true;
|
|
if(selector.find('feature[var="' + NS_URN_MAM + '"]').size())
|
|
mam = true;
|
|
if(selector.find('feature[var="' + NS_COMMANDS + '"]').size())
|
|
commands = true;
|
|
|
|
// Enable the pep elements if available
|
|
if(pep) {
|
|
// Update our database
|
|
enableFeature('pep');
|
|
|
|
// Get the PEP nodes to initiate
|
|
getInitMicroblog();
|
|
getInitGeoloc();
|
|
|
|
// Get the notifications
|
|
getNotifications();
|
|
|
|
// Geolocate the user
|
|
geolocate();
|
|
|
|
// Enable microblogging send tools
|
|
waitMicroblog('sync');
|
|
$('.postit.attach').css('display', 'block');
|
|
|
|
logThis('XMPP server supports PEP.', 3);
|
|
}
|
|
|
|
// Disable microblogging send tools (no PEP!)
|
|
else {
|
|
waitMicroblog('unsync');
|
|
|
|
logThis('XMPP server does not support PEP.', 2);
|
|
}
|
|
|
|
// Enable the pubsub features if available
|
|
if(pubsub)
|
|
enableFeature(NS_PUBSUB);
|
|
|
|
// Enable the pubsub config-node features if available
|
|
if(pubsub_cn)
|
|
enableFeature(NS_PUBSUB_CN);
|
|
|
|
// Enable the message MAM management features if available
|
|
if(mam)
|
|
enableFeature(NS_URN_MAM);
|
|
|
|
// Enable the commands features if available
|
|
if(commands)
|
|
enableFeature(NS_COMMANDS);
|
|
|
|
// Hide the private life fieldset if nothing to show
|
|
if(!pep && !mam)
|
|
$('#options fieldset.privacy').hide();
|
|
|
|
// Apply the features
|
|
applyFeatures('talk');
|
|
|
|
// Process the buddy-list height
|
|
if(pep)
|
|
adaptRoster();
|
|
|
|
return false;
|
|
}
|
|
|
|
// The function to apply the features to an element
|
|
function applyFeatures(id) {
|
|
// Path to the elements
|
|
var path = '#' + id + ' .';
|
|
|
|
// PEP features
|
|
if(enabledPEP())
|
|
$(path + 'pep-hidable').show();
|
|
|
|
// PubSub features
|
|
if(enabledPubSub())
|
|
$(path + 'pubsub-hidable').show();
|
|
|
|
// PubSub Config-Node features
|
|
if(enabledPubSubCN())
|
|
$(path + 'pubsub-hidable-cn').show();
|
|
|
|
// MAM features
|
|
if(enabledMAM())
|
|
$(path + 'mam-hidable').show();
|
|
|
|
// Commands features
|
|
if(enabledCommands())
|
|
$(path + 'commands-hidable').show();
|
|
|
|
// XMPP links (browser feature)
|
|
if(navigator.registerProtocolHandler)
|
|
$(path + 'xmpplinks-hidable').show();
|
|
}
|
|
|
|
// Enables a feature
|
|
function enableFeature(feature) {
|
|
setDB('feature', feature, 'true');
|
|
}
|
|
|
|
// Checks if a feature is enabled
|
|
function enabledFeature(feature) {
|
|
if(getDB('feature', feature) == 'true')
|
|
return true;
|
|
else
|
|
return false;
|
|
}
|
|
|
|
// Returns the XMPP server PEP support
|
|
function enabledPEP() {
|
|
return enabledFeature('pep');
|
|
}
|
|
|
|
// Returns the XMPP server PubSub support
|
|
function enabledPubSub() {
|
|
return enabledFeature(NS_PUBSUB);
|
|
}
|
|
|
|
// Returns the XMPP server PubSub Config-Node support
|
|
function enabledPubSubCN() {
|
|
return enabledFeature(NS_PUBSUB_CN);
|
|
}
|
|
|
|
// Returns the XMPP server MAM support
|
|
function enabledMAM() {
|
|
return enabledFeature(NS_URN_MAM);
|
|
}
|
|
|
|
// Returns the XMPP server commands support
|
|
function enabledCommands() {
|
|
return enabledFeature(NS_COMMANDS);
|
|
}
|