mirror of
https://github.com/mozilla/gecko-dev.git
synced 2025-11-12 22:28:59 +02:00
Differential Revision: https://phabricator.services.mozilla.com/D17526 --HG-- extra : moz-landing-system : lando
178 lines
5.6 KiB
JavaScript
178 lines
5.6 KiB
JavaScript
/* global $:false, Handlebars:false */
|
|
/* import-globals-from messages.js */
|
|
|
|
/*
|
|
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() {
|
|
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() {
|
|
if (this.inited) {
|
|
return;
|
|
}
|
|
this.panelId = pktPanelMessaging.panelIdFromURL(window.location.href);
|
|
this.overlay = new PKT_SIGNUP_OVERLAY();
|
|
|
|
this.inited = true;
|
|
},
|
|
|
|
addMessageListener(messageId, callback) {
|
|
pktPanelMessaging.addMessageListener(this.panelId, messageId, callback);
|
|
},
|
|
|
|
sendMessage(messageId, payload, callback) {
|
|
pktPanelMessaging.sendMessage(this.panelId, messageId, payload, callback);
|
|
},
|
|
|
|
create() {
|
|
this.overlay.create();
|
|
|
|
// tell back end we're ready
|
|
thePKT_SIGNUP.sendMessage("show");
|
|
},
|
|
};
|
|
|
|
$(function() {
|
|
if (!window.thePKT_SIGNUP) {
|
|
var thePKT_SIGNUP = new PKT_SIGNUP();
|
|
/* global thePKT_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();
|
|
});
|
|
});
|