Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
34 commits
Select commit Hold shift + click to select a range
ad49ea7
try branch dev
hakimelek May 27, 2015
3d52c8e
deleted file
hakimelek May 28, 2015
48e076d
project module generated
hakimelek May 29, 2015
c22ccdf
Ignore config/env
listenaddress May 29, 2015
9de64d5
Update README.md
listenaddress May 29, 2015
fc23ab9
projectwork
listenaddress May 29, 2015
93d6c08
projectwork Merge branch 'project' of https://github.com/thomasbeta/o…
listenaddress May 29, 2015
c4a7c21
more project work
listenaddress May 30, 2015
2eed0a1
not too much changes
hakimelek May 30, 2015
454eccc
bla bla bla
hakimelek May 30, 2015
036b81f
editing/deleting comments & nested comments
listenaddress May 30, 2015
17b6eb8
comment editing and socketing
listenaddress May 31, 2015
46bad75
pulled thomasbeta changes
hakimelek May 31, 2015
9fe3537
changed some styles
hakimelek May 31, 2015
7005881
Removed 'contributors' from model, for now
listenaddress May 31, 2015
67a6ccd
project notes added
listenaddress Jun 1, 2015
2c10452
pulling project erge branch 'project' of https://github.com/thomasbet…
listenaddress Jun 1, 2015
5538f9f
bla bla
hakimelek Jun 1, 2015
7b1be82
bla bla
hakimelek Jun 1, 2015
bc5f666
TextAngular added to notes
hakimelek Jun 1, 2015
8453fc8
project work
listenaddress Jun 1, 2015
3bbc809
merge cleanup
listenaddress Jun 1, 2015
67ec36d
note comments & editing while socketing
listenaddress Jun 2, 2015
e03de9a
editing and commenting during socket updates
listenaddress Jun 2, 2015
dec12b6
textangular working on projects & notes
listenaddress Jun 3, 2015
ae6c5b4
activity model & server init
listenaddress Jun 5, 2015
2169765
lolz. right. variables.
listenaddress Jun 5, 2015
b738574
css cleaned
listenaddress Jun 5, 2015
74b102e
Update README.md
listenaddress Jul 7, 2015
3674060
keynote
listenaddress Jul 9, 2015
bdb70f6
other stuff
listenaddress Jul 9, 2015
30f1317
Update README.md
listenaddress Jul 9, 2015
c2ff78a
Update projectsObj.client.service.js
listenaddress Jul 9, 2015
78d25e3
project work
listenaddress Sep 7, 2015
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ npm-debug.log
node_modules/
public/lib
app/tests/coverage/
config/env
.bower-*/
.idea/
.idea/
48 changes: 48 additions & 0 deletions Extended Keynotes
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
Extended Keynotes and illistrators

openwork
project
- create project
list notes
note
- create notes
profile
notifications
sign up
save email
tour
1/7 what are projects for?
- share what you're working on in public
- a single space to talk about your community's ideas & feedback
- invite friends to work on projects with you
- let new homies dig into your work and collaborate right away
- see example
- see another example
2/7 strt first project
- title
- sub-title
- description
- start
3/7 invite people to project by email
- input
- add
4/7 follow other projects
- project
- name
- description
- user
- follow button
5/7 what is activity?
- here's your activity
- here's other activity
6/7 make first post
- input
7/7 follow other people
- person
- name
- bio
- follow button
end on profile

portfolio
home (projects, contact)
Binary file added Openwork.pdf
Binary file not shown.
10 changes: 9 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,2 +1,10 @@
## Openwork
Welcome
Welcome. We're building a public space to organize, share, and collaborate on any project. Somewhere to see what others are working on and the projects they contribute to, and then be able to jump in and collaborate instantly.

Here's a simple prototype I made in keynote: https://github.com/thomasbeta/openwork/blob/master/Openwork.pdf

This app is using [MEAN.JS Official Yeoman Generator](http://meanjs.org/). S/o to that project.

## License

[BSD license](http://opensource.org/licenses/bsd-license.php)
59 changes: 59 additions & 0 deletions app/controllers/activities.server.controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
'use strict';

/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
errorHandler = require('./errors.server.controller'),
Activity = mongoose.model('Activity');

/**
* List of Activities
*/
exports.list = function(req, res) {
Activity.find().sort('-created').populate('user', 'displayName').exec(function(err, projects) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(projects);
}
});
};


/**
* Create activity instance
*/
exports.create = function(obj) {
// config activity object with user, object id's, action type
// config activity string
// socket object

var ActivityObj = new Activity({
user: obj.userObj._id,
projectId: obj.projectId,
noteId: obj.noteId,
commentId: obj.commentId,
nestedCommentId: obj.nestedCommentId,
activityType: obj.activityType
});

if (obj.activityType === 1) {
ActivityObj.activityString = obj.userObj.username + ' created a new project called ' + obj.name;
} else if (obj.activityType === 2) {
ActivityObj.activityString = obj.userObj.username + ' created a new note called ' + obj.newNote.title;
}

ActivityObj.save(function(err) {
if (err) {
console.log(err);
} else {
// socket
console.log('string here');
console.log(ActivityObj.activityString);
}
});

};
266 changes: 266 additions & 0 deletions app/controllers/projects.server.controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,266 @@
'use strict';

/**
* Module dependencies.
*/
var mongoose = require('mongoose'),
errorHandler = require('./errors.server.controller'),
Project = mongoose.model('Project'),
activityHandler = require('./activities.server.controller'),
_ = require('lodash');

