1
0
Fork 0
mirror of https://github.com/YunoHost-Apps/jappix_ynh.git synced 2024-09-03 19:26:19 +02:00
jappix_ynh/source/app/javascripts/popup.js
titoko@titoko.fr 979b376609 update 1.0.1
2014-03-12 14:52:47 +01:00

121 lines
No EOL
2.5 KiB
JavaScript

/*
Jappix - An open social platform
These are the popup JS scripts for Jappix
-------------------------------------------------
License: AGPL
Author: Valérian Saliou
*/
// Bundle
var Popup = (function () {
/**
* Alias of this
* @private
*/
var self = {};
/**
* Creates a popup code
* @public
* @param {string} id
* @param {string} content
* @return {boolean}
*/
self.create = function(id, content) {
try {
// Popup exists?
if(Common.exists('#' + id)) {
return false;
}
// Popop on top of another one?
var top_of = Common.exists('div.lock:has(div.popup)');
// Append the popup code
$('body').append(
'<div id="' + id + '" class="lock removable">' +
'<div class="popup">' +
content +
'</div>' +
'</div>'
);
// Avoids darker popup background (if on top of another popup)
if(top_of) {
$('#' + id).css('background', 'transparent');
}
// Attach popup events
self.instance(id);
return true;
} catch(e) {
Console.error('Popup.create', e);
}
};
/**
* Destroys a popup code
* @public
* @param {string} id
* @return {undefined}
*/
self.destroy = function(id) {
try {
// Stop the popup timers
$('#' + id + ' *').stopTime();
// Remove the popup
$('#' + id).remove();
// Manage input focus
Interface.inputFocus();
} catch(e) {
Console.error('Popup.destroy', e);
}
};
/**
* Attaches popup events
* @public
* @param {string} id
* @return {undefined}
*/
self.instance = function(id) {
try {
// Click events
$('#' + id).click(function(evt) {
// Click on lock background?
if($(evt.target).is('.lock:not(.unavoidable)')) {
// Destroy the popup
self.destroy(id);
return false;
}
});
} catch(e) {
Console.error('Popup.instance', e);
}
};
/**
* Return class scope
*/
return self;
})();