diff options
Diffstat (limited to 'browser/extensions/pocket/content/panels/js/signup.js')
-rw-r--r-- | browser/extensions/pocket/content/panels/js/signup.js | 193 |
1 files changed, 193 insertions, 0 deletions
diff --git a/browser/extensions/pocket/content/panels/js/signup.js b/browser/extensions/pocket/content/panels/js/signup.js new file mode 100644 index 000000000..af55cc2a7 --- /dev/null +++ b/browser/extensions/pocket/content/panels/js/signup.js @@ -0,0 +1,193 @@ +/* +PKT_SIGNUP_OVERLAY is the view itself and contains all of the methods to manipute the overlay and messaging. +It does not contain any logic for saving or communication with the extension or server. +*/ +var PKT_SIGNUP_OVERLAY = function (options) +{ + var myself = this; + this.inited = false; + this.active = false; + this.delayedStateSaved = false; + this.wrapper = null; + this.variant = window.___PKT__SIGNUP_VARIANT; + this.tagline = window.___PKT__SIGNUP_TAGLINE || ''; + this.preventCloseTimerCancel = false; + this.translations = {}; + this.closeValid = true; + this.mouseInside = false; + this.autocloseTimer = null; + this.variant = ""; + this.inoverflowmenu = false; + this.controlvariant; + this.pockethost = "getpocket.com"; + this.fxasignedin = false; + this.dictJSON = {}; + this.initCloseTabEvents = function() { + $('.btn,.pkt_ext_learnmore,.alreadyhave > a').click(function(e) + { + e.preventDefault(); + thePKT_SIGNUP.sendMessage("openTabWithUrl", + { + url: $(this).attr('href'), + activate: true + }); + myself.closePopup(); + }); + }; + this.closePopup = function() { + thePKT_SIGNUP.sendMessage("close"); + }; + this.sanitizeText = function(s) { + var sanitizeMap = { + "&": "&", + "<": "<", + ">": ">", + '"': '"', + "'": ''' + }; + if (typeof s !== 'string') + { + return ''; + } + return String(s).replace(/[&<>"']/g, function (str) { + return sanitizeMap[str]; + }); + }; + this.getTranslations = function() + { + this.dictJSON = window.pocketStrings; + }; + +}; + +PKT_SIGNUP_OVERLAY.prototype = { + create : function() + { + var controlvariant = window.location.href.match(/controlvariant=([\w|\.]*)&?/); + if (controlvariant && controlvariant.length > 1) + { + this.controlvariant = controlvariant[1]; + } + var variant = window.location.href.match(/variant=([\w|\.]*)&?/); + if (variant && variant.length > 1) + { + this.variant = variant[1]; + } + var fxasignedin = window.location.href.match(/fxasignedin=([\w|\d|\.]*)&?/); + if (fxasignedin && fxasignedin.length > 1) + { + this.fxasignedin = (fxasignedin[1] == '1'); + } + var host = window.location.href.match(/pockethost=([\w|\.]*)&?/); + if (host && host.length > 1) + { + this.pockethost = host[1]; + } + var inoverflowmenu = window.location.href.match(/inoverflowmenu=([\w|\.]*)&?/); + if (inoverflowmenu && inoverflowmenu.length > 1) + { + this.inoverflowmenu = (inoverflowmenu[1] == 'true'); + } + var locale = window.location.href.match(/locale=([\w|\.]*)&?/); + if (locale && locale.length > 1) + { + this.locale = locale[1].toLowerCase(); + } + + if (this.active) + { + return; + } + this.active = true; + + // set translations + this.getTranslations(); + this.dictJSON.fxasignedin = this.fxasignedin ? 1 : 0; + this.dictJSON.controlvariant = this.controlvariant == 'true' ? 1 : 0; + this.dictJSON.variant = (this.variant ? this.variant : 'undefined'); + this.dictJSON.variant += this.fxasignedin ? '_fxa' : '_nonfxa'; + this.dictJSON.pockethost = this.pockethost; + this.dictJSON.showlearnmore = true; + + // extra modifier class for collapsed state + if (this.inoverflowmenu) + { + $('body').addClass('pkt_ext_signup_overflow'); + } + + // extra modifier class for language + if (this.locale) + { + $('body').addClass('pkt_ext_signup_' + this.locale); + } + + // Create actual content + if (this.variant == 'overflow') + { + $('body').append(Handlebars.templates.signup_shell(this.dictJSON)); + } + else + { + $('body').append(Handlebars.templates.signupstoryboard_shell(this.dictJSON)); + } + + + // tell background we're ready + thePKT_SIGNUP.sendMessage("show"); + + // close events + this.initCloseTabEvents(); + } +}; + + +// Layer between Bookmarklet and Extensions +var PKT_SIGNUP = function () {}; + +PKT_SIGNUP.prototype = { + init: function () { + if (this.inited) { + return; + } + this.panelId = pktPanelMessaging.panelIdFromURL(window.location.href); + this.overlay = new PKT_SIGNUP_OVERLAY(); + + this.inited = true; + }, + + addMessageListener: function(messageId, callback) { + pktPanelMessaging.addMessageListener(this.panelId, messageId, callback); + }, + + sendMessage: function(messageId, payload, callback) { + pktPanelMessaging.sendMessage(this.panelId, messageId, payload, callback); + }, + + create: function() { + this.overlay.create(); + + // tell back end we're ready + thePKT_SIGNUP.sendMessage("show"); + } +} + +$(function() +{ + if (!window.thePKT_SIGNUP) { + var thePKT_SIGNUP = new PKT_SIGNUP(); + window.thePKT_SIGNUP = thePKT_SIGNUP; + thePKT_SIGNUP.init(); + } + + var pocketHost = thePKT_SIGNUP.overlay.pockethost; + // send an async message to get string data + thePKT_SIGNUP.sendMessage("initL10N", { + tos: [ + 'https://'+ pocketHost +'/tos?s=ffi&t=tos&tv=panel_tryit', + 'https://'+ pocketHost +'/privacy?s=ffi&t=privacypolicy&tv=panel_tryit' + ] + }, function(resp) { + window.pocketStrings = resp.strings; + window.thePKT_SIGNUP.create(); + }); +}); |