зеркало из https://github.com/mozilla/gecko-dev.git
186 строки
5.3 KiB
JavaScript
186 строки
5.3 KiB
JavaScript
/*
|
|
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.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 '';
|
|
}
|
|
else
|
|
{
|
|
return String(s).replace(/[&<>"']/g, function (str) {
|
|
return sanitizeMap[str];
|
|
});
|
|
}
|
|
};
|
|
this.getTranslations = function()
|
|
{
|
|
this.dictJSON = window.pocketStrings;
|
|
};
|
|
};
|
|
|
|
PKT_SIGNUP_OVERLAY.prototype = {
|
|
create : function()
|
|
{
|
|
var myself = this;
|
|
|
|
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.variant = (this.variant ? this.variant : 'undefined');
|
|
this.dictJSON.variant += this.fxasignedin ? '_fxa' : '_nonfxa';
|
|
this.dictJSON.pockethost = this.pockethost;
|
|
this.dictJSON.showlearnmore = (this.variant.indexOf('_lm') > -1 || this.variant == 'storyboard' || this.variant == 'hero') ? 1 : 0;
|
|
|
|
// 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 == 'storyboard' || this.variant == 'storyboard_lm' || this.variant == 'storyboard_nlm')
|
|
{
|
|
$('body').append(Handlebars.templates.signupstoryboard_shell(this.dictJSON));
|
|
}
|
|
else
|
|
{
|
|
$('body').append(Handlebars.templates.signup_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();
|
|
}
|
|
|
|
// send an async message to get string data
|
|
thePKT_SIGNUP.sendMessage("initL10N", {}, function(resp) {
|
|
window.pocketStrings = resp.strings;
|
|
window.thePKT_SIGNUP.create();
|
|
});
|
|
});
|
|
|