diff --git a/app/controllers/forms.server.controller.js b/app/controllers/forms.server.controller.js index 6b326463..9a011977 100644 --- a/app/controllers/forms.server.controller.js +++ b/app/controllers/forms.server.controller.js @@ -47,7 +47,7 @@ exports.deleteSubmissions = function(req, res) { */ exports.createSubmission = function(req, res) { var form = req.form; - + var timeElapsed = 0; if(typeof req.body.timeElapsed == "number"){ @@ -61,7 +61,7 @@ exports.createSubmission = function(req, res) { timeElapsed: timeElapsed, percentageComplete: req.body.percentageComplete }); - + //Save submitter's IP Address if(req.headers['x-forwarded-for'] || req.connection.remoteAddress){ var ip = req.headers['x-forwarded-for'] || req.connection.remoteAddress; @@ -145,7 +145,6 @@ exports.create = function(req, res) { * Show the current form */ exports.read = function(req, res) { - FormSubmission.find({ form: req.form._id }).exec(function(err, _submissions) { if (err) { console.log(err); @@ -170,6 +169,26 @@ exports.read = function(req, res) { }); }; +/** + * Show the current form for rendering form live + */ +exports.readForRender = function(req, res) { + var newForm = req.form.toJSON(); + + if (!newForm.isLive) { + return res.status(404).send({ + message: 'Form Does Not Exist' + }); + } + + //Remove extraneous fields from form object + delete newForm.submissions; + delete newForm.analytics; + delete newForm.isLive; + + return res.json(newForm); +}; + /** * Update a form */ diff --git a/app/models/form.server.model.js b/app/models/form.server.model.js index f3c4674b..dbcf4891 100644 --- a/app/models/form.server.model.js +++ b/app/models/form.server.model.js @@ -5,7 +5,6 @@ */ var mongoose = require('mongoose'), Schema = mongoose.Schema, - pdfFiller = require('pdffiller'), _ = require('lodash'), config = require('../../config/config'), path = require('path'), @@ -83,7 +82,6 @@ var formSchemaOptions = { } }; - /** * Form Schema */ @@ -117,14 +115,6 @@ var FormSchema = new Schema({ ref: 'User', required: 'Form must have an Admin' }, - - pdf: { - type: Schema.Types.Mixed - }, - pdfFieldMap: { - type: Schema.Types.Mixed - }, - startPage: { showStart:{ type: Boolean, @@ -182,7 +172,7 @@ var FormSchema = new Schema({ } }, font: String - }, + } }, formSchemaOptions); /* diff --git a/app/routes/core.server.routes.js b/app/routes/core.server.routes.js index 166bfd03..1441c8a1 100755 --- a/app/routes/core.server.routes.js +++ b/app/routes/core.server.routes.js @@ -8,10 +8,18 @@ var forms = require('../../app/controllers/forms.server.controller'), module.exports = function(app) { // Core routing - app.route('/').get(core.index); + app.route('/') + .get(core.index); - app.route('/subdomain/api/').get(core.redoc); - app.route('/subdomain/:userSlug((?!api$)[A-Za-z0-9]+)/').get(core.form); - app.route('/subdomain/:userSlug((?!api$)[A-Za-z0-9]+)/forms/:formId([a-zA-Z0-9]+)').get(forms.read) + app.route('/subdomain/api/') + .get(core.redoc); + + app.route('/subdomain/:userSlug((?!api$)[A-Za-z0-9]+)/') + .get(core.form); + + app.route('/subdomain/:userSlug((?!api$)[A-Za-z0-9]+)/forms/:formId([a-zA-Z0-9]+)') .post(forms.createSubmission); + + app.route('/subdomain/:userSlug((?!api$)[A-Za-z0-9]+)/forms/:formId([a-zA-Z0-9]+)/render') + .get(forms.readForRender); }; diff --git a/app/routes/forms.server.routes.js b/app/routes/forms.server.routes.js index 8c1d9597..4e280740 100644 --- a/app/routes/forms.server.routes.js +++ b/app/routes/forms.server.routes.js @@ -32,7 +32,7 @@ module.exports = function(app) { .post(auth.isAuthenticatedOrApiKey, forms.create); app.route('/forms/:formId([a-zA-Z0-9]+)') - .get(forms.read) + .get(auth.isAuthenticatedOrApiKey, forms.hasAuthorization, forms.read) .post(forms.createSubmission) .put(auth.isAuthenticatedOrApiKey, forms.hasAuthorization, forms.update) .delete(auth.isAuthenticatedOrApiKey, forms.hasAuthorization, forms.delete); diff --git a/config/express.js b/config/express.js index 38057954..b655370b 100755 --- a/config/express.js +++ b/config/express.js @@ -136,9 +136,7 @@ module.exports = function(db) { req.url = path; req.userId = user._id; - - console.log('\n\n\ngot subdomain: '+ req.subdomains.reverse()[0]); - + // Q.E.D. next(); }); diff --git a/package.json b/package.json index 66b51051..039a8299 100644 --- a/package.json +++ b/package.json @@ -88,7 +88,6 @@ "passport-localapikey-update": "^0.5.0", "passport-twitter": "~1.0.2", "path-exists": "^2.1.0", - "pdffiller": "~0.1.1", "prerender-node": "^2.2.1", "random-js": "^1.0.8", "raven": "^0.9.0", diff --git a/public/form_modules/forms/base/config/forms.client.config.js b/public/form_modules/forms/base/config/forms.client.config.js index c4ccc1c4..eaea97a1 100644 --- a/public/form_modules/forms/base/config/forms.client.config.js +++ b/public/form_modules/forms/base/config/forms.client.config.js @@ -43,3 +43,6 @@ angular.module('view-form').value('supportedFields', [ 'number', 'natural' ]); + +angular.module('view-form').constant('VIEW_FORM_URL', '/forms/:formId/render'); + diff --git a/public/form_modules/forms/base/controllers/submit-form.client.controller.js b/public/form_modules/forms/base/controllers/submit-form.client.controller.js index d4f62249..507aaf11 100644 --- a/public/form_modules/forms/base/controllers/submit-form.client.controller.js +++ b/public/form_modules/forms/base/controllers/submit-form.client.controller.js @@ -5,8 +5,6 @@ angular.module('view-form').controller('SubmitFormController', [ '$scope', '$rootScope', '$state', '$translate', 'myForm', function($scope, $rootScope, $state, $translate, myForm) { $scope.myform = myForm; - $translate.use(myForm.language); - } ]); diff --git a/public/form_modules/forms/base/directives/field.client.directive.js b/public/form_modules/forms/base/directives/field.client.directive.js index cca0b013..4ef84919 100644 --- a/public/form_modules/forms/base/directives/field.client.directive.js +++ b/public/form_modules/forms/base/directives/field.client.directive.js @@ -49,7 +49,7 @@ angular.module('view-form').directive('fieldDirective', ['$http', '$compile', '$ forms: '=' }, link: function(scope, element) { - + $rootScope.chooseDefaultOption = scope.chooseDefaultOption = function(type) { if(type === 'yes_no'){ scope.field.fieldValue = 'true'; diff --git a/public/form_modules/forms/base/directives/submit-form.client.directive.js b/public/form_modules/forms/base/directives/submit-form.client.directive.js index 23d4439b..872e4988 100644 --- a/public/form_modules/forms/base/directives/submit-form.client.directive.js +++ b/public/form_modules/forms/base/directives/submit-form.client.directive.js @@ -35,7 +35,6 @@ function hashFnv32a(str, asString, seed) { } return hval >>> 0; } -; angular.module('view-form').directive('submitFormDirective', ['$http', 'TimeCounter', '$filter', '$rootScope', 'SendVisitorData', function ($http, TimeCounter, $filter, $rootScope, SendVisitorData) { diff --git a/public/form_modules/forms/base/services/current-form.client.service.js b/public/form_modules/forms/base/services/current-form.client.service.js index c264f717..a88e4042 100644 --- a/public/form_modules/forms/base/services/current-form.client.service.js +++ b/public/form_modules/forms/base/services/current-form.client.service.js @@ -3,7 +3,6 @@ //Forms service used for communicating with the forms REST endpoints angular.module('view-form').service('CurrentForm', function(){ - //Private variables var _form = {}; diff --git a/public/form_modules/forms/base/services/forms.client.service.js b/public/form_modules/forms/base/services/forms.client.service.js index fd15a9e0..371c8a17 100644 --- a/public/form_modules/forms/base/services/forms.client.service.js +++ b/public/form_modules/forms/base/services/forms.client.service.js @@ -1,25 +1,11 @@ 'use strict'; //Forms service used for communicating with the forms REST endpoints -angular.module('view-form').factory('Forms', ['$resource', 'FORM_URL', - function($resource, FORM_URL) { - return $resource(FORM_URL, { +angular.module('view-form').factory('Forms', ['$resource', 'VIEW_FORM_URL', + function($resource, VIEW_FORM_URL) { + return $resource(VIEW_FORM_URL, { formId: '@_id' }, { - 'query' : { - method: 'GET', - isArray: true - //DAVID: TODO: Do we really need to get visible_form_fields for a Query? - // transformResponse: function(data, header) { - // var forms = angular.fromJson(data); - // angular.forEach(forms, function(form, idx) { - // form.visible_form_fields = _.filter(form.form_fields, function(field){ - // return (field.deletePreserved === false); - // }); - // }); - // return forms; - // } - }, 'get' : { method: 'GET', transformResponse: function(data, header) { diff --git a/public/form_modules/forms/config/forms.client.config.js b/public/form_modules/forms/config/forms.client.config.js deleted file mode 100644 index 188c56e5..00000000 --- a/public/form_modules/forms/config/forms.client.config.js +++ /dev/null @@ -1,29 +0,0 @@ -'use strict'; - -// Configuring the Forms drop-down menus -angular.module('view-form').filter('formValidity', - function(){ - return function(formObj){ - if(formObj && formObj.form_fields && formObj.visible_form_fields){ - - //get keys - var formKeys = Object.keys(formObj); - - //we only care about things that don't start with $ - var fieldKeys = formKeys.filter(function(key){ - return key[0] !== '$'; - }); - - var fields = formObj.form_fields; - - var valid_count = fields.filter(function(field){ - if(typeof field === 'object' && field.fieldType !== 'statement' && field.fieldType !== 'rating'){ - return !!(field.fieldValue); - } - - }).length; - return valid_count - (formObj.form_fields.length - formObj.visible_form_fields.length); - } - return 0; - }; -}); diff --git a/public/form_modules/forms/config/forms.client.routes.js b/public/form_modules/forms/config/forms.client.routes.js index 4cc33b77..ceb65a88 100644 --- a/public/form_modules/forms/config/forms.client.routes.js +++ b/public/form_modules/forms/config/forms.client.routes.js @@ -2,7 +2,6 @@ // Setting up route angular.module('view-form').config(['$stateProvider', - function($stateProvider) { // Forms state routing $stateProvider. diff --git a/public/form_modules/forms/directives/analytics-service.client.directive.js b/public/form_modules/forms/directives/analytics-service.client.directive.js index 09012911..b806708d 100644 --- a/public/form_modules/forms/directives/analytics-service.client.directive.js +++ b/public/form_modules/forms/directives/analytics-service.client.directive.js @@ -29,7 +29,6 @@ } $.ajaxSetup( { "async": false } ); - var result = $.getJSON('myUrl'); var geoData = $.getJSON('//freegeoip.net/json/?callback=?'); $.ajaxSetup( { "async": true } ); diff --git a/public/modules/forms/base/demo/boot.js b/public/modules/forms/base/demo/boot.js deleted file mode 100644 index 23c5b86c..00000000 --- a/public/modules/forms/base/demo/boot.js +++ /dev/null @@ -1,59 +0,0 @@ - -angular.module('forms', [ - 'duScroll', 'ngResource', 'NodeForm.templates', 'pascalprecht.translate', - 'angular-input-stars', - 'ui.select' -]); - -angular.module('NodeForm', [ - 'ui.select', 'cgBusy', 'ngSanitize', 'vButton', 'ngResource', - 'ui.router', 'ui.bootstrap', 'ui.utils', 'ngRaven', 'forms', - 'ui.select' -]); - -angular.module('forms').factory('Auth', [ - function() { - var service = { - _currentUser: null, - get currentUser(){ - return this._currentUser; - }, - ensureHasCurrentUser: function() { - return null; - }, - isAuthenticated: function() { - return false; - }, - getUserState: function() { - return ''; - }, - login: function() { - }, - logout: function() { - }, - }; - return service; - } -]); -angular.module('forms').factory('$state', [function() { - return { - go: function() {} - }; -}]); -angular.module('forms').factory('myForm', ['Forms', function(Forms) { - var form = window.form; - form.visible_form_fields = _.filter(form.form_fields, function(field){ - return (field.deletePreserved === false); - }); - return form; -}]); -angular.module('forms').constant('FORM_URL', '/form/:formId'); - -angular.module('forms').value('SendVisitorData', { - send: function(){} -}); - -angular.element(document).ready(function() { - //Then init the app - angular.bootstrap(document, ['forms']); -}); diff --git a/public/modules/forms/base/demo/index.html b/public/modules/forms/base/demo/index.html deleted file mode 100644 index 9b9ae3b1..00000000 --- a/public/modules/forms/base/demo/index.html +++ /dev/null @@ -1,75 +0,0 @@ - - - - - tellform demo - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -