c9-core/plugins/c9.ide.info/info.js

102 wiersze
2.8 KiB
JavaScript

define(function(require, exports, module) {
var assert = require("c9/assert");
main.consumes = ["Plugin", "api"];
main.provides = ["info"];
return main;
function main(options, imports, register) {
var Plugin = imports.Plugin;
var api = imports.api;
assert(options.user && options.project,
"Both options.user and options.project need to be set for 'info' to work");
/***** Initialization *****/
var plugin = new Plugin("Ajax.org", main.consumes);
// var emit = plugin.getEmitter();
var user = options.user;
var project = options.project;
var loaded = false;
function load(){
if (loaded) return false;
loaded = true;
}
/***** Methods *****/
function getUser(callback, noCache) {
if (noCache) {
return api.user.get("", function(err, data){
if (err) return callback(err);
user = data;
callback(err, data);
});
}
return callback ? callback(null, user) : user;
}
function getWorkspace(callback, noCache) {
if (noCache) {
return api.project.get("", function(err, data){
if (err) return callback(err);
project = data;
callback(err, data);
});
}
return callback ? callback(null, project) : project;
}
/***** Lifecycle *****/
plugin.on("load", function(){
load();
});
plugin.on("enable", function(){
});
plugin.on("disable", function(){
});
plugin.on("unload", function(){
loaded = false;
});
/***** Register and define API *****/
/**
* Provides information about the loggedin user and workspace
**/
plugin.freezePublicAPI({
/**
* Returns the logged in user.
* @return {Object} The currently user
*/
getUser: getUser,
/**
* Return the active workspace.
* @return {Object} The currently active workspace
*/
getWorkspace: getWorkspace,
_events: [
/**
* @event afterfilesave Fires after a file is saved
* @param {Object} e
* @param node {XMLNode} description
* @param oldpath {String} description
*/
"afterfilesave"
]
});
register(null, {
info: plugin
});
}
});