mirror of
https://git.friendi.ca/friendica/friendica-addons.git
synced 2025-07-07 17:08:48 +00:00
jappixmini: include jappix source
This commit is contained in:
parent
61eb1f0d18
commit
302b2820d1
231 changed files with 96082 additions and 2 deletions
213
jappixmini/jappix/js/features.js
Normal file
213
jappixmini/jappix/js/features.js
Normal file
|
@ -0,0 +1,213 @@
|
|||
/*
|
||||
|
||||
Jappix - An open social platform
|
||||
This is the server features JS script for Jappix
|
||||
|
||||
-------------------------------------------------
|
||||
|
||||
License: AGPL
|
||||
Author: Vanaryon
|
||||
Last revision: 01/06/11
|
||||
|
||||
*/
|
||||
|
||||
// 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('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 archive = false;
|
||||
var archive_auto = false;
|
||||
var archive_manual = false;
|
||||
var archive_manage = false;
|
||||
var archive_pref = 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_URN_ARCHIVE + ']').size())
|
||||
archive = true;
|
||||
if(selector.find('feature[var=' + NS_URN_AR_AUTO + ']').size())
|
||||
archive_auto = true;
|
||||
if(selector.find('feature[var=' + NS_URN_AR_MANUAL + ']').size())
|
||||
archive_manual = true;
|
||||
if(selector.find('feature[var=' + NS_URN_AR_MANAGE + ']').size())
|
||||
archive_manage = true;
|
||||
if(selector.find('feature[var=' + NS_URN_AR_PREF + ']').size())
|
||||
archive_pref = 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 microblog
|
||||
getInitMicroblog();
|
||||
|
||||
// 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 archiving features if available
|
||||
if(archive)
|
||||
enableFeature(NS_URN_ARCHIVE);
|
||||
|
||||
// Enable the archiving sub-features if available
|
||||
if(archive_pref)
|
||||
enableFeature(NS_URN_AR_PREF);
|
||||
if(archive_auto)
|
||||
enableFeature(NS_URN_AR_AUTO);
|
||||
if(archive_manual)
|
||||
enableFeature(NS_URN_AR_MANUAL);
|
||||
if(archive_manage)
|
||||
enableFeature(NS_URN_AR_MANAGE);
|
||||
|
||||
// Enable the commands features if available
|
||||
if(commands)
|
||||
enableFeature(NS_COMMANDS);
|
||||
|
||||
// Hide the private life fieldset if nothing to show
|
||||
if(!pep && !archive_pref)
|
||||
$('#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();
|
||||
|
||||
// Archives features
|
||||
if(enabledArchives() || enabledArchives('auto') || enabledArchives('manual') || enabledArchives('manage')) {
|
||||
$(path + 'archives-hidable:not(.pref)').show();
|
||||
|
||||
// Sub-feature: archives preferences
|
||||
if(enabledArchives('pref'))
|
||||
$(path + 'archives-hidable.pref').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 archives support
|
||||
function enabledArchives(sub) {
|
||||
var xmlns = NS_URN_ARCHIVE;
|
||||
|
||||
// Any sub element sent?
|
||||
if(sub)
|
||||
xmlns += ':' + sub;
|
||||
|
||||
return enabledFeature(xmlns);
|
||||
}
|
||||
|
||||
// Returns the XMPP server commands support
|
||||
function enabledCommands() {
|
||||
return enabledFeature(NS_COMMANDS);
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue