Преглед изворни кода

Merge pull request #17 from crowi/update-libs

Update dependencies
Sotaro KARASAWA пре 11 година
родитељ
комит
775ab521ce
9 измењених фајлова са 116 додато и 101 уклоњено
  1. 1 1
      Gruntfile.js
  2. 30 22
      app.js
  3. 4 3
      lib/routes/me.js
  4. 2 2
      lib/routes/page.js
  5. 3 3
      lib/util/middlewares.js
  6. 52 51
      lib/util/swigFunctions.js
  7. 1 1
      lib/views/_form.html
  8. 1 1
      lib/views/page.html
  9. 22 17
      package.json

+ 1 - 1
Gruntfile.js

@@ -71,7 +71,7 @@ module.exports = function(grunt) {
           '<%= dirs.jsDest %>/<%= pkg.name %>.js': [
             'bower_components/jquery/dist/jquery.js',
             'bower_components/bootstrap-sass-official/assets/javascripts/bootstrap.js',
-            'node_modules/socket.io-client/dist/socket.io.js',
+            'node_modules/socket.io-client/socket.io.js',
             'bower_components/marked/lib/marked.js',
             'bower_components/jquery.cookie/jquery.cookie.js',
             'bower_components/highlightjs/highlight.pack.js',

+ 30 - 22
app.js

@@ -6,17 +6,23 @@
  */
 
 var express  = require('express')
+  , bodyParser = require('body-parser')
+  , multer   = require('multer')
+  , morgan   = require('morgan')
+  , cookieParser = require('cookie-parser')
+  , methodOverride = require('method-override')
+  , errorHandler = require('errorhandler')
   , cons     = require('consolidate')
   , swig     = require('swig')
   , flash    = require('connect-flash')
   , http     = require('http')
   , facebook = require('facebook-node-sdk')
   , mongo    = require('mongoose')
-  , socketio = require('socket.io')
   , middleware = require('./lib/util/middlewares')
   , time     = require('time')
   , async    = require('async')
   , session  = require('express-session')
+  , debug    = require('debug')('crowi:appjs')
   , models
   , config
   , configModel
@@ -70,14 +76,15 @@ if (redisUrl) {
 
 app.set('port', process.env.PORT || 3000);
 app.use(express.static(__dirname + '/public'));
-app.use(express.logger());
 app.engine('html', cons.swig);
 app.set('view cache', false);
 app.set('view engine', 'html');
 app.set('views', __dirname + '/lib/views');
-app.use(express.methodOverride());
-app.use(express.bodyParser());
-app.use(express.cookieParser());
+app.use(methodOverride());
+app.use(bodyParser.urlencoded({ extended: true }));
+app.use(bodyParser.json());
+app.use(cookieParser());
+app.use(multer());
 app.use(session(sessionConfig));
 app.use(flash());
 
@@ -105,6 +112,7 @@ async.series([
     app.use(function(req, res, next) {
       var now = new Date()
         , fbparams = {}
+        , baseUrl
         , config = app.set('config');
 
       tzoffset = -(config.crowi['app:timezone'] || 9) * 60; // for datez
@@ -112,21 +120,20 @@ async.series([
 
       req.config = config;
 
-      config.crowi['app:url'] = req.baseUrl = (req.headers['x-forwarded-proto'] == 'https' ? 'https' : req.protocol) + '://' + req.get('host');
-      res.locals({
-        req: req,
-        baseUrl: req.baseUrl,
-        config: config,
-        env: app.get('env'),
-        now: now,
-        tzoffset: tzoffset,
-        facebook: {appId: config.crowi['facebook:appId'] || ''},
-        consts: {
+      config.crowi['app:url'] = baseUrl = (req.headers['x-forwarded-proto'] == 'https' ? 'https' : req.protocol) + '://' + req.get('host');
+
+      res.locals.req      = req;
+      res.locals.baseUrl  = baseUrl;
+      res.locals.config   = config;
+      res.locals.env      = app.get('env');
+      res.locals.now      = now;
+      res.locals.tzoffset = tzoffset;
+      res.locals.facebook = {appId: config.crowi['facebook:appId'] || ''};
+      res.locals.consts   = {
           pageGrants: models.Page.getGrantLabels(),
           userStatus: models.User.getUserStatusLabels(),
           registrationMode: models.Config.getRegistrationModeLabels(),
-        },
-      });
+      };
 
       next();
     });
@@ -159,14 +166,13 @@ async.series([
 
     app.use(middleware.loginChecker(app, models));
 
-    app.use(app.router);
-
     next();
   }, function(next) {
 
     if (env == 'development') {
       swig.setDefaults({ cache: false });
-      app.use(express.errorHandler({ dumpExceptions: true, showStack: true }));
+      app.use(errorHandler({ dumpExceptions: true, showStack: true }));
+      app.use(morgan('dev'));
 
       server = http.createServer(app).listen(app.get('port'), function(){
         console.log('[' + app.get('env') + '] Express server listening on port ' + app.get('port'));
@@ -175,6 +181,7 @@ async.series([
 
     if (env == 'production') {
       var oneYear = 31557600000;
+      app.use(morgan('combined'));
       app.use(function (err, req, res, next) {
         res.status(500);
         res.render('500', { error: err });
@@ -185,12 +192,13 @@ async.series([
       });
     }
 
-    var io = socketio.listen(server);
+    require('./lib/routes')(app);
+
+    var io = require('socket.io')(server);
     io.sockets.on('connection', function (socket) {
     });
 
     app.set('io', io);
-    require('./lib/routes')(app);
 
     next();
   }

+ 4 - 3
lib/routes/me.js

@@ -1,7 +1,8 @@
 module.exports = function(app) {
   'use strict';
 
-  var fs = require('fs')
+  var debug = require('debug')('crowi:routes:me')
+    , fs = require('fs')
     , models = app.set('models')
     , Page = models.Page
     , User = models.User
@@ -25,7 +26,7 @@ module.exports = function(app) {
     var filePath = User.createUserPictureFilePath(req.user, tmpFile.name);
     var acceptableFileType = /image\/.+/;
 
-    if (!tmpFile.headers['content-type'].match(acceptableFileType)) {
+    if (!tmpFile.mimetype.match(acceptableFileType)) {
       return res.json({
         'status': false,
         'message': 'File type error. Only image files is allowed to set as user picture.',
@@ -34,7 +35,7 @@ module.exports = function(app) {
 
     fileUploader.uploadFile(
       filePath,
-      tmpFile.headers['content-type'],
+      tmpFile.mimetype,
       fs.createReadStream(tmpPath, {
         flags: 'r',
         encoding: null,

+ 2 - 2
lib/routes/page.js

@@ -10,7 +10,7 @@ module.exports = function(app) {
     , actions = {};
 
   function getPathFromRequest(req) {
-    var path = '/' + (req.params.shift() || '');
+    var path = '/' + (req.params[0] || '');
     return path;
   }
 
@@ -88,7 +88,7 @@ module.exports = function(app) {
     var path = path || getPathFromRequest(req);
     var options = {};
 
-    res.locals({path: path});
+    res.locals.path = path;
 
     // pageShow は /* にマッチしてる最後の砦なので、creatableName でない routing は
     // これ以前に定義されているはずなので、こうしてしまって問題ない。

+ 3 - 3
lib/util/middlewares.js

@@ -9,13 +9,13 @@ exports.loginChecker = function(app, models) {
           next();
         } else {
           req.user = req.session.user = userData;
-          res.locals({user: req.user});
+          res.locals.user = req.user;
           next();
         }
       });
     } else {
       req.user = req.session.user = false;
-      res.locals({user: req.user});
+      res.locals.user = req.user;
       next();
     }
   };
@@ -23,7 +23,7 @@ exports.loginChecker = function(app, models) {
 
 exports.swigFunctions = function(app) {
   return function(req, res, next) {
-    res.locals(require('../util/swigFunctions')(app));
+    require('../util/swigFunctions')(app, res.locals);
     next();
   };
 };

+ 52 - 51
lib/util/swigFunctions.js

@@ -1,4 +1,4 @@
-module.exports = function(app) {
+module.exports = function(app, locals) {
   var debug = require('debug')('crowi:lib:swigFunctions')
     , models = app.set('models')
     , Page = models.Page
@@ -6,59 +6,60 @@ module.exports = function(app) {
     , config = app.set('config')
   ;
 
-  return {
-    facebookLoginEnabled: function() {
-      return config.crowi['facebook:appId'] && config.crowi['facebook:secret'];
-    },
-    googleLoginEnabled: function() {
-      return config.crowi['google:clientId'] && config.crowi['google:clientSecret'];
-    },
-    user_page_root: function(user) {
-      if (!user) {
+  locals.facebookLoginEnabled = function() {
+    return config.crowi['facebook:appId'] && config.crowi['facebook:secret'];
+  };
+
+  locals.googleLoginEnabled = function() {
+    return config.crowi['google:clientId'] && config.crowi['google:clientSecret'];
+  };
+
+  locals.user_page_root = function(user) {
+    if (!user) {
+      return '';
+    }
+    return '/user/' + user.username;
+  };
+
+  locals.css = {
+    grant: function (pageData) {
+      if (!pageData) {
         return '';
       }
-      return '/user/' + user.username;
-    },
-    css: {
-      grant: function (pageData) {
-        if (!pageData) {
-          return '';
-        }
 
-        switch (pageData.grant) {
-          case Page.GRANT_PUBLIC:
-            return 'grant-public';
-          case Page.GRANT_RESTRICTED:
-            return 'grant-restricted';
-          //case Page.GRANT_SPECIFIED:
-          //  return 'grant-specified';
-          //  break;
-          case Page.GRANT_OWNER:
-            return 'grant-owner';
-          default:
-            break;
-        }
-        return '';
-      },
-      userStatus: function (user) {
-        //debug('userStatus', user._id, user.usename, user.status);
+      switch (pageData.grant) {
+        case Page.GRANT_PUBLIC:
+          return 'grant-public';
+        case Page.GRANT_RESTRICTED:
+          return 'grant-restricted';
+        //case Page.GRANT_SPECIFIED:
+        //  return 'grant-specified';
+        //  break;
+        case Page.GRANT_OWNER:
+          return 'grant-owner';
+        default:
+          break;
+      }
+      return '';
+    },
+    userStatus: function (user) {
+      //debug('userStatus', user._id, user.usename, user.status);
 
-        switch (user.status) {
-          case User.STATUS_REGISTERED:
-            return 'label-info';
-          case User.STATUS_ACTIVE:
-            return 'label-success';
-          case User.STATUS_SUSPENDED:
-            return 'label-warning';
-          case User.STATUS_DELETED:
-            return 'label-danger';
-          case User.STATUS_INVITED:
-            return 'label-info';
-          default:
-            break;
-        }
-        return '';
-      },
-    }
+      switch (user.status) {
+        case User.STATUS_REGISTERED:
+          return 'label-info';
+        case User.STATUS_ACTIVE:
+          return 'label-success';
+        case User.STATUS_SUSPENDED:
+          return 'label-warning';
+        case User.STATUS_DELETED:
+          return 'label-danger';
+        case User.STATUS_INVITED:
+          return 'label-info';
+        default:
+          break;
+      }
+      return '';
+    },
   };
 };

+ 1 - 1
lib/views/_form.html

@@ -18,7 +18,7 @@
       <div class="form-submit-group form-group form-inline">
         <select name="pageForm[grant]" class="form-control">
           {% for grantId, grantLabel in consts.pageGrants %}
-          <option value="{{ grantId }}" {% if (pageForm.grant && grantId == pageForm.grant) || (page.grant == grantId ) %}selected{% endif %}>{{ grantLabel }}</option>
+          <option value="{{ grantId }}" {% if pageForm.grant|default(page.grant) == grantId %}selected{% endif %}>{{ grantLabel }}</option>
           {% endfor %}
         </select>
 

+ 1 - 1
lib/views/page.html

@@ -297,7 +297,7 @@ $(function() {
 <script>
   $(function() {
     var me = {{ user|json|safe }};
-    var socket = io.connect('{{ baseUrl }}');
+    var socket = io();
     socket.on('page edited', function (data) {
       if (data.user._id != me._id
         && data.page.path == {{ page.path|json|safe }}) {

+ 22 - 17
package.json

@@ -28,15 +28,18 @@
   "dependencies": {
     "async": "~0.9.0",
     "aws-sdk": "~2.0.0-rc.19",
+    "body-parser": "^1.12.0",
     "bower": "~1.3.12",
-    "cli": "~0.6.4",
-    "connect-flash": "~0.1.1",
+    "cli": "~0.6.0",
+    "connect-flash": "^0.1.1",
     "connect-redis": "^2.1.0",
-    "consolidate": "=0.10.0",
-    "debug": "^1.0.3",
-    "express": "=3.4.4",
-    "express-form": "~0.10.1",
-    "express-session": "~1.9.3",
+    "consolidate": "^0.11.0",
+    "cookie-parser": "^1.3.4",
+    "debug": "~2.1.0",
+    "errorhandler": "^1.3.4",
+    "express": "^4.12.0",
+    "express-form": "^0.12.0",
+    "express-session": "^1.10.0",
     "facebook-node-sdk": "=0.1.10",
     "googleapis": "=0.4.7",
     "grunt": "~0.4.5",
@@ -46,22 +49,24 @@
     "grunt-contrib-uglify": "~0.2.2",
     "grunt-contrib-watch": "~0.5.3",
     "grunt-mocha-test": "^0.12.7",
-    "grunt-sass": "~0.17.0",
-    "mongoose": "=3.8.14",
-    "mongoose-paginate": "~3.1.0",
+    "grunt-sass": "~0.18.0",
+    "method-override": "^2.3.1",
+    "mongoose": "^3.8.0",
+    "mongoose-paginate": "^3.1.0",
+    "morgan": "^1.5.1",
+    "multer": "^0.1.8",
     "nodemailer": "~1.2.2",
     "nodemailer-ses-transport": "~1.1.0",
     "redis": "~0.12.1",
-    "socket.io": "~0.9.16",
-    "socket.io-client": "~0.9.16",
-    "swig": "=1.3.2",
-    "time": "=0.10.0"
+    "socket.io": "^1.3.0",
+    "socket.io-client": "^1.3.0",
+    "swig": "^1.4.0",
+    "time": "^0.11.0"
   },
   "devDependencies": {
-    "blanket": "^1.1.6",
     "chai": "^1.10.0",
-    "mocha": "~2.1.0",
-    "proxyquire": "~1.3.0",
+    "mocha": "^2.1.0",
+    "proxyquire": "^1.3.0",
     "sinon": "^1.12.2",
     "sinon-chai": "^2.7.0"
   },