/**
* Create a Project
*/
exports.create = function(req, res) {
var project = new Project(req.body);
project.user = req.user;

project.save(function(err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
project.activityType = 1;
project.userObj = req.user;
project.projectId = project._id;
activityHandler.create(project);
res.jsonp(project);
}
});
};

/**
* Show the current Project
*/
exports.read = function(req, res) {
res.jsonp(req.project);
};

/**
* Update a Project
*/
exports.update = function(req, res, next) {
Project.findById(req.body._id).exec(function(err, project) {
project.followers.push(req.user._id);
console.log(project.followers);
project.save(function(err, projectSaved) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
// projectSaved.followProject = true;
// projectSaved.activityType = 4;
// projectSaved.userObj = req.user;
// activityHandler.create(projectSaved);
// console.log('about to respond in followProject');
var obj = {
hey: 'hey'
};
res.jsonp(projectSaved);
}
});
});
// if (req.body.projectComment || req.body.newNote || req.body.noteComment || req.body.followProject ) {
// next();
// }
// console.log('in update');
// var project = req.project ;
// project = _.extend(project , req.body);
// console.log(req.body.updatedNote);
// project.updatedNote = req.body.updatedNote;
// console.log(project.updatedNote);
// var newNote = req.body.newNote;
// console.log('heres new note');

// project.save(function(err) {
// if (err) {
// return res.status(400).send({
// message: errorHandler.getErrorMessage(err)
// });
// } else {
// project
// .populate('user', 'username providerData.profile_image_url_https')
// .populate('notes.comments.user', 'username providerData.profile_image_url_https')
// .populate('notes.comments.comments.user', 'username providerData.profile_image_url_https')
// .populate('comments.user', 'username providerData.profile_image_url_https')
// .populate('comments.comments.user', 'username providerData.profile_image_url_https', function() {
// project.userObj = req.user;
// if (newNote) {
// project.newNote = project.notes[project.notes.length - 1];
// project.activityType = 2;
// activityHandler.create(project);
// }
// // else if (noteComment) {
// // project.projectId = project._id;
// // project.noteId = req.body.updatedNote;
// // }
// res.jsonp(project);
// });
// }
// });
};

/**
* Create a note
*/
exports.createProjectComment = function(req, res, next) {
console.log('in create 12');
if (req.body.newNote || req.body.noteComment || req.body.followProject ) {
next();
} else {
console.log('in create');
Project.findById(req.body._id)
.exec(function(err, project) {
project.comments.push(req.body.projectComment);
project.save(function(err, projectSaved) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
console.log('in else in cpc');
projectSaved
.populate('user', 'username providerData.profile_image_url_https')
.populate('notes.comments.user', 'username providerData.profile_image_url_https')
.populate('notes.comments.comments.user', 'username providerData.profile_image_url_https')
.populate('comments.user', 'username providerData.profile_image_url_https')
.populate('comments.comments.user', 'username providerData.profile_image_url_https', function() {
projectSaved.newComment = projectSaved.comments[projectSaved.comments.length - 1];
projectSaved.activityType = 3;
projectSaved.userObj = req.user;
activityHandler.create(projectSaved);
console.log('about to res');
res.jsonp(projectSaved);
});
}
});
});
}
};

/**
* Create a note
*/
exports.createNote = function(req, res, next) {
console.log('in create note');
if (req.body.noteComment || req.body.followProject ) {
next();
}


Project.findById(req.body._id).exec(function(err, project) {
project.notes.push(req.body.newNote);
project.save(function(err, projectSaved) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
projectSaved.newNote = projectSaved.notes[projectSaved.notes.length - 1];
projectSaved.activityType = 2;
projectSaved.userObj = req.user;
activityHandler.create(projectSaved);
console.log('about to res in note');
res.jsonp(projectSaved);
}
});
});
};

exports.createNoteComment = function(req, res, next) {
if (req.body.noteComment || req.body.projectComment || req.body.followProject ) {
next();
}
};

exports.followProject = function(req, res, next) {
var thisUser = req.user._id;

Project.findById(req.body._id).exec(function(err, project) {
project.followers.push(req.user._id);
console.log(project.followers);
project.save(function(err, projectSaved) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
// projectSaved.followProject = true;
// projectSaved.activityType = 4;
// projectSaved.userObj = req.user;
// activityHandler.create(projectSaved);
// console.log('about to respond in followProject');
var obj = {
hey: 'hey'
};
res.jsonp(obj);
}
});
});

};

/**
* Delete an Project
*/
exports.delete = function(req, res) {
var project = req.project ;

project.remove(function(err) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(project);
}
});
};

/**
* List of Projects
*/
exports.list = function(req, res) {
Project.find().sort('-created').populate('user', 'displayName').exec(function(err, projects) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
res.jsonp(projects);
}
});
};

/**
* Project middleware
*/
exports.projectByID = function(req, res, next, id) {
Project.findById(id)
.populate('user', 'displayName')
.populate('user', 'username providerData.profile_image_url_https')
.populate('notes.comments.user', 'username providerData.profile_image_url_https')
.populate('notes.comments.comments.user', 'username providerData.profile_image_url_https')
.populate('comments.user', 'username providerData.profile_image_url_https')
.populate('comments.comments.user', 'username providerData.profile_image_url_https')
.exec(function(err, project) {
if (err) return next(err);
if (! project) return next(new Error('Failed to load Project ' + id));
req.project = project ;
next();
}
);
};

/**
* Project authorization middleware
*/
exports.hasAuthorization = function(req, res, next) {
if (req.project.user.id !== req.user.id) {
return res.status(403).send('User is not authorized');
}
next();
};
Loading