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 amazing premium plans.'; plugin.title = title; plugin.heading = options && options.isHTML ? header : util.escapeXml(header); plugin.body = options && options.isHTML ? msg : util.escapeXml(msg).replace(/\n/g, "
"); 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 }); } });