mirror of
https://github.com/YunoHost-Apps/jappix_ynh.git
synced 2024-09-03 19:26:19 +02:00
103 lines
No EOL
3.1 KiB
JavaScript
103 lines
No EOL
3.1 KiB
JavaScript
/*
|
|
|
|
Jappix - An open social platform
|
|
These are the Pubsub JS scripts for Jappix
|
|
|
|
-------------------------------------------------
|
|
|
|
License: AGPL
|
|
Author: Valérian Saliou
|
|
|
|
*/
|
|
|
|
// Bundle
|
|
var Pubsub = (function () {
|
|
|
|
/**
|
|
* Alias of this
|
|
* @private
|
|
*/
|
|
var self = {};
|
|
|
|
|
|
/**
|
|
* Setups a Pubsub node
|
|
* @public
|
|
* @param {string} entity
|
|
* @param {object} node
|
|
* @param {boolean} persist
|
|
* @param {number} maximum
|
|
* @param {string} access
|
|
* @param {string} publish
|
|
* @param {boolean} create
|
|
* @return {undefined}
|
|
*/
|
|
self.setup = function(entity, node, persist, maximum, access, publish, create) {
|
|
|
|
/* REF: http://xmpp.org/extensions/xep-0060.html#owner-create-and-configure */
|
|
|
|
try {
|
|
// Create the PubSub node
|
|
var iq = new JSJaCIQ();
|
|
iq.setType('set');
|
|
|
|
// Any external entity?
|
|
if(entity) {
|
|
iq.setTo(entity);
|
|
}
|
|
|
|
// Create it?
|
|
var pubsub;
|
|
|
|
if(create) {
|
|
pubsub = iq.appendNode('pubsub', {'xmlns': NS_PUBSUB});
|
|
pubsub.appendChild(iq.buildNode('create', {'xmlns': NS_PUBSUB, 'node': node}));
|
|
} else {
|
|
pubsub = iq.appendNode('pubsub', {'xmlns': NS_PUBSUB_OWNER});
|
|
}
|
|
|
|
// Configure it!
|
|
var configure = pubsub.appendChild(iq.buildNode('configure', {'node': node, 'xmlns': NS_PUBSUB}));
|
|
var x = configure.appendChild(iq.buildNode('x', {'xmlns': NS_XDATA, 'type': 'submit'}));
|
|
|
|
var field1 = x.appendChild(iq.buildNode('field', {'var': 'FORM_TYPE', 'type': 'hidden', 'xmlns': NS_XDATA}));
|
|
field1.appendChild(iq.buildNode('value', {'xmlns': NS_XDATA}, NS_PUBSUB_NC));
|
|
|
|
// Persist items?
|
|
if(persist) {
|
|
var field2 = x.appendChild(iq.buildNode('field', {'var': 'pubsub#persist_items', 'xmlns': NS_XDATA}));
|
|
field2.appendChild(iq.buildNode('value', {'xmlns': NS_XDATA}, persist));
|
|
}
|
|
|
|
// Maximum items?
|
|
if(maximum) {
|
|
var field3 = x.appendChild(iq.buildNode('field', {'var': 'pubsub#max_items', 'xmlns': NS_XDATA}));
|
|
field3.appendChild(iq.buildNode('value', {'xmlns': NS_XDATA}, maximum));
|
|
}
|
|
|
|
// Access rights?
|
|
if(access) {
|
|
var field4 = x.appendChild(iq.buildNode('field', {'var': 'pubsub#access_model', 'xmlns': NS_XDATA}));
|
|
field4.appendChild(iq.buildNode('value', {'xmlns': NS_XDATA}, access));
|
|
}
|
|
|
|
// Publish rights?
|
|
if(publish) {
|
|
var field5 = x.appendChild(iq.buildNode('field', {'var': 'pubsub#publish_model', 'xmlns': NS_XDATA}));
|
|
field5.appendChild(iq.buildNode('value', {'xmlns': NS_XDATA}, publish));
|
|
}
|
|
|
|
con.send(iq);
|
|
} catch(e) {
|
|
Console.error('Pubsub.setup', e);
|
|
}
|
|
|
|
};
|
|
|
|
|
|
/**
|
|
* Return class scope
|
|
*/
|
|
return self;
|
|
|
|
})(); |