+
+
+
+ Create your next ______.
+
+
+
+ Tell a story with a form.
+
+
+
+ TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
+
+
+
+ TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
+
+
+
+
+
+
diff --git a/public/modules/forms/config/forms.client.routes.js b/public/modules/forms/config/forms.client.routes.js
index d8ec9b4f..ba825be8 100644
--- a/public/modules/forms/config/forms.client.routes.js
+++ b/public/modules/forms/config/forms.client.routes.js
@@ -35,7 +35,6 @@ angular.module('forms').config(['$stateProvider',
resolve: {
Forms: 'Forms',
myForm: function (Forms, $stateParams) {
- console.log('getting form');
return Forms.get({formId: $stateParams.formId}).$promise;
},
},
diff --git a/public/modules/forms/controllers/admin-form.client.controller.js b/public/modules/forms/controllers/admin-form.client.controller.js
index 93fbc5c7..ec11a342 100644
--- a/public/modules/forms/controllers/admin-form.client.controller.js
+++ b/public/modules/forms/controllers/admin-form.client.controller.js
@@ -8,6 +8,7 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope
$scope.animationsEnabled = true;
$scope.myform = myForm;
$rootScope.saveInProgress = false;
+
CurrentForm.setForm($scope.myform);
$scope.tabData = [
@@ -28,20 +29,6 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope
route: 'viewForm.analyze',
}
];
-
- // Find a specific Form
- $scope.findOne = function(){
- Forms.get({
- formId: $stateParams.formId
- }, function(form){
- CurrentForm.setForm(form);
- $scope.myform = form;
- $scope.myform._id = $stateParams.formId;
- }, function(err){
- console.error('Could not fetch form');
- console.error(err);
- });
- };
$scope.setForm = function(form){
$scope.myform = form;
@@ -57,19 +44,19 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope
*/
$scope.openDeleteModal = function(){
$scope.deleteModal = $uibModal.open({
- animation: $scope.animationsEnabled,
- templateUrl: 'myModalContent.html',
- controller: 'AdminFormController',
- resolve: {
- myForm: function () {
- return $scope.myform;
- }
- }
+ animation: $scope.animationsEnabled,
+ templateUrl: 'myModalContent.html',
+ controller: 'AdminFormController',
+ resolve: {
+ myForm: function(){
+ return $scope.myform;
+ }
+ }
});
$scope.deleteModal.result.then(function (selectedItem) {
- $scope.selected = selectedItem;
+ $scope.selected = selectedItem;
}, function () {
- console.log('Modal dismissed at: ' + new Date());
+ console.log('Modal dismissed at: ' + new Date());
});
};
@@ -77,12 +64,6 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope
$scope.cancelDeleteModal = function(){
if($scope.deleteModal){
$scope.deleteModal.dismiss('cancel');
- $scope.deleteModal.result(function(selectedItem){
- this.selected = selectedItem;
- }, function(type){
- this.canceled = true;
- });
-
}
};
diff --git a/public/modules/forms/controllers/submit-form.client.controller.js b/public/modules/forms/controllers/submit-form.client.controller.js
index f45f2943..1e321fba 100644
--- a/public/modules/forms/controllers/submit-form.client.controller.js
+++ b/public/modules/forms/controllers/submit-form.client.controller.js
@@ -1,9 +1,9 @@
'use strict';
-// Forms controller
-angular.module('forms').controller('SubmitFormController', ['$scope', '$rootScope', '$state', 'myForm',
- function($scope, $rootScope, $state, myForm) {
- $scope.authentication = $rootScope.authentication;
+// SubmitForm controller
+angular.module('forms').controller('SubmitFormController', ['$scope', '$rootScope', '$state', 'myForm', 'Auth',
+ function($scope, $rootScope, $state, myForm, Auth) {
+ $scope.authentication = Auth;
$scope.myform = myForm;
if(!$scope.myform.isLive){
diff --git a/public/modules/forms/css/form.css b/public/modules/forms/css/form.css
index 17346603..ebe25f3a 100644
--- a/public/modules/forms/css/form.css
+++ b/public/modules/forms/css/form.css
@@ -420,9 +420,12 @@ section > section.public-form {
display: inline-block;
background-color: transparent;
border-radius: 7px;
- width:100%;
+ width: 100%;
border: 25px transparent solid;
}
+ .activeField input {
+ background-color: transparent;
+ }
.form-item:hover, .form-item.create-new:hover {
@@ -452,8 +455,6 @@ section > section.public-form {
.form-item.create-new .title-row{
padding: 0;
- /*margin-top:1em; */
-
}
.form-item.create-new .title-row h4 {
font-size: 7em;
diff --git a/public/modules/forms/directives/auto-save.client.directive.js b/public/modules/forms/directives/auto-save.client.directive.js
index 1def20ea..3c971250 100644
--- a/public/modules/forms/directives/auto-save.client.directive.js
+++ b/public/modules/forms/directives/auto-save.client.directive.js
@@ -70,7 +70,6 @@ angular.module('forms').directive('autoSaveForm', ['$rootScope', '$timeout', fun
console.log('Form saving started');
debounceSave();
console.log('introParagraphStartPage.$dirty AFTER: '+$scope.editForm.introParagraphStartPage.$dirty);
-
}
});
@@ -84,8 +83,13 @@ angular.module('forms').directive('autoSaveForm', ['$rootScope', '$timeout', fun
oldValue.form_fields = _.removeDateFields(oldValue.form_fields);
var changedFields = !_.isEqual(oldValue.form_fields,newValue.form_fields) || !_.isEqual(oldValue.startPage, newValue.startPage);
+ var changedFieldMap = false;
- var changedFieldMap = !!oldValue.plugins.oscarhost.settings.fieldMap && !_.isEqual(oldValue.plugins.oscarhost.settings.fieldMap,newValue.plugins.oscarhost.settings.fieldMap);
+ if(oldValue.hasOwnProperty('plugins.oscarhost.settings.fieldMap')){
+ changedFieldMap = !!oldValue.plugins.oscarhost.settings.fieldMap && !_.isEqual(oldValue.plugins.oscarhost.settings.fieldMap,newValue.plugins.oscarhost.settings.fieldMap);
+ }
+
+ //If our form is undefined, don't save form
if( (!newValue && !oldValue) || !oldValue ){
return;
}
@@ -103,7 +107,7 @@ angular.module('forms').directive('autoSaveForm', ['$rootScope', '$timeout', fun
// console.log(newValue.form_fields);
if(oldValue.form_fields.length === 0) {
- $rootScope.finishedRender = true
+ $rootScope.finishedRender = true;
}
//Save form ONLY IF rendering is finished, form_fields have been changed AND currently not save in progress
diff --git a/public/modules/forms/directives/edit-form.client.directive.js b/public/modules/forms/directives/edit-form.client.directive.js
index 49fc2762..d313b7ab 100644
--- a/public/modules/forms/directives/edit-form.client.directive.js
+++ b/public/modules/forms/directives/edit-form.client.directive.js
@@ -103,7 +103,7 @@ angular.module('forms').directive('editFormDirective', ['$rootScope', 'FormField
//Delete field from field map
var currFieldId = $scope.myform.form_fields[field_index]._id
- if($scope.myform.plugins.oscarhost.baseUrl) delete $scope.myform.plugins.oscarhost.settings.fieldMap[currFieldId];
+ if($scope.myform.hasOwnProperty('plugins.oscarhost.baseUrl')) delete $scope.myform.plugins.oscarhost.settings.fieldMap[currFieldId];
//Delete field
$scope.myform.form_fields.splice(field_index, 1);
@@ -122,24 +122,23 @@ angular.module('forms').directive('editFormDirective', ['$rootScope', 'FormField
** startPage Button Methods
*/
- // add new Button to the startPage/EndPage
+ // add new Button to the startPage
$scope.addButton = function(){
var newButton = {};
newButton.bgColor = '#ddd';
newButton.color = '#ffffff';
newButton.text = 'Button';
- newButton._id = _.uniqueId();
+ newButton._id = Math.floor(100000*Math.random());
$scope.myform.startPage.buttons.push(newButton);
};
- // delete particular Button
+ // delete particular Button from startPage
$scope.deleteButton = function(button){
- // var hashKey = _.chain(button.$$hashKey).words().last().parseInt().value();
var currID;
for(var i = 0; i < $scope.myform.startPage.buttons.length; i++){
- // var currHashKey = _.chain($scope.myform.startPage.buttons[i].$$hashKey).words().last().parseInt().value();
+
currID = $scope.myform.startPage.buttons[i]._id;
console.log(currID);
@@ -156,33 +155,44 @@ angular.module('forms').directive('editFormDirective', ['$rootScope', 'FormField
*/
// add new option to the field
- $scope.addOption = function (field){
- if(!field.fieldOptions) field.fieldOptions = [];
+ $scope.addOption = function(field_index){
+ var currField = $scope.myform.form_fields[field_index];
- var lastOptionID = 0;
+ if(currField.fieldType === 'checkbox' || currField.fieldType === 'dropdown' || currField.fieldType === 'radio'){
+ if(!currField.fieldOptions) $scope.myform.form_fields[field_index].fieldOptions = [];
- if(field.fieldOptions[field.fieldOptions.length-1]){
- lastOptionID = field.fieldOptions[field.fieldOptions.length-1].option_id;
+ var lastOptionID = 0;
+
+ if(currField.fieldOptions[currField.fieldOptions.length-1]){
+ lastOptionID = currField.fieldOptions[currField.fieldOptions.length-1].option_id;
+ }
+
+ // new option's id
+ var option_id = lastOptionID + 1;
+
+ var newOption = {
+ 'option_id' : Math.floor(100000*Math.random()),
+ 'option_title' : 'Option '+lastOptionID,
+ 'option_value' : 'Option ' +lastOptionID,
+ };
+
+ // put new option into fieldOptions array
+ $scope.myform.form_fields[field_index].fieldOptions.push(newOption);
}
-
- // new option's id
- var option_id = lastOptionID + 1;
-
- var newOption = {
- 'option_id' : option_id,
- 'option_value' : 'Option ' + option_id,
- };
-
- // put new option into fieldOptions array
- field.fieldOptions.push(newOption);
};
// delete particular option
- $scope.deleteOption = function (field, option){
- for(var i = 0; i < field.fieldOptions.length; i++){
- if(field.fieldOptions[i].option_id === option.option_id){
- field.fieldOptions.splice(i, 1);
- break;
+ $scope.deleteOption = function (field_index, option){
+ var currField = $scope.myform.form_fields[field_index];
+
+ if(currField.fieldType === 'checkbox' || currField.fieldType === 'dropdown' || currField.fieldType === 'radio'){
+ for(var i = 0; i < currField.fieldOptions.length; i++){
+ if(currField.fieldOptions[i].option_id === option.option_id){
+
+ $scope.myform.form_fields[field_index].fieldOptions.splice(i, 1);
+ break;
+
+ }
}
}
};
diff --git a/public/modules/forms/directives/field.client.directive.js b/public/modules/forms/directives/field.client.directive.js
index ae6193c9..869df6a4 100644
--- a/public/modules/forms/directives/field.client.directive.js
+++ b/public/modules/forms/directives/field.client.directive.js
@@ -8,8 +8,8 @@ var __indexOf = [].indexOf || function(item) {
return -1;
};
-angular.module('forms').directive('fieldDirective', ['$http', '$compile', '$rootScope',
- function($http, $compile, $rootScope) {
+angular.module('forms').directive('fieldDirective', ['$http', '$compile', '$rootScope', '$templateCache',
+ function($http, $compile, $rootScope, $templateCache) {
var getTemplateUrl = function(field) {
@@ -36,7 +36,9 @@ angular.module('forms').directive('fieldDirective', ['$http', '$compile', '$root
if (__indexOf.call(supported_fields, type) >= 0) {
templateUrl = templateUrl+type+'.html';
}
- return templateUrl;
+
+ return $templateCache.get('../public/'+templateUrl);
+ //return templateUrl;
};
return {
@@ -63,11 +65,11 @@ angular.module('forms').directive('fieldDirective', ['$http', '$compile', '$root
}
// GET template content from path
- var templateUrl = getTemplateUrl(scope.field);
- $http.get(templateUrl).success(function(data) {
- element.html(data).show();
+ var template = getTemplateUrl(scope.field);
+ //$http.get(templateUrl).success(function(data) {
+ element.html(template).show();
$compile(element.contents())(scope);
- });
+ //});
},
};
}]);
\ No newline at end of file
diff --git a/public/modules/forms/directives/submit-form.client.directive.js b/public/modules/forms/directives/submit-form.client.directive.js
index 93bd7dd0..dfc0e122 100644
--- a/public/modules/forms/directives/submit-form.client.directive.js
+++ b/public/modules/forms/directives/submit-form.client.directive.js
@@ -10,8 +10,14 @@ angular.module('forms').directive('submitFormDirective', ['$http', 'TimeCounter'
},
controller: function($scope){
$scope.authentication = $rootScope.authentication;
-
- angular.element(document).ready(function() {
+
+ $scope.reloadForm = function(){
+ //Reset Form
+ $scope.myform.submitted = false;
+ $scope.myform.form_fields = _.chain($scope.myform.form_fields).map(function(field){
+ field.fieldValue = '';
+ return field;
+ }).value();
$scope.error = '';
$scope.selected = {
@@ -19,101 +25,88 @@ angular.module('forms').directive('submitFormDirective', ['$http', 'TimeCounter'
index: null,
};
- $scope.submitted = false;
+ //Reset Timer
+ TimeCounter.restartClock();
+ };
- TimeCounter.startClock();
-
-
- /*
- ** Field Controls
- */
- $rootScope.setActiveField = function(field_id, field_index) {
- if($scope.selected === null){
- $scope.selected = {
- _id: '',
- index: 0,
- };
- }
- console.log('field_id: '+field_id);
- console.log('field_index: '+field_index);
- console.log($scope.selected);
-
- $scope.selected._id = field_id;
- $scope.selected.index = field_index;
- setTimeout(function() {
- $('html, body').animate({
- scrollTop: $('.activeField').offset().top
- },200);
- }, 10);
- };
-
- $scope.nextField = function(){
- if($scope.selected.index < $scope.myform.form_fields.length-1){
- $scope.selected.index++;
- $scope.selected._id = $scope.myform.form_fields[$scope.selected.index]._id;
- $rootScope.setActiveField($scope.selected._id, $scope.selected.index);
- }
- };
- $scope.prevField = function(){
- if($scope.selected.index > 0){
- $scope.selected.index = $scope.selected.index - 1;
- $scope.selected._id = $scope.myform.form_fields[$scope.selected.index]._id;
- $rootScope.setActiveField($scope.selected._id, $scope.selected.index);
- }
- };
-
- $scope.hideOverlay = function(){
+ /*
+ ** Field Controls
+ */
+ $rootScope.setActiveField = function(field_id, field_index) {
+ if($scope.selected === null){
$scope.selected = {
_id: '',
- index: null,
+ index: 0,
};
+ }
+ console.log('field_id: '+field_id);
+ console.log('field_index: '+field_index);
+ console.log($scope.selected);
+
+ $scope.selected._id = field_id;
+ $scope.selected.index = field_index;
+ setTimeout(function() {
+ $('html, body').animate({
+ scrollTop: $('.activeField').offset().top
+ },200);
+ }, 10);
+ };
+
+ $scope.nextField = function(){
+ if($scope.selected.index < $scope.myform.form_fields.length-1){
+ $scope.selected.index++;
+ $scope.selected._id = $scope.myform.form_fields[$scope.selected.index]._id;
+ $rootScope.setActiveField($scope.selected._id, $scope.selected.index);
+ }
+ };
+ $scope.prevField = function(){
+ if($scope.selected.index > 0){
+ $scope.selected.index = $scope.selected.index - 1;
+ $scope.selected._id = $scope.myform.form_fields[$scope.selected.index]._id;
+ $rootScope.setActiveField($scope.selected._id, $scope.selected.index);
+ }
+ };
+
+ $scope.hideOverlay = function(){
+ $scope.selected = {
+ _id: '',
+ index: null,
};
+ };
- /*
- ** Form Display Functions
- */
- $scope.exitStartPage = function(){
- $scope.myform.startPage.showStart = false;
- if($scope.myform.form_fields.length > 0){
- $scope.selected._id = $scope.myform.form_fields[0]._id;
- }
- };
+ /*
+ ** Form Display Functions
+ */
+ $scope.exitStartPage = function(){
+ $scope.myform.startPage.showStart = false;
+ if($scope.myform.form_fields.length > 0){
+ $scope.selected._id = $scope.myform.form_fields[0]._id;
+ }
+ };
- $scope.submitForm = function(){
- var _timeElapsed = TimeCounter.stopClock();
+ $scope.submitForm = function(){
+ var _timeElapsed = TimeCounter.stopClock();
- var form = _.cloneDeep($scope.myform);
- form.timeElapsed = _timeElapsed;
+ var form = _.cloneDeep($scope.myform);
+ form.timeElapsed = _timeElapsed;
- // console.log('percentageComplete: '+$filter('formValidity')($scope.myform)/$scope.myform.visible_form_fields.length*100+'%');
- form.percentageComplete = $filter('formValidity')($scope.myform)/$scope.myform.visible_form_fields.length*100;
- delete form.visible_form_fields;
+ form.percentageComplete = $filter('formValidity')($scope.myform)/$scope.myform.visible_form_fields.length*100;
+ delete form.visible_form_fields;
- $scope.authentication = Auth;
+ $scope.submitPromise = $http.post('/forms/'+$scope.myform._id, form)
+ .success(function(data, status, headers){
+ console.log('form submitted successfully');
+ $scope.myform.submitted = true;
+ })
+ .error(function(error){
+ console.log(error);
+ $scope.error = error.message;
+ });
+ };
- $scope.submitPromise = $http.post('/forms/'+$scope.myform._id, form)
- .success(function(data, status, headers){
- console.log('form submitted successfully');
- $scope.myform.submitted = true;
- })
- .error(function(error){
- console.log(error);
- $scope.error = error.message;
- });
- };
-
- $scope.reloadForm = function(){
- //Reset Timer
- TimeCounter.stopClock();
- TimeCounter.startClock();
-
- //Reset Form
- $scope.myform.submitted = false;
- $scope.myform.form_fields = _.chain($scope.myform.form_fields).map(function(field){
- field.fieldValue = '';
- return field;
- }).value();
- };
+ //Load our form when the page is ready
+ angular.element(document).ready(function() {
+ $scope.reloadForm();
});
}
diff --git a/public/modules/forms/services/time-counter.client.service.js b/public/modules/forms/services/time-counter.client.service.js
index e0131223..58ecaebc 100644
--- a/public/modules/forms/services/time-counter.client.service.js
+++ b/public/modules/forms/services/time-counter.client.service.js
@@ -6,17 +6,26 @@ angular.module('forms').service('TimeCounter', [
this.timeSpent = 0;
- this.startClock = function(){
+ this.restartClock = function(){
_startTime = Date.now();
+ _endTime = _startTime;
// console.log('Clock Started');
};
this.stopClock = function(){
- _endTime = Date.now();
- that.timeSpent = Math.abs(_endTime.valueOf() - _startTime.valueOf())/1000;
- // console.log('Clock Ended');
- return that.timeSpent;
+ if(_startTime){
+ _endTime = Date.now();
+ that.timeSpent = Math.abs(_endTime.valueOf() - _startTime.valueOf())/1000;
+ // console.log('Clock Ended');
+ return that.timeSpent;
+ }else{
+ return new Error('Clock has not been started');
+ }
};
+ this.clockStarted = function(){
+ return !!this._startTime;
+ }
+
}
]);
\ No newline at end of file
diff --git a/public/modules/forms/tests/unit/controllers/admin-form.client.controller.test.js b/public/modules/forms/tests/unit/controllers/admin-form.client.controller.test.js
index b67228a2..7530812f 100644
--- a/public/modules/forms/tests/unit/controllers/admin-form.client.controller.test.js
+++ b/public/modules/forms/tests/unit/controllers/admin-form.client.controller.test.js
@@ -52,26 +52,30 @@
_id: '525a8422f6d0f87f0e407a33'
};
- var fakeModal = function(){
- this.opened = true;
-
- this.result = function(confirmCallback, cancelCallback) {
- //Store the callbacks for later when the user clicks on the OK or Cancel button of the dialog
- this.confirmCallBack = confirmCallback;
- this.cancelCallback = cancelCallback;
- };
- this.close = function( item ) {
- //The user clicked OK on the modal dialog, call the stored confirm callback with the selected item
- this.opened = false;
- this.confirmCallBack( item );
- };
- this.dismiss = function( type ) {
- //The user clicked cancel on the modal dialog, call the stored cancel callback
- this.opened = false;
- this.cancelCallback( type );
- };
+ var newFakeModal = function(){
+ var result = {
+ opened: true,
+ result: {
+ then: function(confirmCallback, cancelCallback) {
+ //Store the callbacks for later when the user clicks on the OK or Cancel button of the dialog
+ this.confirmCallBack = confirmCallback;
+ this.cancelCallback = cancelCallback;
+ }
+ },
+ close: function( item ) {
+ //The user clicked OK on the modal dialog, call the stored confirm callback with the selected item
+ this.opened = false;
+ this.result.confirmCallBack( item );
+ },
+ dismiss: function( type ) {
+ //The user clicked cancel on the modal dialog, call the stored cancel callback
+ this.opened = false;
+ this.result.cancelCallback( type );
+ }
+ };
+ return result;
};
-
+
//Mock Users Service
beforeEach(module(function($provide) {
$provide.service('myForm', function($q) {
@@ -99,7 +103,6 @@
});
});
-
// Load the main application module
beforeEach(module(ApplicationConfiguration.applicationModuleName));
@@ -160,8 +163,12 @@
});
}));
+
+ //Mock $uibModal
beforeEach(inject(function($uibModal) {
- spyOn($uibModal, 'open').and.returnValue(new fakeModal());
+ var modal = newFakeModal();
+ spyOn($uibModal, 'open').and.returnValue(modal);
+ //spyOn($uibModal, 'close').and.callFake(modal.close());
}));
// The injector ignores leading and trailing underscores here (i.e. _$httpBackend_).
@@ -197,27 +204,6 @@
expect(scope.myform).toEqualData(sampleForm);
});
- it('$scope.findOne() should fetch current Form', inject(function(Forms) {
-
- // Define a sample article object
- var expectedFormObj = new Forms(expectedForm);
-
- var controller = createAdminFormController();
-
- // Set the URL parameter
- $stateParams.formId = expectedForm._id;
-
- // Set GET response
- $httpBackend.expectGET(/^(\/forms\/)([0-9a-fA-F]{24})$/).respond(200, sampleForm);
-
- // Run controller functionality
- scope.findOne();
- $httpBackend.flush();
-
- // Test scope value
- expect( scope.myform.toJSON() ).toEqualData(expectedFormObj);
- }));
-
it('$scope.removeCurrentForm() with valid form data should send a DELETE request with the id of form', function() {
var controller = createAdminFormController();
@@ -229,13 +215,6 @@
//Run controller functionality
scope.openDeleteModal();
-
- scope.deleteModal.result(function(selectedItem){
- this.selected = selectedItem;
- }, function(type){
- this.canceled = true;
- });
-
scope.removeCurrentForm();
$httpBackend.flush();
@@ -259,7 +238,8 @@
//Run controller functionality
scope.openDeleteModal();
- expect( scope.deleteModal.opened ).toEqual(true);
+ console.log(scope.deleteModal);
+ expect(scope.deleteModal.opened).toEqual(true);
});
it('$scope.cancelDeleteModal() should close $scope.deleteModal', inject(function($uibModal) {
@@ -267,13 +247,10 @@
//Run controller functionality
scope.openDeleteModal();
- console.log(scope.deleteModal.opened);
//Run controller functionality
scope.cancelDeleteModal();
expect( scope.deleteModal.opened ).toEqual(false);
- expect( scope.deleteModal.canceled ).toEqual(true);
-
}));
});
}());
\ No newline at end of file
diff --git a/public/modules/forms/tests/unit/controllers/list-forms.client.controller.test.js b/public/modules/forms/tests/unit/controllers/list-forms.client.controller.test.js
index 0d5ae113..961969de 100644
--- a/public/modules/forms/tests/unit/controllers/list-forms.client.controller.test.js
+++ b/public/modules/forms/tests/unit/controllers/list-forms.client.controller.test.js
@@ -130,7 +130,7 @@
expect( scope.myforms ).toEqualData(sampleFormList);
}));
- it('$scope.duplicate() should duplicate a Form', inject(function(Forms) {
+ it('$scope.duplicateForm() should duplicate a Form', inject(function(Forms) {
var dupSampleForm = sampleFormList[2],
dupSampleForm_index = 3,
@@ -149,7 +149,7 @@
// Set GET response
$httpBackend.expect('POST', '/forms').respond(200, dupSampleForm);
// Run controller functionality
- scope.duplicate(2);
+ scope.duplicateForm(2);
$httpBackend.flush();
// Test scope value
@@ -191,7 +191,7 @@
expect( scope.myforms[0] ).not.toEqualData(delSampleForm);
}));
- it('$scope.createNew() should create a new Form', inject(function(Forms) {
+ it('$scope.createNewForm() should create a new Form', inject(function(Forms) {
var newForm = _.clone(sampleForm);
newForm.name = 'Test Form5';
@@ -207,18 +207,14 @@
$dirty: true,
$valid: true,
};
- // scope.forms.createForm.language.$modelValue = 'english';
- // scope.forms.createForm.name.$modelValue = 'Test Form5';
- // scope.forms.createForm.$dirty = true;
- // scope.forms.createForm.$invalid = false;
//Set $state transition
- $state.expectTransitionTo('viewForm');
+ $state.expectTransitionTo('viewForm.create');
// Set GET response
$httpBackend.expect('POST', '/forms').respond(200, newForm);
- scope.createNew();
+ scope.createNewForm();
$httpBackend.flush();
$state.ensureAllTransitionsHappened();
diff --git a/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js b/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js
index f9194e2a..b90a5650 100644
--- a/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js
+++ b/public/modules/forms/tests/unit/controllers/submit-form.client.controller.test.js
@@ -148,7 +148,7 @@
});
}));
- //Mock Users Service
+ //Mock Users Service
beforeEach(module(function($provide) {
$provide.service('User', function($q) {
return {
diff --git a/public/modules/forms/tests/unit/directives/configure-form.client.directive.test.js b/public/modules/forms/tests/unit/directives/configure-form.client.directive.test.js
index f4ab2105..523bf29a 100644
--- a/public/modules/forms/tests/unit/directives/configure-form.client.directive.test.js
+++ b/public/modules/forms/tests/unit/directives/configure-form.client.directive.test.js
@@ -34,10 +34,10 @@
admin: 'ed873933b1f1dea0ce12fab9',
language: 'english',
form_fields: [
- {fieldType:'textfield', title:'First Name', fieldValue: '', deletePreserved: false},
- {fieldType:'checkbox', title:'nascar', fieldValue: '', deletePreserved: false},
- {fieldType:'checkbox', title:'hockey', fieldValue: '', deletePreserved: false}
- ],
+ {fieldType:'textfield', title:'First Name', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed873933b0ce121f1deafab9'},
+ {fieldType:'checkbox', title:'nascar', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed83b0ce121f17393deafab9'},
+ {fieldType:'checkbox', title:'hockey', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed8317393deab0ce121ffab9'}
+ ],
pdf: {},
pdfFieldMap: {},
startPage: {
@@ -71,9 +71,9 @@
// Load the main application module
beforeEach(module(ApplicationConfiguration.applicationModuleName));
- beforeEach(module('stateMock'));
beforeEach(module('module-templates'));
-
+ beforeEach(module('stateMock'));
+
beforeEach(inject(function($compile, $controller, $rootScope, _$httpBackend_) {
//Instantiate directive.
var tmp_scope = $rootScope.$new();
diff --git a/public/modules/forms/tests/unit/directives/edit-form-submissions.client.directive.test.js b/public/modules/forms/tests/unit/directives/edit-form-submissions.client.directive.test.js
index c23b3eec..76076914 100644
--- a/public/modules/forms/tests/unit/directives/edit-form-submissions.client.directive.test.js
+++ b/public/modules/forms/tests/unit/directives/edit-form-submissions.client.directive.test.js
@@ -35,9 +35,9 @@
admin: 'ed873933b1f1dea0ce12fab9',
language: 'english',
form_fields: [
- {fieldType:'textfield', title:'First Name', fieldValue: '', deletePreserved: false},
- {fieldType:'checkbox', title:'nascar', fieldValue: '', deletePreserved: false},
- {fieldType:'checkbox', title:'hockey', fieldValue: '', deletePreserved: false}
+ {fieldType:'textfield', title:'First Name', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed873933b0ce121f1deafab9'},
+ {fieldType:'checkbox', title:'nascar', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed83b0ce121f17393deafab9'},
+ {fieldType:'checkbox', title:'hockey', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed8317393deab0ce121ffab9'}
],
pdf: {},
pdfFieldMap: {},
@@ -114,8 +114,8 @@
// Load the main application module
beforeEach(module(ApplicationConfiguration.applicationModuleName));
+ beforeEach(module('module-templates'));
beforeEach(module('stateMock'));
- beforeEach(module('module-templates'));
beforeEach(inject(function($compile, $controller, $rootScope, _$httpBackend_) {
diff --git a/public/modules/forms/tests/unit/directives/edit-form.client.directive.test.js b/public/modules/forms/tests/unit/directives/edit-form.client.directive.test.js
index 236aa63c..0fc23b19 100644
--- a/public/modules/forms/tests/unit/directives/edit-form.client.directive.test.js
+++ b/public/modules/forms/tests/unit/directives/edit-form.client.directive.test.js
@@ -35,9 +35,9 @@
admin: 'ed873933b1f1dea0ce12fab9',
language: 'english',
form_fields: [
- {fieldType:'textfield', title:'First Name', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false},
- {fieldType:'checkbox', title:'nascar', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false},
- {fieldType:'checkbox', title:'hockey', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false}
+ {fieldType:'textfield', title:'First Name', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed873933b0ce121f1deafab9'},
+ {fieldType:'checkbox', title:'nascar', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed83b0ce121f17393deafab9'},
+ {fieldType:'checkbox', title:'hockey', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed8317393deab0ce121ffab9'}
],
pdf: {},
pdfFieldMap: {},
@@ -73,8 +73,8 @@
// Load the main application module
beforeEach(module(ApplicationConfiguration.applicationModuleName));
- beforeEach(module('stateMock'));
beforeEach(module('module-templates'));
+ beforeEach(module('stateMock'));
beforeEach(inject(function($compile, $controller, $rootScope, _$httpBackend_) {
//Instantiate directive.
@@ -89,7 +89,7 @@
// Point global variables to injected services
$httpBackend = _$httpBackend_;
- $httpBackend.whenGET(/.+\.html$/).respond('');
+ //$httpBackend.whenGET(/.+\.html$/).respond('');
$httpBackend.whenGET('/users/me/').respond('');
//Grab controller instance
@@ -101,7 +101,7 @@
}));
- describe('Form Field Tests',function(){
+ describe('> Form Field >',function(){
beforeEach(function(){
scope.myform = _.cloneDeep(sampleForm);
@@ -142,13 +142,20 @@
//Run controller methods
scope.duplicateField(0);
+ var originalField = _.cloneDeep(scope.myform.form_fields[0]);
+ originalField.title += ' copy';
+
+ delete originalField._id;
+ var copyField = _.cloneDeep(scope.myform.form_fields[1]);
+ delete copyField._id;
+
expect(scope.myform.form_fields.length).toEqual(sampleForm.form_fields.length+1);
- expect(scope.myform.form_fields[0]).toEqualData(scope.myform.form_fields[1]);
+ expect(originalField).toEqualData(copyField);
});
});
- describe('Form Field Button Tests',function(){
+ describe('> Form Field Button >',function(){
it('$scope.addButton() should ADD a button to $scope.myform.startPage.buttons', function() {
@@ -170,30 +177,27 @@
it('$scope.deleteButton() should DELETE a button from $scope.myform.startPage.buttons', function() {
//Run controller methods
scope.deleteButton(scope.myform.startPage.buttons[0]);
-
+
expect(scope.myform.startPage.buttons.length).toEqual(0);
});
});
- describe('Form Field Option Tests',function(){
+ describe('> Form Field Option >',function(){
it('$scope.addOption() should ADD a new option to a field.fieldOptions', function() {
+ var originalOptionLen = scope.myform.form_fields[1].fieldOptions.length;
//Run controller methods
- scope.addOption(scope.myform.form_fields[0]);
+ scope.addOption(1);
- var expectedFieldOption = {
- option_id : 1,
- option_title : 'Option 1',
- option_value : 1
- };
-
- expect(scope.myform.form_fields[0].fieldOptions.length).toEqual(sampleForm.form_fields[0].fieldOptions.length+1);
- expect(scope.myform.form_fields[0].fieldOptions[0]).toEqualData(expectedFieldOption);
+ expect(originalOptionLen+1).toEqual(scope.myform.form_fields[1].fieldOptions.length);
+ expect(scope.myform.form_fields[1].fieldOptions[0].option_title).toEqualData('Option 0');
+ expect(scope.myform.form_fields[1].fieldOptions[0].option_value).toEqualData('Option 0');
});
it('$scope.deleteOption() should DELETE remove option from field.fieldOptions', function() {
+ //Run controller methods
+ scope.deleteOption(1, scope.myform.form_fields[1].fieldOptions[0]);
- //Run controller methods
expect(scope.myform.form_fields[0].fieldOptions.length).toEqual(0);
expect(scope.myform.form_fields[0].fieldOptions[0]).not.toBeDefined();
});
diff --git a/public/modules/forms/tests/unit/directives/entry-page.client.directive.test.js b/public/modules/forms/tests/unit/directives/entry-page.client.directive.test.js
index a28d70b0..e24cfc48 100644
--- a/public/modules/forms/tests/unit/directives/entry-page.client.directive.test.js
+++ b/public/modules/forms/tests/unit/directives/entry-page.client.directive.test.js
@@ -53,7 +53,6 @@
// // Load the main application module
// beforeEach(module(ApplicationConfiguration.applicationModuleName));
-// beforeEach(module('module-templates'));
// beforeEach(inject(function($rootScope, _$compile_, _$httpBackend_) {
// scope = $rootScope.$new();
diff --git a/public/modules/forms/tests/unit/directives/on-finish-render.client.directive.test.js b/public/modules/forms/tests/unit/directives/on-finish-render.client.directive.test.js
index a6f0390d..274f4acb 100644
--- a/public/modules/forms/tests/unit/directives/on-finish-render.client.directive.test.js
+++ b/public/modules/forms/tests/unit/directives/on-finish-render.client.directive.test.js
@@ -19,7 +19,6 @@
it('should emit Custom "Finished" and "Started" events on ng-repeat', inject(function($compile, $rootScope) {
- // console.log(FormFields.types);
scope.myfields = FormFields.types;
var e = $compile('
')(scope);
diff --git a/public/modules/forms/tests/unit/directives/submit-form.client.directive.test.js b/public/modules/forms/tests/unit/directives/submit-form.client.directive.test.js
index 210a6012..b9d99766 100644
--- a/public/modules/forms/tests/unit/directives/submit-form.client.directive.test.js
+++ b/public/modules/forms/tests/unit/directives/submit-form.client.directive.test.js
@@ -4,7 +4,7 @@
// Forms Controller Spec
describe('SubmitForm Directive-Controller Tests', function() {
// Initialize global variables
- var el, scope, controller, $httpBackend;
+ var scope, controller, $httpBackend;
var sampleUser = {
firstName: 'Full',
@@ -35,15 +35,13 @@
admin: 'ed873933b1f1dea0ce12fab9',
language: 'english',
form_fields: [
- {fieldType:'textfield', title:'First Name', fieldValue: '', deletePreserved: false},
- {fieldType:'checkbox', title:'nascar', fieldValue: '', deletePreserved: false},
- {fieldType:'checkbox', title:'hockey', fieldValue: '', deletePreserved: false}
- ],
+ {fieldType:'textfield', title:'First Name', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed873933b0ce121f1deafab9'},
+ {fieldType:'checkbox', title:'nascar', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed83b0ce121f17393deafab9'},
+ {fieldType:'checkbox', title:'hockey', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed8317393deab0ce121ffab9'} ],
visible_form_fields: [
- {'fieldType':'textfield', 'title':'First Name', 'fieldValue': '', 'deletePreserved': false},
- {'fieldType':'checkbox', 'title':'nascar', 'fieldValue': '', 'deletePreserved': false},
- {'fieldType':'checkbox', 'title':'hockey', 'fieldValue': '', 'deletePreserved': false}
- ],
+ {fieldType:'textfield', title:'First Name', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed873933b0ce121f1deafab9'},
+ {fieldType:'checkbox', title:'nascar', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed83b0ce121f17393deafab9'},
+ {fieldType:'checkbox', title:'hockey', fieldOptions: [], fieldValue: '', required: true, disabled: false, deletePreserved: false, _id: 'ed8317393deab0ce121ffab9'} ],
pdf: {},
pdfFieldMap: {},
startPage: {
@@ -58,9 +56,9 @@
var sampleSubmission = {
form_fields: [
- {fieldType:'textfield', title:'First Name', fieldValue: 'John Smith', deletePreserved: false},
- {fieldType:'yes_no', title:'Do you like nascar', fieldValue: true, deletePreserved: false},
- {fieldType:'yes_no', title:'Do you like hockey', fieldValue: false, deletePreserved: false}
+ {fieldType:'textfield', title:'First Name', fieldValue: 'John Smith', deletePreserved: false, _id: 'ed873933b0ce121f1deafab9'},
+ {fieldType:'yes_no', title:'Do you like nascar', fieldValue: true, deletePreserved: false, _id: 'ed83b0ce121f17393deafab9'},
+ {fieldType:'yes_no', title:'Do you like hockey', fieldValue: false, deletePreserved: false, _id: 'ed8317393deab0ce121ffab9'}
],
admin: sampleUser,
form: sampleForm,
@@ -70,8 +68,8 @@
var sampleSubmissions = [{
form_fields: [
{fieldType:'textfield', title:'First Name', fieldValue: 'The Terminator', deletePreserved: false},
- {fieldType:'yes_no', title:'Do you like nascar', fieldValue: 'true', deletePreserved: false},
- {fieldType:'yes_no', title:'Do you like hockey', fieldValue: 'false', deletePreserved: false}
+ {fieldType:'yes_no', title:'Do you like nascar', fieldValue: 'true', deletePreserved: false},
+ {fieldType:'yes_no', title:'Do you like hockey', fieldValue: 'false', deletePreserved: false}
],
admin: sampleUser,
form: sampleForm,
@@ -119,14 +117,13 @@
// Load the main application module
beforeEach(module(ApplicationConfiguration.applicationModuleName));
- beforeEach(module('stateMock'));
beforeEach(module('module-templates'));
+ beforeEach(module('stateMock'));
beforeEach(inject(function($compile, $controller, $rootScope, _$httpBackend_) {
// Point global variables to injected services
$httpBackend = _$httpBackend_;
-
$httpBackend.whenGET('/users/me/').respond('');
//Instantiate directive.
@@ -134,8 +131,9 @@
tmp_scope.myform = sampleForm;
//gotacha: Controller and link functions will execute.
- el = angular.element('
');
+ var el = angular.element('
');
$compile(el)(tmp_scope);
+ tmp_scope.$digest();
$rootScope.$digest();
//Grab controller instance
@@ -144,6 +142,8 @@
//Grab scope. Depends on type of scope.
//See angular.element documentation.
scope = el.isolateScope() || el.scope();
+
+ console.log(scope);
}));
var Validator = (function() {
@@ -158,7 +158,7 @@
})();
- it('$scope.submit() should submit valid form', function(){
+ it('$scope.submitForm() should submit valid form', function(){
//Initialize variables
scope.myform.form_fields = sampleSubmissions[0].form_fields;
@@ -175,15 +175,11 @@
return Validator.isNewForm(form) && _.isEqual(compareForm, expectedForm);
};
-
- // console.log('!_.isEmpty(expectedForm.timeElapsed): '+!_.isEmpty(expectedForm.timeElapsed));
- console.log('data:'+data(expectedForm));
-
- // //Set expected HTTP requests
+ //Set expected HTTP requests
$httpBackend.expect('POST',/^(\/forms\/)([0-9a-fA-F]{24})$/, data).respond(200);
- // //Run Controller Logic to Test
- scope.submit();
+ //Run Controller Logic to Test
+ scope.submitForm();
$httpBackend.flush();
expect(scope.myform.submitted).toBe(true);
@@ -191,10 +187,10 @@
});
it('$scope.reloadForm() should reset and reload form', function(){
- scope.submit();
+ scope.submitForm();
scope.reloadForm();
- expect(scope.submitted).toBe(false);
+ expect(scope.myform.submitted).toBe(false);
for(var i=0; i
-
+
diff --git a/public/modules/populate_template_cache.js b/public/modules/populate_template_cache.js
new file mode 100644
index 00000000..228c1b33
--- /dev/null
+++ b/public/modules/populate_template_cache.js
@@ -0,0 +1,33 @@
+angular.module('TellForm.templates', []).run(['$templateCache', function($templateCache) {
+ "use strict";
+ $templateCache.put("../public/modules/core/views/header.client.view.html",
+ "");
+ $templateCache.put("../public/modules/core/views/home.client.view.html",
+ "
TellForms
Craft beautiful forms in seconds.
Craft beautiful forms.
TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
Create your next ______.
Tell a story with a form.
TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
");
+ $templateCache.put("../public/modules/forms/views/admin-form.client.view.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/list-forms.client.view.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/submit-form.client.view.html",
+ "");
+}]);
diff --git a/public/modules/users/tests/unit/services/user.client.service.test.js b/public/modules/users/tests/unit/services/user.client.service.test.js
index ab1e9e90..2d28e4ba 100644
--- a/public/modules/users/tests/unit/services/user.client.service.test.js
+++ b/public/modules/users/tests/unit/services/user.client.service.test.js
@@ -126,7 +126,7 @@
$httpBackend.expect('GET', '/auth/verify/'+sampleVerifyToken).respond(200);
//Run Service Logic to Test
- expect(function(){ User.validateVerifyToken(sampleVerifyToken) }).not.toThrow();
+ expect(function(){ User.validateVerifyToken(sampleVerifyToken); }).not.toThrow();
$httpBackend.flush();
});
diff --git a/public/populate_template_cache.js b/public/populate_template_cache.js
new file mode 100644
index 00000000..879c3da9
--- /dev/null
+++ b/public/populate_template_cache.js
@@ -0,0 +1,324 @@
+angular.module('NodeForm.templates', []).run(['$templateCache', function($templateCache) {
+ "use strict";
+ $templateCache.put("../public/modules/core/views/header.client.view.html",
+ "");
+ $templateCache.put("../public/modules/core/views/home.client.view.html",
+ "
TellForm
Craft beautiful forms in seconds.
Craft beautiful forms.
TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
Create your next ______.
Tell a story with a form.
TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
TellForm is an opensource alternative to TypeForm that can create stunning forms from PDFs or from scratch
");
+ $templateCache.put("../public/modules/forms/views/admin-form.client.view.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/list-forms.client.view.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/submit-form.client.view.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/adminTabs/analyze.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/adminTabs/configure.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/adminTabs/create.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/adminTabs/design.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/cgBusy/update-form-message-TypeA.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/cgBusy/update-form-message-TypeB.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/entryPage/startPage.html",
+ "{{pageData.introTitle}}
{{pageData.introParagraph}}
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/checkbox.html",
+ " 0\" ng-click=\"setActiveField(field._id, index)\">
{{field.title}} (* required)
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/date.html",
+ " {{field.title}} *(required)
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/dropdown.html",
+ " 0\">
{{field.title}} *(required)
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/email.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/file.html",
+ "{{field.title}} (* required)
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/hidden.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/legal.html",
+ "{{field.title}} *(required)
{{field.description}}
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/link.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/natural.html",
+ " {{field.title}} *(required)
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/number.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/password.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/radio.html",
+ " 0\">
{{field.title}} *(required)
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/rating.html",
+ " {{field.title}} *(required)
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/statement.html",
+ "{{field.description}}
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/textarea.html",
+ " {{field.title}} *(required)
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/textfield.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/field/yes_no.html",
+ " {{field.title}} *(required)
{{field.description}}
");
+ $templateCache.put("../public/modules/forms/views/directiveViews/form/configure-form.client.view.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/form/edit-form.client.view.html",
+ "");
+ $templateCache.put("../public/modules/forms/views/directiveViews/form/edit-submissions-form.client.view.html",
+ " ");
+ $templateCache.put("../public/modules/forms/views/directiveViews/form/submit-form.client.view.html",
+ "{{ myform.title }} (private preview)
{{myform | formValidity}} out of {{myform.visible_form_fields.length}} answered
");
+ $templateCache.put("../public/modules/users/views/authentication/access-denied.client.view.html",
+ "You need to be logged in to access this page
Login");
+ $templateCache.put("../public/modules/users/views/authentication/signin.client.view.html",
+ "");
+ $templateCache.put("../public/modules/users/views/authentication/signup-success.client.view.html",
+ "Signup Successful
You've successfully registered an account at TellForm.
But your account is not activated yet
Before you continue, make sure to check your email for our verification. If you don't receive it within 24h drop us a line at hi@TellForm.com
");
+ $templateCache.put("../public/modules/users/views/authentication/signup.client.view.html",
+ "");
+ $templateCache.put("../public/modules/users/views/password/forgot-password.client.view.html",
+ "Restore your password
Enter your account email.
");
+ $templateCache.put("../public/modules/users/views/password/reset-password-invalid.client.view.html",
+ "");
+ $templateCache.put("../public/modules/users/views/password/reset-password-success.client.view.html",
+ "");
+ $templateCache.put("../public/modules/users/views/password/reset-password.client.view.html",
+ "");
+ $templateCache.put("../public/modules/users/views/settings/change-password.client.view.html",
+ "");
+ $templateCache.put("../public/modules/users/views/settings/edit-profile.client.view.html",
+ "Edit your profile
");
+ $templateCache.put("../public/modules/users/views/settings/social-accounts.client.view.html",
+ "Connected social accounts:
Connect other social accounts:
");
+ $templateCache.put("../public/modules/users/views/verify/resend-verify-email.client.view.html",
+ "Resend your account verification email
Enter your account email.
{{error}}
Verification Email has been Sent
A verification email has been sent to {{username}}.
But your account is still not activated yet
Check your email and click on the activation link to activate your account. If you have any questions drop us a line at hi@TellForm.com
");
+ $templateCache.put("../public/modules/users/views/verify/verify-account.client.view.html",
+ "");
+}]);