Example #1
0
IdeServer.prototype.$serveIndex = function(req, res, next) {
    res.writeHead(200, {
        "cache-control": "no-transform",
        "Content-Type": "text/html"
    });

    var permissions = this.getPermissions(req);
    var plugins = c9util.arrayToMap(this.options.plugins);
    var bundledPlugins = c9util.arrayToMap(this.options.bundledPlugins);

    var client_exclude = c9util.arrayToMap(permissions.client_exclude.split("|"));
    for (var plugin in client_exclude)
        delete plugins[plugin];

    // TODO: Exclude applicable bundledPlugins

    var client_include = c9util.arrayToMap((permissions.client_include || "").split("|"));
    for (var plugin in client_include) {
        if (plugin)
            plugins[plugin] = 1;
    }

    var staticUrl = this.options.staticUrl;
    var workerUrl = this.options.workerUrl;
    var aceScripts = '<script type="text/javascript" data-ace-worker-path="static/js/worker" src="'
        + staticUrl + '/ace/build/ace'
        + (this.options.debug ? "-uncompressed" : "") + '.js"></script>\n';

    var loadedDetectionScript = "";
    if (this.options.local) {
        loadedDetectionScript = '<script type="text/javascript" src="c9local/ui/connected.js?workspaceId=' +
            this.options.workspaceId + '"></script>';
    }

    var replacements = {
        davPrefix: this.options.davPrefix,
        workspaceDir: this.options.workspaceDir,
        debug: this.options.debug,
        workerUrl: workerUrl,
        staticUrl: staticUrl,
        smithIo: JSON.stringify(this.options.smithIo),
        sessionId: req.sessionID, // set by connect
        uid: req.session.uid || req.session.anonid || 0,
        pid: this.options.pid || process.pid || 0,
        workspaceId: this.options.workspaceId,
        plugins: Object.keys(plugins),
        bundledPlugins: Object.keys(bundledPlugins),
        readonly: (permissions.fs !== "rw"),
        requirejsConfig: this.options.requirejsConfig,
        settingsXml: "",
        runners: this.options.runners,
        scripts: (this.options.debug || this.options.packed) ? "" : aceScripts,
        projectName: this.options.projectName,
        version: this.options.version,
        hosted: this.options.hosted.toString(),
        env: this.options.env || "local",
        packed: this.options.packed,
        packedName: this.options.packedName,
        local: this.options.local,
        loadedDetectionScript: loadedDetectionScript,
        _csrf: req.session && req.session._csrf || ""
    };

    var settingsPlugin = this.workspace.getExt("settings");
    var user = this.getUser(req);

    if (!settingsPlugin || !user) {
        var index = template.fill(INDEX_TMPL, replacements);
        res.end(index);
    }
    else {
        settingsPlugin.loadSettings(user, function(err, settings) {
            replacements.settingsXml = err || !settings ? "defaults" : settings.replace(/]]>/g, '&#093;&#093;&gt;');
            var index = template.fill(INDEX_TMPL, replacements);
            res.end(index);
        });
    }
}
Example #2
0
 settingsPlugin.loadSettings(user, function(err, settings) {
     replacements.settingsXml = err || !settings ? "defaults" : settings.replace(/]]>/g, '&#093;&#093;&gt;');
     var index = template.fill(INDEX_TMPL, replacements);
     res.end(index);
 });
Example #3
0
        fs.readFile(Path.join(__dirname, "/view/", indexFile), "utf8", function(err, index) {
            if (err)
                return next(err);

            res.writeHead(200, {
                "cache-control": "no-transform",
                "Content-Type": "text/html"
            });

            var permissions = _self.getPermissions(req);
            var plugins = c9util.arrayToMap(_self.options.plugins);
            var bundledPlugins = c9util.arrayToMap(_self.options.bundledPlugins);

            var client_exclude = c9util.arrayToMap(permissions.client_exclude.split("|"));
            for (var plugin in client_exclude)
                delete plugins[plugin];

            // TODO: Exclude applicable bundledPlugins

            var client_include = c9util.arrayToMap((permissions.client_include || "").split("|"));
            for (var plugin in client_include) {
                if (plugin)
                    plugins[plugin] = 1;
            }

            var staticUrl = _self.options.staticUrl;
            var workerUrl = _self.options.workerUrl;
            var aceScripts = '<script type="text/javascript" data-ace-worker-path="/static/js/worker" src="'
                + staticUrl + '/ace/build/ace'
                + (_self.options.debug ? "-uncompressed" : "") + '.js"></script>\n';

            var loadedDetectionScript = "";
            if (_self.options.local) {
                loadedDetectionScript = '<script type="text/javascript" src="/c9local/ui/connected.js?workspaceId=' + _self.options.workspaceId + '"></script>';
            }

            var replacements = {
                davPrefix: _self.options.davPrefix,
                workspaceDir: _self.options.workspaceDir,
                debug: _self.options.debug,
                workerUrl: workerUrl,
                staticUrl: staticUrl,
                socketIoUrl: _self.options.socketIoUrl,
                socketIoTransports: _self.options.socketIoTransports,
                sessionId: req.sessionID, // set by connect
                uid: req.session.uid || req.session.anonid || 0,
                pid: _self.options.pid || process.pid || 0,
                workspaceId: _self.options.workspaceId,
                plugins: Object.keys(plugins),
                bundledPlugins: Object.keys(bundledPlugins),
                readonly: (permissions.fs !== "rw"),
                requirejsConfig: _self.options.requirejsConfig,
                settingsXml: "",
                scripts: (_self.options.debug || _self.options.packed) ? "" : aceScripts,
                projectName: _self.options.projectName,
                version: _self.options.version,
                hosted: _self.options.hosted.toString(),
                env: _self.options.env || "local",
                packed: _self.options.packed,
                packedName: _self.options.packedName,
                local: _self.options.local,
                loadedDetectionScript: loadedDetectionScript
            };

            var settingsPlugin = _self.workspace.getExt("settings");
            var user = _self.getUser(req);

            if (!settingsPlugin || !user) {
                index = template.fill(index, replacements);
                res.end(index);
            }
            else {
                settingsPlugin.loadSettings(user, function(err, settings) {
                    replacements.settingsXml = err || !settings ? "defaults" : settings.replace(/]]>/g, '&#093;&#093;&gt;');
                    index = template.fill(index, replacements);
                    res.end(index);
                });
            }
        });