diff --git a/mc_modules/microcommunity-basic/client/templates/items/photo.html b/mc_modules/microcommunity-basic/client/templates/items/photo.html index a3f84bb..a6640f6 100644 --- a/mc_modules/microcommunity-basic/client/templates/items/photo.html +++ b/mc_modules/microcommunity-basic/client/templates/items/photo.html @@ -2,5 +2,5 @@ <%= nl2br(content, false) %>

- +

diff --git a/mc_modules/microcommunity-basic/client/templates/publishers/photo.html b/mc_modules/microcommunity-basic/client/templates/publishers/photo.html index 8886c5b..20a9a4b 100644 --- a/mc_modules/microcommunity-basic/client/templates/publishers/photo.html +++ b/mc_modules/microcommunity-basic/client/templates/publishers/photo.html @@ -1,3 +1,9 @@ - + +
+
+
+
+
+
diff --git a/mc_modules/microcommunity-basic/client/views/publishers/photo.js b/mc_modules/microcommunity-basic/client/views/publishers/photo.js index ad576e2..2becb92 100644 --- a/mc_modules/microcommunity-basic/client/views/publishers/photo.js +++ b/mc_modules/microcommunity-basic/client/views/publishers/photo.js @@ -1,27 +1,70 @@ define([ 'bb', - 'text!templates/publishers/photo.html' + 'text!templates/publishers/photo.html', + 'jquery.fileupload' ], function(Backbone, html){ var PhotoPublisher = Backbone.Marionette.ItemView.extend({ + initialize : function(){ + this.filePath = '' + }, template : html, ui : { - content : '#photo-content' - }, + content : '#photo-content', + file : '#file-upload', + progress : '.progress', + progressBar : '.progress .bar', + preview : '.preview' + }, + events : { + 'click #post-content' : 'expand' + }, exportData : function(){ return { - content : this.ui.content.val() + content : this.ui.content.val(), + filePath : this.filePath } }, reset : function(){ this.ui.content.val("") + this.ui.preview.html("") + this.ui.progressBar.css('width', '0%'); }, disable : function(){ this.ui.content.prop("disabled", true) }, enable : function(){ this.ui.content.prop("disabled", false) - } + }, + onRender : function(){ + var self = this + this.ui.file.fileupload({ + done : function(e, data){ + data.result.files.forEach(function(file){ + self.ui.preview.html("") + self.filePath = file.url + }) + }, + progressall : function(e, data){ + var progress = parseInt(data.loaded / data.total * 100, 10); + self.ui.progressBar.css('width', progress + '%'); + if (progress == 100){ + self.ui.progress.removeClass('active') + } + }, + add : function(e, data){ + var isImage = /^image/ + if (isImage.test(data.files[0].type)){ + data.submit() + } else { + alert("You should select an image") + } + } + }) + }, + expand : function(){ + this.ui.content.attr("rows","3") + } }) diff --git a/mc_modules/microcommunity-basic/index.js b/mc_modules/microcommunity-basic/index.js index 5c84624..0e62c1e 100644 --- a/mc_modules/microcommunity-basic/index.js +++ b/mc_modules/microcommunity-basic/index.js @@ -178,17 +178,17 @@ module.exports = function(){ }) //api - app.post('/api/walls/user/photo', auth.ensureAuthenticated, function(req, res){ + app.post('/api/walls/:wall/user/photo', auth.ensureAuthenticated, function(req, res){ var photo = new Photo({ content : req.body.content, + filePath : req.body.filePath, author : req.body.author, wall : req.body.wall, streams : [req.user.stream] }) + photo.save(function(err){ - Photo.findById(photo.id, function(){ - res.send(photo) - }) + res.send(photo) }) }) @@ -230,6 +230,24 @@ module.exports = function(){ }) + app.post('/api/fileupload', function(req, res){ + var isImage = /^image/ + if (isImage.test(req.files.file.type)){ + microcommunity.files.saveFile(req.files.file, '/photos/', function(filePath){ + res.send({ files : [ + { + url : filePath + } + + ]}) + }) + } else { + res.send(500) + } + + }) + + return app } diff --git a/mc_modules/microcommunity-basic/models/photo.js b/mc_modules/microcommunity-basic/models/photo.js index c845a16..5d51be9 100644 --- a/mc_modules/microcommunity-basic/models/photo.js +++ b/mc_modules/microcommunity-basic/models/photo.js @@ -4,7 +4,8 @@ var mongoose = require('mongoose') , isItem = models.plugins.isItem var photoSchema = new mongoose.Schema({ - content: String + content: String, + filePath : String, }) photoSchema.plugin(isItem, { objectType : 'photo' }) diff --git a/mc_modules/microcommunity/can.js b/mc_modules/microcommunity/can.js index 47f4083..41bf363 100644 --- a/mc_modules/microcommunity/can.js +++ b/mc_modules/microcommunity/can.js @@ -7,10 +7,6 @@ var authorize = module.exports.authorize = function(object, objectType, action, var authorizeCollection = module.exports.authorizeCollection = function(collection, objectType, action, user, callback){ - - console.log(objectType) - console.log(action) - function authorizeForUser(user){ return function (object, callback){ authorize(object, objectType, action, user, callback) diff --git a/mc_modules/microcommunity/client/common.js b/mc_modules/microcommunity/client/common.js index e1a6945..247ad8c 100644 --- a/mc_modules/microcommunity/client/common.js +++ b/mc_modules/microcommunity/client/common.js @@ -1,5 +1,8 @@ requirejs.config({ baseUrl: "/client", + + urlArgs: "bust=" + (new Date()).getTime(), + paths: { @@ -17,12 +20,16 @@ requirejs.config({ bootstrap: 'lib/bootstrap', bootbox: 'lib/bootbox.min', 'jquery.gravatar': 'lib/jquery.gravatar', - 'jquery.spin': 'lib/jquery.spin', + 'jquery.spin': 'lib/jquery.spin', 'spin': 'lib/spin.min', 'md5' : 'lib/md5', 'general' : 'lib/general', 'moment' : 'lib/moment.min', - 'diff' : 'lib/diff' + 'diff' : 'lib/diff', + + 'jquery.ui.widget' : 'lib/jquery.ui.widget', + 'jquery.iframe-transport' : 'lib/jquery.iframe-transport', + 'jquery.fileupload' : 'lib/jquery.fileupload', }, shim: { @@ -46,7 +53,8 @@ requirejs.config({ 'diff' : [], 'bootstrap-notify': ['jquery'], 'bootbox' : ['bootstrap'], - 'bootstrap' : ['jquery'] + 'bootstrap' : ['jquery'], + 'jquery.fileupload' : ['jquery', 'jquery.ui.widget', 'jquery.iframe-transport' ] } }) diff --git a/mc_modules/microcommunity/models/user.js b/mc_modules/microcommunity/models/user.js index 5283f3c..e148c16 100644 --- a/mc_modules/microcommunity/models/user.js +++ b/mc_modules/microcommunity/models/user.js @@ -22,7 +22,6 @@ userSchema.methods.follow = function(object){ //var f = _.find(this.follows, function(follow){ return ( follow.toString() === object.stream.toString() ) }) //if (!f){ this.follows.push(object.stream) - console.log(this.follows) //} } @@ -31,7 +30,6 @@ userSchema.methods.loadFeed = function(callback){ , Item = mc.model('Item') var query = { streams : { $in : this.follows } } - console.log(query) Item.fetchItems(query, callback) }