From 95495926fc4635c89adf1a3cb06a0c67412026ae Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Mon, 9 Dec 2013 13:56:09 -0500 Subject: [PATCH 1/6] some fixes to composer image upload --- public/src/modules/composer.js | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/public/src/modules/composer.js b/public/src/modules/composer.js index 3858c1a379..34941f7518 100644 --- a/public/src/modules/composer.js +++ b/public/src/modules/composer.js @@ -7,18 +7,24 @@ define(['taskbar'], function(taskbar) { postContainer: undefined, }; - var uploadsInProgress = []; - function createImagePlaceholder(img) { var text = $('.post-window textarea').val(), textarea = $('.post-window textarea'), - imgText = "!["+img.name+"](uploading...)"; + imgText = "!["+img.name+"](uploading...)", + uuid = $('.post-window .imagedrop').parents('[data-uuid]').attr('data-uuid'); text += imgText; textarea.val(text + " "); - uploadsInProgress.push(1); - socket.emit("api:posts.uploadImage", img, function(err, data) { + if(!composer.posts[uuid].uploadsInProgress) { + composer.posts[uuid].uploadsInProgress = []; + } + composer.posts[uuid].uploadsInProgress.push(1); + + socket.emit("api:posts.uploadImage", img, function(err, data) { + if(err) { + return app.alertError(err.message); + } var currentText = textarea.val(); imgText = "!["+data.name+"](uploading...)"; @@ -26,14 +32,13 @@ define(['taskbar'], function(taskbar) { textarea.val(currentText.replace(imgText, "!["+data.name+"]("+data.url+")")); else textarea.val(currentText.replace(imgText, "!["+data.name+"](upload error)")); - uploadsInProgress.pop(); + composer.posts[uuid].uploadsInProgress.pop(); }); } function loadFile(file) { var reader = new FileReader(), - dropDiv = $('.post-window .imagedrop'), - uuid = dropDiv.parents('[data-uuid]').attr('data-uuid'); + dropDiv = $('.post-window .imagedrop'); $(reader).on('loadend', function(e) { var bin = this.result; @@ -68,8 +73,9 @@ define(['taskbar'], function(taskbar) { }); textarea.on('dragenter', function(e) { - if(draggingDocument) + if(draggingDocument) { return; + } drop.css('top', textarea.position().top + 'px'); drop.show(); @@ -133,8 +139,9 @@ define(['taskbar'], function(taskbar) { document.body.insertBefore(composer.postContainer, taskbar); - if(config.imgurClientIDSet) + if(config.imgurClientIDSet) { initializeFileReader(); + } socket.on('api:composer.push', function(threadData) { if (!threadData.error) { @@ -330,7 +337,7 @@ define(['taskbar'], function(taskbar) { titleEl.value = titleEl.value.trim(); bodyEl.value = bodyEl.value.trim(); - if(uploadsInProgress.length) { + if(postData.uploadsInProgress && postData.uploadsInProgress.length) { return app.alert({ type: 'warning', timeout: 2000, @@ -387,7 +394,6 @@ define(['taskbar'], function(taskbar) { if (composer.posts[post_uuid]) { $(composer.postContainer).find('.imagedrop').hide(); delete composer.posts[post_uuid]; - uploadsInProgress.length = 0; composer.minimize(); taskbar.discard('composer', post_uuid); } From 0000a7f0b921101534122aa37ef680548c8601de Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Mon, 9 Dec 2013 14:16:04 -0500 Subject: [PATCH 2/6] #631 --- package.json | 8 ++++---- src/database/mongo.js | 20 ++++++++++++++------ src/database/redis.js | 22 +++++++++++++++------- 3 files changed, 33 insertions(+), 17 deletions(-) diff --git a/package.json b/package.json index 84aa875645..8c7cb7eea9 100644 --- a/package.json +++ b/package.json @@ -14,14 +14,10 @@ }, "dependencies": { "socket.io": "~0.9.16", - "redis": "0.8.3", - "mongodb": "~1.3.19", "express": "3.2.0", "express-namespace": "~0.1.1", "emailjs": "0.3.4", "cookie": "0.0.6", - "connect-redis": "1.4.5", - "connect-mongo": "0.4.0", "passport": "0.1.17", "passport-local": "0.1.6", "passport-twitter": "0.1.5", @@ -50,6 +46,10 @@ "semver": "~2.2.1" }, "optionalDependencies": { + "redis": "0.8.3", + "mongodb": "~1.3.19", + "connect-redis": "1.4.5", + "connect-mongo": "0.4.0", "hiredis": "~0.1.15" }, "devDependencies": { diff --git a/src/database/mongo.js b/src/database/mongo.js index d6af3bc0b2..2a97b77997 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -2,17 +2,25 @@ (function(module) { 'use strict'; - var mongoClient = require('mongodb').MongoClient, - winston = require('winston'), + var winston = require('winston'), async = require('async'), nconf = require('nconf'), express = require('express'), - mongoStore = require('connect-mongo')(express), - mongoHost = nconf.get('mongo:host'), - db; + db, + mongoClient, + mongoStore; + + try { + mongoClient = require('mongodb').MongoClient; + mongoStore = require('connect-mongo')(express); + } catch (err) { + winston.error('Unable to initialize mongo! ' + err.message); + process.exit(); + } + module.init = function(callback) { - mongoClient.connect('mongodb://'+ mongoHost + ':' + nconf.get('mongo:port') + '/' + nconf.get('mongo:database'), function(err, _db) { + mongoClient.connect('mongodb://'+ nconf.get('mongo:host') + ':' + nconf.get('mongo:port') + '/' + nconf.get('mongo:database'), function(err, _db) { if(err) { winston.error("NodeBB could not connect to your Mongo database. Mongo returned the following error: " + err.message); process.exit(); diff --git a/src/database/redis.js b/src/database/redis.js index d24573384b..2cdf43843e 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -2,16 +2,24 @@ (function(module) { 'use strict'; - var redisClient, - redis = require('redis'), - winston = require('winston'), + var winston = require('winston'), nconf = require('nconf'), express = require('express'), - connectRedis = require('connect-redis')(express), - reds = require('reds'), - redis_socket_or_host = nconf.get('redis:host'), - utils = require('./../../public/src/utils.js'); + utils = require('./../../public/src/utils.js'), + redis, + connectRedis, + reds, + redisClient; + + try { + redis = require('redis'); + connectRedis = require('connect-redis')(express); + reds = require('reds'); + } catch (err) { + winston.error('Unable to initialize redis! ' + err.message); + process.exit(); + } if (redis_socket_or_host && redis_socket_or_host.indexOf('/')>=0) { From 5da4cead67e9a2fd2500bf069a2cdcf6407b6ce2 Mon Sep 17 00:00:00 2001 From: Baris Usakli Date: Mon, 9 Dec 2013 14:37:13 -0500 Subject: [PATCH 3/6] closes #631 --- src/database/mongo.js | 2 +- src/database/redis.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/database/mongo.js b/src/database/mongo.js index 2a97b77997..9be4c9e0bb 100644 --- a/src/database/mongo.js +++ b/src/database/mongo.js @@ -14,7 +14,7 @@ mongoClient = require('mongodb').MongoClient; mongoStore = require('connect-mongo')(express); } catch (err) { - winston.error('Unable to initialize mongo! ' + err.message); + winston.error('Unable to initialize MongoDB! Is MongoDB installed? Error :' + err.message); process.exit(); } diff --git a/src/database/redis.js b/src/database/redis.js index 2cdf43843e..b5de542089 100644 --- a/src/database/redis.js +++ b/src/database/redis.js @@ -17,7 +17,7 @@ connectRedis = require('connect-redis')(express); reds = require('reds'); } catch (err) { - winston.error('Unable to initialize redis! ' + err.message); + winston.error('Unable to initialize Redis! Is Redis installed? Error :' + err.message); process.exit(); } From 3ca58a438d9ce3d7f777e94d35c3649da1284a12 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 9 Dec 2013 14:44:26 -0500 Subject: [PATCH 4/6] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index fc4f0b468c..b0e79da577 100644 --- a/README.md +++ b/README.md @@ -23,7 +23,7 @@ NodeBB requires the following software to be installed: * A version of Node.js at least 0.8 or greater -* Redis, version 2.6 or greater. +* Redis, version 2.6 or greater or MongoDB, version 2.4 or greater * nginx, version 1.3.13 or greater (**only if** intending to use nginx to proxy requests to a NodeBB) ## Installation @@ -32,6 +32,8 @@ First, we install our base software stack: # apt-get install git nodejs redis-server npm build-essential imagemagick +If you want to use MongoDB instead of Redis install it from http://www.mongodb.org/downloads and remove 'redis-server' from the above command. + **If your package manager only installed a version of Node.js that is less than 0.8 (e.g. Ubuntu 12.10, 13.04):** # add-apt-repository ppa:chris-lea/node.js From ffe1549cad883d90d24c5b2caf20edf6d3e57182 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 9 Dec 2013 14:49:03 -0500 Subject: [PATCH 5/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b0e79da577..621f0414a2 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ First, we install our base software stack: # apt-get install git nodejs redis-server npm build-essential imagemagick -If you want to use MongoDB instead of Redis install it from http://www.mongodb.org/downloads and remove 'redis-server' from the above command. +If you want to use MongoDB instead of Redis install it from http://www.mongodb.org/downloads and remove 'redis-server' from the above command. [[MongoDB-Setup]] **If your package manager only installed a version of Node.js that is less than 0.8 (e.g. Ubuntu 12.10, 13.04):** From 14f35a8c6bdb504a7859de67f48825348c1fd8aa Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bar=C4=B1=C5=9F=20Soner=20U=C5=9Fakl=C4=B1?= Date: Mon, 9 Dec 2013 14:49:57 -0500 Subject: [PATCH 6/6] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 621f0414a2..96fa3b63ae 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,7 @@ First, we install our base software stack: # apt-get install git nodejs redis-server npm build-essential imagemagick -If you want to use MongoDB instead of Redis install it from http://www.mongodb.org/downloads and remove 'redis-server' from the above command. [[MongoDB-Setup]] +If you want to use MongoDB instead of Redis install it from http://www.mongodb.org/downloads and remove 'redis-server' from the above command. [MongoDB-Setup](https://github.com/designcreateplay/NodeBB/wiki/MongoDB-Setup) **If your package manager only installed a version of Node.js that is less than 0.8 (e.g. Ubuntu 12.10, 13.04):**