From baaae8ac5cdaa25387cd5a77bac1b678aa73b219 Mon Sep 17 00:00:00 2001 From: rolux Date: Fri, 17 Apr 2015 16:42:52 +0100 Subject: [PATCH] add license infrastructure --- static/js/licenseDialog.js | 27 +++++++++++++++++++++++++++ static/js/pandora.js | 3 ++- static/js/utils.js | 20 ++++++++++++++++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 static/js/licenseDialog.js diff --git a/static/js/licenseDialog.js b/static/js/licenseDialog.js new file mode 100644 index 00000000..f9c8bf75 --- /dev/null +++ b/static/js/licenseDialog.js @@ -0,0 +1,27 @@ +// vim: et:ts=4:sw=4:sts=4:ft=javascript +'use strict'; + +pandora.ui.licenseDialog = function() { + + var that = pandora.ui.iconDialog({ + buttons: [ + Ox.Button({ + id: 'close', + title: Ox._('Close') + }) + .bindEvent({ + click: function() { + that.close(); + } + }) + ], + content: Ox._( + 'This installation of pan.do/ra is unlicensed. ' + + 'Please contact your vendor for more information on ' + + 'how to acquire a license, or renew an expired one.' + ), + keys: {enter: 'close', escape: 'close'}, + title: Ox._('License') + }); + +}; diff --git a/static/js/pandora.js b/static/js/pandora.js index a5c6df32..a5e1e408 100644 --- a/static/js/pandora.js +++ b/static/js/pandora.js @@ -433,7 +433,8 @@ appPanel Ox.Fullscreen.bind('exit', pandora.UI.set); pandora.site.sectionButtonsWidth = pandora.$ui.sectionButtons.width() + 8; // allow site scripts to run after pandora is loaded - pandora.triggerEvent('loaded') + pandora.triggerEvent('loaded'); + !pandora.isLicensed() && pandora.openLicenseDialog(); loadUserScript && pandora.loadUserScript(); document.removeEventListener && document.removeEventListener('keydown', onKeydown); } diff --git a/static/js/utils.js b/static/js/utils.js index b5dfac99..247dbea0 100644 --- a/static/js/utils.js +++ b/static/js/utils.js @@ -1954,6 +1954,10 @@ pandora.isEmbedURL = function(url) { return /^#embed(\?.*?)?$/.test(hash); }; +pandora.isLicensed = function() { + return pandora.site.license && pandora.site.license < +new Date(); +}; + pandora.isPrintURL = function(url) { url = url || document.location.href; var hash = Ox.parseURL(url).hash; @@ -2015,6 +2019,22 @@ pandora.logEvent = function(data, event, element) { } }; +pandora.openLicenseDialog = function() { + if (!pandora.hasDialogOrScreen()) { + pandora.ui.licenseDialog().open().bindEvent({ + close: function() { + setTimeout(function() { + !pandora.isLicensed() && pandora.openLicenseDialog(); + }, 900000); // 15 minutes + } + }); + } else { + setTimeout(function() { + !pandora.isLicensed() && pandora.openLicenseDialog(); + }, 60000); // 1 minute + } +}; + pandora.openLink = function(url) { if (Ox.startsWith(url, 'mailto:')) { window.open(url);