diff --git a/README.md b/README.md index 57632169e..f9f83b49e 100644 --- a/README.md +++ b/README.md @@ -37,6 +37,7 @@ Repository | Reference | Recent Version [connect-mongo][connect-mongoGHUrl] | [Documentation][connect-mongoDOCUrl] | [![NPM version][connect-mongoNPMVersionImage]][connect-mongoNPMUrl] [cookie-parser][cookie-parserGHUrl] | [Documentation][cookie-parserDOCUrl] | [![NPM version][cookie-parserNPMVersionImage]][cookie-parserNPMUrl] [express][expressGHUrl] | [Documentation][expressDOCUrl] | [![NPM version][expressNPMVersionImage]][expressNPMUrl] +[express-minify][express-minifyGHUrl] | [Documentation][express-minifyDOCUrl] | [![NPM version][express-minifyNPMVersionImage]][express-minifyNPMUrl] [express-session][express-sessionGHUrl] | [Documentation][express-sessionDOCUrl] | [![NPM version][express-sessionNPMVersionImage]][express-sessionNPMUrl] [fakes3][fakes3GHUrl] | [Documentation][fakes3DOCUrl] | [![GEM version][fakes3GEMVersionImage]][fakes3GEMUrl] [font-awesome][font-awesomeGHUrl] | [Documentation][font-awesomeDOCUrl] | [![NPM version][font-awesomeNPMVersionImage]][font-awesomeNPMUrl] @@ -167,6 +168,11 @@ Repository | Reference | Recent Version | Referenced [expressNPMUrl]: https://www.npmjs.org/package/express [expressNPMVersionImage]: https://img.shields.io/npm/v/express.svg?style=flat +[express-minifyGHUrl]: https://github.com/breeswish/express-minify +[express-minifyDOCUrl]: https://github.com/breeswish/express-minify/blob/master/README.md +[express-minifyNPMUrl]: https://www.npmjs.org/package/express-minify +[express-minifyNPMVersionImage]: https://img.shields.io/npm/v/express-minify.svg?style=flat + [express-sessionGHUrl]: https://github.com/expressjs/session [express-sessionDOCUrl]: https://github.com/expressjs/session/blob/master/README.md [express-sessionNPMUrl]: https://npmjs.org/package/express-session diff --git a/app.js b/app.js index 0f5690d2e..5b6014560 100755 --- a/app.js +++ b/app.js @@ -84,7 +84,6 @@ app.use(session({ })); app.use(passport.initialize()); app.use(modifySessions.init(sessionStore)); -app.use(app.router); app.use(favicon(__dirname + '/public/images/favicon.ico')); // Set up the views diff --git a/controllers/admin.js b/controllers/admin.js index 6e7d0294e..898125d0e 100644 --- a/controllers/admin.js +++ b/controllers/admin.js @@ -93,7 +93,7 @@ exports.userAdmin = function (aReq, aRes, aNext) { // View everything about a particular user // This is mostly for debugging in production exports.adminUserView = function (aReq, aRes, aNext) { - var id = aReq.route.params.id; + var id = aReq.params.id; var thisUser = aReq.session.user; if (!userIsAdmin(aReq)) { return aNext(); } @@ -157,7 +157,7 @@ exports.adminJsonView = function (aReq, aRes, aNext) { exports.adminUserUpdate = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var username = aReq.route.params.username; + var username = aReq.params.username; User.findOne({ name: username diff --git a/controllers/auth.js b/controllers/auth.js index bf924f2ce..79b95f892 100644 --- a/controllers/auth.js +++ b/controllers/auth.js @@ -42,7 +42,7 @@ Strategy.find({}, function (aErr, aStrategies) { exports.auth = function (aReq, aRes, aNext) { var user = aReq.session.user; - var strategy = aReq.body.auth || aReq.route.params.strategy; + var strategy = aReq.body.auth || aReq.params.strategy; var username = aReq.body.username || aReq.session.username; function auth() { @@ -105,7 +105,7 @@ exports.auth = function (aReq, aRes, aNext) { }; exports.callback = function (aReq, aRes, aNext) { - var strategy = aReq.route.params.strategy; + var strategy = aReq.params.strategy; var username = aReq.session.username; var newstrategy = aReq.session.newstrategy; var strategyInstance = null; diff --git a/controllers/discussion.js b/controllers/discussion.js index 175f6989a..5d6323f3e 100644 --- a/controllers/discussion.js +++ b/controllers/discussion.js @@ -127,7 +127,7 @@ exports.categoryListPage = function (aReq, aRes, aNext) { exports.list = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var categorySlug = aReq.route.params.category; + var categorySlug = aReq.params.category; var category = _.findWhere(categories, { slug: categorySlug }); if (!category) @@ -213,8 +213,8 @@ exports.findDiscussion = findDiscussion; exports.show = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var categorySlug = aReq.route.params.category; - var topic = aReq.route.params.topic; + var categorySlug = aReq.params.category; + var topic = aReq.params.topic; var category = _.findWhere(categories, { slug: categorySlug }); if (!category) @@ -289,7 +289,7 @@ exports.newTopic = function (aReq, aRes, aNext) { if (!authedUser) return aRes.redirect('/login'); - var categorySlug = aReq.route.params.category; + var categorySlug = aReq.params.category; var category = _.findWhere(categories, { slug: categorySlug }); if (!category) @@ -403,7 +403,7 @@ exports.createTopic = function (aReq, aRes, aNext) { if (!authedUser) return aRes.redirect('/login'); - var categorySlug = aReq.route.params.category; + var categorySlug = aReq.params.category; var topic = aReq.body['discussion-topic']; var content = aReq.body['comment-content']; @@ -436,8 +436,8 @@ exports.createTopic = function (aReq, aRes, aNext) { // post route to create a new comment on an existing discussion exports.createComment = function (aReq, aRes, aNext) { - var category = aReq.route.params.category; - var topic = aReq.route.params.topic; + var category = aReq.params.category; + var topic = aReq.params.topic; var user = aReq.session.user; var content = aReq.body['comment-content']; var commentId = aReq.body['comment-id']; // for editing diff --git a/controllers/document.js b/controllers/document.js index 3ca123fe6..b568747fb 100644 --- a/controllers/document.js +++ b/controllers/document.js @@ -23,7 +23,7 @@ exports.view = function (aReq, aRes, aNext) { var tasks = []; var documentPath = null; - var document = aReq.route.params.document; + var document = aReq.params.document; var then = null; // Session diff --git a/controllers/group.js b/controllers/group.js index 0f664f277..16b82950e 100644 --- a/controllers/group.js +++ b/controllers/group.js @@ -30,8 +30,8 @@ function cleanGroupName(aName) { exports.search = function (aReq, aRes) { var queryStr = ''; var queryRegex = null; - var addTerm = aReq.route.params.addTerm; - var term = cleanGroupName(aReq.route.params.term); + var addTerm = aReq.params.addTerm; + var term = cleanGroupName(aReq.params.term); var terms = term.replace(/([.*+?^=!:${}()|\[\]\/\\])/g, '\\$1').split(/\s+/); var results = null; @@ -227,7 +227,7 @@ var setupGroupSidePanel = function (aOptions) { exports.view = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var groupNameSlug = aReq.route.params.groupname; + var groupNameSlug = aReq.params.groupname; var groupName = groupNameSlug.replace(/_+/g, ' '); Group.findOne({ diff --git a/controllers/issue.js b/controllers/issue.js index 9f53edbbf..75d332f1b 100644 --- a/controllers/issue.js +++ b/controllers/issue.js @@ -26,10 +26,10 @@ var orderDir = require('../libs/templateHelpers').orderDir; exports.list = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var type = aReq.route.params.type; - var username = aReq.route.params.username; - var scriptname = aReq.route.params.scriptname; - var open = aReq.route.params.open !== 'closed'; + var type = aReq.params.type; + var username = aReq.params.username; + var scriptname = aReq.params.scriptname; + var open = aReq.params.open !== 'closed'; var installNameSlug = username + '/' + scriptname; @@ -143,10 +143,10 @@ exports.list = function (aReq, aRes, aNext) { exports.view = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var type = aReq.route.params.type; - var username = aReq.route.params.username; - var scriptname = aReq.route.params.scriptname; - var topic = aReq.route.params.topic; + var type = aReq.params.type; + var username = aReq.params.username; + var scriptname = aReq.params.scriptname; + var topic = aReq.params.topic; var installNameSlug = username + '/' + scriptname; @@ -245,7 +245,7 @@ exports.open = function (aReq, aRes, aNext) { var topic = aReq.body['discussion-topic']; var content = aReq.body['comment-content']; - var type = aReq.route.params.type; + var type = aReq.params.type; var installNameSlug = scriptStorage.getInstallName(aReq); Script.findOne({ @@ -309,8 +309,8 @@ exports.open = function (aReq, aRes, aNext) { // post route to add a new comment to a discussion on an issue exports.comment = function (aReq, aRes, aNext) { - var type = aReq.route.params.type; - var topic = aReq.route.params.topic; + var type = aReq.params.type; + var topic = aReq.params.topic; var installName = scriptStorage.getInstallName(aReq); var category = type + '/' + installName + '/issues'; var user = aReq.session.user; @@ -337,11 +337,11 @@ exports.comment = function (aReq, aRes, aNext) { // Open or close and issue you are allowed exports.changeStatus = function (aReq, aRes, aNext) { - var type = aReq.route.params.type; - var topic = aReq.route.params.topic; + var type = aReq.params.type; + var topic = aReq.params.topic; var installName = scriptStorage.getInstallName(aReq); var category = type + '/' + installName + '/issues'; - var action = aReq.route.params.action; + var action = aReq.params.action; var user = aReq.session.user; var changed = false; diff --git a/controllers/moderation.js b/controllers/moderation.js index 469c387f8..474130460 100644 --- a/controllers/moderation.js +++ b/controllers/moderation.js @@ -21,7 +21,7 @@ var orderDir = require('../libs/templateHelpers').orderDir; exports.removedItemPage = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var removedItemId = aReq.route.params.id; + var removedItemId = aReq.params.id; // var options = {}; diff --git a/controllers/remove.js b/controllers/remove.js index 4d3465df0..b0c25c6a2 100644 --- a/controllers/remove.js +++ b/controllers/remove.js @@ -13,8 +13,8 @@ var destroySessions = require('../libs/modifySessions').destroy; // Simple controller to remove content and save it in the graveyard exports.rm = function (aReq, aRes, aNext) { - var type = aReq.route.params[0]; - var path = aReq.route.params[1]; + var type = aReq.params[0]; + var path = aReq.params[1]; var thisUser = aReq.session.user; switch (type) { diff --git a/controllers/script.js b/controllers/script.js index 921a1c548..f9a9609d2 100644 --- a/controllers/script.js +++ b/controllers/script.js @@ -30,7 +30,7 @@ var pageMetadata = require('../libs/templateHelpers').pageMetadata; // Let controllers know this is a `new` route exports.new = function (aController) { return (function (aReq, aRes, aNext) { - aReq.route.params.isNew = true; + aReq.params.isNew = true; aController(aReq, aRes, aNext); }); }; @@ -38,7 +38,7 @@ exports.new = function (aController) { // Let controllers know this is a `lib` route exports.lib = function (aController) { return (function (aReq, aRes, aNext) { - aReq.route.params.isLib = true; + aReq.params.isLib = true; aController(aReq, aRes, aNext); }); }; @@ -292,9 +292,9 @@ exports.view = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; var installNameSlug = scriptStorage.getInstallName(aReq); - var scriptAuthor = aReq.route.params.username; - var scriptNameSlug = aReq.route.params.scriptname; - var isLib = aReq.route.params.isLib; + var scriptAuthor = aReq.params.username; + var scriptNameSlug = aReq.params.scriptname; + var isLib = aReq.params.isLib; Script.findOne({ installName: scriptStorage @@ -354,12 +354,12 @@ exports.edit = function (aReq, aRes, aNext) { if (!authedUser) { return aRes.redirect('/login'); } // Support routes lacking the :username. TODO: Remove this functionality. - aReq.route.params.username = authedUser.name.toLowerCase(); + aReq.params.username = authedUser.name.toLowerCase(); var installNameSlug = scriptStorage.getInstallName(aReq); - var scriptAuthor = aReq.route.params.username; - var scriptNameSlug = aReq.route.params.scriptname; - var isLib = aReq.route.params.isLib; + var scriptAuthor = aReq.params.username; + var scriptNameSlug = aReq.params.scriptname; + var isLib = aReq.params.isLib; Script.findOne({ installName: scriptStorage @@ -436,10 +436,10 @@ exports.edit = function (aReq, aRes, aNext) { // Script voting exports.vote = function (aReq, aRes, aNext) { - var isLib = aReq.route.params.isLib; + var isLib = aReq.params.isLib; var installName = scriptStorage.getInstallName(aReq) + (isLib ? '.js' : '.user.js'); - var vote = aReq.route.params.vote; + var vote = aReq.params.vote; var user = aReq.session.user; var url = aReq._parsedUrl.pathname.split('/'); var unvote = false; @@ -520,9 +520,9 @@ exports.vote = function (aReq, aRes, aNext) { // Script flagging exports.flag = function (aReq, aRes, aNext) { - var isLib = aReq.route.params.isLib; + var isLib = aReq.params.isLib; var installName = scriptStorage.getInstallName(aReq); - var unflag = aReq.route.params.unflag; + var unflag = aReq.params.unflag; Script.findOne({ installName: scriptStorage .caseInsensitive(installName + (isLib ? '.js' : '.user.js')) }, diff --git a/controllers/scriptStorage.js b/controllers/scriptStorage.js index a5540da35..ac7706636 100644 --- a/controllers/scriptStorage.js +++ b/controllers/scriptStorage.js @@ -34,11 +34,11 @@ if (isPro) { } function getInstallName(aReq) { - return aReq.route.params.username + '/' + aReq.route.params.scriptname; + return aReq.params.username + '/' + aReq.params.scriptname; } exports.getInstallName = getInstallName; -function caseInsensitive (aInstallName) { +function caseInsensitive(aInstallName) { return new RegExp('^' + aInstallName.replace(/([.?*+^$[\]\\(){}|-])/g, "\\$1") + '$', 'i'); } @@ -73,10 +73,11 @@ exports.sendScript = function (aReq, aRes, aNext) { // Send the script aRes.set('Content-Type', 'text/javascript; charset=UTF-8'); + aRes._no_minify = true; aStream.pipe(aRes); // Don't count installs on raw source route - if (aScript.isLib || aReq.route.params.type) { return; } + if (aScript.isLib || aReq.params.type) { return; } // Update the install count ++aScript.installs; @@ -101,6 +102,7 @@ exports.sendMeta = function (aReq, aRes, aNext) { if (!aScript) { return aNext(); } aRes.set('Content-Type', 'text/javascript; charset=UTF-8'); + aRes._no_minify = true; meta = aScript.meta; // NOTE: Watchpoint aRes.write('// ==UserScript==\n'); diff --git a/controllers/user.js b/controllers/user.js index 5e9880afd..eca0ec872 100644 --- a/controllers/user.js +++ b/controllers/user.js @@ -226,7 +226,7 @@ exports.userListPage = function (aReq, aRes, aNext) { exports.view = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var username = aReq.route.params.username; + var username = aReq.params.username; User.findOne({ name: caseInsensitive(username) @@ -285,7 +285,7 @@ exports.view = function (aReq, aRes, aNext) { exports.userCommentListPage = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var username = aReq.route.params.username; + var username = aReq.params.username; User.findOne({ name: caseInsensitive(username) @@ -369,7 +369,7 @@ exports.userCommentListPage = function (aReq, aRes, aNext) { exports.userScriptListPage = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var username = aReq.route.params.username; + var username = aReq.params.username; User.findOne({ name: caseInsensitive(username) @@ -463,7 +463,7 @@ exports.userEditProfilePage = function (aReq, aRes, aNext) { if (!authedUser) { return aRes.redirect('/login'); } - var username = aReq.route.params.username; + var username = aReq.params.username; User.findOne({ _id: authedUser._id @@ -652,7 +652,7 @@ exports.edit = function (aReq, aRes, aNext) { // Page metadata pageMetadata(options, ['Edit Yourself', 'Users']); - aReq.route.params.push('author'); + aReq.params.push('author'); Strategy.find({}, function (aErr, aStrats) { var defaultStrategy = userStrats[userStrats.length - 1]; @@ -1217,7 +1217,7 @@ exports.userManageGitHubPage = function (aReq, aRes, aNext) { exports.uploadScript = function (aReq, aRes, aNext) { var user = aReq.session.user; - var isLib = aReq.route.params.isLib; + var isLib = aReq.params.isLib; var userjsRegex = /\.user\.js$/; var jsRegex = /\.js$/; var form = null; @@ -1306,7 +1306,7 @@ exports.update = function (aReq, aRes, aNext) { // Submit a script through the web editor exports.submitSource = function (aReq, aRes, aNext) { var user = aReq.session.user; - var isLib = aReq.route.params.isLib; + var isLib = aReq.params.isLib; var source = null; var url = null; @@ -1360,9 +1360,9 @@ exports.submitSource = function (aReq, aRes, aNext) { }; function getExistingScript(aReq, aOptions, aAuthedUser, aCallback) { - aOptions.isLib = aReq.route.params.isLib; + aOptions.isLib = aReq.params.isLib; - if (aReq.route.params.isNew) { + if (aReq.params.isNew) { // A user who isn't logged in can't write a new script if (!aAuthedUser) { return aCallback(null); } @@ -1378,7 +1378,7 @@ function getExistingScript(aReq, aOptions, aAuthedUser, aCallback) { aCallback(aOptions); } else { - aReq.route.params.scriptname += aOptions.isLib ? '.js' : '.user.js'; + aReq.params.scriptname += aOptions.isLib ? '.js' : '.user.js'; scriptStorage.getSource(aReq, function (aScript, aStream) { var bufs = []; var collaborators = []; @@ -1418,8 +1418,8 @@ exports.editScript = function (aReq, aRes, aNext) { var authedUser = aReq.session.user; - var isNew = aReq.route.params.isNew; - var isLib = aReq.route.params.isLib; + var isNew = aReq.params.isNew; + var isLib = aReq.params.isLib; // var options = {}; @@ -1447,8 +1447,8 @@ exports.editScript = function (aReq, aRes, aNext) { if (!isNew) { installNameSlug = scriptStorage.getInstallName(aReq); - scriptAuthor = aReq.route.params.username; - scriptNameSlug = aReq.route.params.scriptname; + scriptAuthor = aReq.params.username; + scriptNameSlug = aReq.params.scriptname; Script.findOne({ installName: scriptStorage @@ -1495,8 +1495,8 @@ exports.editScript = function (aReq, aRes, aNext) { // route to flag a user exports.flag = function (aReq, aRes, aNext) { - var username = aReq.route.params.username; - var unflag = aReq.route.params.unflag; + var username = aReq.params.username; + var unflag = aReq.params.unflag; User.findOne({ name: username }, function (aErr, aUser) { var fn = flagLib[unflag && unflag === 'unflag' ? 'unflag' : 'flag']; diff --git a/package.json b/package.json index 20b3c4bea..6c60dae9c 100644 --- a/package.json +++ b/package.json @@ -13,7 +13,7 @@ "compression": "1.2.0", "connect-mongo": "0.4.1", "cookie-parser": "1.3.3", - "express": "3.18.2", + "express": "4.10.2", "express-minify": "0.0.11", "express-session": "1.9.1", "font-awesome": "4.2.0", diff --git a/routes.js b/routes.js index ec0d78df2..eb3cb96c1 100644 --- a/routes.js +++ b/routes.js @@ -25,136 +25,121 @@ var statusCodePage = require('./libs/templateHelpers').statusCodePage; module.exports = function (aApp) { //--- Middleware - // Emulate app.route('/').VERB(callback).VERB(callback); from ExpressJS 4.x - var methods = ['get', 'post', 'put', 'head', 'delete', 'options']; - function app_route(aPath) { - var r = {}; - r.all = function (aCallback) { - aApp.all.call(aApp, aPath, aCallback); - }; - methods.forEach(function (aMethod) { - r[aMethod] = function (aCallback) { - aApp[aMethod].call(aApp, aPath, aCallback); - return r; - }; - }); - return r; - } //--- Routes // Authentication routes - app_route('/auth/').post(authentication.auth); - app_route('/auth/:strategy').get(authentication.auth); - app_route('/auth/:strategy/callback/').get(authentication.callback); - app_route('/login').get(main.register); - app_route('/register').get(main.register); - app_route('/logout').get(main.logout); + aApp.route('/auth/').post(authentication.auth); + aApp.route('/auth/:strategy').get(authentication.auth); + aApp.route('/auth/:strategy/callback/').get(authentication.callback); + aApp.route('/login').get(main.register); + aApp.route('/register').get(main.register); + aApp.route('/logout').get(main.logout); // User routes - app_route('/users').get(user.userListPage); - app_route('/users/:username').get(user.view); - app_route('/users/:username/comments').get(user.userCommentListPage); - app_route('/users/:username/scripts').get(user.userScriptListPage); - app_route('/users/:username/github').get(user.userManageGitHubPage).post(user.userManageGitHubPage); - app_route('/users/:username/github/repos').get(user.userGitHubRepoListPage); - app_route('/users/:username/github/repo').get(user.userGitHubRepoPage); - app_route('/users/:username/github/import').post(user.userGitHubImportScriptPage); - app_route('/users/:username/profile/edit').get(user.userEditProfilePage).post(user.update); - app_route('/users/:username/update').post(admin.adminUserUpdate); - app_route('/user/preferences').get(user.userEditPreferencesPage); - app_route('/user').get(function (aReq, aRes) { aRes.redirect('/users'); }); + aApp.route('/users').get(user.userListPage); + aApp.route('/users/:username').get(user.view); + aApp.route('/users/:username/comments').get(user.userCommentListPage); + aApp.route('/users/:username/scripts').get(user.userScriptListPage); + aApp.route('/users/:username/github').get(user.userManageGitHubPage).post(user.userManageGitHubPage); + aApp.route('/users/:username/github/repos').get(user.userGitHubRepoListPage); + aApp.route('/users/:username/github/repo').get(user.userGitHubRepoPage); + aApp.route('/users/:username/github/import').post(user.userGitHubImportScriptPage); + aApp.route('/users/:username/profile/edit').get(user.userEditProfilePage).post(user.update); + aApp.route('/users/:username/update').post(admin.adminUserUpdate); + aApp.route('/user/preferences').get(user.userEditPreferencesPage); + aApp.route('/user').get(function (aReq, aRes) { aRes.redirect('/users'); }); // Adding script/library routes - app_route('/user/add/scripts').get(user.newScriptPage); - app_route('/user/add/scripts/new').get(script.new(user.editScript)).post(script.new(user.submitSource)); - app_route('/user/add/scripts/upload').post(user.uploadScript); - app_route('/user/add/lib').get(user.newLibraryPage); - app_route('/user/add/lib/new').get(script.new(script.lib(user.editScript))).post(script.new(script.lib(user.submitSource))); - app_route('/user/add/lib/upload').post(script.lib(user.uploadScript)); - app_route('/user/add').get(function (aReq, aRes) { aRes.redirect('/user/add/scripts'); }); + aApp.route('/user/add/scripts').get(user.newScriptPage); + aApp.route('/user/add/scripts/new').get(script.new(user.editScript)).post(script.new(user.submitSource)); + aApp.route('/user/add/scripts/upload').post(user.uploadScript); + aApp.route('/user/add/lib').get(user.newLibraryPage); + aApp.route('/user/add/lib/new').get(script.new(script.lib(user.editScript))).post(script.new(script.lib(user.submitSource))); + aApp.route('/user/add/lib/upload').post(script.lib(user.uploadScript)); + aApp.route('/user/add').get(function (aReq, aRes) { aRes.redirect('/user/add/scripts'); }); // Script routes - app_route('/scripts/:username/:namespace?/:scriptname').get(script.view); - app_route('/script/:username/:namespace?/:scriptname/edit').get(script.edit).post(script.edit); - app_route('/script/:namespace?/:scriptname/edit').get(script.edit).post(script.edit); - app_route('/scripts/:username/:namespace?/:scriptname/source').get(user.editScript); - app_route('/scripts/:username').get(function (aReq, aRes) { - aRes.redirect('/users/' + aReq.route.params.username + '/scripts'); + aApp.route('/scripts/:username/:namespace?/:scriptname').get(script.view); + aApp.route('/script/:username/:namespace?/:scriptname/edit').get(script.edit).post(script.edit); + aApp.route('/script/:namespace?/:scriptname/edit').get(script.edit).post(script.edit); + aApp.route('/scripts/:username/:namespace?/:scriptname/source').get(user.editScript); + aApp.route('/scripts/:username').get(function (aReq, aRes) { + aRes.redirect('/users/' + aReq.params.username + '/scripts'); }); - app_route('/install/:username/:namespace?/:scriptname').get(scriptStorage.sendScript); - app_route('/meta/:username/:namespace?/:scriptname').get(scriptStorage.sendMeta); + aApp.route('/install/:username/:namespace?/:scriptname').get(scriptStorage.sendScript); + aApp.route('/meta/:username/:namespace?/:scriptname').get(scriptStorage.sendMeta); // Github hook routes - app_route('/github/hook').post(scriptStorage.webhook); - app_route('/github/service').post(function (aReq, aRes, aNext) { aNext(); }); - app_route('/github').get(function (aReq, aRes) { aRes.redirect('/'); }); + aApp.route('/github/hook').post(scriptStorage.webhook); + aApp.route('/github/service').post(function (aReq, aRes, aNext) { aNext(); }); + aApp.route('/github').get(function (aReq, aRes) { aRes.redirect('/'); }); // Library routes - app_route('/libs/:username/:scriptname').get(script.lib(script.view)); - app_route('/lib/:scriptname/edit').get(script.lib(script.edit)); - app_route('/lib/:scriptname/edit').post(script.lib(script.edit)); - app_route('/libs/:username/:scriptname/source').get(script.lib(user.editScript)); - app_route('/libs/src/:username/:scriptname').get(scriptStorage.sendScript); + aApp.route('/libs/:username/:scriptname').get(script.lib(script.view)); + aApp.route('/lib/:scriptname/edit').get(script.lib(script.edit)); + aApp.route('/lib/:scriptname/edit').post(script.lib(script.edit)); + aApp.route('/libs/:username/:scriptname/source').get(script.lib(user.editScript)); + aApp.route('/libs/src/:username/:scriptname').get(scriptStorage.sendScript); // Raw source - app_route('/src/:type(scripts|libs)/:username/:scriptname').get(scriptStorage.sendScript); - app_route('/libs/src/:username/:scriptname').get(scriptStorage.sendScript); // Legacy + aApp.route('/src/:type(scripts|libs)/:username/:scriptname').get(scriptStorage.sendScript); + aApp.route('/libs/src/:username/:scriptname').get(scriptStorage.sendScript); // Legacy // Issues routes - app_route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:open(closed)?').get(issue.list); - app_route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issue/new').get(issue.open).post(issue.open); - app_route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:topic').get(issue.view).post(issue.comment); - app_route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:topic/:action(close|reopen)').get(issue.changeStatus); + aApp.route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:open(closed)?').get(issue.list); + aApp.route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issue/new').get(issue.open).post(issue.open); + aApp.route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:topic').get(issue.view).post(issue.comment); + aApp.route('/:type(scripts|libs)/:username/:namespace?/:scriptname/issues/:topic/:action(close|reopen)').get(issue.changeStatus); // Admin routes - app_route('/admin').get(admin.adminPage); - app_route('/admin/authas').get(admin.authAsUser); - app_route('/admin/json').get(admin.adminJsonView); - app_route('/admin/user/:id').get(admin.adminUserView); - app_route('/admin/api').get(admin.adminApiKeysPage); - app_route('/admin/npmls').get(admin.adminNpmLsView); - app_route('/admin/api/update').post(admin.apiAdminUpdate); + aApp.route('/admin').get(admin.adminPage); + aApp.route('/admin/authas').get(admin.authAsUser); + aApp.route('/admin/json').get(admin.adminJsonView); + aApp.route('/admin/user/:id').get(admin.adminUserView); + aApp.route('/admin/api').get(admin.adminApiKeysPage); + aApp.route('/admin/npmls').get(admin.adminNpmLsView); + aApp.route('/admin/api/update').post(admin.apiAdminUpdate); // Moderation routes - app_route('/mod').get(moderation.modPage); - app_route('/mod/removed').get(moderation.removedItemListPage); - app_route('/mod/removed/:id').get(moderation.removedItemPage); + aApp.route('/mod').get(moderation.modPage); + aApp.route('/mod/removed').get(moderation.removedItemListPage); + aApp.route('/mod/removed/:id').get(moderation.removedItemPage); // Vote routes // TODO: Single vote route + POST - app_route('/vote/scripts/:username/:namespace?/:scriptname/:vote').get(script.vote); - app_route('/vote/libs/:username/:scriptname/:vote').get(script.lib(script.vote)); + aApp.route('/vote/scripts/:username/:namespace?/:scriptname/:vote').get(script.vote); + aApp.route('/vote/libs/:username/:scriptname/:vote').get(script.lib(script.vote)); // Flag routes // TODO: Single flag route + POST - app_route('/flag/users/:username/:unflag?').get(user.flag); - app_route('/flag/scripts/:username/:scriptname/:unflag?').get(script.flag); - app_route('/flag/libs/:username/:scriptname/:unflag?').get(script.lib(script.flag)); + aApp.route('/flag/users/:username/:unflag?').get(user.flag); + aApp.route('/flag/scripts/:username/:scriptname/:unflag?').get(script.flag); + aApp.route('/flag/libs/:username/:scriptname/:unflag?').get(script.lib(script.flag)); // Remove route // TODO: Make POST route - app_route(/^\/remove\/(.+?)\/(.+)$/).get(remove.rm); + aApp.route(/^\/remove\/(.+?)\/(.+)$/).get(remove.rm); // Group routes - app_route('/groups').get(group.list); - app_route('/group/:groupname').get(group.view); - app_route('/group').get(function (aReq, aRes) { aRes.redirect('/groups'); }); - app_route('/api/group/search/:term/:addTerm?').get(group.search); + aApp.route('/groups').get(group.list); + aApp.route('/group/:groupname').get(group.view); + aApp.route('/group').get(function (aReq, aRes) { aRes.redirect('/groups'); }); + aApp.route('/api/group/search/:term/:addTerm?').get(group.search); // Discussion routes // TODO: Update templates for new discussion routes - app_route('/forum').get(discussion.categoryListPage); - app_route('/:p(forum)?/:category(announcements|corner|garage|discuss)').get(discussion.list); - app_route('/:p(forum)?/:category(announcements|corner|garage|discuss)/:topic').get(discussion.show).post(discussion.createComment); - app_route('/:p(forum)?/:category(announcements|corner|garage|discuss)/new').get(discussion.newTopic).post(discussion.createTopic); + aApp.route('/forum').get(discussion.categoryListPage); + aApp.route('/:p(forum)?/:category(announcements|corner|garage|discuss)').get(discussion.list); + aApp.route('/:p(forum)?/:category(announcements|corner|garage|discuss)/:topic').get(discussion.show).post(discussion.createComment); + aApp.route('/:p(forum)?/:category(announcements|corner|garage|discuss)/new').get(discussion.newTopic).post(discussion.createTopic); // dupe - app_route('/post/:category(announcements|corner|garage|discuss)').get(discussion.newTopic).post(discussion.createTopic); + aApp.route('/post/:category(announcements|corner|garage|discuss)').get(discussion.newTopic).post(discussion.createTopic); // About document routes - app_route('/about/:document?').get(document.view); + aApp.route('/about/:document?').get(document.view); // Home route - app_route('/').get(main.home); + aApp.route('/').get(main.home); // Static Routes require('./routesStatic')(aApp);