forked from mirrors/gecko-dev
Differential Revision: https://phabricator.services.mozilla.com/D6849 --HG-- rename : browser/extensions/pocket/content/AboutPocket.jsm => browser/components/pocket/content/AboutPocket.jsm rename : browser/extensions/pocket/content/Pocket.jsm => browser/components/pocket/content/Pocket.jsm rename : browser/extensions/pocket/bootstrap.js => browser/components/pocket/content/SaveToPocket.jsm rename : browser/extensions/pocket/content/main.js => browser/components/pocket/content/main.js rename : browser/extensions/pocket/content/panels/css/normalize.css => browser/components/pocket/content/panels/css/normalize.css rename : browser/extensions/pocket/content/panels/css/saved.css => browser/components/pocket/content/panels/css/saved.css rename : browser/extensions/pocket/content/panels/css/sendtomobile.css => browser/components/pocket/content/panels/css/sendtomobile.css rename : browser/extensions/pocket/content/panels/css/signup.css => browser/components/pocket/content/panels/css/signup.css rename : browser/extensions/pocket/content/panels/fonts/FiraSans-Regular.woff => browser/components/pocket/content/panels/fonts/FiraSans-Regular.woff rename : browser/extensions/pocket/content/panels/img/app_store_dowload_apple.svg => browser/components/pocket/content/panels/img/app_store_dowload_apple.svg rename : browser/extensions/pocket/content/panels/img/pocket-outline.svg => browser/components/pocket/content/panels/img/pocket-outline.svg rename : browser/extensions/pocket/content/panels/img/pocketerror@1x.png => browser/components/pocket/content/panels/img/pocketerror@1x.png rename : browser/extensions/pocket/content/panels/img/pocketerror@2x.png => browser/components/pocket/content/panels/img/pocketerror@2x.png rename : browser/extensions/pocket/content/panels/img/pocketlogo@1x.png => browser/components/pocket/content/panels/img/pocketlogo@1x.png rename : browser/extensions/pocket/content/panels/img/pocketlogo@2x.png => browser/components/pocket/content/panels/img/pocketlogo@2x.png rename : browser/extensions/pocket/content/panels/img/pocketlogosolo@1x.png => browser/components/pocket/content/panels/img/pocketlogosolo@1x.png rename : browser/extensions/pocket/content/panels/img/pocketlogosolo@2x.png => browser/components/pocket/content/panels/img/pocketlogosolo@2x.png rename : browser/extensions/pocket/content/panels/img/pocketsignup_button@1x.png => browser/components/pocket/content/panels/img/pocketsignup_button@1x.png rename : browser/extensions/pocket/content/panels/img/pocketsignup_button@2x.png => browser/components/pocket/content/panels/img/pocketsignup_button@2x.png rename : browser/extensions/pocket/content/panels/img/pocketsignup_devices@1x.png => browser/components/pocket/content/panels/img/pocketsignup_devices@1x.png rename : browser/extensions/pocket/content/panels/img/pocketsignup_devices@2x.png => browser/components/pocket/content/panels/img/pocketsignup_devices@2x.png rename : browser/extensions/pocket/content/panels/img/pocketsignup_hero@1x.png => browser/components/pocket/content/panels/img/pocketsignup_hero@1x.png rename : browser/extensions/pocket/content/panels/img/pocketsignup_hero@2x.png => browser/components/pocket/content/panels/img/pocketsignup_hero@2x.png rename : browser/extensions/pocket/content/panels/img/signup_firefoxlogo@1x.png => browser/components/pocket/content/panels/img/signup_firefoxlogo@1x.png rename : browser/extensions/pocket/content/panels/img/signup_firefoxlogo@2x.png => browser/components/pocket/content/panels/img/signup_firefoxlogo@2x.png rename : browser/extensions/pocket/content/panels/img/signup_help@1x.png => browser/components/pocket/content/panels/img/signup_help@1x.png rename : browser/extensions/pocket/content/panels/img/signup_help@2x.png => browser/components/pocket/content/panels/img/signup_help@2x.png rename : browser/extensions/pocket/content/panels/img/tag_close@1x.png => browser/components/pocket/content/panels/img/tag_close@1x.png rename : browser/extensions/pocket/content/panels/img/tag_close@2x.png => browser/components/pocket/content/panels/img/tag_close@2x.png rename : browser/extensions/pocket/content/panels/img/tag_closeactive@1x.png => browser/components/pocket/content/panels/img/tag_closeactive@1x.png rename : browser/extensions/pocket/content/panels/img/tag_closeactive@2x.png => browser/components/pocket/content/panels/img/tag_closeactive@2x.png rename : browser/extensions/pocket/content/panels/js/messages.js => browser/components/pocket/content/panels/js/messages.js rename : browser/extensions/pocket/content/panels/js/saved.js => browser/components/pocket/content/panels/js/saved.js rename : browser/extensions/pocket/content/panels/js/sendtomobile.js => browser/components/pocket/content/panels/js/sendtomobile.js rename : browser/extensions/pocket/content/panels/js/signup.js => browser/components/pocket/content/panels/js/signup.js rename : browser/extensions/pocket/content/panels/js/tmpl.js => browser/components/pocket/content/panels/js/tmpl.js rename : browser/extensions/pocket/content/panels/js/vendor/handlebars.runtime.js => browser/components/pocket/content/panels/js/vendor/handlebars.runtime.js rename : browser/extensions/pocket/content/panels/js/vendor/jquery-2.1.1.min.js => browser/components/pocket/content/panels/js/vendor/jquery-2.1.1.min.js rename : browser/extensions/pocket/content/panels/js/vendor/jquery.tokeninput.min.js => browser/components/pocket/content/panels/js/vendor/jquery.tokeninput.min.js rename : browser/extensions/pocket/content/panels/license.txt => browser/components/pocket/content/panels/license.txt rename : browser/extensions/pocket/content/panels/saved.html => browser/components/pocket/content/panels/saved.html rename : browser/extensions/pocket/content/panels/signup.html => browser/components/pocket/content/panels/signup.html rename : browser/extensions/pocket/content/panels/tmpl/ho2/ho2_articleinfo.handlebars => browser/components/pocket/content/panels/tmpl/ho2/ho2_articleinfo.handlebars rename : browser/extensions/pocket/content/panels/tmpl/ho2/ho2_download.handlebars => browser/components/pocket/content/panels/tmpl/ho2/ho2_download.handlebars rename : browser/extensions/pocket/content/panels/tmpl/ho2/ho2_download_error.handlebars => browser/components/pocket/content/panels/tmpl/ho2/ho2_download_error.handlebars rename : browser/extensions/pocket/content/panels/tmpl/ho2/ho2_sharebutton_v1.handlebars => browser/components/pocket/content/panels/tmpl/ho2/ho2_sharebutton_v1.handlebars rename : browser/extensions/pocket/content/panels/tmpl/ho2/ho2_sharebutton_v2.handlebars => browser/components/pocket/content/panels/tmpl/ho2/ho2_sharebutton_v2.handlebars rename : browser/extensions/pocket/content/panels/tmpl/ho2/ho2_sharebutton_v3.handlebars => browser/components/pocket/content/panels/tmpl/ho2/ho2_sharebutton_v3.handlebars rename : browser/extensions/pocket/content/panels/tmpl/saved_premiumextras.handlebars => browser/components/pocket/content/panels/tmpl/saved_premiumextras.handlebars rename : browser/extensions/pocket/content/panels/tmpl/saved_premiumshell.handlebars => browser/components/pocket/content/panels/tmpl/saved_premiumshell.handlebars rename : browser/extensions/pocket/content/panels/tmpl/saved_shell.handlebars => browser/components/pocket/content/panels/tmpl/saved_shell.handlebars rename : browser/extensions/pocket/content/panels/tmpl/saved_tmplogin.handlebars => browser/components/pocket/content/panels/tmpl/saved_tmplogin.handlebars rename : browser/extensions/pocket/content/panels/tmpl/signup_shell.handlebars => browser/components/pocket/content/panels/tmpl/signup_shell.handlebars rename : browser/extensions/pocket/content/panels/tmpl/signupstoryboard_shell.handlebars => browser/components/pocket/content/panels/tmpl/signupstoryboard_shell.handlebars rename : browser/extensions/pocket/content/pktApi.jsm => browser/components/pocket/content/pktApi.jsm rename : browser/extensions/pocket/content/pocket-content-process.js => browser/components/pocket/content/pocket-content-process.js rename : browser/extensions/pocket/jar.mn => browser/components/pocket/jar.mn rename : browser/extensions/pocket/locale/ach/pocket.properties => browser/components/pocket/locale/ach/pocket.properties rename : browser/extensions/pocket/locale/ar/pocket.properties => browser/components/pocket/locale/ar/pocket.properties rename : browser/extensions/pocket/locale/ast/pocket.properties => browser/components/pocket/locale/ast/pocket.properties rename : browser/extensions/pocket/locale/az/pocket.properties => browser/components/pocket/locale/az/pocket.properties rename : browser/extensions/pocket/locale/be/pocket.properties => browser/components/pocket/locale/be/pocket.properties rename : browser/extensions/pocket/locale/bg/pocket.properties => browser/components/pocket/locale/bg/pocket.properties rename : browser/extensions/pocket/locale/bn-BD/pocket.properties => browser/components/pocket/locale/bn-BD/pocket.properties rename : browser/extensions/pocket/locale/bn-IN/pocket.properties => browser/components/pocket/locale/bn-IN/pocket.properties rename : browser/extensions/pocket/locale/br/pocket.properties => browser/components/pocket/locale/br/pocket.properties rename : browser/extensions/pocket/locale/bs/pocket.properties => browser/components/pocket/locale/bs/pocket.properties rename : browser/extensions/pocket/locale/ca/pocket.properties => browser/components/pocket/locale/ca/pocket.properties rename : browser/extensions/pocket/locale/cak/pocket.properties => browser/components/pocket/locale/cak/pocket.properties rename : browser/extensions/pocket/locale/cs/pocket.properties => browser/components/pocket/locale/cs/pocket.properties rename : browser/extensions/pocket/locale/cy/pocket.properties => browser/components/pocket/locale/cy/pocket.properties rename : browser/extensions/pocket/locale/da/pocket.properties => browser/components/pocket/locale/da/pocket.properties rename : browser/extensions/pocket/locale/de/pocket.properties => browser/components/pocket/locale/de/pocket.properties rename : browser/extensions/pocket/locale/dsb/pocket.properties => browser/components/pocket/locale/dsb/pocket.properties rename : browser/extensions/pocket/locale/el/pocket.properties => browser/components/pocket/locale/el/pocket.properties rename : browser/extensions/pocket/locale/en-GB/pocket.properties => browser/components/pocket/locale/en-GB/pocket.properties rename : browser/extensions/pocket/locale/en-GB/pocket.properties => browser/components/pocket/locale/en-US/pocket.properties rename : browser/extensions/pocket/locale/eo/pocket.properties => browser/components/pocket/locale/eo/pocket.properties rename : browser/extensions/pocket/locale/es-AR/pocket.properties => browser/components/pocket/locale/es-AR/pocket.properties rename : browser/extensions/pocket/locale/es-CL/pocket.properties => browser/components/pocket/locale/es-CL/pocket.properties rename : browser/extensions/pocket/locale/es-ES/pocket.properties => browser/components/pocket/locale/es-ES/pocket.properties rename : browser/extensions/pocket/locale/es-MX/pocket.properties => browser/components/pocket/locale/es-MX/pocket.properties rename : browser/extensions/pocket/locale/et/pocket.properties => browser/components/pocket/locale/et/pocket.properties rename : browser/extensions/pocket/locale/eu/pocket.properties => browser/components/pocket/locale/eu/pocket.properties rename : browser/extensions/pocket/locale/fa/pocket.properties => browser/components/pocket/locale/fa/pocket.properties rename : browser/extensions/pocket/locale/ff/pocket.properties => browser/components/pocket/locale/ff/pocket.properties rename : browser/extensions/pocket/locale/fi/pocket.properties => browser/components/pocket/locale/fi/pocket.properties rename : browser/extensions/pocket/locale/fr/pocket.properties => browser/components/pocket/locale/fr/pocket.properties rename : browser/extensions/pocket/locale/fy-NL/pocket.properties => browser/components/pocket/locale/fy-NL/pocket.properties rename : browser/extensions/pocket/locale/ga-IE/pocket.properties => browser/components/pocket/locale/ga-IE/pocket.properties rename : browser/extensions/pocket/locale/gd/pocket.properties => browser/components/pocket/locale/gd/pocket.properties rename : browser/extensions/pocket/locale/gl/pocket.properties => browser/components/pocket/locale/gl/pocket.properties rename : browser/extensions/pocket/locale/gu-IN/pocket.properties => browser/components/pocket/locale/gu-IN/pocket.properties rename : browser/extensions/pocket/locale/he/pocket.properties => browser/components/pocket/locale/he/pocket.properties rename : browser/extensions/pocket/locale/hi-IN/pocket.properties => browser/components/pocket/locale/hi-IN/pocket.properties rename : browser/extensions/pocket/locale/hr/pocket.properties => browser/components/pocket/locale/hr/pocket.properties rename : browser/extensions/pocket/locale/hsb/pocket.properties => browser/components/pocket/locale/hsb/pocket.properties rename : browser/extensions/pocket/locale/hu/pocket.properties => browser/components/pocket/locale/hu/pocket.properties rename : browser/extensions/pocket/locale/hy-AM/pocket.properties => browser/components/pocket/locale/hy-AM/pocket.properties rename : browser/extensions/pocket/locale/id/pocket.properties => browser/components/pocket/locale/id/pocket.properties rename : browser/extensions/pocket/locale/is/pocket.properties => browser/components/pocket/locale/is/pocket.properties rename : browser/extensions/pocket/locale/it/pocket.properties => browser/components/pocket/locale/it/pocket.properties rename : browser/extensions/pocket/locale/ja/pocket.properties => browser/components/pocket/locale/ja/pocket.properties rename : browser/extensions/pocket/locale/jar.mn => browser/components/pocket/locale/jar.mn rename : browser/extensions/pocket/locale/ka/pocket.properties => browser/components/pocket/locale/ka/pocket.properties rename : browser/extensions/pocket/locale/kab/pocket.properties => browser/components/pocket/locale/kab/pocket.properties rename : browser/extensions/pocket/locale/kk/pocket.properties => browser/components/pocket/locale/kk/pocket.properties rename : browser/extensions/pocket/locale/km/pocket.properties => browser/components/pocket/locale/km/pocket.properties rename : browser/extensions/pocket/locale/kn/pocket.properties => browser/components/pocket/locale/kn/pocket.properties rename : browser/extensions/pocket/locale/ko/pocket.properties => browser/components/pocket/locale/ko/pocket.properties rename : browser/extensions/pocket/locale/lij/pocket.properties => browser/components/pocket/locale/lij/pocket.properties rename : browser/extensions/pocket/locale/lt/pocket.properties => browser/components/pocket/locale/lt/pocket.properties rename : browser/extensions/pocket/locale/ltg/pocket.properties => browser/components/pocket/locale/ltg/pocket.properties rename : browser/extensions/pocket/locale/lv/pocket.properties => browser/components/pocket/locale/lv/pocket.properties rename : browser/extensions/pocket/locale/mk/pocket.properties => browser/components/pocket/locale/mk/pocket.properties rename : browser/extensions/pocket/locale/ml/pocket.properties => browser/components/pocket/locale/ml/pocket.properties rename : browser/extensions/pocket/locale/moz.build => browser/components/pocket/locale/moz.build rename : browser/extensions/pocket/locale/mr/pocket.properties => browser/components/pocket/locale/mr/pocket.properties rename : browser/extensions/pocket/locale/ms/pocket.properties => browser/components/pocket/locale/ms/pocket.properties rename : browser/extensions/pocket/locale/my/pocket.properties => browser/components/pocket/locale/my/pocket.properties rename : browser/extensions/pocket/locale/nb-NO/pocket.properties => browser/components/pocket/locale/nb-NO/pocket.properties rename : browser/extensions/pocket/locale/ne-NP/pocket.properties => browser/components/pocket/locale/ne-NP/pocket.properties rename : browser/extensions/pocket/locale/nl/pocket.properties => browser/components/pocket/locale/nl/pocket.properties rename : browser/extensions/pocket/locale/nn-NO/pocket.properties => browser/components/pocket/locale/nn-NO/pocket.properties rename : browser/extensions/pocket/locale/oc/pocket.properties => browser/components/pocket/locale/oc/pocket.properties rename : browser/extensions/pocket/locale/or/pocket.properties => browser/components/pocket/locale/or/pocket.properties rename : browser/extensions/pocket/locale/pa-IN/pocket.properties => browser/components/pocket/locale/pa-IN/pocket.properties rename : browser/extensions/pocket/locale/pl/pocket.properties => browser/components/pocket/locale/pl/pocket.properties rename : browser/extensions/pocket/locale/pt-BR/pocket.properties => browser/components/pocket/locale/pt-BR/pocket.properties rename : browser/extensions/pocket/locale/pt-PT/pocket.properties => browser/components/pocket/locale/pt-PT/pocket.properties rename : browser/extensions/pocket/locale/rm/pocket.properties => browser/components/pocket/locale/rm/pocket.properties rename : browser/extensions/pocket/locale/ro/pocket.properties => browser/components/pocket/locale/ro/pocket.properties rename : browser/extensions/pocket/locale/ru/pocket.properties => browser/components/pocket/locale/ru/pocket.properties rename : browser/extensions/pocket/locale/sk/pocket.properties => browser/components/pocket/locale/sk/pocket.properties rename : browser/extensions/pocket/locale/sl/pocket.properties => browser/components/pocket/locale/sl/pocket.properties rename : browser/extensions/pocket/locale/sq/pocket.properties => browser/components/pocket/locale/sq/pocket.properties rename : browser/extensions/pocket/locale/sr/pocket.properties => browser/components/pocket/locale/sr/pocket.properties rename : browser/extensions/pocket/locale/sv-SE/pocket.properties => browser/components/pocket/locale/sv-SE/pocket.properties rename : browser/extensions/pocket/locale/ta/pocket.properties => browser/components/pocket/locale/ta/pocket.properties rename : browser/extensions/pocket/locale/te/pocket.properties => browser/components/pocket/locale/te/pocket.properties rename : browser/extensions/pocket/locale/th/pocket.properties => browser/components/pocket/locale/th/pocket.properties rename : browser/extensions/pocket/locale/tl/pocket.properties => browser/components/pocket/locale/tl/pocket.properties rename : browser/extensions/pocket/locale/tr/pocket.properties => browser/components/pocket/locale/tr/pocket.properties rename : browser/extensions/pocket/locale/uk/pocket.properties => browser/components/pocket/locale/uk/pocket.properties rename : browser/extensions/pocket/locale/ur/pocket.properties => browser/components/pocket/locale/ur/pocket.properties rename : browser/extensions/pocket/locale/vi/pocket.properties => browser/components/pocket/locale/vi/pocket.properties rename : browser/extensions/pocket/locale/zh-CN/pocket.properties => browser/components/pocket/locale/zh-CN/pocket.properties rename : browser/extensions/pocket/locale/zh-TW/pocket.properties => browser/components/pocket/locale/zh-TW/pocket.properties rename : browser/extensions/pocket/moz.build => browser/components/pocket/moz.build rename : browser/extensions/pocket/skin/shared/library-pocket-animation.svg => browser/components/pocket/skin/library-pocket-animation.svg rename : browser/extensions/pocket/skin/shared/pocket-animation.svg => browser/components/pocket/skin/pocket-animation.svg rename : browser/extensions/pocket/skin/shared/pocket-outline.svg => browser/components/pocket/skin/pocket-outline.svg rename : browser/extensions/pocket/skin/shared/pocket.css => browser/components/pocket/skin/pocket.css rename : browser/extensions/pocket/skin/shared/pocket.svg => browser/components/pocket/skin/pocket.svg rename : browser/extensions/pocket/test/.eslintrc.js => browser/components/pocket/test/.eslintrc.js rename : browser/extensions/pocket/test/browser.ini => browser/components/pocket/test/browser.ini rename : browser/extensions/pocket/test/browser_pocket_ui_check.js => browser/components/pocket/test/browser_pocket_ui_check.js rename : browser/extensions/pocket/test/head.js => browser/components/pocket/test/head.js rename : browser/extensions/pocket/test/test.html => browser/components/pocket/test/test.html extra : moz-landing-system : lando
578 lines
23 KiB
JavaScript
578 lines
23 KiB
JavaScript
/* global $:false, Handlebars:false, PKT_SENDTOMOBILE:false, */
|
|
/* import-globals-from messages.js */
|
|
|
|
/*
|
|
PKT_SAVED_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_SAVED_OVERLAY = function(options) {
|
|
var myself = this;
|
|
this.inited = false;
|
|
this.active = false;
|
|
this.wrapper = null;
|
|
this.pockethost = "getpocket.com";
|
|
this.savedItemId = 0;
|
|
this.savedUrl = "";
|
|
this.premiumStatus = false;
|
|
this.preventCloseTimerCancel = false;
|
|
this.closeValid = true;
|
|
this.mouseInside = false;
|
|
this.autocloseTimer = null;
|
|
this.inoverflowmenu = false;
|
|
this.dictJSON = {};
|
|
this.autocloseTiming = 3500;
|
|
this.autocloseTimingFinalState = 2000;
|
|
this.mouseInside = false;
|
|
this.userTags = [];
|
|
this.cxt_suggested_available = 0;
|
|
this.cxt_entered = 0;
|
|
this.cxt_suggested = 0;
|
|
this.cxt_removed = 0;
|
|
this.justaddedsuggested = false;
|
|
this.fxasignedin = false;
|
|
this.premiumDetailsAdded = false;
|
|
this.ho2 = false;
|
|
this.fillTagContainer = function(tags, container, tagclass) {
|
|
container.children().remove();
|
|
for (var i = 0; i < tags.length; i++) {
|
|
var newtag = $('<li><a href="#" class="token_tag"></a></li>');
|
|
newtag.find("a").text(tags[i]);
|
|
newtag.addClass(tagclass);
|
|
container.append(newtag);
|
|
this.cxt_suggested_available++;
|
|
}
|
|
};
|
|
this.fillUserTags = function() {
|
|
thePKT_SAVED.sendMessage("getTags", {}, function(resp) {
|
|
if (typeof resp == "object" && typeof resp.tags == "object") {
|
|
myself.userTags = resp.tags;
|
|
}
|
|
});
|
|
};
|
|
this.fillSuggestedTags = function() {
|
|
if (!$(".pkt_ext_suggestedtag_detail").length) {
|
|
myself.suggestedTagsLoaded = true;
|
|
myself.startCloseTimer();
|
|
return;
|
|
}
|
|
|
|
thePKT_SAVED.sendMessage("getSuggestedTags",
|
|
{
|
|
url: myself.savedUrl,
|
|
}, function(resp) {
|
|
$(".pkt_ext_suggestedtag_detail").removeClass("pkt_ext_suggestedtag_detail_loading");
|
|
if (resp.status == "success") {
|
|
var newtags = [];
|
|
for (var i = 0; i < resp.value.suggestedTags.length; i++) {
|
|
newtags.push(resp.value.suggestedTags[i].tag);
|
|
}
|
|
myself.suggestedTagsLoaded = true;
|
|
if (!myself.mouseInside) {
|
|
myself.startCloseTimer();
|
|
}
|
|
myself.fillTagContainer(newtags, $(".pkt_ext_suggestedtag_detail ul"), "token_suggestedtag");
|
|
} else if (resp.status == "error") {
|
|
var msg = $('<p class="suggestedtag_msg">');
|
|
msg.text(resp.error.message);
|
|
$(".pkt_ext_suggestedtag_detail").append(msg);
|
|
this.suggestedTagsLoaded = true;
|
|
if (!myself.mouseInside) {
|
|
myself.startCloseTimer();
|
|
}
|
|
}
|
|
});
|
|
};
|
|
this.initAutoCloseEvents = function() {
|
|
this.wrapper.on("mouseenter", function() {
|
|
myself.mouseInside = true;
|
|
myself.stopCloseTimer();
|
|
});
|
|
this.wrapper.on("mouseleave", function() {
|
|
myself.mouseInside = false;
|
|
myself.startCloseTimer();
|
|
});
|
|
this.wrapper.on("click", function(e) {
|
|
myself.closeValid = false;
|
|
});
|
|
};
|
|
this.startCloseTimer = function(manualtime) {
|
|
var settime = manualtime ? manualtime : myself.autocloseTiming;
|
|
if (typeof myself.autocloseTimer == "number") {
|
|
clearTimeout(myself.autocloseTimer);
|
|
}
|
|
myself.autocloseTimer = setTimeout(function() {
|
|
if (myself.closeValid || myself.preventCloseTimerCancel) {
|
|
myself.preventCloseTimerCancel = false;
|
|
myself.closePopup();
|
|
}
|
|
}, settime);
|
|
};
|
|
this.stopCloseTimer = function() {
|
|
if (myself.preventCloseTimerCancel) {
|
|
return;
|
|
}
|
|
clearTimeout(myself.autocloseTimer);
|
|
};
|
|
this.closePopup = function() {
|
|
myself.stopCloseTimer();
|
|
thePKT_SAVED.sendMessage("close");
|
|
};
|
|
this.checkValidTagSubmit = function() {
|
|
var inputlength = $.trim($(".pkt_ext_tag_input_wrapper").find(".token-input-input-token").children("input").val()).length;
|
|
if ($(".pkt_ext_containersaved").find(".token-input-token").length || (inputlength > 0 && inputlength < 26)) {
|
|
$(".pkt_ext_containersaved").find(".pkt_ext_btn").removeClass("pkt_ext_btn_disabled");
|
|
} else {
|
|
$(".pkt_ext_containersaved").find(".pkt_ext_btn").addClass("pkt_ext_btn_disabled");
|
|
}
|
|
myself.updateSlidingTagList();
|
|
};
|
|
this.updateSlidingTagList = function() {
|
|
var inputleft = $(".token-input-input-token input").position().left;
|
|
var listleft = $(".token-input-list").position().left;
|
|
var listleftmanual = parseInt($(".token-input-list").css("left"));
|
|
var listleftnatural = listleft - listleftmanual;
|
|
var leftwidth = $(".pkt_ext_tag_input_wrapper").outerWidth();
|
|
|
|
if ((inputleft + listleft + 20) > leftwidth) {
|
|
$(".token-input-list").css("left", Math.min(((inputleft + listleftnatural - leftwidth + 20) * -1), 0) + "px");
|
|
} else {
|
|
$(".token-input-list").css("left", "0");
|
|
}
|
|
};
|
|
this.checkPlaceholderStatus = function() {
|
|
if (this.wrapper.find(".pkt_ext_tag_input_wrapper").find(".token-input-token").length) {
|
|
this.wrapper.find(".token-input-input-token input").attr("placeholder", "");
|
|
} else {
|
|
this.wrapper.find(".token-input-input-token input").attr("placeholder", $(".pkt_ext_tag_input").attr("placeholder")).css("width", "200px");
|
|
}
|
|
};
|
|
this.initTagInput = function() {
|
|
var inputwrapper = $(".pkt_ext_tag_input_wrapper");
|
|
inputwrapper.find(".pkt_ext_tag_input").tokenInput([], {
|
|
searchDelay: 200,
|
|
minChars: 1,
|
|
animateDropdown: false,
|
|
noResultsHideDropdown: true,
|
|
scrollKeyboard: true,
|
|
emptyInputLength: 200,
|
|
search_function(term, cb) {
|
|
var returnlist = [];
|
|
if (term.length) {
|
|
var limit = 15;
|
|
var r = new RegExp("^" + term);
|
|
for (var i = 0; i < myself.userTags.length; i++) {
|
|
if (r.test(myself.userTags[i]) && limit > 0) {
|
|
returnlist.push({name: myself.userTags[i]});
|
|
limit--;
|
|
}
|
|
}
|
|
}
|
|
if (!$(".token-input-dropdown-tag").data("init")) {
|
|
$(".token-input-dropdown-tag").css("width", inputwrapper.outerWidth()).data("init");
|
|
inputwrapper.append($(".token-input-dropdown-tag"));
|
|
}
|
|
cb(returnlist);
|
|
},
|
|
textToData(text) {
|
|
if ($.trim(text).length > 25 || !$.trim(text).length) {
|
|
if (text.length > 25) {
|
|
myself.showTagsError(myself.dictJSON.maxtaglength);
|
|
this.changestamp = Date.now();
|
|
setTimeout(function() {
|
|
$(".token-input-input-token input").val(text).focus();
|
|
}, 10);
|
|
}
|
|
return null;
|
|
}
|
|
myself.hideTagsError();
|
|
return {name: myself.sanitizeText(text.toLowerCase())};
|
|
},
|
|
onReady() {
|
|
$(".token-input-dropdown").addClass("token-input-dropdown-tag");
|
|
inputwrapper.find(".token-input-input-token input").attr("placeholder", $(".tag-input").attr("placeholder")).css("width", "200px");
|
|
if ($(".pkt_ext_suggestedtag_detail").length) {
|
|
myself.wrapper.find(".pkt_ext_suggestedtag_detail").on("click", ".token_tag", function(e) {
|
|
e.preventDefault();
|
|
var tag = $(e.target);
|
|
if ($(this).parents(".pkt_ext_suggestedtag_detail_disabled").length) {
|
|
return;
|
|
}
|
|
myself.justaddedsuggested = true;
|
|
inputwrapper.find(".pkt_ext_tag_input").tokenInput("add", {id: inputwrapper.find(".token-input-token").length, name: tag.text()});
|
|
tag.addClass("token-suggestedtag-inactive");
|
|
$(".token-input-input-token input").focus();
|
|
});
|
|
}
|
|
$(".token-input-list").on("keydown", "input", function(e) {
|
|
if (e.which == 37) {
|
|
myself.updateSlidingTagList();
|
|
}
|
|
}).on("keypress", "input", function(e) {
|
|
if (e.which == 13) {
|
|
if (typeof this.changestamp == "undefined" || (Date.now() - this.changestamp > 250)) {
|
|
e.preventDefault();
|
|
myself.wrapper.find(".pkt_ext_btn").trigger("click");
|
|
}
|
|
}
|
|
}).on("keyup", "input", function(e) {
|
|
myself.checkValidTagSubmit();
|
|
});
|
|
myself.checkPlaceholderStatus();
|
|
},
|
|
onAdd() {
|
|
myself.checkValidTagSubmit();
|
|
this.changestamp = Date.now();
|
|
myself.hideInactiveTags();
|
|
myself.checkPlaceholderStatus();
|
|
},
|
|
onDelete() {
|
|
myself.checkValidTagSubmit();
|
|
this.changestamp = Date.now();
|
|
myself.showActiveTags();
|
|
myself.checkPlaceholderStatus();
|
|
},
|
|
onShowDropdown() {
|
|
if (myself.ho2 !== "show_prompt_preview")
|
|
thePKT_SAVED.sendMessage("expandSavePanel");
|
|
},
|
|
onHideDropdown() {
|
|
if (!myself.ho2) {
|
|
thePKT_SAVED.sendMessage("collapseSavePanel");
|
|
} else if (myself.ho2 !== "show_prompt_preview") {
|
|
thePKT_SAVED.sendMessage("resizePanel", { width: 350, height: 200 });
|
|
}
|
|
},
|
|
});
|
|
$("body").on("keydown", function(e) {
|
|
var key = e.keyCode || e.which;
|
|
if (key == 8) {
|
|
var selected = $(".token-input-selected-token");
|
|
if (selected.length) {
|
|
e.preventDefault();
|
|
e.stopImmediatePropagation();
|
|
inputwrapper.find(".pkt_ext_tag_input").tokenInput("remove", {name: selected.find("p").text()});
|
|
}
|
|
} else if ($(e.target).parent().hasClass("token-input-input-token")) {
|
|
e.stopImmediatePropagation();
|
|
}
|
|
});
|
|
};
|
|
this.disableInput = function() {
|
|
this.wrapper.find(".pkt_ext_item_actions").addClass("pkt_ext_item_actions_disabled");
|
|
this.wrapper.find(".pkt_ext_btn").addClass("pkt_ext_btn_disabled");
|
|
this.wrapper.find(".pkt_ext_tag_input_wrapper").addClass("pkt_ext_tag_input_wrapper_disabled");
|
|
if (this.wrapper.find(".pkt_ext_suggestedtag_detail").length) {
|
|
this.wrapper.find(".pkt_ext_suggestedtag_detail").addClass("pkt_ext_suggestedtag_detail_disabled");
|
|
}
|
|
};
|
|
this.enableInput = function() {
|
|
this.wrapper.find(".pkt_ext_item_actions").removeClass("pkt_ext_item_actions_disabled");
|
|
this.checkValidTagSubmit();
|
|
this.wrapper.find(".pkt_ext_tag_input_wrapper").removeClass("pkt_ext_tag_input_wrapper_disabled");
|
|
if (this.wrapper.find(".pkt_ext_suggestedtag_detail").length) {
|
|
this.wrapper.find(".pkt_ext_suggestedtag_detail").removeClass("pkt_ext_suggestedtag_detail_disabled");
|
|
}
|
|
};
|
|
this.initAddTagInput = function() {
|
|
$(".pkt_ext_btn").click(function(e) {
|
|
e.preventDefault();
|
|
if ($(this).hasClass("pkt_ext_btn_disabled") || $(".pkt_ext_edit_msg_active").filter(".pkt_ext_edit_msg_error").length) {
|
|
return;
|
|
}
|
|
myself.disableInput();
|
|
$(".pkt_ext_containersaved").find(".pkt_ext_detail h2").text(myself.dictJSON.processingtags);
|
|
var originaltags = [];
|
|
$(".token-input-token").each(function() {
|
|
var text = $.trim($(this).find("p").text());
|
|
if (text.length) {
|
|
originaltags.push(text);
|
|
}
|
|
});
|
|
|
|
thePKT_SAVED.sendMessage("addTags",
|
|
{
|
|
url: myself.savedUrl,
|
|
tags: originaltags,
|
|
}, function(resp) {
|
|
if (resp.status == "success") {
|
|
myself.showStateFinalMsg(myself.dictJSON.tagssaved);
|
|
} else if (resp.status == "error") {
|
|
$(".pkt_ext_edit_msg").addClass("pkt_ext_edit_msg_error pkt_ext_edit_msg_active").text(resp.error.message);
|
|
}
|
|
});
|
|
});
|
|
};
|
|
this.initRemovePageInput = function() {
|
|
$(".pkt_ext_removeitem").click(function(e) {
|
|
if ($(this).parents(".pkt_ext_item_actions_disabled").length) {
|
|
e.preventDefault();
|
|
return;
|
|
}
|
|
if ($(this).hasClass("pkt_ext_removeitem")) {
|
|
e.preventDefault();
|
|
myself.disableInput();
|
|
$(".pkt_ext_containersaved").find(".pkt_ext_detail h2").text(myself.dictJSON.processingremove);
|
|
|
|
thePKT_SAVED.sendMessage("deleteItem",
|
|
{
|
|
itemId: myself.savedItemId,
|
|
}, function(resp) {
|
|
if (resp.status == "success") {
|
|
myself.showStateFinalMsg(myself.dictJSON.pageremoved);
|
|
} else if (resp.status == "error") {
|
|
$(".pkt_ext_edit_msg").addClass("pkt_ext_edit_msg_error pkt_ext_edit_msg_active").text(resp.error.message);
|
|
}
|
|
});
|
|
}
|
|
});
|
|
};
|
|
this.initOpenListInput = function() {
|
|
$(".pkt_ext_openpocket").click(function(e) {
|
|
e.preventDefault();
|
|
thePKT_SAVED.sendMessage("openTabWithUrl",
|
|
{
|
|
url: $(this).attr("href"),
|
|
activate: true,
|
|
});
|
|
myself.closePopup();
|
|
});
|
|
};
|
|
this.showTagsError = function(msg) {
|
|
$(".pkt_ext_edit_msg").addClass("pkt_ext_edit_msg_error pkt_ext_edit_msg_active").text(msg);
|
|
$(".pkt_ext_tag_detail").addClass("pkt_ext_tag_error");
|
|
};
|
|
this.hideTagsError = function(msg) {
|
|
$(".pkt_ext_edit_msg").removeClass("pkt_ext_edit_msg_error pkt_ext_edit_msg_active").text("");
|
|
$(".pkt_ext_tag_detail").removeClass("pkt_ext_tag_error");
|
|
};
|
|
this.showActiveTags = function() {
|
|
if (!$(".pkt_ext_suggestedtag_detail").length) {
|
|
return;
|
|
}
|
|
var activetokenstext = "|";
|
|
$(".token-input-token").each(function(index, element) {
|
|
activetokenstext += $(element).find("p").text() + "|";
|
|
});
|
|
|
|
var inactivetags = $(".pkt_ext_suggestedtag_detail").find(".token_tag_inactive");
|
|
inactivetags.each(function(index, element) {
|
|
if (!activetokenstext.includes("|" + $(element).text() + "|")) {
|
|
$(element).removeClass("token_tag_inactive");
|
|
}
|
|
});
|
|
};
|
|
this.hideInactiveTags = function() {
|
|
if (!$(".pkt_ext_suggestedtag_detail").length) {
|
|
return;
|
|
}
|
|
var activetokenstext = "|";
|
|
$(".token-input-token").each(function(index, element) {
|
|
activetokenstext += $(element).find("p").text() + "|";
|
|
});
|
|
var activesuggestedtags = $(".token_tag").not(".token_tag_inactive");
|
|
activesuggestedtags.each(function(index, element) {
|
|
if (activetokenstext.indexOf("|" + $(element).text() + "|") > -1) {
|
|
$(element).addClass("token_tag_inactive");
|
|
}
|
|
});
|
|
};
|
|
this.showStateSaved = function(initobj) {
|
|
this.wrapper.find(".pkt_ext_detail h2").text(this.dictJSON.pagesaved);
|
|
this.wrapper.find(".pkt_ext_btn").addClass("pkt_ext_btn_disabled");
|
|
if (typeof initobj.item == "object") {
|
|
this.savedItemId = initobj.item.item_id;
|
|
this.savedUrl = initobj.item.given_url;
|
|
}
|
|
$(".pkt_ext_containersaved").addClass("pkt_ext_container_detailactive").removeClass("pkt_ext_container_finalstate");
|
|
|
|
if (initobj.ho2 && initobj.ho2 != "control"
|
|
&& !initobj.accountState.has_mobile
|
|
&& !myself.savedUrl.includes("getpocket.com")) {
|
|
myself.createSendToMobilePanel(initobj.ho2, initobj.displayName);
|
|
myself.ho2 = initobj.ho2;
|
|
}
|
|
|
|
myself.fillUserTags();
|
|
if (myself.suggestedTagsLoaded) {
|
|
myself.startCloseTimer();
|
|
} else {
|
|
myself.fillSuggestedTags();
|
|
}
|
|
};
|
|
this.createSendToMobilePanel = function(ho2, displayName) {
|
|
PKT_SENDTOMOBILE.create(ho2, displayName, myself.premiumDetailsAdded);
|
|
};
|
|
this.sanitizeText = function(s) {
|
|
var sanitizeMap = {
|
|
"&": "&",
|
|
"<": "<",
|
|
">": ">",
|
|
'"': """,
|
|
"'": "'",
|
|
};
|
|
if (typeof s !== "string") {
|
|
return "";
|
|
}
|
|
return String(s).replace(/[&<>"']/g, function(str) {
|
|
return sanitizeMap[str];
|
|
});
|
|
};
|
|
this.showStateFinalMsg = function(msg) {
|
|
this.wrapper.find(".pkt_ext_tag_detail").one("webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd", function(e) {
|
|
$(this).off("webkitTransitionEnd transitionend msTransitionEnd oTransitionEnd");
|
|
myself.preventCloseTimerCancel = true;
|
|
myself.startCloseTimer(myself.autocloseTimingFinalState);
|
|
myself.wrapper.find(".pkt_ext_detail h2").text(msg);
|
|
});
|
|
this.wrapper.addClass("pkt_ext_container_finalstate");
|
|
};
|
|
this.showStateError = function(headline, detail) {
|
|
this.wrapper.find(".pkt_ext_detail h2").text(headline);
|
|
this.wrapper.find(".pkt_ext_detail h3").text(detail);
|
|
this.wrapper.addClass("pkt_ext_container_detailactive pkt_ext_container_finalstate pkt_ext_container_finalerrorstate");
|
|
this.preventCloseTimerCancel = true;
|
|
this.startCloseTimer(myself.autocloseTimingFinalState);
|
|
};
|
|
this.getTranslations = function() {
|
|
this.dictJSON = window.pocketStrings;
|
|
};
|
|
};
|
|
|
|
PKT_SAVED_OVERLAY.prototype = {
|
|
create() {
|
|
if (this.active) {
|
|
return;
|
|
}
|
|
this.active = true;
|
|
|
|
// set translations
|
|
this.getTranslations();
|
|
|
|
// set host
|
|
this.dictJSON.pockethost = this.pockethost;
|
|
|
|
// extra modifier class for collapsed state
|
|
if (this.inoverflowmenu) {
|
|
$("body").addClass("pkt_ext_saved_overflow");
|
|
}
|
|
|
|
// extra modifier class for language
|
|
if (this.locale) {
|
|
$("body").addClass("pkt_ext_saved_" + this.locale);
|
|
}
|
|
|
|
// Create actual content
|
|
$("body").append(Handlebars.templates.saved_shell(this.dictJSON));
|
|
|
|
// Add in premium content (if applicable based on premium status)
|
|
this.createPremiumFunctionality();
|
|
|
|
// Initialize functionality for overlay
|
|
this.wrapper = $(".pkt_ext_containersaved");
|
|
this.initTagInput();
|
|
this.initAddTagInput();
|
|
this.initRemovePageInput();
|
|
this.initOpenListInput();
|
|
this.initAutoCloseEvents();
|
|
},
|
|
createPremiumFunctionality() {
|
|
if (this.premiumStatus && !$(".pkt_ext_suggestedtag_detail").length) {
|
|
this.premiumDetailsAdded = true;
|
|
$("body").append(Handlebars.templates.saved_premiumshell(this.dictJSON));
|
|
$(".pkt_ext_initload").append(Handlebars.templates.saved_premiumextras(this.dictJSON));
|
|
}
|
|
},
|
|
};
|
|
|
|
|
|
// Layer between Bookmarklet and Extensions
|
|
var PKT_SAVED = function() {};
|
|
|
|
PKT_SAVED.prototype = {
|
|
init() {
|
|
if (this.inited) {
|
|
return;
|
|
}
|
|
this.panelId = pktPanelMessaging.panelIdFromURL(window.location.href);
|
|
this.overlay = new PKT_SAVED_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() {
|
|
var myself = this;
|
|
var url = window.location.href.match(/premiumStatus=([\w|\d|\.]*)&?/);
|
|
if (url && url.length > 1) {
|
|
myself.overlay.premiumStatus = (url[1] == "1");
|
|
}
|
|
var fxasignedin = window.location.href.match(/fxasignedin=([\w|\d|\.]*)&?/);
|
|
if (fxasignedin && fxasignedin.length > 1) {
|
|
myself.overlay.fxasignedin = (fxasignedin[1] == "1");
|
|
}
|
|
var host = window.location.href.match(/pockethost=([\w|\.]*)&?/);
|
|
if (host && host.length > 1) {
|
|
myself.overlay.pockethost = host[1];
|
|
}
|
|
var inoverflowmenu = window.location.href.match(/inoverflowmenu=([\w|\.]*)&?/);
|
|
if (inoverflowmenu && inoverflowmenu.length > 1) {
|
|
myself.overlay.inoverflowmenu = (inoverflowmenu[1] == "true");
|
|
}
|
|
var locale = window.location.href.match(/locale=([\w|\.]*)&?/);
|
|
if (locale && locale.length > 1) {
|
|
myself.overlay.locale = locale[1].toLowerCase();
|
|
}
|
|
|
|
myself.overlay.create();
|
|
|
|
// tell back end we're ready
|
|
thePKT_SAVED.sendMessage("show");
|
|
|
|
// wait confirmation of save before flipping to final saved state
|
|
thePKT_SAVED.addMessageListener("saveLink", function(resp) {
|
|
if (resp.status == "error") {
|
|
if (typeof resp.error == "object") {
|
|
if (resp.error.localizedKey) {
|
|
myself.overlay.showStateError(myself.overlay.dictJSON.pagenotsaved, myself.overlay.dictJSON[resp.error.localizedKey]);
|
|
} else {
|
|
myself.overlay.showStateError(myself.overlay.dictJSON.pagenotsaved, resp.error.message);
|
|
}
|
|
} else {
|
|
myself.overlay.showStateError(myself.overlay.dictJSON.pagenotsaved, myself.overlay.dictJSON.errorgeneric);
|
|
}
|
|
return;
|
|
}
|
|
|
|
myself.overlay.showStateSaved(resp);
|
|
});
|
|
|
|
},
|
|
};
|
|
|
|
$(function() {
|
|
if (!window.thePKT_SAVED) {
|
|
var thePKT_SAVED = new PKT_SAVED();
|
|
/* global thePKT_SAVED */
|
|
window.thePKT_SAVED = thePKT_SAVED;
|
|
thePKT_SAVED.init();
|
|
}
|
|
|
|
var pocketHost = thePKT_SAVED.overlay.pockethost;
|
|
// send an async message to get string data
|
|
thePKT_SAVED.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_SAVED.create();
|
|
});
|
|
});
|