kopia lustrzana https://github.com/c9/core
175 wiersze
5.7 KiB
JavaScript
175 wiersze
5.7 KiB
JavaScript
|
define(function(require, exports, module) {
|
||
|
main.consumes = ["Plugin", "c9", "menus", "layout", "ui", "http", "c9.analytics"];
|
||
|
main.provides = ["help"];
|
||
|
return main;
|
||
|
|
||
|
function main(options, imports, register) {
|
||
|
var c9 = imports.c9;
|
||
|
var Plugin = imports.Plugin;
|
||
|
var http = imports.http;
|
||
|
var ui = imports.ui;
|
||
|
var menus = imports.menus;
|
||
|
var analytics = imports["c9.analytics"];
|
||
|
|
||
|
var markup = require("text!./help.xml");
|
||
|
var css = require("text!./style.css");
|
||
|
|
||
|
/***** Initialization *****/
|
||
|
|
||
|
var plugin = new Plugin("Ajax.org", main.consumes);
|
||
|
var emit = plugin.getEmitter();
|
||
|
|
||
|
var aboutDialog;
|
||
|
|
||
|
var loaded = false;
|
||
|
function load(){
|
||
|
if (loaded) return false;
|
||
|
loaded = true;
|
||
|
|
||
|
var mnuHelp = new ui.menu();
|
||
|
menus.addItemByPath("Support/", mnuHelp, 900, plugin);
|
||
|
|
||
|
// var parent = layout.findParent(plugin);
|
||
|
// ui.insertByIndex(parent, menus.get("Help").item, 500, plugin);
|
||
|
// ui.insertByIndex(parent, new ui.divider({
|
||
|
// skin : "c9-divider-double",
|
||
|
// "class" : "extrasdivider"
|
||
|
// }), 810, plugin);
|
||
|
|
||
|
menus.addItemByPath("Cloud9/About Cloud9", new ui.item({
|
||
|
onclick: function(){ showAbout(); }
|
||
|
}), 100, plugin);
|
||
|
|
||
|
var c = 0;
|
||
|
menus.addItemByPath("Support/Check Cloud9 Status", new ui.item({
|
||
|
onclick: function(){window.open('http://status.c9.io'); }
|
||
|
}), c += 100, plugin);
|
||
|
|
||
|
menus.addItemByPath("Support/~", new ui.divider(), c += 100, plugin);
|
||
|
|
||
|
menus.addItemByPath("Support/Get Help (Community)", new ui.item({
|
||
|
onclick: function(){
|
||
|
analytics.track("Visited Cloud9 Community");
|
||
|
window.open("https://community.c9.io");
|
||
|
}
|
||
|
}), c += 100, plugin);
|
||
|
|
||
|
menus.addItemByPath("Support/~", new ui.divider(), c += 300, plugin);
|
||
|
|
||
|
menus.addItemByPath("Support/Read Documentation", new ui.item({
|
||
|
onclick: function(){
|
||
|
window.open("https://docs.c9.io/docs");
|
||
|
}
|
||
|
}), c += 100, plugin);
|
||
|
menus.addItemByPath("Support/Request a Feature", new ui.item({
|
||
|
onclick: function() {
|
||
|
// draw();
|
||
|
window.open('https://community.c9.io/c/feature-requests');
|
||
|
}
|
||
|
}), c += 100, plugin);
|
||
|
menus.addItemByPath("Support/Go To YouTube Channel", new ui.item({
|
||
|
onclick: function(){
|
||
|
window.open('http://www.youtube.com/user/c9ide/videos?view=pl');
|
||
|
}
|
||
|
}), c += 100, plugin);
|
||
|
|
||
|
c = 0;
|
||
|
|
||
|
if (c9.hosted || c9.local) {
|
||
|
c9.on("state.change", fetchBlog);
|
||
|
fetchBlog();
|
||
|
}
|
||
|
|
||
|
var fetched = false;
|
||
|
function fetchBlog() {
|
||
|
if (fetched || !c9.has(c9.NETWORK))
|
||
|
return;
|
||
|
|
||
|
fetched = true;
|
||
|
var blogURL = "https://c9.io/site/?json=get_tag_posts&tag_slug=changelog&count=1";
|
||
|
|
||
|
http.jsonP(blogURL, function(jsonBlog) {
|
||
|
if (!jsonBlog) return;
|
||
|
|
||
|
var latestDate = "";
|
||
|
try {
|
||
|
// date format is 2012-11-06 21:41:07; convert it to something better lookin'
|
||
|
latestDate = " (" + jsonBlog.posts[0].date.split(" ")[0].replace(/-/g, ".") + ")";
|
||
|
} catch (e) {
|
||
|
console.error("Changelog JSON parse failed: " + e);
|
||
|
}
|
||
|
|
||
|
});
|
||
|
}
|
||
|
}
|
||
|
|
||
|
var drawn = false;
|
||
|
function draw(){
|
||
|
if (drawn) return;
|
||
|
drawn = true;
|
||
|
|
||
|
// Import Skin
|
||
|
ui.insertSkin({
|
||
|
name: "help-skin",
|
||
|
data: require("text!./skin.xml"),
|
||
|
"media-path" : options.staticPrefix + "/images/",
|
||
|
"icon-path" : options.staticPrefix + "/icons/"
|
||
|
}, plugin);
|
||
|
|
||
|
// Import CSS
|
||
|
ui.insertCss(css, options.staticPrefix, plugin);
|
||
|
|
||
|
// Create UI elements
|
||
|
ui.insertMarkup(null, markup, plugin);
|
||
|
|
||
|
aboutDialog = plugin.getElement("aboutDialog");
|
||
|
|
||
|
emit("draw");
|
||
|
}
|
||
|
|
||
|
/***** Methods *****/
|
||
|
|
||
|
function showAbout() {
|
||
|
draw();
|
||
|
|
||
|
aboutDialog.show();
|
||
|
// shorten commit hash in c9.version
|
||
|
var version = c9.version.replace(/([a-f\d]{10})[a-f\d]{30}/, "$1");
|
||
|
document.getElementById("c9Version").innerHTML
|
||
|
= ui.escapeXML("Version " + version);
|
||
|
}
|
||
|
|
||
|
/***** Lifecycle *****/
|
||
|
|
||
|
plugin.on("load", function(){
|
||
|
load();
|
||
|
});
|
||
|
plugin.on("enable", function(){
|
||
|
|
||
|
});
|
||
|
plugin.on("disable", function(){
|
||
|
|
||
|
});
|
||
|
plugin.on("unload", function(){
|
||
|
loaded = false;
|
||
|
drawn = false;
|
||
|
});
|
||
|
|
||
|
/***** Register and define API *****/
|
||
|
|
||
|
/**
|
||
|
* Renders the help menu in the top menu bar.
|
||
|
* @singleton
|
||
|
**/
|
||
|
plugin.freezePublicAPI({
|
||
|
/**
|
||
|
* Shows Cloud9 about dialog
|
||
|
*/
|
||
|
showAbout: showAbout
|
||
|
});
|
||
|
|
||
|
register(null, {
|
||
|
help: plugin
|
||
|
});
|
||
|
}
|
||
|
});
|