added whole-app translation
This commit is contained in:
parent
38f9aba54c
commit
637ff4dc70
|
@ -72,9 +72,9 @@ var FormSchema = new Schema({
|
|||
},
|
||||
language: {
|
||||
type: String,
|
||||
enum: ['english', 'french', 'spanish', 'german', 'italian'],
|
||||
required: 'Form must have a language',
|
||||
default: 'english'
|
||||
enum: ['en', 'fr', 'es', 'it', 'de'],
|
||||
default: 'en',
|
||||
required: 'Form must have a language'
|
||||
},
|
||||
description: {
|
||||
type: String,
|
||||
|
|
|
@ -94,8 +94,8 @@ var UserSchema = new Schema({
|
|||
},
|
||||
language: {
|
||||
type: String,
|
||||
enum: ['english', 'french', 'spanish', 'italian', 'german'],
|
||||
default: 'english',
|
||||
enum: ['en', 'fr', 'es', 'it', 'de'],
|
||||
default: 'en',
|
||||
required: 'User must have a language'
|
||||
},
|
||||
lastModified: {
|
||||
|
|
|
@ -4,7 +4,7 @@
|
|||
var ApplicationConfiguration = (function() {
|
||||
// Init module configuration options
|
||||
var applicationModuleName = 'NodeForm';
|
||||
var applicationModuleVendorDependencies = ['duScroll', 'ui.select', 'cgBusy', 'ngSanitize', 'vButton', 'ngResource', 'NodeForm.templates', 'ui.router', 'ui.bootstrap', 'ui.utils'];
|
||||
var applicationModuleVendorDependencies = ['duScroll', 'ui.select', 'cgBusy', 'ngSanitize', 'vButton', 'ngResource', 'NodeForm.templates', 'ui.router', 'ui.bootstrap', 'ui.utils', 'pascalprecht.translate'];
|
||||
|
||||
// Add a new vertical module
|
||||
var registerModule = function(moduleName, dependencies) {
|
||||
|
|
159
public/dist/application.js
vendored
159
public/dist/application.js
vendored
|
@ -4,7 +4,7 @@
|
|||
var ApplicationConfiguration = (function() {
|
||||
// Init module configuration options
|
||||
var applicationModuleName = 'NodeForm';
|
||||
var applicationModuleVendorDependencies = ['duScroll', 'ui.select', 'cgBusy', 'ngSanitize', 'vButton', 'ngResource', 'NodeForm.templates', 'ui.router', 'ui.bootstrap', 'ui.utils'];
|
||||
var applicationModuleVendorDependencies = ['duScroll', 'ui.select', 'cgBusy', 'ngSanitize', 'vButton', 'ngResource', 'NodeForm.templates', 'ui.router', 'ui.bootstrap', 'ui.utils', 'pascalprecht.translate'];
|
||||
|
||||
// Add a new vertical module
|
||||
var registerModule = function(moduleName, dependencies) {
|
||||
|
@ -120,9 +120,7 @@ angular.element(document).ready(function() {
|
|||
angular.module('NodeForm.templates', []).run(['$templateCache', function($templateCache) {
|
||||
"use strict";
|
||||
$templateCache.put("modules/core/views/header.client.view.html",
|
||||
"<section class=\"navbar navbar-fixed-top navbar-inverse\" data-ng-controller=HeaderController ng-hide=hideNav><div class=container><div class=navbar-header><button class=navbar-toggle type=button data-ng-click=toggleCollapsibleMenu()><span class=sr-only>Toggle navigation</span> <span class=icon-bar></span> <span class=icon-bar></span> <span class=icon-bar></span></button> <a href=\"https://www.tellform.com/#!/\" class=navbar-brand><i class=\"fa fa-archive\" style=\"padding-right: 0.3em\"></i>Tell<span>Form</span></a></div><nav class=\"collapse navbar-collapse\" collapse=!isCollapsed role=navigation><ul class=\"nav navbar-nav\" data-ng-if=authentication.isAuthenticated()><li data-ng-repeat=\"item in menu.items | orderBy: 'position'\" data-ng-if=item.shouldRender(authentication.isAuthenticated()); ng-switch=item.menuItemType ui-route={{item.uiRoute}} class={{item.menuItemClass}} ng-class=\"{active: ($uiRoute)}\" dropdown=\"item.menuItemType === 'dropdown'\"><a ng-switch-when=dropdown class=dropdown-toggle dropdown-toggle><span data-ng-bind=item.title></span> <b class=caret></b></a><ul ng-switch-when=dropdown class=dropdown-menu><li data-ng-repeat=\"subitem in item.items | orderBy: 'position'\" data-ng-if=subitem.shouldRender(authentication.isAuthenticated()); ui-route={{subitem.uiRoute}} ng-class=\"{active: $uiRoute}\"><a href=/#!/{{subitem.link}} data-ng-bind=subitem.title></a></li></ul><a ng-switch-default href=/#!/{{item.link}} data-ng-bind=item.title></a></li></ul><ul class=\"nav navbar-nav navbar-right\" data-ng-hide=authentication.isAuthenticated()><li ng-hide=$root.signupDisabled ui-route=/signup ng-class=\"{active: $uiRoute}\"><a href=/#!/signup>Sign Up</a></li><li class=divider-vertical></li><li ui-route=/signin ng-class=\"{active: $uiRoute}\"><a href=/#!/signin>Sign In</a></li></ul><ul class=\"nav navbar-nav navbar-right\" data-ng-show=authentication.isAuthenticated()><li class=dropdown uib-dropdown><a href=# class=dropdown-toggle data-toggle=dropdown dropdown-toggle><span>My Settings</span> <b class=caret></b></a><ul class=dropdown-menu><li><a href=/#!/settings/profile>Edit Profile</a></li><li class=divider></li><li><a href=/#!/settings/password>Change Password</a></li><li data-ng-show=\"authentication.isAuthenticated().provider === 'local'\"><a href=/#!/settings/password>Change Password</a></li></ul></li><li ng-click=signout()><a>Signout</a></li></ul></nav></div></section>");
|
||||
$templateCache.put("modules/core/views/home.client.view.html",
|
||||
"<section data-ng-controller=HomeController class=hero-section style=overflow:hidden><div class=opacity-background></div><div class=image-background></div><div class=\"jumbotron text-center\"><div class=container data-ng-if=!authentication.isAuthenticated()><div class=\"row text-center logo\" style=\"border-bottom: 1px solid rgba(255,255,255,.2); margin-bottom: 30px\"><h3 class=col-xs-12 style=\"color: #FA787E; margin-bottom:0px\"><i class=\"fa fa-archive fa-3x\"></i></h3><h2 class=col-xs-12 style=margin-top:0px><span>Tell<span style=\"text-decoration: underline; color: #FA787E\">Form</span></span></h2></div><div class=row style=margin-top:0px><h1 class=\"lead col-md-10 col-md-offset-1 hidden-xs hidden-sm\" style=font-size:3.8em>Craft beautiful forms in seconds.</h1><h2 class=\"lead col-sm-12 text-center hidden-md hidden-lg\" style=font-size:2.8em>Craft beautiful forms.</h2><p class=\"lead hidden-xs hidden-sm col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2\" style=\"font-size:1.5em; color:rgba(255,255,255,.75)\"><i>TellForm is an opensource <b>alternative to TypeForm</b> that can create stunning forms from PDFs or from scratch</i></p><p class=\"lead col-xs-12 hidden-md hidden-lg\" style=\"font-size:1.5em; color:rgba(255,255,255,.75)\"><i>TellForm is an opensource <b>alternative to TypeForm</b> that can create stunning forms from PDFs or from scratch</i></p></div></div></div><div class=\"jumbotron text-center\"><div class=container data-ng-if=!authentication.isAuthenticated()><div class=row style=margin-top:0px><h1 class=\"lead col-md-10 col-md-offset-1 hidden-xs hidden-sm\" style=font-size:3.8em>Create your next ______.</h1><h1 class=\"lead col-md-10 col-md-offset-1 hidden-xs hidden-sm\" style=font-size:2.5em>Tell a story with a form.</h1></div><div class=row style=margin-top:7%><a class=\"col-xs-4 col-xs-offset-4 btn btn-info signup-btn\" href=/#!/signup style=\"background-color:#FA787E; border: none; font-size: 2em; padding: 0.3em 0.9em; color: white\">sign me up!</a></div></div></div></section><footer class=footer-basic-centered><p class=footer-company-motto>The company motto.</p><p class=footer-links><a href=\"/#!/\">Home</a> · <a href=/#!/blog>Blog</a> · <a href=https://github.com/whitef0x0/tellform>Github Source</a> · <a href=/#!/about>About</a> . <a href=/#!/terms>Privacy & Terms</a> · <a href=https://status.tellform.com>System Status</a> · <a href=mailto:polydaic@gmail.com>Contact</a></p><p class=footer-company-name>TellForm © 2016</p></footer>");
|
||||
"<section class=\"navbar navbar-fixed-top navbar-inverse\" data-ng-controller=HeaderController ng-hide=hideNav><div class=container><div class=navbar-header><button class=navbar-toggle type=button data-ng-click=toggleCollapsibleMenu()><span class=sr-only>Toggle navigation</span> <span>{{ 'MENU_BTN' | translate }}</span></button> <a href=\"https://www.tellform.com/#!/\" class=navbar-brand><i class=\"fa fa-archive\" style=\"padding-right: 0.3em\"></i>Tell<span>Form</span></a></div><nav class=\"collapse navbar-collapse\" collapse=!isCollapsed role=navigation><ul class=\"nav navbar-nav\" data-ng-if=authentication.isAuthenticated()><li data-ng-repeat=\"item in menu.items | orderBy: 'position'\" data-ng-if=item.shouldRender(authentication.isAuthenticated()); ng-switch=item.menuItemType ui-route={{item.uiRoute}} class={{item.menuItemClass}} ng-class=\"{active: ($uiRoute)}\" dropdown=\"item.menuItemType === 'dropdown'\"><a ng-switch-when=dropdown class=dropdown-toggle dropdown-toggle><span data-ng-bind=item.title></span> <b class=caret></b></a><ul ng-switch-when=dropdown class=dropdown-menu><li data-ng-repeat=\"subitem in item.items | orderBy: 'position'\" data-ng-if=subitem.shouldRender(authentication.isAuthenticated()); ui-route={{subitem.uiRoute}} ng-class=\"{active: $uiRoute}\"><a href=/#!/{{subitem.link}} data-ng-bind=subitem.title></a></li></ul><a ng-switch-default href=/#!/{{item.link}} data-ng-bind=item.title></a></li></ul><ul class=\"nav navbar-nav navbar-right\" data-ng-hide=authentication.isAuthenticated()><li ng-hide=$root.signupDisabled ui-route=/signup ng-class=\"{active: $uiRoute}\"><a href=/#!/signup>Sign Up</a></li><li class=divider-vertical></li><li ui-route=/signin ng-class=\"{active: $uiRoute}\"><a href=/#!/signin>Sign In</a></li></ul><ul class=\"nav navbar-nav navbar-right\" data-ng-show=authentication.isAuthenticated()><li class=dropdown uib-dropdown><a href=# class=dropdown-toggle data-toggle=dropdown dropdown-toggle><span>My Settings</span> <b class=caret></b></a><ul class=dropdown-menu><li><a href=/#!/settings/profile>{{ 'EDIT_PROFILE_TAB' | translate }}</a></li><li class=divider></li><li><a href=/#!/settings/password>{{ 'CHANGE_PASSWORD_TAB' | translate }}</a></li></ul></li><li ng-click=signout()><a>Signout</a></li></ul></nav></div></section>");
|
||||
$templateCache.put("modules/forms/admin/views/admin-form.client.view.html",
|
||||
"<div class=container cg-busy=\"{promise:updatePromise,templateUrl:'modules/forms/admin/views/directiveViews/cgBusy/update-form-message-TypeB.html',message:'Updating form...', backdrop:false, wrapperClass:'.busy-updating-wrapper'}\"></div><section class=\"container admin-form\"><script type=text/ng-template id=myModalContent.html><div class=\"modal-header\">\n" +
|
||||
" <h2 class=\"modal-title hidden-md hidden-lg\">Are you ABSOLUTELY sure?</h2>\n" +
|
||||
|
@ -146,7 +144,7 @@ angular.module('NodeForm.templates', []).run(['$templateCache', function($templa
|
|||
" </button>\n" +
|
||||
" </div></script><div class=\"page-header row\" style=\"padding-bottom: 0px\"><div class=\"col-xs-10 col-sm-8\"><h1 class=\"hidden-sm hidden-xs\" data-ng-bind=myform.title style=\"margin-bottom: 0px\"></h1><h2 class=\"hidden-md hidden-lg\" data-ng-bind=myform.title style=\"margin-bottom: 0px\"></h2></div><div class=\"col-xs-1 col-sm-2\"><small class=pull-right><button class=\"btn btn-danger\" ng-click=openDeleteModal()><i class=\"fa fa-trash-o\"></i> <span class=hidden-xs>Delete</span> <span class=\"hidden-xs hidden-sm\">Form</span></button></small></div><div class=\"col-xs-1 col-sm-2\"><small class=pull-right><a class=\"btn btn-default view-form-btn\" href=/#!/forms/{{myform._id}}><span class=\"hidden-xs hidden-sm\">View <span ng-show=myform.isLive>Live</span> <span ng-hide=myform.isLive>Preview</span> Form</span> <span class=\"hidden-xs hidden-md hidden-lg\">View <span ng-if=myform.isLive>Live</span> <span ng-if=!myform.isLive>Preview</span></span> <i class=\"status-light status-light-on fa fa-dot-circle-o\" ng-if=myform.isLive></i> <i class=\"status-light status-light-off fa fa-dot-circle-o\" ng-if=!myform.isLive></i></a></small></div></div><div class=row><div class=col-xs-12><tabs data=tabData></tabs></div><div class=col-xs-12><ui-view></ui-view></div></div></section>");
|
||||
$templateCache.put("modules/forms/admin/views/list-forms.client.view.html",
|
||||
"<section class=overlay ng-if=showCreateModal ng-click=closeCreateModal()></section><section data-ng-controller=\"ListFormsController as ctrl\" data-ng-init=findAll() class=container><br><div class=row><div ng-click=openCreateModal() class=\"col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-1 col-md-3 col-md-offset-1 form-item create-new\"><div class=\"title-row col-xs-12\"><h4 class=\"fa fa-plus fa-6\"></h4></div><div class=\"col-xs-12 details-row\"><small class=list-group-item-text>Create a new form</small></div></div><form name=forms.createForm class=\"col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-1 col-md-3 col-md-offset-1 form-item create-new new-form\" ng-if=showCreateModal><div class=\"title-row row\"><div class=\"col-xs-5 field-title text-left\">Name</div><div class=\"col-xs-12 field-input\"><input name=title required ng-model=formTitle ng-pattern=\"/^[a-zA-Z0-9 \\-.]*$/\" ng-minlength=\"4\"></div></div><div class=\"details-row row\"><div class=\"col-xs-5 field-title text-left\">Language</div><div class=\"col-xs-12 field-input\"><div class=\"button custom-select\"><select style=color:black name=language required ng-model=formLanguage ng-init=\"formLanguage = user.language\"><option ng-repeat=\"language in languages\" value={{language}}>{{language}}</option></select></div></div></div><div class=\"details-row submit row\"><div class=\"col-xs-12 field-title text-center\"><button class=\"btn btn-primary\" ng-disabled=forms.createForm.$invalid ng-click=createNewForm()>Create Form</button></div></div></form><div data-ng-repeat=\"form in myforms\" ng-style=\"{ 'background-color': form.design.colors.backgroundColor, 'color': form.design.colors.answerColor }\" class=\"col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-1 col-md-3 col-md-offset-1 form-item container\"><div class=row><span class=pull-right><i style=cursor:pointer class=\"fa fa-trash-o\" ng-click=removeForm($index)></i> <i style=cursor:pointer class=\"fa fa-files-o\" ng-click=duplicateForm($index)></i></span></div><div class=row><a data-ng-href=#!/forms/{{form._id}}/admin/create ng-style=\"{ 'color': form.design.colors.answerColor }\" class=\"title-row col-xs-12\"><h4 class=list-group-item-heading data-ng-bind=form.title></h4></a></div><div class=\"row footer\"><div class=\"col-xs-12 details-row\"><small class=list-group-item-text>Created on <span data-ng-bind=\"form.created | date:'shortDate'\"></span></small></div></div></div></div></section>");
|
||||
"<section class=overlay ng-if=showCreateModal ng-click=closeCreateModal()></section><section data-ng-controller=\"ListFormsController as ctrl\" data-ng-init=findAll() class=container><br><div class=row><div ng-click=openCreateModal() class=\"col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-1 col-md-3 col-md-offset-1 form-item create-new\"><div class=\"title-row col-xs-12\"><h4 class=\"fa fa-plus fa-6\"></h4></div><div class=\"col-xs-12 details-row\"><small class=list-group-item-text>Create a new form</small></div></div><form name=forms.createForm class=\"col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-1 col-md-3 col-md-offset-1 form-item create-new new-form\" ng-if=showCreateModal><div class=\"title-row row\"><div class=\"col-xs-5 field-title text-left\">Name</div><div class=\"col-xs-12 field-input\"><input name=title required ng-model=formTitle ng-pattern=languageRegExp ng-minlength=4 style=\"color:black\"></div></div><div class=\"details-row row\"><div class=\"col-xs-5 field-title text-left\">Language</div><div class=\"col-xs-12 field-input\"><div class=\"button custom-select\"><select style=color:black name=language required ng-model=formLanguage ng-init=\"formLanguage = user.language\"><option ng-repeat=\"language in languages\" value={{language}}>{{language}}</option></select></div></div></div><div class=\"details-row submit row\"><div class=\"col-xs-12 field-title text-center\"><button class=\"btn btn-primary\" ng-disabled=forms.createForm.$invalid ng-click=createNewForm()>Create Form</button></div></div></form><div data-ng-repeat=\"form in myforms\" ng-style=\"{ 'background-color': form.design.colors.backgroundColor, 'color': form.design.colors.answerColor }\" class=\"col-xs-6 col-xs-offset-3 col-sm-4 col-sm-offset-1 col-md-3 col-md-offset-1 form-item container\"><div class=row><span class=pull-right><i style=cursor:pointer class=\"fa fa-trash-o\" ng-click=removeForm($index)></i> <i style=cursor:pointer class=\"fa fa-files-o\" ng-click=duplicateForm($index)></i></span></div><div class=row><a data-ng-href=#!/forms/{{form._id}}/admin/create ng-style=\"{ 'color': form.design.colors.answerColor }\" class=\"title-row col-xs-12\"><h4 class=list-group-item-heading data-ng-bind=form.title></h4></a></div><div class=\"row footer\"><div class=\"col-xs-12 details-row\"><small class=list-group-item-text>Created on <span data-ng-bind=\"form.created | date:'shortDate'\"></span></small></div></div></div></div></section>");
|
||||
$templateCache.put("modules/forms/base/views/submit-form.client.view.html",
|
||||
"<section class=public-form ng-style=\"{ 'background-color': myform.design.colors.backgroundColor }\"><submit-form-directive myform=myform></submit-form-directive></section><script ng-if=myform.analytics.gaCode>(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){\n" +
|
||||
" (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),\n" +
|
||||
|
@ -195,7 +193,7 @@ angular.module('NodeForm.templates', []).run(['$templateCache', function($templa
|
|||
"<div class=\"field row\" ng-click=\"setActiveField(field._id, index, true)\"><div class=\"col-xs-12 field-title\" ng-style=\"{'color': design.colors.questionColor}\"><h3><small class=field-number>{{index+1}} <i class=\"fa fa-angle-double-right\" aria-hidden=true></i></small> {{field.title}} <span class=required-error ng-show=!field.required>{{ 'OPTIONAL' | translate }}</span></h3><small>{{ 'NEWLINE' | translate }}</small><p><small>{{field.description}}</small></p></div><div class=\"col-xs-12 field-input\"><small style=font-size:0.6em>Press SHIFT+ENTER to add a newline</small><textarea class=\"textarea focusOn\" type=text ng-model=field.fieldValue ng-model-options=\"{ debounce: 250 }\" ng-class=\"{ 'no-border': !!field.fieldValue }\" value={{field.fieldValue}} ng-required=field.required ng-disabled=field.disabled ng-focus=\"setActiveField(field._id, index, true)\" on-enter-or-tab-key=nextField() on-tab-and-shift-key=prevField() style=\"border: none; border-left: lightgrey dashed 2px\">\n" +
|
||||
" </textarea></div></div><div><div class=\"btn btn-lg btn-default col-xs-12 col-sm-4 hidden-xs\" style=\"padding: 4px; margin-top:8px; background: rgba(255,255,255,0.5)\"><button ng-disabled=\"!field.fieldValue || forms.myForm.{{field.fieldType}}{{$index}}.$invalid\" ng-style=\"{'background-color':design.colors.buttonColor, 'color':design.colors.buttonTextColor}\" ng-click=$root.nextField() class=\"btn col-sm-5 col-xs-5\">{{ 'OK' | translate }} <i class=\"fa fa-check\"></i></button><div class=\"col-sm-3 col-xs-6\" style=margin-top:0.2em><small style=\"color:#ddd; font-size:70%\">{{ 'ENTER' | translate }}</small></div></div></div>");
|
||||
$templateCache.put("modules/forms/base/views/directiveViews/field/textfield.html",
|
||||
"<div class=\"textfield field row\" ng-click=\"setActiveField(field._id, index, true)\"><div class=\"col-xs-12 field-title row-fluid\" ng-style=\"{'color': design.colors.questionColor}\"><h3 class=col-xs-12><small class=field-number>{{index+1}} <i class=\"fa fa-angle-double-right\" aria-hidden=true></i></small> {{field.title}} <span class=required-error ng-show=!field.required>({{ 'OPTIONAL' | translate }})</span></h3><p class=col-xs-12><small>{{field.description}}</small></p></div><div class=\"col-xs-12 field-input\"><input ng-style=\"{'color': design.colors.answerColor, 'border-color': design.colors.answerColor}\" name={{field.fieldType}}{{index}} type={{field.input_type}} ng-pattern=field.validateRegex placeholder={{field.placeholder}} ng-class=\"{ 'no-border': !!field.fieldValue }\" class=\"focusOn text-field-input\" ng-model=field.fieldValue ng-model-options=\"{ debounce: 250 }\" value=field.fieldValue ng-model=field.fieldValue ng-model-options=\"{ debounce: 250 }\" value=field.fieldValue ng-focus=\"setActiveField(field._id, index, true)\" on-enter-or-tab-key=nextField() on-tab-and-shift-key=prevField() ng-required=field.required ng-disabled=field.disabled aria-describedby=inputError2Status></div><div class=col-xs-12><div ng-show=\"forms.myForm.{{field.fieldType}}{{index}}.$invalid && !!forms.myForm.{{field.fieldType}}{{index}}.$viewValue \" class=\"alert alert-danger\" role=alert><span class=\"glyphicon glyphicon-exclamation-sign\" aria-hidden=true></span> <span class=sr-only>Error:</span> <span ng-if=\"field.fieldType == 'email'\">{{ 'ERROR_EMAIL_INVALID' | translate }}</span> <span ng-if=field.validateRegex>{{ 'ERROR_NOT_A_NUMBER' | translate }}</span> <span ng-if=\"field.fieldType == 'link'\">{{ 'ERROR_URL_INVALID' | translate }}</span></div></div></div><div><div class=\"btn btn-lg btn-default col-xs-12 col-sm-4 hidden-xs\" style=\"padding: 4px; margin-top:8px; background: rgba(255,255,255,0.5)\"><button ng-disabled=\"!field.fieldValue || forms.myForm.{{field.fieldType}}{{$index}}.$invalid\" ng-style=\"{'background-color':design.colors.buttonColor, 'color':design.colors.buttonTextColor}\" ng-click=$root.nextField() class=\"btn col-sm-5 col-xs-5\">{{ 'OK' | translate }} <i class=\"fa fa-check\"></i></button><div class=\"col-xs-6 col-sm-3\" style=margin-top:0.2em><small style=\"color:#ddd; font-size:70%\">{{ 'ENTER' | translate }}</small></div></div></div>");
|
||||
"<div class=\"textfield field row\" ng-click=\"setActiveField(field._id, index, true)\"><div class=\"col-xs-12 field-title row-fluid\" ng-style=\"{'color': design.colors.questionColor}\"><h3 class=col-xs-12><small class=field-number>{{index+1}} <i class=\"fa fa-angle-double-right\" aria-hidden=true></i></small> {{field.title}} <span class=required-error ng-show=!field.required>({{ 'OPTIONAL' | translate }})</span></h3><p class=col-xs-12><small>{{field.description}}</small></p></div><div class=\"col-xs-12 field-input\"><input ng-style=\"{'color': design.colors.answerColor, 'border-color': design.colors.answerColor}\" name={{field.fieldType}}{{index}} type={{field.input_type}} ng-pattern=field.validateRegex placeholder={{field.placeholder}} ng-class=\"{ 'no-border': !!field.fieldValue }\" class=\"focusOn text-field-input\" ng-model=field.fieldValue ng-model-options=\"{ debounce: 250 }\" value=field.fieldValue ng-focus=\"setActiveField(field._id, index, true)\" on-enter-or-tab-key=nextField() on-tab-and-shift-key=prevField() ng-required=field.required ng-disabled=field.disabled aria-describedby=inputError2Status></div><div class=col-xs-12><div ng-show=\"forms.myForm.{{field.fieldType}}{{index}}.$invalid && !!forms.myForm.{{field.fieldType}}{{index}}.$viewValue \" class=\"alert alert-danger\" role=alert><span class=\"glyphicon glyphicon-exclamation-sign\" aria-hidden=true></span> <span class=sr-only>Error:</span> <span ng-if=\"field.fieldType == 'email'\">{{ 'ERROR_EMAIL_INVALID' | translate }}</span> <span ng-if=field.validateRegex>{{ 'ERROR_NOT_A_NUMBER' | translate }}</span> <span ng-if=\"field.fieldType == 'link'\">{{ 'ERROR_URL_INVALID' | translate }}</span></div></div></div><div><div class=\"btn btn-lg btn-default col-xs-12 col-sm-4 hidden-xs\" style=\"padding: 4px; margin-top:8px; background: rgba(255,255,255,0.5)\"><button ng-disabled=\"!field.fieldValue || forms.myForm.{{field.fieldType}}{{$index}}.$invalid\" ng-style=\"{'background-color':design.colors.buttonColor, 'color':design.colors.buttonTextColor}\" ng-click=$root.nextField() class=\"btn col-sm-5 col-xs-5\">{{ 'OK' | translate }} <i class=\"fa fa-check\"></i></button><div class=\"col-xs-6 col-sm-3\" style=margin-top:0.2em><small style=\"color:#ddd; font-size:70%\">{{ 'ENTER' | translate }}</small></div></div></div>");
|
||||
$templateCache.put("modules/forms/base/views/directiveViews/field/yes_no.html",
|
||||
"<div class=\"field row radio\" ng-click=\"setActiveField(field._id, index, true)\" on-tab-and-shift-key=prevField() key-to-truthy key-char-truthy=y key-char-falsey=n field=field><div class=\"col-xs-12 field-title\" ng-style=\"{'color': design.colors.questionColor}\"><h3 class=row><small class=field-number>{{index+1}} <i class=\"fa fa-angle-double-right\" aria-hidden=true></i></small> {{field.title}} <span class=required-error ng-show=!field.required>{{ 'OPTIONAL' | translate }}</span></h3><p class=row>{{field.description}}</p></div><div class=\"col-xs-12 field-input\"><div class=row><label class=\"btn btn-default col-md-2 col-sm-3 col-xs-7\" style=\"background: rgba(0,0,0,0.1); text-align:left\"><input type=radio value=true class=focusOn style=\"opacity: 0; margin-left: 0px\" ng-model=field.fieldValue ng-focus=\"setActiveField(field._id, index, true)\" ng-model-options=\"{ debounce: 250 }\" ng-required=field.required ng-change=$root.nextField() ng-disabled=\"field.disabled\"><div class=letter>{{ 'Y' | translate }}</div><span>{{ 'YES' | translate }}</span> <i ng-show=\"field.fieldValue === 'true'\" class=\"fa fa-check\" aria-hidden=true></i></label></div><div class=row style=\"margin-top: 10px\"><label class=\"btn btn-default col-md-2 col-sm-3 col-xs-7\" style=\"background: rgba(0,0,0,0.1); text-align:left\"><input type=radio value=false style=\"opacity:0; margin-left:0px\" ng-model=field.fieldValue ng-model-options=\"{ debounce: 250 }\" ng-required=field.required ng-change=$root.nextField() ng-disabled=\"field.disabled\"><div class=letter>{{ 'N' | translate }}</div><span>{{ 'NO' | translate }}</span> <i ng-show=\"field.fieldValue === 'false'\" class=\"fa fa-check\" aria-hidden=true></i></label></div></div></div><br>");
|
||||
$templateCache.put("modules/forms/base/views/directiveViews/form/submit-form.client.view.html",
|
||||
|
@ -238,7 +236,7 @@ ApplicationConfiguration.registerModule('core', ['users']);
|
|||
// Use Application configuration module to register a new module
|
||||
ApplicationConfiguration.registerModule('forms', [
|
||||
'ngFileUpload', 'ui.router.tabs', 'ui.date', 'ui.sortable',
|
||||
'angular-input-stars', 'users', 'pascalprecht.translate'
|
||||
'angular-input-stars', 'users'
|
||||
]);//, 'colorpicker.module' @TODO reactivate this module
|
||||
|
||||
'use strict';
|
||||
|
@ -274,7 +272,7 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
|
|||
DELETE: 'Delete',
|
||||
CANCEL: 'Cancel',
|
||||
SUBMIT: 'Submit',
|
||||
UPLOAD_FILE: 'Upload your File',
|
||||
UPLOAD_FILE: 'Upload your File'
|
||||
});
|
||||
|
||||
$translateProvider.preferredLanguage('english')
|
||||
|
@ -314,7 +312,7 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
|
|||
SUBMIT: 'Enregistrer',
|
||||
UPLOAD_FILE: 'Envoyer un fichier',
|
||||
Y: 'O',
|
||||
N: 'N',
|
||||
N: 'N'
|
||||
});
|
||||
|
||||
}]);
|
||||
|
@ -327,8 +325,8 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
|
|||
FORM_SUCCESS: 'Ihre Angaben wurden gespeichert.',
|
||||
REVIEW: 'Unvollständig',
|
||||
BACK_TO_FORM: 'Zurück zum Formular',
|
||||
EDIT_FORM: '',
|
||||
CREATE_FORM: '',
|
||||
EDIT_FORM: 'Bearbeiten Sie diese TellForm',
|
||||
CREATE_FORM: 'Erstellen Sie eine TellForm',
|
||||
ADVANCEMENT: '{{done}} von {{total}} beantwortet',
|
||||
CONTINUE_FORM: 'Zum Formular',
|
||||
REQUIRED: 'verpflichtend',
|
||||
|
@ -343,14 +341,14 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
|
|||
NO: 'Nein',
|
||||
NEWLINE: 'Für eine neue Zeile SHIFT+ENTER drücken',
|
||||
CONTINUE: 'Weiter',
|
||||
LEGAL_ACCEPT: 'I accept',
|
||||
LEGAL_NO_ACCEPT: 'I don’t accept',
|
||||
LEGAL_ACCEPT: 'Ich akzeptiere',
|
||||
LEGAL_NO_ACCEPT: 'Ich akzeptiere nicht',
|
||||
DELETE: 'Entfernen',
|
||||
CANCEL: 'Canceln',
|
||||
SUBMIT: 'Speichern',
|
||||
UPLOAD_FILE: 'Datei versenden',
|
||||
Y: 'J',
|
||||
N: 'N',
|
||||
N: 'N'
|
||||
});
|
||||
|
||||
}]);
|
||||
|
@ -363,8 +361,8 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
|
|||
FORM_SUCCESS: 'Il formulario è stato inviato con successo!',
|
||||
REVIEW: 'Incompleto',
|
||||
BACK_TO_FORM: 'Ritorna al formulario',
|
||||
EDIT_FORM: '',
|
||||
CREATE_FORM: '',
|
||||
EDIT_FORM: 'Modifica questo Tellform',
|
||||
CREATE_FORM: 'Creare un TellForm',
|
||||
ADVANCEMENT: '{{done}} su {{total}} completate',
|
||||
CONTINUE_FORM: 'Vai al formulario',
|
||||
REQUIRED: 'obbligatorio',
|
||||
|
@ -379,14 +377,14 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
|
|||
NO: 'No',
|
||||
NEWLINE: 'premere SHIFT+INVIO per creare una nuova linea',
|
||||
CONTINUE: 'Continua',
|
||||
LEGAL_ACCEPT: 'I accept',
|
||||
LEGAL_NO_ACCEPT: 'I don’t accept',
|
||||
LEGAL_ACCEPT: 'Accetto',
|
||||
LEGAL_NO_ACCEPT: 'Non accetto',
|
||||
DELETE: 'Cancella',
|
||||
CANCEL: 'Reset',
|
||||
SUBMIT: 'Registra',
|
||||
UPLOAD_FILE: 'Invia un file',
|
||||
Y: 'S',
|
||||
N: 'N',
|
||||
N: 'N'
|
||||
});
|
||||
|
||||
}]);
|
||||
|
@ -399,8 +397,8 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
|
|||
FORM_SUCCESS: '¡El formulario ha sido enviado con éxito!',
|
||||
REVIEW: 'Revisar',
|
||||
BACK_TO_FORM: 'Regresar al formulario',
|
||||
EDIT_FORM: '',
|
||||
CREATE_FORM: '',
|
||||
EDIT_FORM: 'Crear un TellForm',
|
||||
CREATE_FORM: 'Editar este TellForm',
|
||||
ADVANCEMENT: '{{done}} de {{total}} contestadas',
|
||||
CONTINUE_FORM: 'Continuar al formulario',
|
||||
REQUIRED: 'Información requerida',
|
||||
|
@ -415,8 +413,8 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
|
|||
NO: 'No',
|
||||
NEWLINE: 'presione SHIFT+INTRO para crear una nueva línea',
|
||||
CONTINUE: 'Continuar',
|
||||
LEGAL_ACCEPT: 'I accept',
|
||||
LEGAL_NO_ACCEPT: 'I don’t accept',
|
||||
LEGAL_ACCEPT: 'Acepto',
|
||||
LEGAL_NO_ACCEPT: 'No acepto',
|
||||
DELETE: 'Eliminar',
|
||||
CANCEL: 'Cancelar',
|
||||
SUBMIT: 'Registrar',
|
||||
|
@ -439,8 +437,9 @@ angular.module('core').config(['$stateProvider', '$urlRouterProvider',
|
|||
|
||||
'use strict';
|
||||
|
||||
angular.module('core').controller('HeaderController', ['$rootScope', '$scope', 'Menus', '$state', 'Auth', 'User', '$window',
|
||||
function ($rootScope, $scope, Menus, $state, Auth, User, $window) {
|
||||
angular.module('core').controller('HeaderController', ['$rootScope', '$scope', 'Menus', '$state', 'Auth', 'User', '$window', '$translate',
|
||||
function ($rootScope, $scope, Menus, $state, Auth, User, $window, $translate) {
|
||||
|
||||
$rootScope.signupDisabled = $window.signupDisabled;
|
||||
|
||||
$scope.user = $rootScope.user = Auth.ensureHasCurrentUser(User);
|
||||
|
@ -448,6 +447,8 @@ angular.module('core').controller('HeaderController', ['$rootScope', '$scope', '
|
|||
|
||||
$rootScope.languages = $scope.languages = ['english', 'french', 'spanish', 'italian', 'german'];
|
||||
|
||||
$translate.use($scope.user.language);
|
||||
|
||||
$scope.isCollapsed = false;
|
||||
$rootScope.hideNav = false;
|
||||
$scope.menu = Menus.getMenu('topbar');
|
||||
|
@ -486,15 +487,6 @@ angular.module('core').controller('HeaderController', ['$rootScope', '$scope', '
|
|||
|
||||
'use strict';
|
||||
|
||||
|
||||
angular.module('core').controller('HomeController', ['$rootScope', '$scope', 'User', '$state',
|
||||
function($rootScope, $scope, User, $state) {
|
||||
$scope = $rootScope;
|
||||
}
|
||||
]);
|
||||
|
||||
'use strict';
|
||||
|
||||
//Menu service used for managing menus
|
||||
angular.module('core').service('Menus', [
|
||||
|
||||
|
@ -690,11 +682,7 @@ angular.module('core').service('Menus', [
|
|||
|
||||
// Connect to Socket.io server
|
||||
function connect(url) {
|
||||
<<<<<<< HEAD
|
||||
service.socket = io(url, {'transports': ['websocket', 'polling']});
|
||||
=======
|
||||
service.socket = io('https://stage.tellform.com', { transports: ['websocket', 'polling'] });
|
||||
>>>>>>> ffc615a26240cdaebe88ff1064508f7120f0f4d5
|
||||
}
|
||||
|
||||
// Wrap the Socket.io 'emit' method
|
||||
|
@ -1130,7 +1118,7 @@ angular.module('users').controller('AuthenticationController', ['$scope', '$loca
|
|||
angular.module('users').controller('PasswordController', ['$scope', '$stateParams', '$state', 'User',
|
||||
function($scope, $stateParams, $state, User) {
|
||||
$scope.error = '';
|
||||
|
||||
|
||||
// Submit forgotten password account id
|
||||
$scope.askForPasswordReset = function() {
|
||||
User.askForPasswordReset($scope.credentials).then(
|
||||
|
@ -1171,7 +1159,7 @@ angular.module('users').controller('SettingsController', ['$scope', '$rootScope'
|
|||
function($scope, $rootScope, $http, $state, Users) {
|
||||
$scope.user = $rootScope.user;
|
||||
|
||||
// Check if there are additional accounts
|
||||
// Check if there are additional accounts
|
||||
$scope.hasConnectedAdditionalSocialAccounts = function(provider) {
|
||||
for (var i in $scope.user.additionalProvidersData) {
|
||||
return true;
|
||||
|
@ -1521,6 +1509,27 @@ angular.module('users').factory('Users', ['$resource',
|
|||
]);
|
||||
'use strict';
|
||||
|
||||
angular.module('core').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('english', {
|
||||
MENU: 'MENU',
|
||||
SIGNUP_TAB: 'Sign Up',
|
||||
SIGNIN_TAB: 'Sign In',
|
||||
SIGNOUT_TAB: 'Signout',
|
||||
EDIT_PROFILE: 'Edit Profile',
|
||||
MY_FORMS: 'My Forms',
|
||||
MY_SETTINGS: 'My Settings',
|
||||
CHANGE_PASSWORD: 'Change Password'
|
||||
});
|
||||
|
||||
$translateProvider.preferredLanguage('english')
|
||||
.fallbackLanguage('english')
|
||||
.useSanitizeValueStrategy('escape');
|
||||
|
||||
}]);
|
||||
|
||||
'use strict';
|
||||
|
||||
// Forms controller
|
||||
angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope', '$stateParams', '$state', 'Forms', 'CurrentForm', '$http', '$uibModal', 'myForm',
|
||||
function($rootScope, $scope, $stateParams, $state, Forms, CurrentForm, $http, $uibModal, myForm) {
|
||||
|
@ -1657,6 +1666,15 @@ angular.module('forms').controller('ListFormsController', ['$rootScope', '$scope
|
|||
$scope.forms = {};
|
||||
$scope.showCreateModal = false;
|
||||
|
||||
$scope.languageRegExp = $scope.myPt = {
|
||||
regExp: /[@!#$%^&*()\-+={}\[\]|\\/'";:`.,~№?<>]+/i,
|
||||
test: function(val) {
|
||||
console.log(val);
|
||||
return !this.regExp.test(val);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Return all user's Forms
|
||||
$scope.findAll = function() {
|
||||
Forms.query(function(_forms){
|
||||
|
@ -1735,6 +1753,7 @@ angular.module('forms').controller('ListFormsController', ['$rootScope', '$scope
|
|||
};
|
||||
}
|
||||
]);
|
||||
|
||||
'use strict';
|
||||
|
||||
|
||||
|
@ -2343,7 +2362,7 @@ angular.module('forms').directive('editSubmissionsFormDirective', ['$rootScope',
|
|||
};
|
||||
|
||||
console.log($scope.table.rows);
|
||||
|
||||
|
||||
angular.element('#table-submission-data').tableExport({type: type, escape:false});
|
||||
|
||||
/*
|
||||
|
@ -2423,15 +2442,15 @@ angular.module('forms').service('FormFields', [
|
|||
// },
|
||||
// {
|
||||
// name : 'stripe',
|
||||
// value : 'Payment'
|
||||
// value : 'Payment'
|
||||
// },
|
||||
{
|
||||
name : 'statement',
|
||||
value : 'Statement'
|
||||
value : 'Statement'
|
||||
}
|
||||
];
|
||||
}
|
||||
|
||||
|
||||
]);
|
||||
|
||||
'use strict';
|
||||
|
@ -2444,7 +2463,7 @@ angular.module('forms').factory('Submissions', ['$resource',
|
|||
formId: '@_id'
|
||||
}, {
|
||||
'query' : {
|
||||
method: 'GET',
|
||||
method: 'GET',
|
||||
isArray: true,
|
||||
},
|
||||
'update': {
|
||||
|
@ -2459,33 +2478,6 @@ angular.module('forms').factory('Submissions', ['$resource',
|
|||
'use strict';
|
||||
|
||||
// Configuring the Forms drop-down menus
|
||||
angular.module('forms')
|
||||
.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;
|
||||
};
|
||||
});
|
||||
|
||||
angular.module('forms').value('supportedFields', [
|
||||
'textfield',
|
||||
'textarea',
|
||||
|
@ -2755,7 +2747,7 @@ angular.module('forms').directive('onFinishRender', ["$rootScope", "$timeout", f
|
|||
return {
|
||||
restrict: 'A',
|
||||
link: function (scope, element, attrs) {
|
||||
|
||||
|
||||
//Don't do anything if we don't have a ng-repeat on the current element
|
||||
if(!element.attr('ng-repeat') && !element.attr('data-ng-repeat')){
|
||||
return;
|
||||
|
@ -3117,3 +3109,24 @@ angular.module('forms').service('TimeCounter', [
|
|||
|
||||
}
|
||||
]);
|
||||
|
||||
'use strict';
|
||||
|
||||
angular.module('users').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('english', {
|
||||
MENU_BTN: 'MENU',
|
||||
SIGNUP_TAB: 'Sign Up',
|
||||
SIGNIN_TAB: 'Sign In',
|
||||
SIGNOUT_TAB: 'Signout',
|
||||
EDIT_PROFILE_TAB: 'Edit Profile',
|
||||
MY_FORMS_TAB: 'My Forms',
|
||||
MY_SETTINGS_TAB: 'My Settings',
|
||||
CHANGE_PASSWORD_TAB: 'Change Password'
|
||||
});
|
||||
|
||||
$translateProvider.preferredLanguage('english')
|
||||
.fallbackLanguage('english')
|
||||
.useSanitizeValueStrategy('escape');
|
||||
|
||||
}]);
|
||||
|
|
2
public/dist/application.min.css
vendored
2
public/dist/application.min.css
vendored
File diff suppressed because one or more lines are too long
15
public/dist/application.min.js
vendored
15
public/dist/application.min.js
vendored
File diff suppressed because one or more lines are too long
20
public/modules/core/config/i18n/english.js
Normal file
20
public/modules/core/config/i18n/english.js
Normal file
|
@ -0,0 +1,20 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('core').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('en', {
|
||||
MENU: 'MENU',
|
||||
SIGNUP_TAB: 'Sign Up',
|
||||
SIGNIN_TAB: 'Sign In',
|
||||
SIGNOUT_TAB: 'Signout',
|
||||
EDIT_PROFILE: 'Edit Profile',
|
||||
MY_FORMS: 'My Forms',
|
||||
MY_SETTINGS: 'My Settings',
|
||||
CHANGE_PASSWORD: 'Change Password'
|
||||
});
|
||||
|
||||
$translateProvider.preferredLanguage('en')
|
||||
.fallbackLanguage('en')
|
||||
.useSanitizeValueStrategy('escape');
|
||||
|
||||
}]);
|
15
public/modules/core/config/i18n/french.js
Normal file
15
public/modules/core/config/i18n/french.js
Normal file
|
@ -0,0 +1,15 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('core').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('fr', {
|
||||
MENU: 'MENU',
|
||||
SIGNUP_TAB: 'Créer un Compte',
|
||||
SIGNIN_TAB: 'Connexion',
|
||||
SIGNOUT_TAB: 'Créer un compte',
|
||||
EDIT_PROFILE: 'Modifier Mon Profil',
|
||||
MY_FORMS: 'Mes Formulaires',
|
||||
MY_SETTINGS: 'Mes Paramètres',
|
||||
CHANGE_PASSWORD: 'Changer mon Mot de Pass'
|
||||
});
|
||||
}]);
|
|
@ -1,13 +1,23 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('core').controller('HeaderController', ['$rootScope', '$scope', 'Menus', '$state', 'Auth', 'User', '$window',
|
||||
function ($rootScope, $scope, Menus, $state, Auth, User, $window) {
|
||||
angular.module('core').controller('HeaderController', ['$rootScope', '$scope', 'Menus', '$state', 'Auth', 'User', '$window', '$translate', '$locale',
|
||||
function ($rootScope, $scope, Menus, $state, Auth, User, $window, $translate, $locale) {
|
||||
|
||||
$rootScope.signupDisabled = $window.signupDisabled;
|
||||
|
||||
$scope.user = $rootScope.user = Auth.ensureHasCurrentUser(User);
|
||||
$scope.authentication = $rootScope.authentication = Auth;
|
||||
|
||||
$rootScope.languages = $scope.languages = ['english', 'french', 'spanish', 'italian', 'german'];
|
||||
$rootScope.languages = $scope.languages = ['en', 'fr', 'es', 'it', 'de'];
|
||||
|
||||
console.log($locale.id);
|
||||
//Set global app language
|
||||
if($scope.authentication.isAuthenticated()){
|
||||
$rootScope.language = $scope.user.language;
|
||||
}else {
|
||||
$rootScope.language = $locale.id.substring(0,2);
|
||||
}
|
||||
$translate.use($rootScope.language);
|
||||
|
||||
$scope.isCollapsed = false;
|
||||
$rootScope.hideNav = false;
|
||||
|
|
|
@ -1,8 +0,0 @@
|
|||
'use strict';
|
||||
|
||||
|
||||
angular.module('core').controller('HomeController', ['$rootScope', '$scope', 'User', '$state',
|
||||
function($rootScope, $scope, User, $state) {
|
||||
$scope = $rootScope;
|
||||
}
|
||||
]);
|
|
@ -3,7 +3,7 @@
|
|||
<div class="navbar-header">
|
||||
<button class="navbar-toggle" type="button" data-ng-click="toggleCollapsibleMenu()">
|
||||
<span class="sr-only">Toggle navigation</span>
|
||||
<span>MENU</span>
|
||||
<span>{{ 'MENU_BTN' | translate }}</span>
|
||||
</button>
|
||||
<a href="https://www.tellform.com/#!/" class="navbar-brand">
|
||||
<i class="fa fa-archive" style="padding-right: 0.3em;"></i>Tell<span>Form</span>
|
||||
|
@ -26,34 +26,31 @@
|
|||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right" data-ng-hide="authentication.isAuthenticated()">
|
||||
<li ng-hide="$root.signupDisabled" ui-route="/signup" ng-class="{active: $uiRoute}">
|
||||
<a href="/#!/signup">Sign Up</a>
|
||||
<a href="/#!/signup">{{ 'SIGNUP_TAB' | translate }}</a>
|
||||
</li>
|
||||
<li class="divider-vertical"></li>
|
||||
<li ui-route="/signin" ng-class="{active: $uiRoute}">
|
||||
<a href="/#!/signin">Sign In</a>
|
||||
<a href="/#!/signin">{{ 'SIGNIN_TAB' | translate }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="nav navbar-nav navbar-right" data-ng-show="authentication.isAuthenticated()">
|
||||
<li class="dropdown" uib-dropdown>
|
||||
<a href="#" class="dropdown-toggle" data-toggle="dropdown" dropdown-toggle>
|
||||
<span>My Settings</span>
|
||||
<span>{{ 'MY_SETTINGS' | translate }}</span>
|
||||
<b class="caret"></b>
|
||||
</a>
|
||||
<ul class="dropdown-menu">
|
||||
<li>
|
||||
<a href="/#!/settings/profile">Edit Profile</a>
|
||||
<a href="/#!/settings/profile">{{ 'EDIT_PROFILE' | translate }}</a>
|
||||
</li>
|
||||
<li class="divider"></li>
|
||||
<li>
|
||||
<a href="/#!/settings/password">Change Password</a>
|
||||
</li>
|
||||
<li data-ng-show="authentication.isAuthenticated().provider === 'local'">
|
||||
<a href="/#!/settings/password">Change Password</a>
|
||||
<a href="/#!/settings/password"> {{ 'CHANGE_PASSWORD' | translate }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</li>
|
||||
<li ng-click="signout()">
|
||||
<a>Signout</a>
|
||||
<a>{{ 'SIGNOUT_TAB' | translate }}</a>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
||||
|
|
97
public/modules/forms/admin/config/i18n/english.js
Normal file
97
public/modules/forms/admin/config/i18n/english.js
Normal file
|
@ -0,0 +1,97 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('en', {
|
||||
|
||||
//Configure Form Tab View
|
||||
PDF_GENERATION_EMR: 'PDF Generation/EMR',
|
||||
SAVE_PDF_SUBMISSIONS: 'Save Submissions as PDFs?',
|
||||
UPLOAD_YOUR_PDF: 'Upload Your PDF Template',
|
||||
ADVANCED_SETTINGS: 'Advanced Settings',
|
||||
FORM_NAME: 'Form Name',
|
||||
FORM_STATUS: 'Form Status',
|
||||
PUBLIC: 'Public',
|
||||
PRIVATE: 'Private',
|
||||
GA_TRACKING_CODE: 'Google Analytics Tracking Code',
|
||||
DISPLAY_FOOTER: 'Display Form Footer?',
|
||||
SAVE_CHANGES: 'Save Changes',
|
||||
CANCEL: 'Cancel',
|
||||
|
||||
//List Forms View
|
||||
CREATE_A_NEW_FORM: 'Create a new form',
|
||||
CREATE_FORM: 'Create form',
|
||||
CREATED_ON: 'Created on',
|
||||
|
||||
//Admin Form View
|
||||
ARE_YOU_SURE: 'Are you ABSOLUTELY sure?',
|
||||
READ_WARNING: 'Unexpected bad things will happen if you don’t read this!',
|
||||
DELETE_WARNING1: 'This action CANNOT be undone.This will permanently delete the',
|
||||
DELETE_WARNING2: 'form, form submissions and remove all associated pdfs.',
|
||||
DELETE_CONFIRM: 'Please type in the name of the form to confirm',
|
||||
I_UNDERSTAND: 'I understand the consequences, delete this form',
|
||||
DELETE_FORM_SM: 'Delete',
|
||||
DELETE_FORM_MD: 'Delete Form',
|
||||
DELETE: 'Delete',
|
||||
FORM: 'Form',
|
||||
VIEW: 'View',
|
||||
LIVE: 'Live',
|
||||
PREVIEW: 'Preview',
|
||||
|
||||
//Edit Form View
|
||||
ADD_FIELD_LG: 'Click to Add New Field',
|
||||
ADD_FIELD_MD: 'Add New Field',
|
||||
ADD_FIELD_SM: 'Add Field',
|
||||
PREVIEW_START_PAGE: 'Preview Start Page',
|
||||
EDIT_START_PAGE: 'Edit Start Page',
|
||||
INTRO_TTILE: 'Intro Title',
|
||||
INTRO_PARAGRAPH: 'Intro Paragraph',
|
||||
INTRO_BTN: 'Intro Button',
|
||||
BUTTONS: 'Buttons',
|
||||
BUTTON_TEXT: 'Text',
|
||||
BUTTON_LINK: 'Link',
|
||||
ADD_BUTTON: 'Add Button',
|
||||
PREVIEW_FIELD: 'Preview Field',
|
||||
EDIT_FIELD: 'Edit Field',
|
||||
QUESTION_TITLE: 'Question Title',
|
||||
QUESTION_DESCRIPTION: 'Question Description',
|
||||
OPTIONS: 'Options',
|
||||
ADD_OPTION: 'Add Option',
|
||||
NUM_OF_STEPS: 'Number of Steps',
|
||||
CLICK_FIELDS_FOOTER: 'Click on fields to add them here',
|
||||
|
||||
//Edit Submissions View
|
||||
TOTAL_VIEWS: 'Total Views',
|
||||
SUBMISSIONS: 'Submissions',
|
||||
CONVERSION_RATE: 'Conversion Rate',
|
||||
FIELD_TITLE: 'Field Title',
|
||||
FIELD_VIEWS: 'Field Views',
|
||||
FIELD_DROPOFF: 'User dropoff rate at this field',
|
||||
DELETE_SELECTED: 'Delete Selected',
|
||||
EXPORT_TO_EXCEL: 'Export to Excel',
|
||||
EXPORT_TO_CSV: 'Export to CSV',
|
||||
EXPORT_TO_JSON: 'Export to JSON',
|
||||
PERCENTAGE_COMPLETE: 'Percentage Complete',
|
||||
TIME_ELAPSED: 'Time Elapsed',
|
||||
DEVICE: 'Device',
|
||||
LOCATION: 'Location',
|
||||
IP_ADDRESS: 'IP Address',
|
||||
DATE_SUBMITTED: 'Date Submitted',
|
||||
GENERATED_PDF: 'Generated PDF',
|
||||
|
||||
//Design View
|
||||
BACKGROUND_COLOR: 'Background Color',
|
||||
DESIGN_HEADER: 'Change how your Form Looks',
|
||||
QUESTION_TEXT_COLOR: 'Question Text Color',
|
||||
ANSWER_TEXT_COLOR: 'Answer Text Color',
|
||||
BTN_BACKGROUND_COLOR: 'Button Background Color',
|
||||
BTN_TEXT_COLOR: 'Button Text Color',
|
||||
|
||||
//Admin Tabs
|
||||
CREATE_TAB: 'Create',
|
||||
DESIGN_TAB: 'Design',
|
||||
CONFIGURE_TAB: 'Configure',
|
||||
ANALYZE_TAB: 'Analyze'
|
||||
|
||||
});
|
||||
}]);
|
|
@ -1,8 +1,8 @@
|
|||
'use strict';
|
||||
|
||||
// Forms controller
|
||||
angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope', '$stateParams', '$state', 'Forms', 'CurrentForm', '$http', '$uibModal', 'myForm',
|
||||
function($rootScope, $scope, $stateParams, $state, Forms, CurrentForm, $http, $uibModal, myForm) {
|
||||
angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope', '$stateParams', '$state', 'Forms', 'CurrentForm', '$http', '$uibModal', 'myForm', '$filter',
|
||||
function($rootScope, $scope, $stateParams, $state, Forms, CurrentForm, $http, $uibModal, myForm, $filter) {
|
||||
|
||||
$scope = $rootScope;
|
||||
$scope.animationsEnabled = true;
|
||||
|
@ -13,19 +13,19 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope
|
|||
|
||||
$scope.tabData = [
|
||||
{
|
||||
heading: 'Create',
|
||||
heading: $filter('translate')('CREATE_TAB'),
|
||||
route: 'viewForm.create'
|
||||
},
|
||||
{
|
||||
heading: 'Design',
|
||||
heading: $filter('translate')('DESIGN_TAB'),
|
||||
route: 'viewForm.design'
|
||||
},
|
||||
{
|
||||
heading: 'Configure',
|
||||
heading: $filter('translate')('CONFIGURE_TAB'),
|
||||
route: 'viewForm.configure'
|
||||
},
|
||||
{
|
||||
heading: 'Analyze',
|
||||
heading: $filter('translate')('ANALYZE_TAB'),
|
||||
route: 'viewForm.analyze'
|
||||
}
|
||||
];
|
||||
|
|
|
@ -11,12 +11,10 @@ angular.module('forms').controller('ListFormsController', ['$rootScope', '$scope
|
|||
$scope.languageRegExp = $scope.myPt = {
|
||||
regExp: /[@!#$%^&*()\-+={}\[\]|\\/'";:`.,~№?<>]+/i,
|
||||
test: function(val) {
|
||||
console.log(val);
|
||||
return !this.regExp.test(val);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
// Return all user's Forms
|
||||
$scope.findAll = function() {
|
||||
Forms.query(function(_forms){
|
||||
|
@ -69,7 +67,7 @@ angular.module('forms').controller('ListFormsController', ['$rootScope', '$scope
|
|||
if($scope.forms.createForm.$valid && $scope.forms.createForm.$dirty){
|
||||
$http.post('/forms', {form: form})
|
||||
.success(function(data, status, headers){
|
||||
console.log('new form created');
|
||||
//console.log('new form created');
|
||||
// Redirect after save
|
||||
$scope.goToWithId('viewForm.create', data._id+'');
|
||||
}).error(function(errorResponse){
|
||||
|
@ -86,10 +84,10 @@ angular.module('forms').controller('ListFormsController', ['$rootScope', '$scope
|
|||
|
||||
$http.delete('/forms/'+$scope.myforms[form_index]._id)
|
||||
.success(function(data, status, headers){
|
||||
console.log('form deleted successfully');
|
||||
//console.log('form deleted successfully');
|
||||
$scope.myforms.splice(form_index, 1);
|
||||
}).error(function(error){
|
||||
console.log('ERROR: Form could not be deleted.');
|
||||
//console.log('ERROR: Form could not be deleted.');
|
||||
console.error(error);
|
||||
});
|
||||
};
|
||||
|
|
|
@ -5,24 +5,24 @@
|
|||
<!-- Modal Delete Dialog Template -->
|
||||
<script type="text/ng-template" id="myModalContent.html">
|
||||
<div class="modal-header">
|
||||
<h2 class="modal-title hidden-md hidden-lg">Are you ABSOLUTELY sure?</h2>
|
||||
<h3 class="modal-title hidden-xs hidden-sm">Are you ABSOLUTELY sure?</h3>
|
||||
<h2 class="modal-title hidden-md hidden-lg">{{ 'ARE_YOU_SURE' | translate }}</h2>
|
||||
<h3 class="modal-title hidden-xs hidden-sm">{{ 'ARE_YOU_SURE' | translate }}</h3>
|
||||
</div>
|
||||
<div class="modal-body">
|
||||
<div class="modal-body-alert">
|
||||
Unexpected bad things will happen if you don’t read this!
|
||||
{{ 'READ_WARNING' | translate }}
|
||||
</div>
|
||||
<p class="hidden-xs hidden-sm">
|
||||
This action <strong>CANNOT</strong> be undone.This will permanently delete the <strong>{{myform.title}}</strong> form, form submissions and remove all associated pdfs.
|
||||
{{ 'DELETE_WARNING1' | translate }}<strong>{{myform.title}}</strong> {{ 'DELETE_WARNING2' | translate }}
|
||||
</p>
|
||||
<p>Please type in the name of the form to confirm.</p>
|
||||
<p>{{ 'DELETE_CONFIRM' | translate }}</p>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<p>
|
||||
<input type="text" data-ng-model="deleteConfirm" class="input-block" autofocus required aria-label="Type in the name of the form to confirm that you want to delete this form.">
|
||||
</p>
|
||||
<button type="submit" ng-click="removeCurrentForm()" class="btn btn-block btn-danger" ng-disabled="myform.title != deleteConfirm">
|
||||
I understand the consequences, delete this form
|
||||
{{ 'I_UNDERSTAND' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</script>
|
||||
|
@ -36,8 +36,8 @@
|
|||
<small class="pull-right">
|
||||
<button class="btn btn-danger" ng-click="openDeleteModal()">
|
||||
<i class="fa fa-trash-o"></i>
|
||||
<span class="hidden-xs">Delete</span>
|
||||
<span class="hidden-xs hidden-sm">Form</span>
|
||||
<span class="show-sm hidden-lg hidden-md hidden-xs">{{ 'DELETE_FORM_SM' | translate}}</span>
|
||||
<span class="hidden-xs hidden-sm">{{ 'DELETE_FORM_MD' | translate}}</span>
|
||||
</button>
|
||||
</small>
|
||||
</div>
|
||||
|
@ -45,16 +45,16 @@
|
|||
<small class="pull-right">
|
||||
<a class="btn btn-default view-form-btn" href="/#!/forms/{{myform._id}}">
|
||||
<span class="hidden-xs hidden-sm">
|
||||
View
|
||||
{{ 'VIEW' | translate }}
|
||||
<span ng-show="myform.isLive">
|
||||
Live
|
||||
{{ 'LIVE' | translate }}
|
||||
</span>
|
||||
<span ng-hide="myform.isLive">Preview</span> Form
|
||||
<span ng-hide="myform.isLive">{{ 'PREVIEW' | translate }}</span> {{ 'FORM' | translate }}
|
||||
</span>
|
||||
<span class="hidden-xs hidden-md hidden-lg">
|
||||
View
|
||||
<span ng-if="myform.isLive">Live</span>
|
||||
<span ng-if="!myform.isLive">Preview</span>
|
||||
<span ng-if="myform.isLive">{{ 'LIVE' | translate }}</span>
|
||||
<span ng-if="!myform.isLive">{{ 'PREVIEW' | translate }}</span>
|
||||
</span>
|
||||
<i class="status-light status-light-on fa fa-dot-circle-o" ng-if="myform.isLive"></i>
|
||||
<i class="status-light status-light-off fa fa-dot-circle-o" ng-if="!myform.isLive"></i>
|
||||
|
|
|
@ -3,14 +3,14 @@
|
|||
<div class="col-md-12 container">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h2 class="hidden-sm hidden-xs">Change how your Form Looks</h2>
|
||||
<h3 class="hidden-lg hidden-md">Change how your Form Looks</h3>
|
||||
<h2 class="hidden-sm hidden-xs">{{ 'DESIGN_HEADER' | translate }}</h2>
|
||||
<h3 class="hidden-lg hidden-md">{{ 'DESIGN_HEADER' | translate }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-3">
|
||||
<h5>Background Color</h5>
|
||||
<h5>{{ 'BACKGROUND_COLOR' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="field-input col-sm-9">
|
||||
|
@ -21,7 +21,7 @@
|
|||
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-3">
|
||||
<h5>Question Text Color</h5>
|
||||
<h5>{{ 'QUESTION_TEXT_COLOR' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="field-input col-sm-9">
|
||||
|
@ -34,7 +34,7 @@
|
|||
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-3">
|
||||
<h5>Answer Text Color</h5>
|
||||
<h5>{{ 'ANSWER_TEXT_COLOR' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="field-input col-sm-9">
|
||||
|
@ -44,7 +44,7 @@
|
|||
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-3">
|
||||
<h5>Button Background Color</h5>
|
||||
<h5>{{ 'BTN_BACKGROUND_COLOR' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="field-input col-sm-9">
|
||||
|
@ -55,7 +55,7 @@
|
|||
</div>
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-3">
|
||||
<h5>Button Text Color</h5>
|
||||
<h5>{{ 'BTN_TEXT_COLOR' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="field-input col-sm-9">
|
||||
|
|
|
@ -5,37 +5,35 @@
|
|||
<div class="col-md-6 col-sm-12 container">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h2 class="hidden-sm hidden-xs">PDF Generation/EMR</h2>
|
||||
<h3 class="hidden-lg hidden-md">PDF Generation/EMR</h3>
|
||||
<h2 class="hidden-sm hidden-xs">{{ 'PDF Generation/EMR' | translate }}</h2>
|
||||
<h3 class="hidden-lg hidden-md">{{ 'PDF Generation/EMR' | translate }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- autofillPDFs yes/no field -->
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-6">
|
||||
<h5>Save Submissions as PDFs?</h5>
|
||||
<h5>{{ 'SAVE_PDF_SUBMISSIONS' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="field-input col-sm-6">
|
||||
|
||||
<label>
|
||||
<input type="radio" data-ng-value="true" ng-model="myform.autofillPDFs" ng-required="true" />
|
||||
<span>Yes</span>
|
||||
<span>{{ 'YES' | translate }}</span>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
<input type="radio" data-ng-value="false" ng-model="myform.autofillPDFs" ng-required="true" />
|
||||
<span>No</span>
|
||||
<span>{{ 'NO' | translate }}</span>
|
||||
</label>
|
||||
|
||||
<!-- <span class="required-error" ng-show="field.required && !field.fieldValue">* required</span> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Upload PDF Field -->
|
||||
<div class="row field" ng-if="myform.autofillPDFs || myform.isGenerated">
|
||||
<div class="col-sm-6 field-title">
|
||||
<h5>Upload Your PDF Template</h5>
|
||||
<h5>{{ 'UPLOAD_YOUR_PDF' | translate }}</h5>
|
||||
</div>
|
||||
<div class="col-sm-6 field-input">
|
||||
<div class="input-group ">
|
||||
|
@ -60,7 +58,7 @@
|
|||
|
||||
<div class="btn btn-success btn-file" ngf-select="uploadPDF($file)">
|
||||
<i class="glyphicon glyphicon-upload"></i>
|
||||
Upload your PDF
|
||||
{{ 'UPLOAD_YOUR_PDF' | translate }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -70,7 +68,7 @@
|
|||
<!-- Generate form from PDF yes/no field -->
|
||||
<div class="row field">
|
||||
<div class="col-sm-6 field-title">
|
||||
<h5>Autogenerate Form?</h5>
|
||||
<h5>{{ 'Autogenerate Form?' | translate }}</h5>
|
||||
</div>
|
||||
<div class="col-sm-6 field-input">
|
||||
|
||||
|
@ -86,80 +84,6 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
<!-- activate oscarhost API yes/no field -->
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-6">
|
||||
<h5>Use Oscarhost API?</h5>
|
||||
</div>
|
||||
|
||||
<div class="field-input col-sm-6">
|
||||
|
||||
<label>
|
||||
<input type="radio" data-ng-value="true" ng-model="oscarhostAPI" ng-required="true" />
|
||||
<span>Yes</span>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
<input type="radio" data-ng-value="false" ng-model="oscarhostAPI" ng-required="true" />
|
||||
<span>No</span>
|
||||
</label>
|
||||
|
||||
<!-- <span class="required-error" ng-show="field.required && !field.fieldValue">* required</span> -->
|
||||
</div>
|
||||
</div>
|
||||
<div class="row field" ng-if="oscarhostAPI">
|
||||
<div class="field-title col-sm-4">
|
||||
<h5>Oscarhost API Username</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-8">
|
||||
<input type="text"
|
||||
ng-model="myform.plugins.oscarhost.auth.user"
|
||||
value="{{myform.plugins.oscarhost.auth.user}}"
|
||||
style="width: 100%;"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row field" ng-if="oscarhostAPI">
|
||||
<div class="field-title col-sm-4">
|
||||
<h5>Oscarhost API Password</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-8">
|
||||
<input type="password"
|
||||
ng-model="myform.plugins.oscarhost.auth.pass"
|
||||
value="{{myform.plugins.oscarhost.auth.pass}}"
|
||||
style="width: 100%;"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row field" ng-if="oscarhostAPI">
|
||||
<div class="field-title col-sm-4">
|
||||
<h5>Oscarhost API URL</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-8">
|
||||
<input type="link"
|
||||
ng-model="myform.plugins.oscarhost.baseUrl"
|
||||
value="{{myform.plugins.oscarhost.baseUrl}}"
|
||||
style="width: 100%;"
|
||||
required>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row field" ng-if="oscarhostAPI">
|
||||
<div class="field-title col-sm-4">
|
||||
<h5>Oscarhost API Update Type</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-8">
|
||||
<select ng-model="myform.plugins.oscarhost.settings.updateType">
|
||||
<option ng-repeat="updateType in myform.plugins.oscarhost.settings.validUpdateTypes" ng-selected="myform.plugins.oscarhost.settings.updateType == updateType" ng-value="updateType">
|
||||
{{updateType}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- Generate typeform from TellForm yes/no field -->
|
||||
<!-- <div class="row field">
|
||||
|
@ -231,14 +155,14 @@
|
|||
<div class="col-md-5 col-md-offset-1 col-sm-12 container">
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<h2 class="hidden-sm hidden-xs">Advanced Settings</h2>
|
||||
<h3 class="hidden-lg hidden-md">Advanced Settings</h3>
|
||||
<h2 class="hidden-sm hidden-xs">{{ 'ADVANCED_SETTINGS' | translate }}</h2>
|
||||
<h3 class="hidden-lg hidden-md">{{ 'ADVANCED_SETTINGS' | translate }}</h3>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-4">
|
||||
<h5>Form Name</h5>
|
||||
<h5>{{ 'FORM_NAME' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-8">
|
||||
|
@ -253,28 +177,27 @@
|
|||
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-6">
|
||||
<h5>Form Status</h5>
|
||||
<h5>{{ 'FORM_STATUS' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="field-input col-sm-6">
|
||||
|
||||
<label>
|
||||
<input type="radio" data-ng-value="true" ng-model="myform.isLive" ng-required="true" style="background-color:#33CC00;"/>
|
||||
<span>Public</span>
|
||||
<span>{{ 'PUBLIC' | translate }}</span>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
<input type="radio" data-ng-value="false" ng-model="myform.isLive" ng-required="true" />
|
||||
<span>Private</span>
|
||||
<span>{{ 'PRIVATE' | translate }}</span>
|
||||
</label>
|
||||
|
||||
<!-- <span class="required-error" ng-show="field.required && !field.fieldValue">* required</span> -->
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-4">
|
||||
<h5>Google Analytics Tracking Code</h5>
|
||||
<h5>{{ 'GA_TRACKING_CODE' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="col-sm-8">
|
||||
|
@ -303,18 +226,18 @@
|
|||
</div>
|
||||
<div class="row field">
|
||||
<div class="field-title col-sm-6">
|
||||
<h5>Display Form Footer?</h5>
|
||||
<h5>{{ 'DISPLAY_FOOTER' | translate }}</h5>
|
||||
</div>
|
||||
|
||||
<div class="field-input col-sm-6">
|
||||
<label>
|
||||
<input type="radio" data-ng-value="false" ng-model="myform.hideFooter" ng-required="true" />
|
||||
<span>Yes</span>
|
||||
<span>{{ 'YES' | translate }}</span>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
<input type="radio" data-ng-value="true" ng-model="myform.hideFooter" ng-required="true" />
|
||||
<span>No</span>
|
||||
<span>{{ 'No' | translate }}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -328,25 +251,24 @@
|
|||
|
||||
<label>
|
||||
<input type="radio" data-ng-value="true" ng-model="myform.startPage.showStart" ng-required="true" style="background-color:#33CC00;"/>
|
||||
<span>Yes</span>
|
||||
<span>{{ 'YES' | translate }}</span>
|
||||
</label>
|
||||
|
||||
<label>
|
||||
<input type="radio" data-ng-value="false" ng-model="myform.startPage.showStart" ng-required="true" />
|
||||
<span>No</span>
|
||||
<span>{{ 'NO' | translate }}</span>
|
||||
</label>
|
||||
|
||||
<!-- <span class="required-error" ng-show="field.required && !field.fieldValue">* required</span> -->
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-sm-offset-4 col-sm-2">
|
||||
<button class="btn btn-primary btn-large" type="button" ng-click="update(false, null)"><i class="icon-arrow-left icon-white"></i> Save Changes</button>
|
||||
<button class="btn btn-primary btn-large" type="button" ng-click="update(false, null)"><i class="icon-arrow-left icon-white"></i>{{ 'SAVE_CHANGES' | translate }}</button>
|
||||
</div>
|
||||
<div class="col-sm-1">
|
||||
<button class="btn btn-default" type="button" ng-click="resetForm()"><i class="icon-eye-open icon-white"></i> Cancel</button>
|
||||
<button class="btn btn-default" type="button" ng-click="resetForm()"><i class="icon-eye-open icon-white"></i>{{ 'CANCEL' | translate }}</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -3,9 +3,9 @@
|
|||
<div class="col-xs-2 col-sm-4 col-md-5 add-field">
|
||||
|
||||
<div class="row add-field-title">
|
||||
<h3 class="col-md-12 hidden-sm hidden-xs">Click to Add New Field</h3>
|
||||
<h4 class="col-sm-12 hidden-xs hidden-md hidden-lg">Add New Field</h4>
|
||||
<h5 class="col-sm-12 hidden-sm hidden-md hidden-lg">Add Field</h5>
|
||||
<h3 class="col-md-12 hidden-sm hidden-xs">{{ 'ADD_FIELD_LG' | translate }}</h3>
|
||||
<h4 class="col-sm-12 hidden-xs hidden-md hidden-lg">{{ 'ADD_FIELD_MD' | translate }}</h4>
|
||||
<h5 class="col-sm-12 hidden-sm hidden-md hidden-lg">{{ 'ADD_FIELD_SM' | translate }}</h5>
|
||||
</div>
|
||||
<div class="panel-group row" class="draggable" ng-model="addField.types">
|
||||
|
||||
|
@ -45,7 +45,7 @@
|
|||
|
||||
<div class="row hidden-sm hidden-xs">
|
||||
<div class="col-md-12">
|
||||
<h4>Preview Start Page</h4>
|
||||
<h4>{{ 'PREVIEW_START_PAGE' | translate }}</h4>
|
||||
</div>
|
||||
<ul class="col-md-12 container" style="list-style:none;border:2px lightgray solid;">
|
||||
|
||||
|
@ -78,13 +78,13 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<h4>Edit Start Page</h4>
|
||||
<h4>{{ 'EDIT_START_PAGE' | translate }}</h4>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row question">
|
||||
<div class="col-md-4 col-sm-12">Intro Title:</div>
|
||||
<div class="col-md-4 col-sm-12">{{ 'INTRO_TITLE' | translate }}:</div>
|
||||
<div class="col-md-8 col-sm-12">
|
||||
<input type="text"
|
||||
ng-model="myform.startPage.introTitle"
|
||||
|
@ -94,7 +94,7 @@
|
|||
</div>
|
||||
|
||||
<div class="row question">
|
||||
<div class="col-md-4 col-sm-12">Intro Paragraph:</div>
|
||||
<div class="col-md-4 col-sm-12">{{ 'INTRO_PARAGRAPH' | translate }}:</div>
|
||||
<div class="col-md-8 col-sm-12">
|
||||
<textarea type="text"
|
||||
ng-model="myform.startPage.introParagraph"
|
||||
|
@ -103,7 +103,7 @@
|
|||
</div>
|
||||
|
||||
<div class="row question">
|
||||
<div class="col-md-4 col-sm-12">Intro Button:</div>
|
||||
<div class="col-md-4 col-sm-12">{{ 'INTRO_BTN' | translate }}:</div>
|
||||
<div class="col-md-8 col-sm-12">
|
||||
<input type="text"
|
||||
ng-model="myform.startPage.introButtonText"
|
||||
|
@ -120,7 +120,7 @@
|
|||
<div ng-repeat="button in myform.startPage.buttons track by button._id" class="row" style="padding-bottom:1em;">
|
||||
|
||||
<div class="col-xs-5">
|
||||
<span>Text</span>
|
||||
<span>{{ 'BUTTON_TEXT' | translate }}</span>
|
||||
<input type="text"
|
||||
name="{{button.text}}_buttonText_startPage"
|
||||
ng-model="button.text"
|
||||
|
@ -130,7 +130,7 @@
|
|||
|
||||
|
||||
<div class="col-xs-5">
|
||||
<span>Link</span>
|
||||
<span>{{ 'BUTTON_LINK' | translate }}</span>
|
||||
<input type="text"
|
||||
name="{{button.url}}_url_startPage"
|
||||
ng-model="button.url"
|
||||
|
@ -148,7 +148,7 @@
|
|||
<div class="row"><br></div>
|
||||
<div class="row">
|
||||
<button class="btn btn-primary btn-small col-md-offset-6 col-md-6 col-sm-4 col-sm-offset-8 col-xs-4 col-xs-offset-8" type="button" ng-click="addButton()">
|
||||
<i class="icon-plus icon-white"></i> Add Button
|
||||
<i class="icon-plus icon-white"></i> {{ 'ADD_BUTTON' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -196,7 +196,7 @@
|
|||
|
||||
<div class="row hidden-sm hidden-xs">
|
||||
<div class="col-md-12">
|
||||
<h4>Preview Field</h4>
|
||||
<h4>{{ 'PREVIEW_FIELD' | translate }}</h4>
|
||||
</div>
|
||||
<ul class="col-md-12 container" style="list-style:none;border:2px lightgray solid;">
|
||||
<field-directive field="field" validate="false">
|
||||
|
@ -207,13 +207,13 @@
|
|||
|
||||
<div class="row">
|
||||
<div class="col-xs-12">
|
||||
<h4>Edit Field</h4>
|
||||
<h4>{{ 'EDIT_FIELD' | translate }}</h4>
|
||||
<br>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row question">
|
||||
<div class="col-md-4 col-sm-12">Question Title:</div>
|
||||
<div class="col-md-4 col-sm-12">{{ 'QUESTION_TITLE' | translate }}:</div>
|
||||
<div class="col-md-8 col-sm-12">
|
||||
<input type="text" ng-model="field.title" name="title{{field._id}}" value="{{field.title}}" required></div>
|
||||
</div>
|
||||
|
@ -221,13 +221,13 @@
|
|||
<div class="row"><br></div>
|
||||
|
||||
<div class="row description" ng-hide="showRatingOptions(field)">
|
||||
<div class="col-md-4 col-sm-12">Description:</div>
|
||||
<div class="col-md-4 col-sm-12">{{ 'QUESTION_DESCRIPTION' | translate }}:</div>
|
||||
<div class="col-md-8 col-sm-12"><textarea type="text" ng-model="field.description" name="description{{field._id}}"value="{{field.description}}"></textarea> </div>
|
||||
</div>
|
||||
|
||||
<div class="row" ng-show="showAddOptions(field)"><br></div>
|
||||
<div class="row options" ng-if="showAddOptions(field)">
|
||||
<div class="col-md-4 col-xs-12">Options:</div>
|
||||
<div class="col-md-4 col-xs-12">{{ 'OPTIONS' | translate }}:</div>
|
||||
<div class="col-md-8 col-xs-12">
|
||||
<div ng-repeat="option in field.fieldOptions track by option.option_id" class="row">
|
||||
<input type="text" name="{{option.option_value}}{{field._id}}" ng-model="option.option_value" class="col-xs-5">
|
||||
|
@ -238,7 +238,7 @@
|
|||
</div>
|
||||
<div class="row">
|
||||
<button class="btn btn-primary btn-small col-md-offset-0 col-md-6 col-sm-4 col-sm-offset-4 col-xs-6 col-xs-offset-6" type="button" ng-click="addOption($index)">
|
||||
<i class="icon-plus icon-white"></i> Add Option
|
||||
<i class="icon-plus icon-white"></i> {{ 'ADD_OPTION' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -247,7 +247,7 @@
|
|||
|
||||
<div class="row" ng-show="showRatingOptions(field)"><br></div>
|
||||
<div class="row" ng-if="showRatingOptions(field)">
|
||||
<div class="col-md-9 col-sm-9">Number of Steps:</div>
|
||||
<div class="col-md-9 col-sm-9">{{ 'NUM_OF_STEPS' | translate }}</div>
|
||||
<div class="col-md-3 col-sm-3">
|
||||
<input style="width:100%" type="number"
|
||||
min="1" max="10"
|
||||
|
@ -277,12 +277,12 @@
|
|||
<div class="col-md-8 col-xs-12 field-input">
|
||||
<label class="btn col-xs-5">
|
||||
<input type="radio" ng-value="true" ng-model="field.required" name="required{{field._id}}"/>
|
||||
<span> Yes</span>
|
||||
<span> {{ 'YES' | translate }}</span>
|
||||
</label>
|
||||
|
||||
<label class="btn col-xs-5 col-xs-offset-1">
|
||||
<input type="radio" ng-value="false" ng-model="field.required" name="required{{field._id}}"/>
|
||||
<span> No</span>
|
||||
<span> {{ 'NO' | translate }}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -293,13 +293,13 @@
|
|||
<label class="btn col-xs-5">
|
||||
<input type="radio" ng-value="true"
|
||||
ng-model="field.disabled" name="disabled{{field._id}}"/>
|
||||
<span> Yes</span>
|
||||
<span> {{ 'YES' | translate }}</span>
|
||||
</label>
|
||||
|
||||
<label class="btn col-xs-5 col-xs-offset-1">
|
||||
<input type="radio" ng-value="false"
|
||||
ng-model="field.disabled" name="disabled{{field._id}}"/>
|
||||
<span> No</span>
|
||||
<span> {{ 'NO' | translate }}</span>
|
||||
</label>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -310,7 +310,7 @@
|
|||
<div class="panel panel-default" style="border-style: dashed; border-color: #a9a9a9;">
|
||||
<div class="panel-heading">
|
||||
<h4 class="panel-title text-center" style="color: #a9a9a9;">
|
||||
Click on Fields to add them here
|
||||
{{ 'CLICK_FIELDS_FOOTER' | translate }}
|
||||
</h4>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -1,15 +1,15 @@
|
|||
<div class="submissions-table row container" ng-init="initFormSubmissions()">
|
||||
<div class="row">
|
||||
<div class="col-xs-4">
|
||||
Total Views: {{myform.analytics.views}}
|
||||
{{ 'TOTAL_VIEWS' | translate }}: {{myform.analytics.views}}
|
||||
</div>
|
||||
|
||||
<div class="col-xs-4">
|
||||
Submissions: {{myform.analytics.submissions}}
|
||||
{{ 'SUBMISSIONS' | translate }}: {{myform.analytics.submissions}}
|
||||
</div>
|
||||
|
||||
<div class="col-xs-4">
|
||||
Conversion Rate: {{myform.analytics.conversionRate}}%
|
||||
{{ 'CONVERSION_RATE' | translate }}: {{myform.analytics.conversionRate}}%
|
||||
</div>
|
||||
</div>
|
||||
<br>
|
||||
|
@ -17,14 +17,14 @@
|
|||
<div class="col-xs-12">
|
||||
|
||||
<div class="col-xs-2">
|
||||
<strong>Field Title</strong>
|
||||
<strong>{{ 'FIELD_TITLE' | translate }}</strong>
|
||||
</div>
|
||||
<div class="col-xs-2">
|
||||
<strong>Field Views</strong>
|
||||
<strong>{{ 'FIELD_VIEWS' | translate }}</strong>
|
||||
</div>
|
||||
|
||||
<div class="col-xs-4">
|
||||
<strong>User dropoff rate at this field</strong>
|
||||
<strong>{{ 'FIELD_DROPOFF' | translate }}</strong>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-xs-12" ng-repeat="fieldStats in myform.analytics.fields">
|
||||
|
@ -45,22 +45,22 @@
|
|||
<div class="row">
|
||||
<div class="col-xs-2">
|
||||
<button class="btn btn-danger" ng-click="deleteSelectedSubmissions()" ng-disabled="!isAtLeastOneChecked();">
|
||||
<i class="fa fa-trash-o"></i> Delete Selected
|
||||
<i class="fa fa-trash-o"></i> {{ 'DELETE_SELECTED' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-xs-2 col-xs-offset-4 text-right">
|
||||
<button class="btn btn-default" ng-click="exportSubmissions('xml')">
|
||||
<small>Export to Excel</small>
|
||||
<small>{{ 'EXPORT_TO_EXCEL' | translate }}</small>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-2 text-right">
|
||||
<button class="btn btn-default" ng-click="exportSubmissions('csv')">
|
||||
<small>Export to CSV</small>
|
||||
<small>{{ 'EXPORT_TO_CSV' | translate }}</small>
|
||||
</button>
|
||||
</div>
|
||||
<div class="col-md-2 text-right">
|
||||
<button class="btn btn-default" ng-click="exportSubmissions('json')">
|
||||
<small>Export to JSON</small>
|
||||
<small>{{ 'EXPORT_TO_JSON' | translate }}</small>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -76,29 +76,26 @@
|
|||
<th data-ng-repeat="(key, value) in myform.form_fields">
|
||||
{{value.title}}
|
||||
</th>
|
||||
<th ng-if="myform.plugins.oscarhost.baseUrl">
|
||||
OscarEMR User Profile
|
||||
<th>
|
||||
{{ 'PERCENTAGE_COMPLETE' | translate }}
|
||||
</th>
|
||||
<th>
|
||||
Percentage Complete
|
||||
{{ 'TIME_ELAPSED' | translate }}
|
||||
</th>
|
||||
<th>
|
||||
Time Elapsed
|
||||
{{ 'DEVICE' | translate }}
|
||||
</th>
|
||||
<th>
|
||||
Device
|
||||
{{ 'LOCATION' | translate }}
|
||||
</th>
|
||||
<th>
|
||||
Location
|
||||
{{ 'IP_ADDRESS' | translate }}
|
||||
</th>
|
||||
<th>
|
||||
IP Address
|
||||
</th>
|
||||
<th>
|
||||
Date Submitted (UTC)
|
||||
{{ 'DATE_SUBMITTED' | translate }} (UTC)
|
||||
</th>
|
||||
<th ng-if="myform.autofillPDFs">
|
||||
Generated PDF
|
||||
{{ 'GENERATED_PDF' | translate }}
|
||||
</th>
|
||||
</tr>
|
||||
</thead>
|
||||
|
@ -115,11 +112,6 @@
|
|||
<td data-ng-repeat="field in row.form_fields">
|
||||
{{field.fieldValue}}
|
||||
</td>
|
||||
<td ng-if="myform.plugins.oscarhost.baseUrl">
|
||||
<a href="{{myform.plugins.oscarhost.baseUrl.split('ws')[0]}}demographic/demographiccontrol.jsp?demographic_no={{row.oscarDemoNum}}&displaymode=edit">
|
||||
User Profile #{{row.oscarDemoNum}}
|
||||
</a>
|
||||
</td>
|
||||
<td>
|
||||
{{row.percentageComplete}}%
|
||||
</td>
|
||||
|
@ -139,7 +131,7 @@
|
|||
{{row.created | date:'yyyy-MM-dd HH:mm:ss'}}
|
||||
</td>
|
||||
<td ng-if="row.pdf">
|
||||
<a href="{{row.pdfFilePath}}" download="{{row.pdf.name}}" target="_self">Generated PDF</a>
|
||||
<a href="{{row.pdfFilePath}}" download="{{row.pdf.name}}" target="_self">{{ 'GENERATED_PDF' | translate }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
</tbody>
|
||||
|
|
|
@ -10,7 +10,7 @@
|
|||
<div class="col-xs-12 details-row">
|
||||
|
||||
<small class="list-group-item-text">
|
||||
Create a new form
|
||||
{{ 'CREATE_A_NEW_FORM' | translate }}
|
||||
</small>
|
||||
|
||||
</div>
|
||||
|
@ -38,7 +38,7 @@
|
|||
<div class="details-row submit row">
|
||||
<div class="col-xs-12 field-title text-center">
|
||||
<button class="btn btn-primary" ng-disabled="forms.createForm.$invalid" ng-click="createNewForm()">
|
||||
Create Form
|
||||
{{ 'CREATE_FORM' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -67,12 +67,9 @@
|
|||
<div class="col-xs-12 details-row">
|
||||
|
||||
<small class="list-group-item-text">
|
||||
Created on
|
||||
{{ 'CREATED_ON' | translate }}
|
||||
<span data-ng-bind="form.created | date:'shortDate'"></span>
|
||||
</small>
|
||||
<!--by
|
||||
<span data-ng-bind="form.admin.username"></span>
|
||||
</small> -->
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('english', {
|
||||
$translateProvider.translations('en', {
|
||||
FORM_SUCCESS: 'Form entry successfully submitted!',
|
||||
REVIEW: 'Review',
|
||||
BACK_TO_FORM: 'Go back to Form',
|
||||
|
@ -29,9 +29,5 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
|
|||
SUBMIT: 'Submit',
|
||||
UPLOAD_FILE: 'Upload your File'
|
||||
});
|
||||
|
||||
$translateProvider.preferredLanguage('english')
|
||||
.fallbackLanguage('english')
|
||||
.useSanitizeValueStrategy('escape');
|
||||
|
||||
|
||||
}]);
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('french', {
|
||||
$translateProvider.translations('fr', {
|
||||
FORM_SUCCESS: 'Votre formulaire a été enregistré!',
|
||||
REVIEW: 'Incomplet',
|
||||
BACK_TO_FORM: 'Retourner au formulaire',
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('german', {
|
||||
$translateProvider.translations('de', {
|
||||
FORM_SUCCESS: 'Ihre Angaben wurden gespeichert.',
|
||||
REVIEW: 'Unvollständig',
|
||||
BACK_TO_FORM: 'Zurück zum Formular',
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('italian', {
|
||||
$translateProvider.translations('it', {
|
||||
FORM_SUCCESS: 'Il formulario è stato inviato con successo!',
|
||||
REVIEW: 'Incompleto',
|
||||
BACK_TO_FORM: 'Ritorna al formulario',
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
|
||||
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('spanish', {
|
||||
$translateProvider.translations('es', {
|
||||
FORM_SUCCESS: '¡El formulario ha sido enviado con éxito!',
|
||||
REVIEW: 'Revisar',
|
||||
BACK_TO_FORM: 'Regresar al formulario',
|
||||
|
|
|
@ -3,5 +3,5 @@
|
|||
// Use Application configuration module to register a new module
|
||||
ApplicationConfiguration.registerModule('forms', [
|
||||
'ngFileUpload', 'ui.router.tabs', 'ui.date', 'ui.sortable',
|
||||
'angular-input-stars', 'users', 'pascalprecht.translate'
|
||||
'angular-input-stars', 'users'
|
||||
]);//, 'colorpicker.module' @TODO reactivate this module
|
||||
|
|
55
public/modules/users/config/i18n/english.js
Normal file
55
public/modules/users/config/i18n/english.js
Normal file
|
@ -0,0 +1,55 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('users').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('en', {
|
||||
ACCESS_DENIED_TEXT: 'You need to be logged in to access this page',
|
||||
USERNAME_LABEL: 'Username',
|
||||
PASSWORD_LABEL: 'Password',
|
||||
CURRENT_PASSWORD_LABEL: 'Current Password',
|
||||
NEW_PASSWORD_LABEL: 'New Password',
|
||||
VERIFY_PASSWORD_LABEL: 'Verify Password',
|
||||
UPDATE_PASSWORD_LABEL: 'Update Password',
|
||||
FIRST_NAME_LABEL: 'First Name',
|
||||
LAST_NAME_LABEL: 'Last Name',
|
||||
LANGUAGE_LABEL: 'Language',
|
||||
EMAIL_LABEL: 'Email',
|
||||
|
||||
UPDATE_PROFILE_BTN: 'Update Profile',
|
||||
PROFILE_SAVE_SUCCESS: 'Profile saved successfully',
|
||||
PROFILE_SAVE_ERROR: 'Could\'t Save Your Profile.',
|
||||
|
||||
FORGOT_PASSWORD_LINK: 'Forgot your password?',
|
||||
REVERIFY_ACCOUNT_LINK: 'Resend your verification email',
|
||||
|
||||
SIGNIN_BTN: 'Sign in',
|
||||
SIGNUP_BTN: 'Sign up',
|
||||
SAVE_PASSWORD_BTN: 'Save Password',
|
||||
|
||||
SUCCESS_HEADER: 'Signup Successful',
|
||||
SUCCESS_TEXT: 'You\'ve successfully registered an account at TellForm.',
|
||||
VERIFICATION_EMAIL_SENT: 'A verification email has been sent to',
|
||||
NOT_ACTIVATED_YET: 'But your account is not activated yet',
|
||||
BEFORE_YOU_CONTINUE: '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 ',
|
||||
CHECK_YOUR_EMAIL: 'Check your email and click on the activation link to activate your account. If you have any questions drop us a line at',
|
||||
|
||||
PASSWORD_RESTORE_HEADER: 'Restore your password',
|
||||
ENTER_YOUR_EMAIL: 'Enter your account email.',
|
||||
SUBMIT_BTN: 'Submit',
|
||||
|
||||
ASK_FOR_NEW_PASSWORD: 'Ask for new password reset',
|
||||
PASSWORD_RESET_INVALID: 'Password reset is invalid',
|
||||
PASSWORD_RESET_SUCCESS: 'Passport successfully reset',
|
||||
PASSWORD_CHANGE_SUCCESS: 'Passport successfully changed',
|
||||
|
||||
CONTINUE_TO_LOGIN: 'Continue to login page',
|
||||
|
||||
VERIFY_SUCCESS: 'Account successfully activated',
|
||||
VERIFY_ERROR: 'Verification link is invalid or has expired'
|
||||
});
|
||||
|
||||
$translateProvider.preferredLanguage('en')
|
||||
.fallbackLanguage('en')
|
||||
.useSanitizeValueStrategy('escape');
|
||||
|
||||
}]);
|
51
public/modules/users/config/i18n/french.js
Normal file
51
public/modules/users/config/i18n/french.js
Normal file
|
@ -0,0 +1,51 @@
|
|||
'use strict';
|
||||
|
||||
angular.module('users').config(['$translateProvider', function ($translateProvider) {
|
||||
|
||||
$translateProvider.translations('en', {
|
||||
ACCESS_DENIED_TEXT: 'Vouz est pas autorisé pour accese cete page.',
|
||||
USERNAME_LABEL: 'Nom de Compte',
|
||||
PASSWORD_LABEL: 'Mot de Pass',
|
||||
CURRENT_PASSWORD_LABEL: 'Current Password',
|
||||
NEW_PASSWORD_LABEL: 'Nouveau Mot de Pass Password',
|
||||
VERIFY_PASSWORD_LABEL: 'Verify Password',
|
||||
UPDATE_PASSWORD_LABEL: 'Update Password',
|
||||
FIRST_NAME_LABEL: 'Premiere Nom Name',
|
||||
LAST_NAME_LABEL: 'Surnom',
|
||||
LANGUAGE_LABEL: 'Language',
|
||||
EMAIL_LABEL: 'Email',
|
||||
|
||||
UPDATE_PROFILE_BTN: 'Modifier Profile',
|
||||
PROFILE_SAVE_SUCCESS: 'Profile saved successfully',
|
||||
PROFILE_SAVE_ERROR: 'Erreur: On peux pas enregistré votre Profile.',
|
||||
|
||||
FORGOT_PASSWORD_LINK: 'Oublier votre mot de pass?',
|
||||
REVERIFY_ACCOUNT_LINK: 'Re-envoyez ton email de verification',
|
||||
|
||||
SIGNIN_BTN: 'Connexion',
|
||||
SIGNUP_BTN: 'Créer un compte',
|
||||
SAVE_PASSWORD_BTN: 'Enregistreé ton nouveau Mot de Pass',
|
||||
|
||||
SUCCESS_HEADER: 'Votre Compte a été enregistré!',
|
||||
SUCCESS_TEXT: 'Vouz a enregistré un compte a TellForm.',
|
||||
VERIFICATION_EMAIL_SENT: 'Un email de verification a été envoyer a',
|
||||
NOT_ACTIVATED_YET: 'Mais votre compte n\'est pas activé',
|
||||
BEFORE_YOU_CONTINUE: 'Plutôt que vouz continué, vouz devrez voire ton inbox pour notre message de verification. Si tu receivoir-pas un message de verification dan le prochaine 24h, contactez nous a ',
|
||||
CHECK_YOUR_EMAIL: 'Check your email and click on the activation link to activate your account. If you have any questions drop us a line at',
|
||||
|
||||
PASSWORD_RESTORE_HEADER: 'Restore your password',
|
||||
ENTER_YOUR_EMAIL: 'Entrer votre email de compte',
|
||||
SUBMIT_BTN: 'Enregistrer',
|
||||
|
||||
ASK_FOR_NEW_PASSWORD: 'Demander un nouveau mot de pass ',
|
||||
PASSWORD_RESET_INVALID: 'Password reset is invalid',
|
||||
PASSWORD_RESET_SUCCESS: 'Passport successfully reset',
|
||||
PASSWORD_CHANGE_SUCCESS: 'Passport successfully changed',
|
||||
|
||||
CONTINUE_TO_LOGIN: 'Allez au page de connexion',
|
||||
|
||||
VERIFY_SUCCESS: 'Compte est activé!',
|
||||
VERIFY_ERROR: 'Le fléche de verification est invalid ou expireé'
|
||||
});
|
||||
|
||||
}]);
|
|
@ -1,4 +1,4 @@
|
|||
<section class="row text-center auth">
|
||||
<h3 class="col-md-12">You need to be logged in to access this page</h3>
|
||||
<a href="/#!/sigin" class="col-md-12">Login</a>
|
||||
</section>
|
||||
<h3 class="col-md-12">{{ 'ACCESS_DENIED_TEXT' | translate }}</h3>
|
||||
<a href="/#!/sigin" class="col-md-12">{{ 'SIGNIN_BTN' | translate }}</a>
|
||||
</section>
|
||||
|
|
|
@ -25,22 +25,24 @@
|
|||
Error: <strong data-ng-bind="error"></strong>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="username">Account Email</label>
|
||||
<input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="Username">
|
||||
<label for="username">{{ 'EMAIL_LABEL' | translate }}</label>
|
||||
<input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="{{ 'EMAIL_LABEL' | translate }}">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password">Password</label>
|
||||
<input type="password" id="password" name="password" class="form-control" data-ng-model="credentials.password" placeholder="Password">
|
||||
<label for="password">{{ 'PASSWORD_LABEL' | translate }}</label>
|
||||
<input type="password" id="password" name="password" class="form-control" data-ng-model="credentials.password" placeholder="{{ 'PASSWORD_LABEL' | translate }}">
|
||||
</div>
|
||||
<div class="forgot-password">
|
||||
<a ui-sref="forgot">Forgot your password?</a>
|
||||
<a ui-sref="forgot">{{ 'FORGOT_PASSWORD_LINK' | translate }}</a>
|
||||
<br>
|
||||
<a ui-sref="verify">{{ 'REVERIFY_ACCOUNT_LINK' | translate }}</a>
|
||||
</div>
|
||||
<div class="text-center form-group">
|
||||
<button class="btn btn-primary" ng-click="signin()">Sign in</button>
|
||||
<button class="btn btn-primary" ng-click="signin()">{{ 'SIGNIN_BTN' | translate }}</button>
|
||||
|
||||
<span ng-hide="$root.signupDisabled">
|
||||
or
|
||||
<a ui-sref="signup">Sign up</a
|
||||
<a ui-sref="signup">{{ 'SIGNUP_BTN' | translate }}</a>
|
||||
</span>
|
||||
|
||||
</div>
|
||||
|
|
|
@ -17,16 +17,17 @@
|
|||
<img src="/modules/users/img/buttons/github.png">
|
||||
</a>
|
||||
</div> -->
|
||||
<h3 class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6 text-center">Signup Successful</h3>
|
||||
<h3 class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6 text-center">{{ 'SUCCESS_HEADER' | translate }}</h3>
|
||||
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6">
|
||||
<h2>
|
||||
You've successfully registered an account at TellForm.
|
||||
|
||||
<br><br>But your account is <b>not activated yet</b>
|
||||
{{ 'SUCCESS_TEXT' | translate }}
|
||||
<br><br>
|
||||
{{ 'NOT_ACTIVATED_YET' | translate }}
|
||||
</h2>
|
||||
<br><br>
|
||||
|
||||
<p>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 <a href="mail:polydaic@gmail.com">polydaic@gmail.com</a></p>
|
||||
<p>
|
||||
<strong>{{ 'BEFORE_YOU_CONTINUE' | translate }}</strong> <a href="mail:polydaic@gmail.com">polydaic@gmail.com</a></p>
|
||||
<div class="text-center form-group">
|
||||
<button type="submit" class="btn btn-large btn-primary">
|
||||
<a href="/#!/" style="color: white; text-decoration: none;">Continue</a>
|
||||
|
|
|
@ -22,28 +22,42 @@
|
|||
<form name="userForm" data-ng-submit="signup()" class="signin form-horizontal" novalidate autocomplete="off">
|
||||
<fieldset>
|
||||
<div data-ng-show="error" id="signup_errors" class="text-center text-danger">
|
||||
Couldn't submit form due to errors: <br>
|
||||
Couldn't complete registration due to errors: <br>
|
||||
<strong data-ng-bind="error"></strong>
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="firstName">First Name</label>
|
||||
<label for="firstName">{{ 'FIRST_NAME_LABEL' | translate }}</label>
|
||||
<input type="text" ng-pattern="/^[a-zA-Z0-9 \-.]*$/" required id="firstName" name="firstName" class="form-control" ng-model="credentials.firstName" placeholder="First Name">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="lastName">Last Name</label>
|
||||
<label for="lastName">{{ 'LAST_NAME_LABEL' | translate }}</label>
|
||||
<input type="text" ng-pattern="/^[a-zA-Z0-9 \-.]*$/" required id="lastName" name="lastName" class="form-control" ng-model="credentials.lastName" placeholder="Last Name">
|
||||
</div>
|
||||
<div class="row form-group">
|
||||
<div class="col-xs-7 field-title">
|
||||
<b>{{ 'LANGUAGE_LABEL' | translate }}</b>
|
||||
</div>
|
||||
<div class="col-xs-12 field-input">
|
||||
<select ng-model="user.language" required>
|
||||
<option ng-repeat="language in languages"
|
||||
ng-selected="language == user.language"
|
||||
value="{{language}}">
|
||||
{{language}}
|
||||
</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label for="email">Email</label>
|
||||
<label for="email">{{ 'EMAIL_LABEL' | translate }}</label>
|
||||
<input type="email" id="email" name="email" class="form-control" ng-model="credentials.email" placeholder="Email">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password">Password</label>
|
||||
<label for="password">{{ 'PASSWORD_LABEL' | translate }}</label>
|
||||
<input type="password" id="password" name="password" class="form-control" ng-model="credentials.password" placeholder="Password">
|
||||
</div>
|
||||
<div class="text-center form-group">
|
||||
<button type="submit" class="btn btn-large btn-primary">Sign up</button>
|
||||
<button type="submit" class="btn btn-large btn-primary">{{ 'SIGNUP_BTN' | translate }}</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<section class="auth row" data-ng-controller="PasswordController">
|
||||
<h3 class="col-md-12 text-center">Restore your password</h3>
|
||||
<p class="small text-center">Enter your account email.</p>
|
||||
<h3 class="col-md-12 text-center">{{ 'PASSWORD_RESTORE_HEADER' | translate }}</h3>
|
||||
<p class="small text-center">{{ 'ENTER_YOUR_EMAIL' | translate }}</p>
|
||||
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6">
|
||||
<form data-ng-submit="askForPasswordReset()" class="signin form-horizontal" autocomplete="off">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="Username">
|
||||
<input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="{{ 'USERNAME_LABEL' | translate }}">
|
||||
</div>
|
||||
<div class="text-center form-group">
|
||||
<button type="submit" class="btn btn-primary">Submit</button>
|
||||
<button type="submit" class="btn btn-primary">{{ 'UPDATE_PASSWORD_LABEL' | translate }}</button>
|
||||
</div>
|
||||
<div data-ng-show="error" class="text-center text-danger">
|
||||
<strong>{{error}}</strong>
|
||||
|
@ -19,4 +19,4 @@
|
|||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<section class="row text-center">
|
||||
<h3 class="col-md-12">Password reset is invalid</h3>
|
||||
<a href="/#!/password/forgot" class="col-md-12">Ask for a new password reset</a>
|
||||
</section>
|
||||
<h3 class="col-md-12">{{ 'PASSWORD_RESET_INVALID' | translate }}</h3>
|
||||
<a href="/#!/password/forgot" class="col-md-12">{{ 'ASK_FOR_NEW_PASSWORD' | translate }}</a>
|
||||
</section>
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
<section class="row text-center">
|
||||
<h3 class="col-md-12">Password successfully reset</h3>
|
||||
<a href="/#!/" class="col-md-12">Continue to home page</a>
|
||||
</section>
|
||||
<h3 class="col-md-12">{{ 'PASSWORD_RESET_SUCCESS' | translate }}</h3>
|
||||
<a href="/#!/" class="col-md-12">{{ 'CONTINUE_TO_LOGIN' | translate }}</a>
|
||||
</section>
|
||||
|
|
|
@ -4,11 +4,11 @@
|
|||
<form data-ng-submit="resetUserPassword()" class="signin form-horizontal" autocomplete="off">
|
||||
<fieldset>
|
||||
<div class="form-group">
|
||||
<label for="newPassword">New Password</label>
|
||||
<label for="newPassword">{{ 'NEW_PASSWORD_LABEL' | translate }}</label>
|
||||
<input type="password" id="newPassword" name="newPassword" class="form-control" data-ng-model="passwordDetails.newPassword" placeholder="New Password">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="verifyPassword">Verify Password</label>
|
||||
<label for="verifyPassword">{{ 'VERIFY_PASSWORD_LABEL' | translate }}</label>
|
||||
<input type="password" id="verifyPassword" name="verifyPassword" class="form-control" data-ng-model="passwordDetails.verifyPassword" placeholder="Verify Password">
|
||||
</div>
|
||||
<div class="text-center form-group">
|
||||
|
@ -23,4 +23,4 @@
|
|||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -9,18 +9,18 @@
|
|||
</div>
|
||||
<hr>
|
||||
<div class="form-group">
|
||||
<label for="newPassword">New Password</label>
|
||||
<label for="newPassword">{{ 'NEW_PASSWORD_LABEL' | translate }}</label>
|
||||
<input type="password" id="newPassword" name="newPassword" class="form-control" data-ng-model="passwordDetails.newPassword" placeholder="New Password">
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="verifyPassword">Verify Password</label>
|
||||
<label for="verifyPassword">{{ 'VERIFY_PASSWORD_LABEL' | translate }}</label>
|
||||
<input type="password" id="verifyPassword" name="verifyPassword" class="form-control" data-ng-model="passwordDetails.verifyPassword" placeholder="Verify Password">
|
||||
</div>
|
||||
<div class="text-center form-group">
|
||||
<button type="submit" class="btn btn-large btn-primary">Save Password</button>
|
||||
<button type="submit" class="btn btn-large btn-primary">{{ 'SAVE_PASSWORD_BTN' | translate }}</button>
|
||||
</div>
|
||||
<div data-ng-show="success" class="text-center text-success">
|
||||
<strong>Password Changed Successfully</strong>
|
||||
<strong>{{ 'PASSWORD_CHANGE_SUCCESS' | translate }}</strong>
|
||||
</div>
|
||||
<div data-ng-show="error" class="text-center text-danger">
|
||||
<strong data-ng-bind="error"></strong>
|
||||
|
@ -28,4 +28,4 @@
|
|||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -4,16 +4,16 @@
|
|||
<form name="userForm" data-ng-submit="updateUserProfile(userForm.$valid)" class="signin form-horizontal" autocomplete="off">
|
||||
<fieldset>
|
||||
<div data-ng-show="success" class="text-center text-success">
|
||||
<strong>Profile Saved Successfully</strong>
|
||||
<strong>{{ 'PROFILE_SAVE_SUCCESS' | translate }}</strong>
|
||||
</div>
|
||||
<div data-ng-show="error" class="text-center text-danger">
|
||||
Couldn't Save Your Profile.<br>
|
||||
Error: <strong data-ng-bind="error"></strong>
|
||||
{{ 'PROFILE_SAVE_ERROR' | translate }}<br>
|
||||
<strong data-ng-bind="error"></strong>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<div class="col-xs-7 field-title">
|
||||
<b>First Name</b>
|
||||
<b>{{ 'FIRST_NAME_LABEL' | translate }}</b>
|
||||
</div>
|
||||
<div class="col-xs-12 field-input">
|
||||
<input type="text" id="firstName" name="firstName" class="form-control" data-ng-model="user.firstName" placeholder="First Name" ng-pattern="/^[a-zA-Z0-9 \-.]*$/">
|
||||
|
@ -32,7 +32,7 @@
|
|||
</div>
|
||||
<div class="row form-group">
|
||||
<div class="col-xs-7 field-title">
|
||||
<b>Language</b>
|
||||
<b>{{ 'LANGUAGE_LABEL' | translate }}</b>
|
||||
</div>
|
||||
<div class="col-xs-12 field-input">
|
||||
<select ng-model="user.language" required>
|
||||
|
@ -47,8 +47,7 @@
|
|||
|
||||
<div class="row form-group">
|
||||
<div class="col-xs-7 field-title">
|
||||
<b>Email</b>
|
||||
<small>(also your username)</small>
|
||||
<b>{{ 'EMAIL_LABEL' | translate }}</b>
|
||||
</div>
|
||||
<div class="col-xs-12 field-input">
|
||||
<input type="email" id="email" name="email" class="form-control" data-ng-model="user.email" placeholder="Email">
|
||||
|
@ -56,10 +55,12 @@
|
|||
</div>
|
||||
|
||||
<div class="text-center form-group">
|
||||
<button type="submit" class="btn btn-large btn-primary" style="font-size:1.6em;">Update Profile</button>
|
||||
<button type="submit" class="btn btn-large btn-primary" style="font-size:1.6em;">
|
||||
{{ 'SUBMIT_BTN' | translate }}
|
||||
</button>
|
||||
</div>
|
||||
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
</section>
|
||||
</section>
|
||||
|
|
|
@ -12,13 +12,8 @@
|
|||
<input type="text" id="username" name="email" class="form-control" data-ng-model="credentials.email" placeholder="bob@example.com">
|
||||
</div>
|
||||
<div class="text-center form-group">
|
||||
<button type="submit" class="btn btn-primary" ng-click="resendVerifyEmail()">Submit</button>
|
||||
<button type="submit" class="btn btn-primary" ng-click="resendVerifyEmail()">{{ 'SUBMIT_BTN' | translate }}</button>
|
||||
</div>
|
||||
|
||||
|
||||
<!-- <div data-ng-show="success" class="text-center text-success">
|
||||
<strong>{{success}}</strong>
|
||||
</div> -->
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
|
@ -28,9 +23,10 @@
|
|||
<h3 class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6 text-center">Verification Email has been Sent </h3>
|
||||
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6">
|
||||
<h2>
|
||||
A verification email has been sent to {{username}}.<br>But your account is still <b>not activated yet</b>
|
||||
{{ 'VERIFICATION_EMAIL_SENT' | translate }} {{username}}.
|
||||
<br> {{ 'NOT_ACTIVATED_YET' | translate }}
|
||||
</h2>
|
||||
<p>Check your email and click on the activation link to activate your account. If you have any questions drop us a line at <a href="mail:polydaic@gmail.com">polydaic@gmail.com</a></p>
|
||||
<p> {{ 'CHECK_YOUR_EMAIL' | translate }} <a href="mail:polydaic@gmail.com">polydaic@gmail.com</a></p>
|
||||
<div class="text-center form-group">
|
||||
<button type="submit" class="btn btn-large btn-primary">
|
||||
<a href="/#!/" style="color:white;">Continue</a>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<section style="margin-top:50px;" class="row text-center" data-ng-controller="VerifyController" ng-init="validateVerifyToken()">
|
||||
|
||||
<section class="row text-center" ng-if="isResetSent">
|
||||
<h3 class="col-md-12">Account successfuly activated</h3>
|
||||
<a href="/#!/signin" class="col-md-12">Continue to login page</a>
|
||||
<h3 class="col-md-12"></h3>
|
||||
<a href="/#!/signin" class="col-md-12">{{ 'CONTINUE_TO_LOGIN' | translate }}</a>
|
||||
</section>
|
||||
|
||||
<section class="row text-center" ng-if="!isResetSent">
|
||||
<h3 class="col-md-12">Verification link is invalid or has expired</h3>
|
||||
<a href="/#!/verify" class="col-md-6">Resend your verification email</a>
|
||||
<a href="/#!/signin" class="col-md-6">Signin to your account</a>
|
||||
<h3 class="col-md-12">{{ 'VERIFY_ERROR' | translate }}</h3>
|
||||
<a href="/#!/verify" class="col-md-6">{{ 'REVERIFY_ACCOUNT_LINK' | translate }}</a>
|
||||
<a href="/#!/signin" class="col-md-6">{{ 'SIGNIN_BTN' | translate }}</a>
|
||||
</section>
|
||||
|
||||
</section>
|
||||
|
|
Loading…
Reference in a new issue