c9-core/plugins/c9.ide.dialog.common/upsell.js

90 wiersze
3.4 KiB
JavaScript

define(function(require, module, exports) {
main.consumes = ["Dialog", "util"];
main.provides = ["dialog.upsell"];
return main;
function main(options, imports, register) {
var Dialog = imports.Dialog;
var util = imports.util;
/***** Initialization *****/
var plugin = new Dialog("Ajax.org", main.consumes, {
name: "dialog.upsell",
allowClose: true,
modal: true,
elements: [
{ type: "filler" },
{ type: "button", id: "no", caption: "Cancel", hotkey: "ESC", skin: "c9-simple-btn", margin: "7 10 0 0" },
{ type: "button", id: "yes", caption: "Go Premium!", color: "green", "default": true, hotkey: "Y" }
]
});
/***** Methods *****/
function show(onYes, onNo, title, header, msg, options) {
if (!options)
options = {isHTML: true};
return plugin.queue(function(){
var cancel = options.cancel;
var metadata = options.metadata;
title = title || "This is a Premium feature";
header = header || "Upgrade to Premium Now!";
onYes = onYes || function() {};
onNo = onNo || function() {};
msg = msg || 'A better, faster, more versatile Cloud9 is just a click away. Check out our <a href="https://c9.io/pricing" target="_blank">amazing premium plans</a>.';
plugin.title = title;
plugin.heading = options && options.isHTML ? header : util.escapeXml(header);
plugin.body = options && options.isHTML ? msg : util.escapeXml(msg).replace(/\n/g, "<br>");
plugin.getElement("yes").setCaption(options.yes || "Go Premium!");
plugin.getElement("no").setCaption(options.no || "Cancel");
plugin.allowClose = cancel;
var gotYesNo = false;
plugin.once("hide", function(){
!gotYesNo && cancel && onNo(false, true, metadata);
});
plugin.update([
{ id: "yes", onclick: function(){
gotYesNo = true;
plugin.hide();
onYes(false, metadata);
}},
{ id: "no", onclick: function(){
gotYesNo = true;
plugin.hide();
onNo(false, false, metadata);
}}
]);
}, options.queue === false);
}
/***** Register *****/
/**
*
*/
plugin.freezePublicAPI({
/**
* @param {Function} onYes Callback for when user clicks the 'yes' button
* @param {Function} onNo Callback for when the user clicks the 'no' button
* @param {String} [title] Title for the dialog
* @param {String} [header] Header for the dialog body
* @param {String} [msg] Message to show the user.
* @param {Object} [options] Miscellaneous options
*/
show: show
});
register("", {
"dialog.upsell": plugin
});
}
});