diff --git a/app/controllers/articles.server.controller.js b/app/controllers/articles.server.controller.js
deleted file mode 100755
index f5b4d27f..00000000
--- a/app/controllers/articles.server.controller.js
+++ /dev/null
@@ -1,120 +0,0 @@
-'use strict';
-
-/**
- * Module dependencies.
- */
-var mongoose = require('mongoose'),
- errorHandler = require('./errors.server.controller'),
- Article = mongoose.model('Article'),
- _ = require('lodash');
-
-/**
- * Create a article
- */
-exports.create = function(req, res) {
- var article = new Article(req.body);
- article.user = req.user;
-
- article.save(function(err) {
- if (err) {
- return res.status(400).send({
- message: errorHandler.getErrorMessage(err)
- });
- } else {
- res.json(article);
- }
- });
-};
-
-/**
- * Show the current article
- */
-exports.read = function(req, res) {
- res.json(req.article);
-};
-
-/**
- * Update a article
- */
-exports.update = function(req, res) {
- var article = req.article;
-
- article = _.extend(article, req.body);
-
- article.save(function(err) {
- if (err) {
- return res.status(400).send({
- message: errorHandler.getErrorMessage(err)
- });
- } else {
- res.json(article);
- }
- });
-};
-
-/**
- * Delete an article
- */
-exports.delete = function(req, res) {
- var article = req.article;
-
- article.remove(function(err) {
- if (err) {
- return res.status(400).send({
- message: errorHandler.getErrorMessage(err)
- });
- } else {
- res.json(article);
- }
- });
-};
-
-/**
- * List of Articles
- */
-exports.list = function(req, res) {
- Article.find().sort('-created').populate('user', 'displayName').exec(function(err, articles) {
- if (err) {
- return res.status(400).send({
- message: errorHandler.getErrorMessage(err)
- });
- } else {
- res.json(articles);
- }
- });
-};
-
-/**
- * Article middleware
- */
-exports.articleByID = function(req, res, next, id) {
-
- if (!mongoose.Types.ObjectId.isValid(id)) {
- return res.status(400).send({
- message: 'Article is invalid'
- });
- }
-
- Article.findById(id).populate('user', 'displayName').exec(function(err, article) {
- if (err) return next(err);
- if (!article) {
- return res.status(404).send({
- message: 'Article not found'
- });
- }
- req.article = article;
- next();
- });
-};
-
-/**
- * Article authorization middleware
- */
-exports.hasAuthorization = function(req, res, next) {
- if (req.article.user.id !== req.user.id) {
- return res.status(403).send({
- message: 'User is not authorized'
- });
- }
- next();
-};
diff --git a/app/controllers/forms.server.controller.js b/app/controllers/forms.server.controller.js
index a7291c31..451bd30e 100644
--- a/app/controllers/forms.server.controller.js
+++ b/app/controllers/forms.server.controller.js
@@ -8,7 +8,6 @@ var mongoose = require('mongoose'),
Form = mongoose.model('Form'),
FormSubmission = mongoose.model('FormSubmission'),
pdfFiller = require( 'pdffiller' ),
- PDFParser = require('pdf2json/pdfparser'),
config = require('../../config/config'),
fs = require('fs-extra'),
async = require('async'),
@@ -23,14 +22,12 @@ exports.create = function(req, res) {
form.admin = req.user;
form.save(function(err) {
-
if (err) {
console.log(err);
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
-
return res.json(form);
}
});
@@ -39,11 +36,11 @@ exports.create = function(req, res) {
/**
* Upload PDF
*/
-var upload_count = 0;
exports.uploadPDF = function(files, user, cb) {
- var parser = new PDFParser();
- console.log("upload count: "+upload_count);
- upload_count++;
+ var _user = JSON.parse(''+user);
+ console.log(_user.username);
+ console.log(config.tmpUploadPath);
+
if(files) {
console.log('inside uploadPDF');
@@ -57,7 +54,7 @@ exports.uploadPDF = function(files, user, cb) {
//If file exists move to user's tmp directory
if(exists) {
- var newDestination = path.join(config.tmpUploadPath, user.username);
+ var newDestination = path.join(config.tmpUploadPath, _user.username);
var stat = null;
try {
stat = fs.statSync(newDestination);
@@ -66,7 +63,7 @@ exports.uploadPDF = function(files, user, cb) {
}
if (stat && !stat.isDirectory()) {
console.log('Directory cannot be created');
- throw new Error('Directory cannot be created because an inode of a different type exists at "' + dest + '"');
+ throw new Error('Directory cannot be created because an inode of a different type exists at "' + newDestination + '"');
}
fs.move(pdfFile.path, path.join(newDestination, pdfFile.name), function (err) {
@@ -193,22 +190,25 @@ exports.delete = function(req, res) {
});
} else {
return res.status(200);
- // res.json(form);
}
});
};
/**
- * Get List of Template Forms
+ * Get All of Users' Forms
*/
exports.list = function(req, res) {
- Form.find({ type: 'template' }).sort('-created').populate('admin').exec(function(err, forms) {
+ //Allow 'admin' user to view all forms
+ var searchObj = {admin: req.user};
+ if(req.user.isAdmin()){
+ searchObj = {};
+ }
+ Form.find({}).sort('-created').populate('admin').exec(function(err, forms) {
if (err) {
return res.status(400).send({
message: errorHandler.getErrorMessage(err)
});
} else {
- console.log(forms);
return res.json(forms);
}
});
@@ -251,13 +251,11 @@ exports.hasAuthorization = function(req, res, next) {
var form = req.form;
- // console.log('\n\n\nreq.form:\n');
- // console.log(form);
- // console.log('req.user.id: '+req.user.id);
-
- if (req.form.admin.id !== req.user.id) {
+ // console.log(req.form.admin);
+ // console.log(req.user);
+ if (req.form.admin.id !== req.user.id || req.user.roles.indexOf('admin') === -1) {
return res.status(403).send({
- message: 'User is not authorized'
+ message: 'User '+req.user.username+' is not authorized'
});
}
next();
diff --git a/app/controllers/users/users.authorization.server.controller.js b/app/controllers/users/users.authorization.server.controller.js
index 0a615b34..932e4906 100755
--- a/app/controllers/users/users.authorization.server.controller.js
+++ b/app/controllers/users/users.authorization.server.controller.js
@@ -23,7 +23,6 @@ exports.userByID = function(req, res, next, id) {
* Require login routing middleware
*/
exports.requiresLogin = function(req, res, next) {
-
if (!req.isAuthenticated()) {
return res.status(401).send({
message: 'User is not logged in'
diff --git a/app/models/article.server.model.js b/app/models/article.server.model.js
deleted file mode 100755
index f2b89db8..00000000
--- a/app/models/article.server.model.js
+++ /dev/null
@@ -1,34 +0,0 @@
-'use strict';
-
-/**
- * Module dependencies.
- */
-var mongoose = require('mongoose'),
- Schema = mongoose.Schema;
-
-/**
- * Article Schema
- */
-var ArticleSchema = new Schema({
- created: {
- type: Date,
- default: Date.now
- },
- title: {
- type: String,
- default: '',
- trim: true,
- required: 'Title cannot be blank'
- },
- content: {
- type: String,
- default: '',
- trim: true
- },
- user: {
- type: Schema.ObjectId,
- ref: 'User'
- }
-});
-
-mongoose.model('Article', ArticleSchema);
diff --git a/app/models/form.server.model.js b/app/models/form.server.model.js
index dab0d4d6..b91529a9 100644
--- a/app/models/form.server.model.js
+++ b/app/models/form.server.model.js
@@ -59,6 +59,10 @@ var FormSchema = new Schema({
type: Boolean,
default: false,
},
+ isLive: {
+ type: Boolean,
+ default: true,
+ },
autofillPDFs: {
type: Boolean,
default: false,
@@ -109,6 +113,17 @@ FormSchema.pre('save', function (next) {
}
});
+//Delete template PDF of current Form
+FormSchema.pre('remove', function (next) {
+ if(this.pdf){
+ //Delete template form
+ fs.unlink(this.pdf.path, function(err){
+ if (err) throw err;
+ console.log('successfully deleted', this.pdf.path);
+ });
+ }
+});
+
//Autogenerate FORM from PDF if 'isGenerated' flag is 'true'
FormSchema.pre('save', function (next) {
var field, _form_fields;
diff --git a/app/models/user.server.model.js b/app/models/user.server.model.js
index c59c9da8..b815c6b9 100755
--- a/app/models/user.server.model.js
+++ b/app/models/user.server.model.js
@@ -144,4 +144,16 @@ UserSchema.statics.findUniqueUsername = function(username, suffix, callback) {
});
};
+/**
+ * Function to check if user has Admin priviledges
+ */
+UserSchema.methods.isAdmin = function() {
+
+ if(this.roles.indexOf('admin') !== -1){
+ return true;
+ }
+ return false;
+};
+
+
mongoose.model('User', UserSchema);
diff --git a/app/routes/articles.server.routes.js b/app/routes/articles.server.routes.js
deleted file mode 100755
index 9a93d059..00000000
--- a/app/routes/articles.server.routes.js
+++ /dev/null
@@ -1,22 +0,0 @@
-'use strict';
-
-/**
- * Module dependencies.
- */
-var users = require('../../app/controllers/users.server.controller'),
- articles = require('../../app/controllers/articles.server.controller');
-
-module.exports = function(app) {
- // Article Routes
- app.route('/articles')
- .get(articles.list)
- .post(users.requiresLogin, articles.create);
-
- app.route('/articles/:articleId')
- .get(articles.read)
- .put(users.requiresLogin, articles.hasAuthorization, articles.update)
- .delete(users.requiresLogin, articles.hasAuthorization, articles.delete);
-
- // Finish by binding the article middleware
- app.param('articleId', articles.articleByID);
-};
diff --git a/config/express.js b/config/express.js
index 5cc9d54e..f36c9863 100755
--- a/config/express.js
+++ b/config/express.js
@@ -106,10 +106,10 @@ module.exports = function(db) {
console.log(file.originalname + ' is starting ...');
},
onFileUploadComplete: function (file, req, res) {
- console.log('\n\nheadersSent in onFileUploadComplete: ', res.headersSent);
- // console.log(req.files.file[0]);
+ // console.log('\n\nheadersSent in onFileUploadComplete: ', res.headersSent);
+ console.log(req.body.user);
try{
- formCtrl.uploadPDF(req.files, function(_file){
+ formCtrl.uploadPDF(req.files, req.body.user, function(_file){
console.log(_file.filename + ' uploaded to ' + _file.path);
res.status(200).send(_file);
});
diff --git a/data1435634800654.fdf b/data1435634800654.fdf
deleted file mode 100644
index f6a09883..00000000
--- a/data1435634800654.fdf
+++ /dev/null
@@ -1,16 +0,0 @@
-%FDF-1.2
-%âãÏÓ
-1 0 obj
-<<
-/FDF
-<<
-/Fields []
->>
->>
-endobj
-trailer
-
-<<
-/Root 1 0 R
->>
-%%EOF
\ No newline at end of file
diff --git a/package.json b/package.json
index 3250e0e3..e8d6c8d6 100644
--- a/package.json
+++ b/package.json
@@ -47,7 +47,8 @@
"passport-local": "~1.0.0",
"passport-twitter": "~1.0.2",
"satelize": "^0.1.1",
- "swig": "~1.4.1"
+ "swig": "~1.4.1",
+ "then-fs": "^2.0.0"
},
"devDependencies": {
"supertest": "~0.14.0",
diff --git a/public/modules/core/controllers/header.client.controller.js b/public/modules/core/controllers/header.client.controller.js
index 2a2b3d49..0d584c2e 100755
--- a/public/modules/core/controllers/header.client.controller.js
+++ b/public/modules/core/controllers/header.client.controller.js
@@ -1,7 +1,7 @@
'use strict';
angular.module('core').controller('HeaderController', ['$rootScope','$scope','Menus', '$state', 'Auth', 'User',
- function($rootScope, $scope, Menus, $state, Auth, User) {
+ function ($rootScope, $scope, Menus, $state, Auth, User) {
$scope.user = $rootScope.user = Auth.ensureHasCurrentUser(User);
$scope.authentication = $rootScope.authentication = Auth;
diff --git a/public/modules/core/css/core.css b/public/modules/core/css/core.css
index 0b670576..bd008122 100755
--- a/public/modules/core/css/core.css
+++ b/public/modules/core/css/core.css
@@ -12,7 +12,7 @@
}
.content {
- margin-top: 100px;
+ margin-top: 70px;
}
.undecorated-link:hover {
text-decoration: none;
diff --git a/public/modules/forms/controllers/create-form.client.controller.js b/public/modules/forms/controllers/create-form.client.controller.js
index 79647a82..a55c6144 100644
--- a/public/modules/forms/controllers/create-form.client.controller.js
+++ b/public/modules/forms/controllers/create-form.client.controller.js
@@ -1,6 +1,6 @@
'use strict';
-angular.module('forms').controller('EditFormController', ['$scope', '$rootScope', '$state', 'Upload', '$stateParams', 'FormFields', 'Forms', 'CurrentForm', '$modal', '$location',
+angular.module('forms').controller('EditFormController', ['$scope', '$state', '$rootScope', 'Upload', '$stateParams', 'FormFields', 'Forms', 'CurrentForm', '$modal', '$location',
function ($scope, $state, $rootScope, Upload, $stateParams, FormFields, Forms, CurrentForm, $modal, $location) {
// Principal.identity().then(function(user){
// $scope.authentication.user = user;
@@ -80,7 +80,7 @@ angular.module('forms').controller('EditFormController', ['$scope', '$rootScope'
};
$scope.goToWithId = function(route, id) {
- $state.transitionTo(route, { 'formId' : id }, { reload: true });
+ $state.go(route, {'formId': id}, {reload: true});
};
// Create new Form
@@ -100,7 +100,6 @@ angular.module('forms').controller('EditFormController', ['$scope', '$rootScope'
// Redirect after save
$scope.goToWithId('viewForm', response._id);
- // $location.path('forms/' + response._id + '/admin');
}, function(errorResponse) {
console.log(errorResponse.data.message);
@@ -117,8 +116,8 @@ angular.module('forms').controller('EditFormController', ['$scope', '$rootScope'
var form = new Forms($scope.form);
form.$update(function(response) {
console.log('form updated');
- // console.log(response.pdf);
- $location.path('forms/' + response._id + '/admin');
+ $scope.goToWithId('viewForm', response._id);
+ // $location.path('forms/' + response._id + '/admin');
}, function(errorResponse) {
console.log(errorResponse.data.message);
$scope.error = errorResponse.data.message;
@@ -131,7 +130,6 @@ angular.module('forms').controller('EditFormController', ['$scope', '$rootScope'
$scope.addField.new = $scope.addField.types[0].name;
$scope.addField.lastAddedID = 0;
-
// preview form mode
$scope.previewMode = false;
diff --git a/public/modules/forms/controllers/view-form.client.controller.js b/public/modules/forms/controllers/view-form.client.controller.js
index cff5a7e7..d8846ccc 100644
--- a/public/modules/forms/controllers/view-form.client.controller.js
+++ b/public/modules/forms/controllers/view-form.client.controller.js
@@ -4,10 +4,17 @@
angular.module('forms').controller('ViewFormController', ['$scope', '$stateParams', '$state', 'Forms', 'CurrentForm','$http',
function($scope, $stateParams, $state, Forms, CurrentForm, $http) {
- // Principal.identity().then(function(user){
- // $scope.authentication.user = user;
- // }).then(function(){
-
+ // view form submissions
+ $scope.viewSubmissions = false;
+
+ //show submissions of Form
+ $scope.showSubmissions = function(){
+ $scope.viewSubmissions = true;
+ }
+ //hide submissions of Form
+ $scope.hideSubmissions = function(){
+ $scope.viewSubmissions = false;
+ }
// Return all user's Forms
$scope.findAll = function() {
@@ -22,10 +29,10 @@ angular.module('forms').controller('ViewFormController', ['$scope', '$stateParam
CurrentForm.setForm($scope.form);
};
-
// Remove existing Form
- $scope.remove = function(form) {
- if (form) {
+ $scope.remove = function() {
+ if (CurrentForm.getForm()) {
+ var form = CurrentForm.getForm();
form.$remove();
$http.delete('/forms/'+$scope.form._id).
@@ -37,8 +44,6 @@ angular.module('forms').controller('ViewFormController', ['$scope', '$stateParam
} else{
$scope.form.$remove(function() {
- console.log('remove');
- $state.path('forms');
$http.delete('/forms/'+$scope.form._id).
success(function(data, status, headers){
console.log('form deleted successfully');
diff --git a/public/modules/forms/css/form.css b/public/modules/forms/css/form.css
index 42c6b6cd..ecfb28fb 100644
--- a/public/modules/forms/css/form.css
+++ b/public/modules/forms/css/form.css
@@ -1,21 +1,49 @@
-/* Styles for form list view (/forms) */
+/* Styles for form admin view (/forms/:formID/admin) */
+.admin-form > .page-header {
+ padding-bottom: 0px;
+ margin-bottom: 40px;
+}
+ .admin-form > .page-header h1 {
+ margin-bottom: 0px
+ }
+ .admin-form > .page-header > .col-xs-3 {
+ padding-top: 1.4em;
+ }
+.admin-form .form-controls .row {
+ padding: 5px;
+}
+
+.status-light {
+ padding-left:0.6em;
+}
+.status-light.status-light-off {
+ color: red;
+}
+.status-light.status-light-on {
+ color: green;
+}
+
+/* Styles for form list view (/forms) */
+section > section.ng-scope {
+ padding: 0 60px 20px 60px;
+}
.form-item.row {
text-align: center;
- border-bottom: 4px inset #ccc;
+ border-bottom: 6px inset #ccc;
background-color: #eee;
width: 180px;
height: 215px;
+ margin-bottom: 45px;
}
.form-item.row.create-new {
- border-bottom: 4px inset #ccc;
background-color: rgb(131,131,131);
color: white;
}
.form-item.row:hover, .form-item.row.create-new:hover {
- border-bottom: 6px inset #ccc;
+ border-bottom: 8px inset #ccc;
background-color: #d9d9d9;
}
@@ -24,7 +52,6 @@
background-color: rgb(81,81,81);
}
-
.form-item.row > .title-row{
position: relative;
top: 15px;
diff --git a/public/modules/forms/forms.client.module.js b/public/modules/forms/forms.client.module.js
index 8c77200e..1a783aa9 100644
--- a/public/modules/forms/forms.client.module.js
+++ b/public/modules/forms/forms.client.module.js
@@ -1,4 +1,4 @@
'use strict';
// Use Application configuration module to register a new module
-ApplicationConfiguration.registerModule('forms', ['ngFileUpload']);
\ No newline at end of file
+ApplicationConfiguration.registerModule('forms', ['ngFileUpload', 'users']);
\ No newline at end of file
diff --git a/public/modules/forms/views/create-form.client.view.html b/public/modules/forms/views/create-form.client.view.html
index cd933826..dff80944 100644
--- a/public/modules/forms/views/create-form.client.view.html
+++ b/public/modules/forms/views/create-form.client.view.html
@@ -1,3 +1,5 @@
+
+
Create your form
diff --git a/public/modules/forms/views/list-forms.client.view.html b/public/modules/forms/views/list-forms.client.view.html
index d5db734f..41eb7193 100644
--- a/public/modules/forms/views/list-forms.client.view.html
+++ b/public/modules/forms/views/list-forms.client.view.html
@@ -4,8 +4,8 @@
My MedForms
-