diff --git a/app/controllers/users/users.authentication.server.controller.js b/app/controllers/users/users.authentication.server.controller.js
index 3e1b1100..1d616afa 100755
--- a/app/controllers/users/users.authentication.server.controller.js
+++ b/app/controllers/users/users.authentication.server.controller.js
@@ -121,6 +121,12 @@ exports.signup = function(req, res) {
// Add missing user fields
user.provider = 'local';
+
+ if(req.body.password.length < 4){
+ return res.status(400).send({
+ message: 'Password must be at least 4 characters long'
+ });
+ }
// Then save the temporary user
nev.createTempUser(user, function (err, existingPersistentUser, newTempUser) {
@@ -161,6 +167,13 @@ exports.signup = function(req, res) {
* Signin after passport authentication
*/
exports.signin = function(req, res, next) {
+ console.log(req.body);
+ if(req.body.password.length < 4){
+ return res.status(400).send({
+ message: 'Password must be at least 4 characters long'
+ });
+ }
+
passport.authenticate('local', function(err, user, info) {
if (err || !user) {
res.status(400).send(info);
@@ -188,7 +201,9 @@ exports.signin = function(req, res, next) {
* Signout
*/
exports.signout = function(req, res) {
- res.destroyCookie('langCookie');
+ if(req.cookies.hasOwnProperty('userLang')){
+ res.destroyCookie('userLang');
+ }
req.logout();
return res.status(200).send('You have successfully logged out.');
};
diff --git a/app/controllers/users/users.password.server.controller.js b/app/controllers/users/users.password.server.controller.js
index 779be1b8..bdeb0505 100755
--- a/app/controllers/users/users.password.server.controller.js
+++ b/app/controllers/users/users.password.server.controller.js
@@ -11,7 +11,8 @@ var _ = require('lodash'),
config = require('../../../config/config'),
nodemailer = require('nodemailer'),
async = require('async'),
- crypto = require('crypto');
+ crypto = require('crypto'),
+ pug = require('pug');
var smtpTransport = nodemailer.createTransport(config.mailer.options);
@@ -32,7 +33,7 @@ exports.forgot = function(req, res) {
if (req.body.username) {
User.findOne({
$or: [
- {'username': req.body.username},
+ {'username': req.body.username.toLowerCase()},
{'email': req.body.username}
]
}, '-salt -password', function(err, user) {
@@ -45,7 +46,7 @@ exports.forgot = function(req, res) {
var tempUserModel = mongoose.model(config.tempUserCollection);
tempUserModel.findOne({
$or: [
- {'username': req.body.username},
+ {'username': req.body.username.toLowerCase()},
{'email': req.body.username}
]
}).lean().exec(function(err, user) {
@@ -80,13 +81,12 @@ exports.forgot = function(req, res) {
}
},
function(token, user, done) {
- res.render('templates/reset-password-email', {
- name: user.displayName || 'TellForm User',
- appName: config.app.title,
- url: 'http://' + req.headers.host + '/auth/reset/' + token
- }, function(err, emailHTML) {
- done(err, emailHTML, user);
- });
+ const fn = pug.compileFile(__dirname + "/../../views/templates/reset-password-email.server.view.pug");
+ res.locals['url'] = 'http://' + req.headers.host + '/auth/reset/' + token;
+
+ console.log(res.locals);
+ var renderedHtml = fn(res.locals);
+ done(null, renderedHtml, user);
},
// If valid email, send reset email using service
function(emailHTML, user, done) {
@@ -153,10 +153,21 @@ exports.validateResetToken = function(req, res) {
* Reset password POST from email token
*/
exports.reset = function(req, res, next) {
+ if(req.body.newPassword.length < 4){
+ return res.status(400).send({
+ message: 'Password must be at least 4 characters long'
+ });
+ }
+
+ if(req.body.newPassword !== req.body.verifyPassword){
+ return res.status(400).send({
+ message: 'Passwords do not match'
+ });
+ }
+
// Init Variables
var passwordDetails = req.body;
async.waterfall([
-
function(done) {
User.findOne({
resetPasswordToken: req.params.token,
@@ -165,32 +176,25 @@ exports.reset = function(req, res, next) {
}
}, function(err, user) {
if (!err && user) {
- if (passwordDetails.newPassword === passwordDetails.verifyPassword) {
- user.password = passwordDetails.newPassword;
- user.resetPasswordToken = null;
- user.resetPasswordExpires = null;
+ user.password = passwordDetails.newPassword;
+ user.resetPasswordToken = null;
+ user.resetPasswordExpires = null;
- user.save(function(err) {
- if (err) {
- done(err, null);
- }
- done(null, user);
- });
- } else {
- done('Passwords do not match', null);
- }
+ user.save(function(err, savedUser) {
+ if (err) {
+ done(err, null);
+ }
+ done(null, savedUser);
+ });
} else {
done('Password reset token is invalid or has expired.', null);
}
});
},
function(user, done) {
- res.render('templates/reset-password-confirm-email', {
- name: user.displayName,
- appName: config.app.title
- }, function(err, emailHTML) {
- done(err, emailHTML, user);
- });
+ const fn = pug.compileFile(__dirname + "/../../views/templates/reset-password-confirm-email.server.view.pug");
+ var renderedHtml = fn(res.locals);
+ done(null, renderedHtml, user);
},
// If valid email, send reset email using service
function(emailHTML, user, done) {
diff --git a/app/models/user.server.model.js b/app/models/user.server.model.js
index 45d3cefc..8e2f0d0d 100755
--- a/app/models/user.server.model.js
+++ b/app/models/user.server.model.js
@@ -69,6 +69,7 @@ var UserSchema = new Schema({
email: {
type: String,
trim: true,
+ lowercase: true,
unique: 'Account already exists with this email',
match: [/.+\@.+\..+/, 'Please fill a valid email address'],
required: [true, 'Email is required']
@@ -77,7 +78,7 @@ var UserSchema = new Schema({
type: String,
unique: true,
lowercase: true,
- match: [/^[a-zA-Z0-9\.\-\_]+$/, 'Username can only contain alphanumeric characters and \'_\', \'-\' and \'.\''],
+ match: [/^[a-zA-Z0-9\-]+$/, 'Username can only contain alphanumeric characters and \'-\''],
required: [true, 'Username is required']
},
passwordHash: {
diff --git a/app/views/templates/reset-password-confirm-email.server.view.html b/app/views/templates/reset-password-confirm-email.server.view.html
index 4654ff1f..5d8df1bb 100755
--- a/app/views/templates/reset-password-confirm-email.server.view.html
+++ b/app/views/templates/reset-password-confirm-email.server.view.html
@@ -30,7 +30,7 @@
Hello there!
This is a courtesy message to confirm that your password was just changed.
Thanks so much for using our services! If you have any questions, or suggestions, please feel free to email us here at team@tellform.com .
- - The {{appName}} team
+ - The #{appName} team
diff --git a/app/views/templates/reset-password-confirm-email.server.view.pug b/app/views/templates/reset-password-confirm-email.server.view.pug
new file mode 100644
index 00000000..95c05cd4
--- /dev/null
+++ b/app/views/templates/reset-password-confirm-email.server.view.pug
@@ -0,0 +1,41 @@
+doctype html
+html
+ head
+ body(style='padding: 0; width: 100% !important; -webkit-text-size-adjust: 100%; margin: 0; -ms-text-size-adjust: 100%', marginheight='0', marginwidth='0')
+ center
+ table(cellpadding='8', cellspacing='0', style='*width: 540px; padding: 0; width: 100% !important; background: #ffffff; margin: 0; background-color: #ffffff', border='0')
+ tbody
+ tr
+ td(valign='top')
+ table(cellpadding='0', cellspacing='0', style='border-radius: 6px; -webkit-border-radius: 6px; border: 1px #c0c0c0 solid; -moz-border-radius: 6px', border='0', align='center')
+ tbody
+ tr
+ td(colspan='3', height='6')
+ tr
+ td
+ table(cellpadding='0', cellspacing='0', style='line-height: 25px', border='0', align='center')
+ tbody
+ tr
+ td(colspan='3', height='30')
+ tr
+ td(width='36')
+ td(width='454', align='left', style="color: #444444; border-collapse: collapse; font-size: 11pt; font-family: 'Open Sans', 'Lucida Grande', 'Segoe UI', Arial, Verdana, 'Lucida Sans Unicode', Tahoma, 'Sans Serif'; max-width: 454px", valign='top')
+ p=__('EMAIL_GREETING')
+ p=__('RESET_PASSWORD_CONFIRMATION_EMAIL_BODY_1')
+ p=__("VERIFICATION_EMAIL_PARAGRAPH_2")
+ a(href='mailto:team@tellform.com') team@tellform.com
+ p=__('EMAIL_SIGNATURE')
+ td(width='36')
+ tr
+ td(colspan='3', height='36')
+ table(cellpadding='0', cellspacing='0', align='center', border='0')
+ tbody
+ tr
+ td(height='10')
+ tr
+ td(style='padding: 0; border-collapse: collapse')
+ table(cellpadding='0', cellspacing='0', align='center', border='0')
+ tbody
+ tr(style="color: #c0c0c0; font-size: 11px; font-family: 'Open Sans', 'Lucida Grande', 'Segoe UI', Arial, Verdana, 'Lucida Sans Unicode', Tahoma, 'Sans Serif'; -webkit-text-size-adjust: none")
+ td(width='400', align='left')
+ td(width='128', align='right') © TellForm 2017
diff --git a/app/views/templates/reset-password-email.server.view.pug b/app/views/templates/reset-password-email.server.view.pug
new file mode 100644
index 00000000..912f32e0
--- /dev/null
+++ b/app/views/templates/reset-password-email.server.view.pug
@@ -0,0 +1,44 @@
+doctype html
+html
+ head
+ body(style='padding: 0; width: 100% !important; -webkit-text-size-adjust: 100%; margin: 0; -ms-text-size-adjust: 100%', marginheight='0', marginwidth='0')
+ center
+ table(cellpadding='8', cellspacing='0', style='*width: 540px; padding: 0; width: 100% !important; background: #ffffff; margin: 0; background-color: #ffffff', border='0')
+ tbody
+ tr
+ td(valign='top')
+ table(cellpadding='0', cellspacing='0', style='border-radius: 6px; -webkit-border-radius: 6px; border: 1px #c0c0c0 solid; -moz-border-radius: 6px', border='0', align='center')
+ tbody
+ tr
+ td(colspan='3', height='6')
+ tr
+ td
+ table(cellpadding='0', cellspacing='0', style='line-height: 25px', border='0', align='center')
+ tbody
+ tr
+ td(colspan='3', height='30')
+ tr
+ td(width='36')
+ td(width='454', align='left', style="color: #444444; border-collapse: collapse; font-size: 11pt; font-family: 'Open Sans', 'Lucida Grande', 'Segoe UI', Arial, Verdana, 'Lucida Sans Unicode', Tahoma, 'Sans Serif'; max-width: 454px", valign='top')
+ p=__('EMAIL_GREETING')
+ p=__('RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_1')
+ p
+ a(href=url)=__('RESET_PASSWORD_REQUEST_EMAIL_LINK_TEXT')
+ p=__('RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_2')
+ p=__('VERIFICATION_EMAIL_PARAGRAPH_2')
+ a(href='mailto:team@tellform.com') team@tellform.com
+ p=__('EMAIL_SIGNATURE')
+ td(width='36')
+ tr
+ td(colspan='3', height='36')
+ table(cellpadding='0', cellspacing='0', align='center', border='0')
+ tbody
+ tr
+ td(height='10')
+ tr
+ td(style='padding: 0; border-collapse: collapse')
+ table(cellpadding='0', cellspacing='0', align='center', border='0')
+ tbody
+ tr(style="color: #c0c0c0; font-size: 11px; font-family: 'Open Sans', 'Lucida Grande', 'Segoe UI', Arial, Verdana, 'Lucida Sans Unicode', Tahoma, 'Sans Serif'; -webkit-text-size-adjust: none")
+ td(width='400', align='left')
+ td(width='128', align='right') © TellForm 2017
diff --git a/app/views/verification.email.view.pug b/app/views/verification.email.view.pug
index 51e31ce9..fb225507 100644
--- a/app/views/verification.email.view.pug
+++ b/app/views/verification.email.view.pug
@@ -28,7 +28,7 @@ html
p=__('EMAIL_GREETING')
p=__('VERIFICATION_EMAIL_PARAGRAPH_1')
p
- a(href='https://${URL}')=__('VERIFICATION_EMAIL_LINK_TEXT')
+ a(href='http://${URL}')=__('VERIFICATION_EMAIL_LINK_TEXT')
p=__('VERIFICATION_EMAIL_PARAGRAPH_2')
a(href='mailto:team@tellform.com')
| team@tellform.com
diff --git a/config/locales/de.json b/config/locales/de.json
index 1cb88cf5..f3095601 100644
--- a/config/locales/de.json
+++ b/config/locales/de.json
@@ -13,5 +13,9 @@
"WELCOME_EMAIL_PARAGRAPH_1": "Wir möchten Sie als unser neustes Mitglied begrüßen!",
"WELCOME_EMAIL_PARAGRAPH_2": "Wir wünschen Ihnen viel Spaß mit TellForm! Wenn Sie Probleme haben, senden Sie uns bitte eine E-Mail an",
"WELCOME_EMAIL_SUBJECT": "Willkommen bei %s!",
- "WELCOME_EMAIL_TEXT": "Ihr Konto wurde erfolgreich verifiziert."
+ "WELCOME_EMAIL_TEXT": "Ihr Konto wurde erfolgreich verifiziert.",
+ "RESET_PASSWORD_CONFIRMATION_EMAIL_PARAGRAPH_1": "Dies ist eine Höflichkeitsnachricht, um zu bestätigen, dass Ihr Passwort gerade geändert wurde.",
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_1": "Hier ist ein spezieller Link, mit dem Sie Ihr Passwort zurücksetzen können: Bitte beachten Sie, dass es innerhalb einer Stunde zu Ihrem Schutz abläuft:",
+ "RESET_PASSWORD_REQUEST_EMAIL_LINK_TEXT": "Passwort zurücksetzen",
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_2": "Falls Sie dies nicht gewünscht haben, ignorieren Sie bitte diese E-Mail und Ihr Passwort bleibt unverändert."
}
\ No newline at end of file
diff --git a/config/locales/en.json b/config/locales/en.json
index 932d0602..668622a3 100644
--- a/config/locales/en.json
+++ b/config/locales/en.json
@@ -13,5 +13,10 @@
"WELCOME_EMAIL_PARAGRAPH_1": "We would like to welcome you as our newest member!",
"WELCOME_EMAIL_PARAGRAPH_2": "We hope you enjoy using TellForm! If you have any trouble please feel free to email us here at",
"WELCOME_EMAIL_SUBJECT": "Welcome to %s!",
- "WELCOME_EMAIL_TEXT": "Your account has been successfully verified."
+ "WELCOME_EMAIL_TEXT": "Your account has been successfully verified.",
+ "RESET_PASSWORD_CONFIRMATION_EMAIL_PARAGRAPH_1": "This is a courtesy message to confirm that your password was just changed.",
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_1": "Here is a special link that will allow you to reset your password. Please note it will expire in one hour for your protection:",
+ "RESET_PASSWORD_REQUEST_EMAIL_LINK_TEXT": "Reset Your Password",
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_2": "If you did not request this, please ignore this email and your password will remain unchanged.",
+ "RESET_PASSWORD_CONFIRMATION_EMAIL_BODY_1": "RESET_PASSWORD_CONFIRMATION_EMAIL_BODY_1"
}
\ No newline at end of file
diff --git a/config/locales/es.json b/config/locales/es.json
index f05a79cc..4a6ebce9 100644
--- a/config/locales/es.json
+++ b/config/locales/es.json
@@ -13,5 +13,9 @@
"WELCOME_EMAIL_PARAGRAPH_1": "¡Nos gustaría darle la bienvenida como nuestro miembro más nuevo!",
"WELCOME_EMAIL_PARAGRAPH_2": "Esperamos que disfrute utilizando TellForm. Si tiene algún problema, no dude en enviarnos un correo electrónico aquí",
"WELCOME_EMAIL_SUBJECT": "¡Bienvenido a %s!",
- "WELCOME_EMAIL_TEXT": "Su cuenta ha sido verificada con éxito"
+ "WELCOME_EMAIL_TEXT": "Su cuenta ha sido verificada con éxito",
+ "RESET_PASSWORD_CONFIRMATION_EMAIL_PARAGRAPH_1": "Este es un mensaje de cortesía para confirmar que su contraseña acaba de cambiarse",
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_1": "Aquí hay un enlace especial que le permitirá restablecer su contraseña. Tenga en cuenta que caducará en una hora para su protección:",
+ "RESET_PASSWORD_REQUEST_EMAIL_LINK_TEXT": "Restablecer su contraseña",
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_2": "Si no lo solicitó, ignore este correo electrónico y su contraseña no cambiará".
}
\ No newline at end of file
diff --git a/config/locales/fr.json b/config/locales/fr.json
index ff277576..681f1bd3 100644
--- a/config/locales/fr.json
+++ b/config/locales/fr.json
@@ -13,5 +13,9 @@
"WELCOME_EMAIL_PARAGRAPH_1": "Nous aimerions vous accueillir en tant que nouveau membre!",
"WELCOME_EMAIL_PARAGRAPH_2": "Nous espérons que vous apprécierez l'utilisation de TellForm! Si vous avez des problèmes, n'hésitez pas à nous envoyer un e-mail ici",
"WELCOME_EMAIL_SUBJECT": "Bienvenue dans %s!",
- "WELCOME_EMAIL_TEXT": "Votre compte a été vérifié avec succès."
+ "WELCOME_EMAIL_TEXT": "Votre compte a été vérifié avec succès.",
+ "RESET_PASSWORD_CONFIRMATION_EMAIL_PARAGRAPH_1": "Ceci est un message de courtoisie pour confirmer que votre mot de passe a été modifié.",
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_1": "Voici un lien spécial qui vous permettra de réinitialiser votre mot de passe Veuillez noter qu'il expirera dans une heure pour votre protection:",
+ "RESET_PASSWORD_REQUEST_EMAIL_LINK_TEXT": "Réinitialiser votre mot de passe",
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_2": "Si vous ne l'avez pas demandé, veuillez ignorer cet e-mail et votre mot de passe restera inchangé."
}
\ No newline at end of file
diff --git a/config/locales/it.json b/config/locales/it.json
index 7840a21d..ea0140a3 100644
--- a/config/locales/it.json
+++ b/config/locales/it.json
@@ -13,5 +13,9 @@
"WELCOME_EMAIL_PARAGRAPH_1": "Vorremmo darVi il benvenuto come il nostro nuovo membro!",
"WELCOME_EMAIL_PARAGRAPH_2": "Speriamo che ti piace usare TellForm! Se hai problemi, non esitate a contattarci via",
"WELCOME_EMAIL_SUBJECT": "Benvenuto a %s!",
- "WELCOME_EMAIL_TEXT": "Il tuo account è stato verificato correttamente."
+ "WELCOME_EMAIL_TEXT": "Il tuo account è stato verificato correttamente.",
+ "RESET_PASSWORD_CONFIRMATION_EMAIL_PARAGRAPH_1": "Si tratta di un messaggio di cortesia per confermare che la password è stata appena modificata".
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_1": "Ecco un collegamento speciale che ti permetterà di reimpostare la tua password. Si prega di notare che scadrà in un'ora per la protezione:",
+ "RESET_PASSWORD_REQUEST_EMAIL_LINK_TEXT": "Ripristina la tua password",
+ "RESET_PASSWORD_REQUEST_EMAIL_PARAGRAPH_2": "Se non l'hai richiesta, ignora questa email e la tua password rimane invariata."
}
\ No newline at end of file
diff --git a/config/strategies/local.js b/config/strategies/local.js
index fda5a728..319324a6 100755
--- a/config/strategies/local.js
+++ b/config/strategies/local.js
@@ -14,9 +14,11 @@ module.exports = function () {
passwordField: 'password'
},
function (username, password, done) {
+ console.log('\n\n\n\n\nusername: '+username);
+ console.log('password: '+password)
User.findOne({
$or: [
- {'username': username},
+ {'username': username.toLowerCase()},
{'email': username}
]
}, function (err, user) {
diff --git a/public/dist/application.js b/public/dist/application.js
index 8d55c787..13cace03 100644
--- a/public/dist/application.js
+++ b/public/dist/application.js
@@ -61,6 +61,600 @@ angular.element(document).ready(function() {
angular.bootstrap(document, [ApplicationConfiguration.applicationModuleName]);
});
+angular.module('TellForm.templates', []).run(['$templateCache', function ($templateCache) {
+ "use strict";
+ $templateCache.put("modules/core/views/header.client.view.html",
+ "");
+ $templateCache.put("modules/forms/admin/views/admin-form.client.view.html",
+ "");
+ $templateCache.put("modules/forms/admin/views/list-forms.client.view.html",
+ "
{{ 'CREATE_A_NEW_FORM' | translate }}
{{ form.numberOfResponses }} {{ 'RESPONSES' | translate }} {{ 'FORM_PAUSED' | translate }}
");
+ $templateCache.put("modules/forms/admin/views/adminTabs/analyze.html",
+ " ");
+ $templateCache.put("modules/forms/admin/views/adminTabs/configure.html",
+ " ");
+ $templateCache.put("modules/forms/admin/views/adminTabs/create.html",
+ " ");
+ $templateCache.put("modules/forms/admin/views/directiveViews/form/configure-form.client.view.html",
+ "");
+ $templateCache.put("modules/forms/admin/views/directiveViews/form/edit-form.client.view.html",
+ "");
+ $templateCache.put("modules/forms/admin/views/directiveViews/form/edit-submissions-form.client.view.html",
+ "{{ 'TOTAL_VIEWS' | translate }}
{{ 'RESPONSES' | translate }}
{{ 'COMPLETION_RATE' | translate }}
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{myform.analytics.visitors.length}}
{{myform.analytics.submissions}}
{{myform.analytics.conversionRate | number:0}}%
{{ AverageTimeElapsed | secondsToDateTime | date:'mm:ss'}}
{{ 'DESKTOP_AND_LAPTOP' | translate }}
{{ 'TABLETS' | translate }}
{{ 'PHONES' | translate }}
{{ 'OTHER' | translate }}
{{ 'UNIQUE_VISITS' | translate }}
{{DeviceStatistics.desktop.visits}}
{{ 'UNIQUE_VISITS' | translate }}
{{DeviceStatistics.tablet.visits}}
{{ 'UNIQUE_VISITS' | translate }}
{{DeviceStatistics.tablet.visits}}
{{ 'UNIQUE_VISITS' | translate }}
{{DeviceStatistics.other.visits}}
{{ 'RESPONSES' | translate }}
{{DeviceStatistics.desktop.responses}}
{{ 'RESPONSES' | translate }}
{{DeviceStatistics.tablet.responses}}
{{ 'RESPONSES' | translate }}
{{DeviceStatistics.phone.responses}}
{{ 'RESPONSES' | translate }}
{{DeviceStatistics.other.responses}}
{{ 'COMPLETION_RATE' | translate }}
{{DeviceStatistics.desktop.completion}}%
{{ 'COMPLETION_RATE' | translate }}
{{DeviceStatistics.tablet.completion}}%
{{ 'COMPLETION_RATE' | translate }}
{{DeviceStatistics.phone.completion}}%
{{ 'COMPLETION_RATE' | translate }}
{{DeviceStatistics.other.completion}}%
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{DeviceStatistics.desktop.average_time | secondsToDateTime | date:'mm:ss'}}
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{DeviceStatistics.tablet.average_time | secondsToDateTime | date:'mm:ss'}}
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{DeviceStatistics.phone.average_time | secondsToDateTime | date:'mm:ss'}}
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{DeviceStatistics.other.average_time | secondsToDateTime | date:'mm:ss'}}
{{ 'FIELD_TITLE' | translate }}
{{ 'FIELD_VIEWS' | translate }}
{{ 'FIELD_RESPONSES' | translate }}
{{ 'FIELD_DROPOFF' | translate }}
{{fieldStats.field.title}}
{{fieldStats.totalViews}}
{{fieldStats.responses}}
{{fieldStats.continueRate}}%
{{ 'DELETE_SELECTED' | translate }}
{{ 'EXPORT_TO_EXCEL' | translate }}
{{ 'EXPORT_TO_CSV' | translate }}
{{ 'EXPORT_TO_JSON' | translate }}
");
+ $templateCache.put("modules/users/views/authentication/access-denied.client.view.html",
+ "{{ 'ACCESS_DENIED_TEXT' | translate }} ");
+ $templateCache.put("modules/users/views/authentication/signin.client.view.html",
+ "");
+ $templateCache.put("modules/users/views/authentication/signup-success.client.view.html",
+ "{{ 'SUCCESS_HEADER' | translate }} {{ 'SUCCESS_TEXT' | translate }} {{ 'NOT_ACTIVATED_YET' | translate }} {{ 'BEFORE_YOU_CONTINUE' | translate }} team@tellform.com
");
+ $templateCache.put("modules/users/views/authentication/signup.client.view.html",
+ "");
+ $templateCache.put("modules/users/views/password/forgot-password.client.view.html",
+ "");
+ $templateCache.put("modules/users/views/password/reset-password-invalid.client.view.html",
+ "{{ 'PASSWORD_RESET_INVALID' | translate }} ");
+ $templateCache.put("modules/users/views/password/reset-password-success.client.view.html",
+ "{{ 'PASSWORD_RESET_SUCCESS' | translate }} ");
+ $templateCache.put("modules/users/views/password/reset-password.client.view.html",
+ "{{ 'RESET_PASSWORD' | translate }} ");
+ $templateCache.put("modules/users/views/settings/change-password.client.view.html",
+ "{{ 'CHANGE_PASSWORD' | translate }} ");
+ $templateCache.put("modules/users/views/settings/edit-profile.client.view.html",
+ "{{ 'EDIT_PROFILE' | translate }} ");
+ $templateCache.put("modules/users/views/settings/social-accounts.client.view.html",
+ "{{ 'CONNECTED_SOCIAL_ACCOUNTS' | translate }}: {{ 'CONNECT_OTHER_SOCIAL_ACCOUNTS' | translate }} ");
+ $templateCache.put("modules/users/views/verify/resend-verify-email.client.view.html",
+ "{{ 'VERIFICATION_EMAIL_SENT' | translate }} {{ 'VERIFICATION_EMAIL_SENT_TO' | translate }} {{username}}. {{ 'NOT_ACTIVATED_YET' | translate }} {{ 'CHECK_YOUR_EMAIL' | translate }} polydaic@gmail.com
");
+ $templateCache.put("modules/users/views/verify/verify-account.client.view.html",
+ "{{ 'VERIFY_SUCCESS' | translate }} {{ 'VERIFY_ERROR' | translate }} ");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/entryPage/startPage.html",
+ "
{{pageData.introTitle}} {{pageData.introParagraph}}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/date.html",
+ "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/dropdown.html",
+ " 0\">
{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/hidden.html",
+ " ");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/legal.html",
+ "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/radio.html",
+ " 0\">
{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/rating.html",
+ "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/statement.html",
+ "
{{field.title}} {{field.description}}
{{field.description}}
{{ 'CONTINUE' | translate }}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/textarea.html",
+ "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{ 'NEWLINE' | translate }} {{field.description}}
{{ 'ADD_NEW_LINE_INSTR' | translate }}
{{ 'OK' | translate }} {{ 'ENTER' | translate }}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/textfield.html",
+ "{{index+1}} {{field.title}} ({{ 'OPTIONAL' | translate }}) {{field.description}}
{{ 'ERROR' | translate }}: {{ 'ERROR_EMAIL_INVALID' | translate }} {{ 'ERROR_NOT_A_NUMBER' | translate }} {{ 'ERROR_URL_INVALID' | translate }}
{{ 'OK' | translate }} {{ 'ENTER' | translate }}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/field/yes_no.html",
+ "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ $templateCache.put("form_modules/forms/base/views/directiveViews/form/submit-form.client.view.html",
+ "");
+ $templateCache.put("form_modules/forms/base/views/form-not-found.client.view.html",
+ "");
+ $templateCache.put("form_modules/forms/base/views/form-unauthorized.client.view.html",
+ "");
+ $templateCache.put("form_modules/forms/base/views/submit-form.client.view.html",
+ "");
+}]);
+
'use strict';
// Use Application configuration module to register a new module
@@ -684,14 +1278,17 @@ angular.module('users').config(['$stateProvider',
'use strict';
-angular.module('users').controller('AuthenticationController', ['$scope', '$location', '$state', '$rootScope', 'User', 'Auth',
- function($scope, $location, $state, $rootScope, User, Auth) {
+angular.module('users').controller('AuthenticationController', ['$scope', '$location', '$state', '$rootScope', 'User', 'Auth', '$translate', '$window',
+ function($scope, $location, $state, $rootScope, User, Auth, $translate, $window) {
+ $translate.use($window.locale);
$scope = $rootScope;
$scope.credentials = {};
$scope.error = '';
+ $scope.forms = [];
$scope.signin = function() {
+ console.log($scope.forms);
User.login($scope.credentials).then(
function(response) {
Auth.login(response);
@@ -740,8 +1337,9 @@ angular.module('users').controller('AuthenticationController', ['$scope', '$loca
'use strict';
-angular.module('users').controller('PasswordController', ['$scope', '$stateParams', '$state', 'User',
- function($scope, $stateParams, $state, User) {
+angular.module('users').controller('PasswordController', ['$scope', '$stateParams', '$state', 'User', '$translate', '$window',
+ function($scope, $stateParams, $state, User, $translate, $window) {
+ $translate.use($window.locale);
$scope.error = '';
@@ -750,10 +1348,12 @@ angular.module('users').controller('PasswordController', ['$scope', '$stateParam
User.askForPasswordReset($scope.credentials).then(
function(response){
$scope.success = response.message;
+ $scope.error = null;
$scope.credentials = null;
},
function(error){
$scope.error = error;
+ $scope.success = null;
$scope.credentials = null;
}
);
@@ -764,8 +1364,10 @@ angular.module('users').controller('PasswordController', ['$scope', '$stateParam
$scope.success = $scope.error = null;
User.resetPassword($scope.passwordDetails, $stateParams.token).then(
function(response){
+ console.log(response.message);
// If successful show success message and clear form
$scope.success = response.message;
+ $scope.error = null;
$scope.passwordDetails = null;
// And redirect to the index page
@@ -773,6 +1375,7 @@ angular.module('users').controller('PasswordController', ['$scope', '$stateParam
},
function(error){
$scope.error = error.message || error;
+ $scope.success = null;
$scope.passwordDetails = null;
}
);
@@ -815,8 +1418,10 @@ angular.module('users').controller('SettingsController', ['$scope', '$rootScope'
}).success(function(response) {
// If successful show success message and clear form
$scope.success = true;
+ $scope.error = null;
$scope.user = response;
}).error(function(response) {
+ $scope.success = null;
$scope.error = response.message;
});
};
@@ -829,8 +1434,10 @@ angular.module('users').controller('SettingsController', ['$scope', '$rootScope'
user.$update(function(response) {
$scope.success = true;
+ $scope.error = null;
$scope.user = response;
}, function(response) {
+ $scope.success = null;
$scope.error = response.data.message;
});
} else {
@@ -845,8 +1452,10 @@ angular.module('users').controller('SettingsController', ['$scope', '$rootScope'
$http.post('/users/password', $scope.passwordDetails).success(function(response) {
// If successful show success message and clear form
$scope.success = true;
+ $scope.error = null;
$scope.passwordDetails = null;
}).error(function(response) {
+ $scope.success = null;
$scope.error = response.message;
});
};
@@ -856,8 +1465,9 @@ angular.module('users').controller('SettingsController', ['$scope', '$rootScope'
'use strict';
-angular.module('users').controller('VerifyController', ['$scope', '$state', '$rootScope', 'User', 'Auth', '$stateParams',
- function($scope, $state, $rootScope, User, Auth, $stateParams) {
+angular.module('users').controller('VerifyController', ['$scope', '$state', '$rootScope', 'User', 'Auth', '$stateParams', '$translate', '$window',
+ function($scope, $state, $rootScope, User, Auth, $stateParams, $translate, $window) {
+ $translate.use($window.locale);
$scope.isResetSent = false;
$scope.credentials = {};
@@ -868,11 +1478,13 @@ angular.module('users').controller('VerifyController', ['$scope', '$state', '$ro
User.resendVerifyEmail($scope.credentials.email).then(
function(response){
$scope.success = response.message;
+ $scope.error = null;
$scope.credentials = null;
$scope.isResetSent = true;
},
function(error){
$scope.error = error;
+ $scope.success = null;
$scope.credentials.email = null;
$scope.isResetSent = false;
}
@@ -886,11 +1498,13 @@ angular.module('users').controller('VerifyController', ['$scope', '$state', '$ro
User.validateVerifyToken($stateParams.token).then(
function(response){
$scope.success = response.message;
+ $scope.error = null;
$scope.isResetSent = true;
$scope.credentials.email = null;
},
function(error){
$scope.isResetSent = false;
+ $scope.success = null;
$scope.error = error;
$scope.credentials.email = null;
}
@@ -1137,9 +1751,9 @@ angular.module('core').config(['$translateProvider', function ($translateProvide
SIGNIN_TAB: 'Sign In',
SIGNOUT_TAB: 'Signout',
EDIT_PROFILE: 'Edit Profile',
- MY_FORMS: 'My Forms',
MY_SETTINGS: 'My Settings',
- CHANGE_PASSWORD: 'Change Password'
+ CHANGE_PASSWORD: 'Change Password',
+ TOGGLE_NAVIGATION: 'Toggle navigation'
});
$translateProvider.preferredLanguage('en')
@@ -1158,9 +1772,41 @@ angular.module('core').config(['$translateProvider', function ($translateProvide
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'
+ CHANGE_PASSWORD: 'Changer mon Mot de Pass',
+ TOGGLE_NAVIGATION: 'Basculer la navigation',
+ });
+}]);
+
+'use strict';
+
+angular.module('core').config(['$translateProvider', function ($translateProvider) {
+
+ $translateProvider.translations('de', {
+ MENU: 'MENÜ',
+ SIGNUP_TAB: 'Anmelden',
+ SIGNIN_TAB: 'Anmeldung',
+ SIGNOUT_TAB: 'Abmelden',
+ EDIT_PROFILE: 'Profil bearbeiten',
+ MY_SETTINGS: 'Meine Einstellungen',
+ CHANGE_PASSWORD: 'Passwort ändern',
+ TOGGLE_NAVIGATION: 'Navigation umschalten'
+ });
+}]);
+
+'use strict';
+
+angular.module('core').config(['$translateProvider', function ($translateProvider) {
+
+ $translateProvider.translations('it', {
+ MENU: 'MENÜ',
+ SIGNUP_TAB: 'Vi Phrasal',
+ SIGNIN_TAB: 'Accedi',
+ SIGNOUT_TAB: 'Esci',
+ EDIT_PROFILE: 'Modifica Profilo',
+ MY_SETTINGS: 'Mie Impostazioni',
+ CHANGE_PASSWORD: 'Cambia la password',
+ TOGGLE_NAVIGATION: 'Attiva la navigazione'
});
}]);
@@ -1174,9 +1820,9 @@ angular.module('core').config(['$translateProvider', function ($translateProvide
SIGNIN_TAB: 'Entrar',
SIGNOUT_TAB: 'Salir',
EDIT_PROFILE: 'Editar Perfil',
- MY_FORMS: 'Mis formularios',
MY_SETTINGS: 'Mis configuraciones',
- CHANGE_PASSWORD: 'Cambiar contraseña'
+ CHANGE_PASSWORD: 'Cambiar contraseña',
+ TOGGLE_NAVIGATION: 'Navegación de palanca'
});
}]);
@@ -2242,16 +2888,17 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
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',
+ PASSWORD_RESET_INVALID: 'Password reset link is invalid',
+ PASSWORD_RESET_SUCCESS: 'Password successfully reset',
+ PASSWORD_CHANGE_SUCCESS: 'Password successfully changed',
RESET_PASSWORD: 'Reset your password',
CHANGE_PASSWORD: 'Change your password',
CONTINUE_TO_LOGIN: 'Continue to login page',
VERIFY_SUCCESS: 'Account successfully activated',
- VERIFY_ERROR: 'Verification link is invalid or has expired'
+ VERIFY_ERROR: 'Verification link is invalid or has expired',
+ ERROR: 'Error'
});
$translateProvider.preferredLanguage('en')
@@ -2300,20 +2947,163 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
SUBMIT_BTN: 'Enregistrer',
ASK_FOR_NEW_PASSWORD: 'Demander un nouveau mot de pass ',
- PASSWORD_RESET_INVALID: 'Le nouveau mot de passe est invalid',
+ PASSWORD_RESET_INVALID: 'Ce lien de réinitialisation de mot de passe a déjà expiré',
PASSWORD_RESET_SUCCESS: 'Mot de passe réinitialisé avec succès',
PASSWORD_CHANGE_SUCCESS: 'Mot de passe enregistré avec succès',
CONTINUE_TO_LOGIN: 'Allez à la page de connexion',
VERIFY_SUCCESS: 'Votre compte est activé !',
- VERIFY_ERROR: 'Le lien de vérification est invalide ou à expiré'
+ VERIFY_ERROR: 'Le lien de vérification est invalide ou à expiré',
+ ERROR: 'Erreur'
});
}]);
'use strict';
+angular.module('users').config(['$translateProvider', function ($translateProvider) {
+
+ $translateProvider.translations('de', {
+ ACCESS_DENIED_TEXT: 'Sie müssen eingeloggt sein, um auf diese Seite zugreifen zu können',
+ USERNAME_OR_EMAIL_LABEL: 'Benutzername oder E-Mail',
+ USERNAME_LABEL: 'Benutzername',
+ PASSWORD_LABEL: 'Passwort',
+ CURRENT_PASSWORD_LABEL: 'Aktuelles Passwort',
+ NEW_PASSWORD_LABEL: 'Neues Passwort',
+ VERIFY_PASSWORD_LABEL: 'Passwort bestätigen',
+ UPDATE_PASSWORD_LABEL: 'Passwort aktualisieren',
+ FIRST_NAME_LABEL: 'Vorname',
+ LAST_NAME_LABEL: 'Nachname',
+ LANGUAGE_LABEL: 'Sprache',
+ EMAIL_LABEL: 'Email',
+
+ SIGNUP_ACCOUNT_LINK: 'Haben Sie kein Konto? Hier registrieren',
+ SIGN_IN_ACCOUNT_LINK: 'Haben Sie bereits ein Konto? Hier anmelden',
+ SIGNUP_HEADER_TEXT: 'Registrieren',
+ SIGNIN_HEADER_TEXT: 'Anmelden',
+
+ SIGNUP_ERROR_TEXT: 'Konnte die Registrierung aufgrund von Fehlern nicht abschließen',
+ ENTER_ACCOUNT_EMAIL: 'Geben Sie Ihre Konto-E-Mail ein.',
+ RESEND_VERIFICATION_EMAIL: 'Bestätigungs-E-Mail erneut senden',
+ SAVE_CHANGES: 'Änderungen speichern',
+ CANCEL_BTN: 'Abbrechen',
+
+ EDIT_PROFILE: 'Bearbeiten Sie Ihr Profil',
+ UPDATE_PROFILE_BTN: 'Profil aktualisieren',
+ PROFILE_SAVE_SUCCESS: 'Profil wurde erfolgreich gespeichert',
+ PROFILE_SAVE_ERROR: 'Könnte Ihr Profil nicht speichern.',
+ CONNECTED_SOCIAL_ACCOUNTS: 'Verbundene Sozialkonten',
+ CONNECT_OTHER_SOCIAL_ACCOUNTS: 'Andere soziale Konten verbinden',
+
+ FORGOT_PASSWORD_LINK: 'Passwort vergessen?',
+ REVERIFY_ACCOUNT_LINK: 'Bestätige deine Bestätigungs-E-Mail erneut',
+
+ SIGNIN_BTN: "Anmelden",
+ SIGNUP_BTN: 'Registrieren',
+ SAVE_PASSWORD_BTN: 'Passwort speichern',
+
+ SUCCESS_HEADER: 'Anmeldung erfolgreich',
+ SUCCESS_TEXT: 'Sie haben ein Konto erfolgreich bei TellForm registriert.',
+ VERIFICATION_EMAIL_SENT: 'Bestätigungs-E-Mail wurde gesendet',
+ VERIFICATION_EMAIL_SENT_TO: 'Es wurde eine Bestätigungs-E-Mail gesendet.',
+ NOT_ACTIVATED_YET: 'Dein Account ist noch nicht aktiviert',
+ BEFORE_YOU_CONTINUE: 'Bevor Sie fortfahren, überprüfen Sie bitte Ihre E-Mail-Adresse auf Überprüfung. Wenn Sie nicht innerhalb von 24 Stunden erhalten Sie uns eine Zeile bei ',
+ CHECK_YOUR_EMAIL: 'Überprüfe deine E-Mail und klicke auf den Aktivierungslink, um deinen Account zu aktivieren. Wenn Sie irgendwelche Fragen haben, lassen Sie uns eine Zeile bei ',
+ WEITER: 'Weiter',
+
+ PASSWORD_RESTORE_HEADER: 'Wiederherstellen Ihres Passworts',
+ ENTER_YOUR_EMAIL: 'Geben Sie Ihre E-Mail-Adresse ein.',
+ SUBMIT_BTN: 'Senden',
+
+ ASK_FOR_NEW_PASSWORD: 'Neues Passwort zurücksetzen',
+ PASSWORD_RESET_INVALID: 'Dieser Link zum Zurücksetzen des Passworts ist bereits abgelaufen',
+ PASSWORD_RESET_SUCCESS: 'Passport erfolgreich zurückgesetzt',
+ PASSWORD_CHANGE_SUCCESS: 'Pass wurde erfolgreich geändert',
+ RESET_PASSWORD: 'Passwort zurücksetzen',
+ CHANGE_PASSWORD: 'Ändern Sie Ihr Passwort',
+
+ CONTINUE_TO_LOGIN: 'Weiter zur Anmeldeseite',
+
+ VERIFY_SUCCESS: 'Konto erfolgreich aktiviert',
+ VERIFY_ERROR: 'Überprüfungslink ist ungültig oder abgelaufen',
+ ERROR: 'Fehler'
+ });
+}]);
+
+'use strict';
+
+angular.module('users').config(['$translateProvider', function ($translateProvider) {
+
+ $translateProvider.translations('it', {
+ ACCESS_DENIED_TEXT: 'Devi aver effettuato l\'accesso per accedere a questa pagina',
+ USERNAME_OR_EMAIL_LABEL: 'Nome utente o posta elettronica',
+ USERNAME_LABEL: 'Nome utente',
+ PASSWORD_LABEL: 'Password',
+ CURRENT_PASSWORD_LABEL: 'Current Password',
+ NEW_PASSWORD_LABEL: 'Nuova password',
+ VERIFY_PASSWORD_LABEL: 'Verifica password',
+ UPDATE_PASSWORD_LABEL: 'Aggiorna password',
+ FIRST_NAME_LABEL: 'Nome',
+ LAST_NAME_LABEL: 'Cognome',
+ LANGUAGE_LABEL: 'Lingua',
+ EMAIL_LABEL: 'Email',
+
+ SIGNUP_ACCOUNT_LINK: 'Non hai un account? Iscriviti qui ',
+ SIGN_IN_ACCOUNT_LINK: 'Hai già un account? Accedi qui ',
+ SIGNUP_HEADER_TEXT: 'Iscriviti',
+ SIGNIN_HEADER_TEXT: 'Accedi',
+
+ SIGNUP_ERROR_TEXT: 'Impossibile completare la registrazione a causa di errori',
+ ENTER_ACCOUNT_EMAIL: "Inserisci l'email del tuo account.",
+ RESEND_VERIFICATION_EMAIL: 'Ripeti l\'email di verifica',
+ SAVE_CHANGES: 'Salva modifiche',
+ CANCEL_BTN: 'Annulla',
+
+ EDIT_PROFILE: 'Modifica il tuo profilo',
+ UPDATE_PROFILE_BTN: 'Aggiorna profilo',
+ PROFILE_SAVE_SUCCESS: 'Profilo salvato con successo',
+ PROFILE_SAVE_ERROR: 'Impossibile salvare il tuo profilo.',
+ CONNECTED_SOCIAL_ACCOUNTS: 'Conti sociali connessi',
+ CONNECT_OTHER_SOCIAL_ACCOUNTS: 'Connetti altri account sociali',
+
+ FORGOT_PASSWORD_LINK: 'Hai dimenticato la password?',
+ REVERIFY_ACCOUNT_LINK: 'Ripeti la tua email di verifica',
+
+ SIGNIN_BTN: 'Accedi',
+ SIGNUP_BTN: 'Iscriviti',
+ SAVE_PASSWORD_BTN: 'Salva password',
+
+ SUCCESS_HEADER: 'Registra il successo',
+ SUCCESS_TEXT: 'Hai registrato un account con TellForm.',
+ VERIFICATION_EMAIL_SENT: 'L\'email di verifica è stata inviata',
+ VERIFICATION_EMAIL_SENT_TO: 'E\' stata inviata un\'email di verifica a ',
+ NOT_ACTIVATED_YET: 'Ma il tuo account non è ancora attivato',
+ BEFORE_YOU_CONTINUE: 'Prima di continuare, assicurati di controllare la tua email per la nostra verifica. Se non lo ricevi entro 24 ore ci cali una linea a ',
+ CHECK_YOUR_EMAIL: 'Controlla la tua email e fai clic sul link di attivazione per attivare il tuo account. Se hai domande, fai una linea a ',
+ CONTINUA: 'Continua',
+
+ PASSWORD_RESTORE_HEADER: 'Ripristina password',
+ ENTER_YOUR_EMAIL: 'Inserisci l\'email del tuo account',
+ SUBMIT_BTN: 'Invia',
+
+ ASK_FOR_NEW_PASSWORD: 'Richiedi nuova password reimpostata',
+ PASSWORD_RESET_INVALID: 'Questo collegamento per la reimpostazione della password è già scaduto',
+ PASSWORD_RESET_SUCCESS: 'Passaporto resettato con successo',
+ PASSWORD_CHANGE_SUCCESS: 'Passaporto modificato con successo',
+ RESET_PASSWORD: 'Ripristina la tua password',
+ CHANGE_PASSWORD: 'Modifica password',
+
+ CONTINUE_TO_LOGIN: 'Continua alla pagina di login',
+
+ VERIFY_SUCCESS: 'Account attivato correttamente',
+ VERIFY_ERROR: 'Il collegamento di verifica non è valido o è scaduto',
+ ERROR: 'Errore'
+ });
+}]);
+
+'use strict';
+
angular.module('users').config(['$translateProvider', function ($translateProvider) {
$translateProvider.translations('es', {
@@ -2369,7 +3159,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
SUBMIT_BTN: 'Enviar',
ASK_FOR_NEW_PASSWORD: 'Pedir reseteo de contraseña',
- PASSWORD_RESET_INVALID: 'El reseteo de la contraseña es inválido',
+ PASSWORD_RESET_INVALID: 'Este enlace de restablecimiento de contraseña ya ha caducado',
PASSWORD_RESET_SUCCESS: 'Contraseña exitosamente reseteada',
PASSWORD_CHANGE_SUCCESS: 'Contraseña exitosamente cambiada',
RESET_PASSWORD: 'Resetear contraseña',
@@ -2378,7 +3168,8 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
CONTINUE_TO_LOGIN: 'Ir a la página de ingreso',
VERIFY_SUCCESS: 'Cuenta activada exitosamente',
- VERIFY_ERROR: 'El link de verificación es inválido o inexistente'
+ VERIFY_ERROR: 'El link de verificación es inválido o inexistente',
+ ERROR: 'Error'
});
}]);
@@ -2392,12 +3183,12 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
ADVANCED_SETTINGS: 'Advanced Settings',
FORM_NAME: 'Form Name',
FORM_STATUS: 'Form Status',
- PUBLIC: 'Public',
- PRIVATE: 'Private',
+ PUBLIC_1: 'Public',
+ PRIVATE_1: 'Private',
GA_TRACKING_CODE: 'Google Analytics Tracking Code',
DISPLAY_FOOTER: 'Display Form Footer?',
SAVE_CHANGES: 'Save Changes',
- CANCEL: 'Cancel',
+ CANCEL_1: 'Cancel',
DISPLAY_START_PAGE: 'Display Start Page?',
DISPLAY_END_PAGE: 'Display Custom End Page?',
@@ -2406,15 +3197,15 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
CREATE_FORM: 'Create form',
CREATED_ON: 'Created on',
MY_FORMS: 'My forms',
- NAME: 'Name',
+ NAME_1: 'Name',
LANGUAGE: 'Language',
FORM_PAUSED: 'Form paused',
//Edit Field Modal
EDIT_FIELD: 'Edit this Field',
SAVE_FIELD: 'Save',
- ON: 'ON',
- OFF: 'OFF',
+ ON_1: 'ON',
+ OFF_1: 'OFF',
REQUIRED_FIELD: 'Required',
LOGIC_JUMP: 'Logic Jump',
SHOW_BUTTONS: 'Additional Buttons',
@@ -2429,21 +3220,21 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
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',
- COPY: 'Copy',
+ DELETE_1: 'Delete',
+ FORM_1: 'Form',
+ VIEW_1: 'View',
+ LIVE_1: 'Live',
+ PREVIEW_1: 'Preview',
+ COPY_1: 'Copy',
COPY_AND_PASTE: 'Copy and Paste this to add your TellForm to your website',
CHANGE_WIDTH_AND_HEIGHT: 'Change the width and height values to suit you best',
POWERED_BY: 'Powered by',
TELLFORM_URL: 'Your TellForm is permanently at this URL',
//Edit Form View
- DISABLED: 'Disabled',
- YES: 'YES',
- NO: 'NO',
+ DISABLED_1: 'Disabled',
+ YES_1: 'YES',
+ NO_1: 'NO',
ADD_LOGIC_JUMP: 'Add Logic Jump',
ADD_FIELD_LG: 'Click to Add New Field',
ADD_FIELD_MD: 'Add New Field',
@@ -2455,7 +3246,7 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
INTRO_TITLE: 'Title',
INTRO_PARAGRAPH: 'Paragraph',
INTRO_BTN: 'Start Button',
- TITLE: 'Title',
+ TITLE_1: 'Title',
PARAGRAPH: 'Paragraph',
BTN_TEXT: 'Go Back Button',
BUTTONS: 'Buttons',
@@ -2465,7 +3256,7 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
PREVIEW_FIELD: 'Preview Question',
QUESTION_TITLE: 'Title',
QUESTION_DESCRIPTION: 'Description',
- OPTIONS: 'Options',
+ OPTIONS_1: 'Options',
ADD_OPTION: 'Add Option',
NUM_OF_STEPS: 'Number of Steps',
CLICK_FIELDS_FOOTER: 'Click on fields to add them here',
@@ -2477,7 +3268,7 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
IS_GREATER_OR_EQUAL_THAN: 'is greater or equal than',
IS_SMALLER_THAN: 'is_smaller_than',
IS_SMALLER_OR_EQUAL_THAN: 'is smaller or equal than',
- CONTAINS: 'contains',
+ CONTAINS_1: 'contains',
DOES_NOT_CONTAINS: 'does not contain',
ENDS_WITH: 'ends with',
DOES_NOT_END_WITH: 'does not end with',
@@ -2487,14 +3278,14 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
//Edit Submissions View
TOTAL_VIEWS: 'total unique visits',
- RESPONSES: 'responses',
+ RESPONSES_1: 'responses',
COMPLETION_RATE: 'completion rate',
AVERAGE_TIME_TO_COMPLETE: 'avg. completion time',
DESKTOP_AND_LAPTOP: 'Desktops',
- TABLETS: 'Tablets',
- PHONES: 'Phones',
- OTHER: 'Other',
+ TABLETS_1: 'Tablets',
+ PHONES_1: 'Phones',
+ OTHER_1: 'Other',
UNIQUE_VISITS: 'Unique Visits',
FIELD_TITLE: 'Field Title',
@@ -2507,11 +3298,10 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
EXPORT_TO_JSON: 'Export to JSON',
PERCENTAGE_COMPLETE: 'Percentage Complete',
TIME_ELAPSED: 'Time Elapsed',
- DEVICE: 'Device',
- LOCATION: 'Location',
+ DEVICE_1: 'Device',
+ LOCATION_1: 'Location',
IP_ADDRESS: 'IP Address',
DATE_SUBMITTED: 'Date Submitted',
- GENERATED_PDF: 'Generated PDF',
//Design View
BACKGROUND_COLOR: 'Background Color',
@@ -2534,42 +3324,42 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
//Field Types
SHORT_TEXT: 'Short Text',
- EMAIL: 'Email',
+ EMAIL_1: 'Email',
MULTIPLE_CHOICE: 'Multiple Choice',
- DROPDOWN: 'Dropdown',
- DATE: 'Date',
+ DROPDOWN_1: 'Dropdown',
+ DATE_1: 'Date',
PARAGRAPH_T: 'Paragraph',
YES_NO: 'Yes/No',
- LEGAL: 'Legal',
- RATING: 'Rating',
- NUMBERS: 'Numbers',
- SIGNATURE: 'Signature',
+ LEGAL_1: 'Legal',
+ RATING_1: 'Rating',
+ NUMBERS_1: 'Numbers',
+ SIGNATURE_1: 'Signature',
FILE_UPLOAD: 'File upload',
OPTION_SCALE: 'Option Scale',
- PAYMENT: 'Payment',
- STATEMENT: 'Statement',
- LINK: 'Link',
+ PAYMENT_1: 'Payment',
+ STATEMENT_1: 'Statement',
+ LINK_1: 'Link',
//Form Preview
FORM_SUCCESS: 'Form entry successfully submitted!',
- REVIEW: 'Review',
+ REVIEW_1: 'Review',
BACK_TO_FORM: 'Go back to Form',
EDIT_FORM: 'Edit this TellForm',
- ADVANCEMENT: '{{done}} out of {{total}} answered',
+ ADVANCEMENT_1: '{{done}} out of {{total}} answered',
CONTINUE_FORM: 'Continue to Form',
- REQUIRED: 'required',
+ REQUIRED_1: 'required',
COMPLETING_NEEDED: '{{answers_not_completed}} answer(s) need completing',
- OPTIONAL: 'optional',
+ OPTIONAL_1: 'optional',
ERROR_EMAIL_INVALID: 'Please enter a valid email address',
ERROR_NOT_A_NUMBER: 'Please enter valid numbers only',
ERROR_URL_INVALID: 'Please a valid url',
- OK: 'OK',
- ENTER: 'press ENTER',
- NEWLINE: 'press SHIFT+ENTER to create a newline',
- CONTINUE: 'Continue',
+ OK_1: 'OK',
+ ENTER_1: 'press ENTER',
+ NEWLINE_1: 'press SHIFT+ENTER to create a newline',
+ CONTINUE_1: 'Continue',
LEGAL_ACCEPT: 'I accept',
LEGAL_NO_ACCEPT: 'I don’t accept',
- SUBMIT: 'Submit',
+ SUBMIT_1: 'Submit',
UPLOAD_FILE: 'Upload your File'
});
}]);
@@ -2578,35 +3368,380 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
- $translateProvider.translations('french', {
- FORM_SUCCESS: 'Votre formulaire a été enregistré!',
- REVIEW: 'Incomplet',
- BACK_TO_FORM: 'Retourner au formulaire',
- EDIT_FORM: 'Éditer le Tellform',
- CREATE_FORM: 'Créer un TellForm',
- ADVANCEMENT: '{{done}} complétés sur {{total}}',
- CONTINUE_FORM: 'Aller au formulaire',
- REQUIRED: 'obligatoire',
- COMPLETING_NEEDED: '{{answers_not_completed}} réponse(s) doive(nt) être complétée(s)',
- OPTIONAL: 'facultatif',
- ERROR_EMAIL_INVALID: 'Merci de rentrer une adresse mail valide',
- ERROR_NOT_A_NUMBER: 'Merce de ne rentrer que des nombres',
- ERROR_URL_INVALID: 'Merci de rentrer une url valide',
- OK: 'OK',
- ENTER: 'presser ENTRÉE',
- YES: 'Oui',
- NO: 'Non',
- NEWLINE: 'presser SHIFT+ENTER pour créer une nouvelle ligne',
- CONTINUE: 'Continuer',
- LEGAL_ACCEPT: 'J’accepte',
- LEGAL_NO_ACCEPT: 'Je n’accepte pas',
- DELETE: 'Supprimer',
- CANCEL: 'Réinitialiser',
- SUBMIT: 'Enregistrer',
- UPLOAD_FILE: 'Envoyer un fichier',
- Y: 'O',
- N: 'N',
- });
+ $translateProvider.translations('fr', {
+ // Configurer la vue de l'onglet Formulaire
+ ADVANCED_SETTINGS: 'Paramètres avancés',
+ FORM_NAME: "Nom du formulaire",
+ FORM_STATUS: 'Statut du formulaire',
+ PUBLIC_1: 'Public',
+ PRIVATE_1: "Privé",
+ GA_TRACKING_CODE: "Code de suivi Google Analytics",
+ DISPLAY_FOOTER: "Afficher le pied de formulaire?",
+ SAVE_CHANGES: 'Enregistrer les modifications',
+ CANCEL_1: 'Annuler',
+ DISPLAY_START_PAGE: "Afficher la page de démarrage?",
+ DISPLAY_END_PAGE: "Afficher la page de fin personnalisée?",
+
+ // Afficher les formulaires
+ CREATE_A_NEW_FORM: "Créer un nouveau formulaire",
+ CREATE_FORM: "Créer un formulaire",
+ CREATED_ON: 'Créé le',
+ MY_FORMS: 'Mes formes',
+ NAME_1: "Nom",
+ LANGUE: 'Langue',
+ FORM_PAUSED: 'Formulaire en pause',
+
+ // Modifier le modal de champ
+ EDIT_FIELD: "Modifier ce champ",
+ SAVE_FIELD: 'Enregistrer',
+ ON_1: 'ON',
+ OFF_1: "OFF",
+ REQUIRED_FIELD: "Obligatoire",
+ LOGIC_JUMP: 'Saut logique',
+ SHOW_BUTTONS: 'Boutons supplémentaires',
+ SAVE_START_PAGE: "Enregistrer",
+
+ // Affichage du formulaire d'administration
+ ARE_YOU_SURE: 'Es-tu ABSOLUMENT sûr?',
+ READ_WARNING: "De mauvaises choses inattendues se produiront si vous ne lisez pas ceci!",
+ DELETE_WARNING1: 'Cette action NE PEUT PAS être annulée. Cela supprimera définitivement le "',
+ DELETE_WARNING2: '" forme et supprime toutes les soumissions de formulaire associées. ',
+ DELETE_CONFIRM: "Veuillez taper le nom du formulaire pour confirmer.",
+ I_UNDERSTAND: 'Je comprends les conséquences, efface ce formulaire.',
+ DELETE_FORM_SM: 'Supprimer',
+ DELETE_FORM_MD: "Supprimer le formulaire",
+ DELETE_1: "Supprimer",
+ FORM_1: 'Formulaire',
+ VIEW_1: "Afficher",
+ LIVE_1: "Live",
+ PREVIEW_1: 'Aperçu',
+ COPY_1: "Copier",
+ COPY_AND_PASTE: "Copiez et collez ceci pour ajouter votre TellForm à votre site Web",
+ CHANGE_WIDTH_AND_HEIGHT: "Changez les valeurs de largeur et de hauteur pour mieux vous convenir",
+ POWERED_BY: "Alimenté par",
+ TELLFORM_URL: "Votre TellForm est en permanence sur cette URL",
+
+ // Modifier la vue de formulaire
+ DISABLED_1: "Désactivé",
+ OUI_1: 'OUI',
+ NO_1: 'NON',
+ ADD_LOGIC_JUMP: 'Ajouter un saut de logique',
+ ADD_FIELD_LG: "Cliquez pour ajouter un nouveau champ",
+ ADD_FIELD_MD: "Ajouter un nouveau champ",
+ ADD_FIELD_SM: "Ajouter un champ",
+ EDIT_START_PAGE: "Modifier la page de démarrage",
+ EDIT_END_PAGE: "Modifier la page de fin",
+ WELCOME_SCREEN: 'Page de démarrage',
+ END_SCREEN: 'Fin de page',
+ INTRO_TITLE: "Titre",
+ INTRO_PARAGRAPH: 'Paragraphe',
+ INTRO_BTN: 'Bouton de démarrage',
+ TITLE_1: "Titre",
+ PARAGRAPHE: 'Paragraphe',
+ BTN_TEXT: "Bouton Retour",
+ BOUTONS: 'Boutons',
+ BUTTON_TEXT: "Texte",
+ BUTTON_LINK: "Lien",
+ ADD_BUTTON: 'Ajouter un bouton',
+ PREVIEW_FIELD: 'Question d\'aperçu',
+ QUESTION_TITLE: "Titre",
+ QUESTION_DESCRIPTION: 'Description',
+ OPTIONS_1: 'Options',
+ ADD_OPTION: 'Ajouter une option',
+ NUM_OF_STEPS: "Nombre d'étapes",
+ CLICK_FIELDS_FOOTER: 'Cliquez sur les champs pour les ajouter ici',
+ SHAPE: 'Forme',
+ IF_THIS_FIELD: "Si ce champ",
+ IS_EQUAL_TO: 'est égal à',
+ IS_NOT_EQUAL_TO: 'n\'est pas égal à',
+ IS_GREATER_THAN: 'est supérieur à',
+ IS_GREATER_OR_EQUAL_THAN: 'est supérieur ou égal à',
+ IS_SMALLER_THAN: 'is_smaller_than',
+ IS_SMALLER_OR_EQUAL_THAN: 'est plus petit ou égal à',
+ CONTAINS_1: 'contient',
+ DOES_NOT_CONTAINS: 'ne contient pas',
+ ENDS_WITH: "se termine par",
+ DOES_NOT_END_WITH: "ne finit pas avec",
+ STARTS_WITH: 'commence par',
+ DOES_NOT_START_WITH: "ne commence pas par",
+ THEN_JUMP_TO: 'alors saute à',
+
+ // Modifier la vue des soumissions
+ TOTAL_VIEWS: 'total des visites uniques',
+ RESPONSES_1: "réponses",
+ COMPLETION_RATE: "taux d'achèvement",
+ AVERAGE_TIME_TO_COMPLETE: 'moy. le temps d\'achèvement',
+
+ DESKTOP_AND_LAPTOP: 'Desktops',
+ TABLETS_1: 'Tablettes',
+ PHONES_1: 'Téléphones',
+ OTHER_1: 'Autre',
+ UNIQUE_VISITS: 'Visites uniques',
+
+ FIELD_TITLE: 'Titre du champ',
+ FIELD_VIEWS: 'Field Views',
+ FIELD_DROPOFF: "Achèvement du champ",
+ FIELD_RESPONSES: 'Réponses sur le terrain',
+ DELETE_SELECTED: 'Supprimer la sélection',
+ EXPORT_TO_EXCEL: 'Exporter vers Excel',
+ EXPORT_TO_CSV: 'Export to CSV',
+ EXPORT_TO_JSON: "Exporter vers JSON",
+ PERCENTAGE_COMPLETE: 'Pourcentage terminé',
+ TIME_ELAPSED: 'Temps écoulé',
+ DEVICE_1: "Device",
+ LOCATION_1: "Emplacement",
+ IP_ADDRESS: 'Adresse IP',
+ DATE_SUBMITTED: 'Date de soumission',
+
+ // Vue de conception
+ BACKGROUND_COLOR: "Couleur d'arrière-plan",
+ DESIGN_HEADER: "Changez l'apparence de votre formulaire",
+ QUESTION_TEXT_COLOR: "Couleur du texte de la question",
+ ANSWER_TEXT_COLOR: "Couleur du texte de la réponse",
+ BTN_BACKGROUND_COLOR: "Couleur d'arrière-plan du bouton",
+ BTN_TEXT_COLOR: "Couleur du texte du bouton",
+
+ // Vue de partage
+ EMBED_YOUR_FORM: "Intégrez votre formulaire",
+ SHARE_YOUR_FORM: "Partager votre formulaire",
+
+ // Onglets d'administration
+ CREATE_TAB: "Créer",
+ DESIGN_TAB: 'Design',
+ CONFIGURE_TAB: 'Configurer',
+ ANALYZE_TAB: "Analyser",
+ SHARE_TAB: "Partager",
+
+ // Types de champs
+ SHORT_TEXT: "Texte court",
+ EMAIL_1: "E-mail",
+ MULTIPLE_CHOICE: 'Choix multiple',
+ DROPDOWN_1: 'Dropdown',
+ DATE_1: 'Date',
+ PARAGRAPH_T: "Paragraphe",
+ OUI_NON: 'Oui / Non',
+ LEGAL_1: 'Légal',
+ RATING_1: "Évaluation",
+ NUMBERS_1: "Chiffres",
+ SIGNATURE_1: 'Signature',
+ FILE_UPLOAD: 'Téléchargement de fichier',
+ OPTION_SCALE: 'Option Scale',
+ PAYMENT_1: 'Paiement',
+ STATEMENT_1: 'Déclaration',
+ LINK_1: "Lien",
+
+ // Aperçu du formulaire
+ FORM_SUCCESS: 'Entrée de formulaire soumise avec succès!',
+ REVIEW_1: 'Review',
+ BACK_TO_FORM: "Revenir au formulaire",
+ EDIT_FORM: "Modifier ce TellForm",
+ ADVANCEMENT_1: '{{done}} sur {{total}} a répondu',
+ CONTINUE_FORM: "Continuer à se former",
+ REQUIRED_1: 'requis',
+ COMPLETING_NEEDED: '{{answers_not_completed}} réponse (s) doivent être complétées',
+ OPTIONAL_1: 'optionnel',
+ ERROR_EMAIL_INVALID: "Veuillez entrer une adresse email valide",
+ ERROR_NOT_A_NUMBER: "Veuillez entrer uniquement des numéros valides",
+ ERROR_URL_INVALID: "S'il vous plaît une adresse valide",
+ OK_1: 'OK',
+ ENTER_1: 'appuyez sur ENTRER',
+ NEWLINE_1: 'appuyez sur MAJ + ENTRÉE pour créer une nouvelle ligne',
+ CONTINUE_1: "Continuer",
+ LEGAL_ACCEPT: 'J\'accepte',
+ LEGAL_NO_ACCEPT: "Je n'accepte pas",
+ SUBMIT_1: "Soumettre",
+ UPLOAD_FILE: "Télécharger votre fichier"
+ });
+}]);
+
+'use strict';
+
+angular.module('forms').config(['$translateProvider', function ($translateProvider) {
+
+ $translateProvider.translations('de', {
+ // Konfigurieren der Formularregisterkarte
+ ADVANCED_SETTINGS: 'Erweiterte Einstellungen',
+ FORM_NAME: 'Formularname',
+ FORM_STATUS: 'Formularstatus',
+ PUBLIC_1: 'Öffentlich',
+ PRIVATE_1: 'Privat',
+ GA_TRACKING_CODE: 'Google Analytics Tracking-Code',
+ DISPLAY_FOOTER: 'Formularfußzeile anzeigen?',
+ SAVE_CHANGES: 'Änderungen speichern',
+ CANCEL_1: 'Abbrechen',
+ DISPLAY_START_PAGE: 'Startseite anzeigen?',
+ DISPLAY_END_PAGE: 'Benutzerdefinierte Endseite anzeigen?',
+
+ // Listenformularansicht
+ CREATE_A_NEW_FORM: 'Erstelle ein neues Formular',
+ CREATE_FORM: 'Formular erstellen',
+ CREATED_ON: 'Erstellt am',
+ MY_FORMS: 'Meine Formulare',
+ NAME_1: 'Name',
+ SPRACHE: 'Sprache',
+ FORM_PAUSED: 'Formular pausiert',
+
+ // Feld Modal bearbeiten
+ EDIT_FIELD: 'Dieses Feld bearbeiten',
+ SAVE_FIELD: 'Speichern',
+ ON_1: 'ON',
+ AUS_1: 'AUS',
+ REQUIRED_FIELD: 'Erforderlich',
+ LOGIC_JUMP: 'Logischer Sprung',
+ SHOW_BUTTONS: 'Zusätzliche Schaltflächen',
+ SAVE_START_PAGE: 'Speichern',
+
+ // Admin-Formularansicht
+ ARE_YOU_SURE: "Bist du ABSOLUT sicher?",
+ READ_WARNING: 'Unerwartete schlimme Dinge werden passieren, wenn Sie das nicht lesen!',
+ DELETE_WARNING1: 'Diese Aktion kann NICHT rückgängig gemacht werden. Dies wird dauerhaft die "',
+ DELETE_WARNING2: '"Formular und entferne alle verknüpften Formulareinreichungen.',
+ DELETE_CONFIRM: 'Bitte geben Sie den Namen des zu bestätigenden Formulars ein.',
+ I_UNDERSTAND: "Ich verstehe die Konsequenzen, lösche dieses Formular.",
+ DELETE_FORM_SM: 'Löschen',
+ DELETE_FORM_MD: 'Formular löschen',
+ DELETE_1: 'Löschen',
+ FORM_1: 'Formular',
+ VIEW_1: 'Ansicht',
+ LIVE_1: 'Live',
+ PREVIEW_1: 'Vorschau',
+ COPY_1: 'Kopieren',
+ COPY_AND_PASTE: 'Kopieren und einfügen, um Ihre TellForm auf Ihrer Website hinzuzufügen',
+ CHANGE_WIDTH_AND_HEIGHT: 'Ändern Sie die Werte für Breite und Höhe, um Ihnen am besten zu entsprechen',
+ POWERED_BY: 'Powered by',
+ TELLFORM_URL: "Ihr TellForm ist dauerhaft unter dieser URL",
+
+ // Formularansicht bearbeiten
+ DISABLED_1: 'Deaktiviert',
+ JA_1: 'JA',
+ NO_1: 'NEIN',
+ ADD_LOGIC_JUMP: 'Logic Jump hinzufügen',
+ ADD_FIELD_LG: 'Klicken Sie auf Neues Feld hinzufügen',
+ ADD_FIELD_MD: 'Neues Feld hinzufügen',
+ ADD_FIELD_SM: 'Feld hinzufügen',
+ EDIT_START_PAGE: 'Startseite bearbeiten',
+ EDIT_END_PAGE: 'Endseite bearbeiten',
+ WELCOME_SCREEN: 'Startseite',
+ END_SCREEN: 'Ende Seite',
+ INTRO_TITLE: 'Titel',
+ INTRO_PARAGRAPH: "Absatz",
+ INTRO_BTN: 'Start Button',
+ TITLE_1: "Titel",
+ PARAGRAPH: "Absatz",
+ BTN_TEXT: 'Zurück Button',
+ TASTEN: 'Knöpfe',
+ BUTTON_TEXT: 'Text',
+ BUTTON_LINK: 'Link',
+ ADD_BUTTON: 'Schaltfläche hinzufügen',
+ PREVIEW_FIELD: 'Vorschaufrage',
+ QUESTION_TITLE: 'Titel',
+ QUESTION_DESCRIPTION: 'Beschreibung',
+ OPTIONS_1: 'Optionen',
+ ADD_OPTION: 'Option hinzufügen',
+ NUM_OF_STEPS: 'Anzahl der Schritte',
+ CLICK_FIELDS_FOOTER: 'Klicken Sie auf Felder, um sie hier hinzuzufügen',
+ FORM: 'Form',
+ IF_THIS_FIELD: 'Wenn dieses Feld',
+ IS_EQUAL_TO: 'ist gleich',
+ IS_NOT_EQUAL_TO: 'ist nicht gleich',
+ IS_GREATER_THAN: 'ist größer als',
+ IS_GREATER_OR_EQUAL_THAN: 'ist größer oder gleich',
+ IS_SMALLER_THAN: 'is_smaller_than',
+ IS_SMALLER_OR_EQUAL_THAN: 'ist kleiner oder gleich',
+ CONTAINS_1: 'enthält',
+ DOES_NOT_CONTAINS: 'enthält nicht',
+ ENDS_WITH: 'endet mit',
+ DOES_NOT_END_WITH: 'endet nicht mit',
+ STARTS_WITH: 'beginnt mit',
+ DOES_NOT_START_WITH: 'beginnt nicht mit',
+ THEN_JUMP_TO: 'Springe dann zu',
+
+ // Bearbeiten der Einreichungsansicht
+ TOTAL_VIEWS: 'Gesamtzahl eindeutiger Besuche',
+ RESPONSES_1: 'Antworten',
+ COMPLETION_RATE: 'Abschlussrate',
+ AVERAGE_TIME_TO_COMPLETE: 'avg. Fertigstellungszeit',
+
+ DESKTOP_AND_LAPTOP: 'Desktops',
+ TABLETS_1: "Tabletten",
+ PHONES_1: 'Telefone',
+ OTHER_1: 'Andere',
+ UNIQUE_VISITS: 'Eindeutige Besuche',
+
+ FIELD_TITLE: 'Feldtitel',
+ FIELD_VIEWS: 'Feld Ansichten',
+ FIELD_DROPOFF: 'Feldabschluss',
+ FIELD_RESPONSES: 'Feldantworten',
+ DELETE_SELECTED: 'Ausgewählte löschen',
+ EXPORT_TO_EXCEL: 'Export nach Excel',
+ EXPORT_TO_CSV: 'In CSV exportieren',
+ EXPORT_TO_JSON: 'Export nach JSON',
+ PERCENTAGE_COMPLETE: 'Prozent abgeschlossen',
+ TIME_ELAPSED: 'Zeit verstrichen',
+ DEVICE_1: 'Gerät',
+ LOCATION_1: 'Ort',
+ IP_ADDRESS: 'IP-Adresse',
+ DATE_SUBMITTED: 'Eingereichtes Datum',
+
+ // Entwurfsansicht
+ BACKGROUND_COLOR: 'Hintergrundfarbe',
+ DESIGN_HEADER: 'Ändern Sie, wie Ihr Formular aussieht',
+ QUESTION_TEXT_COLOR: 'Fragetextfarbe',
+ ANSWER_TEXT_COLOR: 'Textfarbe beantworten',
+ BTN_BACKGROUND_COLOR: 'Schaltfläche Hintergrundfarbe',
+ BTN_TEXT_COLOR: 'Schaltfläche Textfarbe',
+
+ // Freigabeansicht
+ EMBED_YOUR_FORM: 'Einbetten Ihres Formulars',
+ SHARE_YOUR_FORM: 'Teilen Sie Ihr Formular',
+
+ // Admin-Registerkarten
+ CREATE_TAB: 'Erstellen',
+ DESIGN_TAB: 'Design',
+ CONFIGURE_TAB: 'Konfigurieren',
+ ANALYZE_TAB: 'Analysieren',
+ SHARE_TAB: 'Freigeben',
+
+ // Feldtypen
+ SHORT_TEXT: 'Kurztext',
+ EMAIL_1: 'Email',
+ MULTIPLE_CHOICE: 'Multiple Choice',
+ DROPDOWN_1: 'Dropdown',
+ DATE_1: 'Datum',
+ PARAGRAPH_T: "Absatz",
+ YES_NO: 'Ja / Nein',
+ LEGAL_1: "Legal",
+ RATING_1: 'Rating',
+ NUMBERS_1: 'Zahlen',
+ SIGNATURE_1: "Unterschrift",
+ FILE_UPLOAD: 'Datei-Upload',
+ OPTION_SCALE: 'Option Scale',
+ ZAHLUNG_1: "Zahlung",
+ STATEMENT_1: 'Anweisung',
+ LINK_1: 'Link',
+
+ // Formularvorschau
+ FORM_SUCCESS: 'Formulareintrag erfolgreich gesendet!',
+ REVIEW_1: 'Review',
+ BACK_TO_FORM: 'Gehe zurück zu Formular',
+ EDIT_FORM: 'Bearbeiten Sie diese TellForm',
+ ADVANCEMENT_1: '{{done}} von {{total}} wurde beantwortet',
+ CONTINUE_FORM: 'Weiter zum Formular',
+ REQUIRED_1: 'erforderlich',
+ COMPLETING_NEEDED: '{{answers_not_completed}} Antwort (en) müssen ausgefüllt werden',
+ OPTIONAL_1: 'optional',
+ ERROR_EMAIL_INVALID: 'Geben Sie eine gültige E-Mail-Adresse ein',
+ ERROR_NOT_A_NUMBER: 'Bitte nur gültige Nummern eingeben',
+ ERROR_URL_INVALID: 'Bitte eine gültige URL',
+ OK_1: 'OK',
+ ENTER_1: 'ENTER drücken',
+ NEWLINE_1: 'Drücken Sie UMSCHALT + EINGABETASTE, um eine neue Zeile zu erstellen',
+ CONTINUE_1: 'Weiter',
+ LEGAL_ACCEPT: "Ich akzeptiere",
+ LEGAL_NO_ACCEPT: "Ich akzeptiere nicht",
+ SUBMIT_1: 'Senden',
+ UPLOAD_FILE: 'Hochladen Ihrer Datei'
+ });
}]);
@@ -2614,71 +3749,190 @@ angular.module('forms').config(['$translateProvider', function ($translateProvid
angular.module('forms').config(['$translateProvider', function ($translateProvider) {
- $translateProvider.translations('german', {
- FORM_SUCCESS: 'Ihre Angaben wurden gespeichert.',
- REVIEW: 'Unvollständig',
- BACK_TO_FORM: 'Zurück zum Formular',
- EDIT_FORM: '',
- CREATE_FORM: '',
- ADVANCEMENT: '{{done}} von {{total}} beantwortet',
- CONTINUE_FORM: 'Zum Formular',
- REQUIRED: 'verpflichtend',
- COMPLETING_NEEDED: 'Es fehlen/fehtl noch {{answers_not_completed}} Antwort(en)',
- OPTIONAL: 'fakultativ',
- ERROR_EMAIL_INVALID: 'Bitte gültige Mailadresse eingeben',
- ERROR_NOT_A_NUMBER: 'Bitte nur Zahlen eingeben',
- ERROR_URL_INVALID: 'Bitte eine gültige URL eingeben',
- OK: 'Okay',
- ENTER: 'Eingabetaste drücken',
- YES: 'Ja',
- 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',
- DELETE: 'Entfernen',
- CANCEL: 'Canceln',
- SUBMIT: 'Speichern',
- UPLOAD_FILE: 'Datei versenden',
- Y: 'J',
- N: 'N',
- });
+ $translateProvider.translations('it', {
+ // Configura la visualizzazione scheda modulo
+ ADVANCED_SETTINGS: 'Impostazioni avanzate',
+ FORM_NAME: 'Nome modulo',
+ FORM_STATUS: 'Stato modulo',
+ PUBLIC_1: 'pubblico',
+ PRIVATE_1: 'Privato',
+ GA_TRACKING_CODE: 'Codice di monitoraggio di Google Analytics',
+ DISPLAY_FOOTER: 'Visualizza piè di pagina?',
+ SAVE_CHANGES: 'Salva modifiche',
+ CANCEL_1: 'Annulla',
+ DISPLAY_START_PAGE: 'Visualizza pagina iniziale?',
+ DISPLAY_END_PAGE: 'Mostra pagina finale personalizzata?',
-}]);
+ // Visualizzazione dei moduli di elenco
+ CREATE_A_NEW_FORM: 'Crea un nuovo modulo',
+ CREATE_FORM: 'Crea modulo',
+ CREATED_ON: 'Creato su',
+ MY_FORMS: 'Le mie forme',
+ NAME_1: 'Nome',
+ LINGUA: 'Lingua',
+ FORM_PAUSED: 'Forme in pausa',
-'use strict';
+ // Modifica campo modale
+ EDIT_FIELD: 'Modifica questo campo',
+ SAVE_FIELD: 'Salva',
+ ON_1: 'ON',
+ OFF_1: 'OFF',
+ REQUIRED_FIELD: 'Obbligatorio',
+ LOGIC_JUMP: 'Jump Logic',
+ SHOW_BUTTONS: 'Pulsanti aggiuntivi',
+ SAVE_START_PAGE: 'Salva',
-angular.module('forms').config(['$translateProvider', function ($translateProvider) {
+ // Visualizzazione modulo di amministrazione
+ ARE_YOU_SURE: 'Sei ASSOLUTAMENTE sicuro?',
+ READ_WARNING: 'Le cose cattive impreviste avverranno se non lo leggi!',
+ DELETE_WARNING1: 'Questa azione NON può essere annullata. Ciò eliminerà in modo permanente il "',
+ DELETE_WARNING2: '" forma e rimuovi tutti i moduli di modulo associati. ',
+ DELETE_CONFIRM: 'Inserisci il nome del modulo per confermare',
+ I_UNDERSTAND: "Capisco le conseguenze, elimina questa forma",
+ DELETE_FORM_SM: 'Elimina',
+ DELETE_FORM_MD: 'Elimina modulo',
+ DELETE_1: 'Elimina',
+ FORM_1: 'Forma',
+ VIEW_1: 'Visualizza',
+ LIVE_1: 'Live',
+ PREVIEW_1: 'Anteprima',
+ COPY_1: 'Copia',
+ COPY_AND_PASTE: 'Copia e incolla questo per aggiungere il tuo TellForm al tuo sito web',
+ CHANGE_WIDTH_AND_HEIGHT: 'Modifica i valori di larghezza e di altezza per adattarti al meglio',
+ POWERED_BY: 'Powered by',
+ TELLFORM_URL: 'Il tuo TellForm è permanente in questo URL',
- $translateProvider.translations('italian', {
- FORM_SUCCESS: 'Il formulario è stato inviato con successo!',
- REVIEW: 'Incompleto',
- BACK_TO_FORM: 'Ritorna al formulario',
- EDIT_FORM: '',
- CREATE_FORM: '',
- ADVANCEMENT: '{{done}} su {{total}} completate',
- CONTINUE_FORM: 'Vai al formulario',
- REQUIRED: 'obbligatorio',
- COMPLETING_NEEDED: '{{answers_not_completed}} risposta/e deve/ono essere completata/e',
- OPTIONAL: 'opzionale',
- ERROR_EMAIL_INVALID: 'Si prega di inserire un indirizzo email valido',
- ERROR_NOT_A_NUMBER: 'Si prega di inserire solo numeri',
- ERROR_URL_INVALID: 'Grazie per inserire un URL valido',
- OK: 'OK',
- ENTER: 'premere INVIO',
- YES: 'Sì',
- NO: 'No',
- NEWLINE: 'premere SHIFT+INVIO per creare una nuova linea',
- CONTINUE: 'Continua',
- LEGAL_ACCEPT: 'I accept',
- LEGAL_NO_ACCEPT: 'I don’t accept',
- DELETE: 'Cancella',
- CANCEL: 'Reset',
- SUBMIT: 'Registra',
- UPLOAD_FILE: 'Invia un file',
- Y: 'S',
- N: 'N',
- });
+ // Modifica vista modulo
+ DISABLED_1: 'disabilitato',
+ YES_1: 'SI',
+ NO_1: 'NO',
+ ADD_LOGIC_JUMP: 'Aggiungi logico salto',
+ ADD_FIELD_LG: 'Clicca per aggiungere nuovo campo',
+ ADD_FIELD_MD: 'Aggiungi nuovo campo',
+ ADD_FIELD_SM: 'Aggiungi campo',
+ EDIT_START_PAGE: 'Modifica pagina iniziale',
+ EDIT_END_PAGE: 'Modifica pagina finale',
+ WELCOME_SCREEN: 'Pagina iniziale',
+ END_SCREEN: 'Fine pagina',
+ INTRO_TITLE: 'Titolo',
+ INTRO_PARAGRAPH: 'Paragrafo',
+ INTRO_BTN: 'Pulsante Start',
+ TITLE_1: 'Titolo',
+ PARAGRAFO: 'Paragrafo',
+ BTN_TEXT: 'Tornare indietro',
+ TASTI: 'Pulsanti',
+ BUTTON_TEXT: 'Testo',
+ BUTTON_LINK: 'Link',
+ ADD_BUTTON: 'Aggiungi pulsante',
+ PREVIEW_FIELD: 'Anteprima domanda',
+ QUESTION_TITLE: 'Titolo',
+ QUESTION_DESCRIPTION: 'Descrizione',
+ OPTIONS_1: 'Opzioni',
+ ADD_OPTION: 'Aggiungi opzione',
+ NUM_OF_STEPS: 'Numero di passi',
+ CLICK_FIELDS_FOOTER: 'Clicca sui campi per aggiungerli qui',
+ FORMA: 'Forma',
+ IF_THIS_FIELD: 'Se questo campo',
+ IS_EQUAL_TO: 'è uguale a',
+ IS_NOT_EQUAL_TO: 'non è uguale a',
+ IS_GREATER_THAN: 'è maggiore di',
+ IS_GREATER_OR_EQUAL_THAN: 'è maggiore o uguale a',
+ IS_SMALLER_THAN: 'is_smaller_than',
+ IS_SMALLER_OR_EQUAL_THAN: 'è più piccolo o uguale a quello',
+ CONTAINS_1: 'contiene',
+ DOES_NOT_CONTAINS: 'non contiene',
+ ENDS_WITH: 'finisce con',
+ DOES_NOT_END_WITH: 'non finisce con',
+ STARTS_WITH: 'inizia con',
+ DOES_NOT_START_WITH: 'non inizia con',
+ THEN_JUMP_TO: 'poi salta a',
+
+ // Modifica visualizzazione presentazioni
+ TOTAL_VIEWS: 'visite totali totali',
+ RESPONSES_1: 'risposte',
+ COMPLETION_RATE: 'tasso di completamento',
+ AVERAGE_TIME_TO_COMPLETE: 'avg. tempo di completamento',
+
+ DESKTOP_AND_LAPTOP: 'Desktop',
+ TABLETS_1: 'compresse',
+ PHONES_1: 'Telefoni',
+ OTHER_1: 'Altro',
+ UNIQUE_VISITS: 'Visite Uniche',
+
+ FIELD_TITLE: 'Titolo del campo',
+ FIELD_VIEWS: 'Viste sul campo',
+ FIELD_DROPOFF: 'Completamento del campo',
+ FIELD_RESPONSES: 'Risposte sul campo',
+ DELETE_SELECTED: 'Elimina selezionata',
+ EXPORT_TO_EXCEL: 'Esporta in Excel',
+ EXPORT_TO_CSV: 'Esporta in CSV',
+ EXPORT_TO_JSON: 'Esporta in JSON',
+ PERCENTAGE_COMPLETE: 'Percentuale completa',
+ TIME_ELAPSED: 'Tempo trascorso',
+ DEVICE_1: 'Dispositivo',
+ LOCATION_1: 'Posizione',
+ IP_ADDRESS: 'Indirizzo IP',
+ DATE_SUBMITTED: 'Data trasmessa',
+
+ // Vista di progettazione
+ BACKGROUND_COLOR: 'Colore di sfondo',
+ DESIGN_HEADER: 'Modifica il tuo aspetto forma',
+ QUESTION_TEXT_COLOR: 'Colore del testo di domanda',
+ ANSWER_TEXT_COLOR: 'Answer Text Color',
+ BTN_BACKGROUND_COLOR: 'Colore di sfondo del pulsante',
+ BTN_TEXT_COLOR: 'Colore del testo pulsante',
+
+ // Vista condivisione
+ EMBED_YOUR_FORM: 'Inserisci il tuo modulo',
+ SHARE_YOUR_FORM: 'Condividi il tuo modulo',
+
+ // Schede amministratore
+ CREATE_TAB: 'Crea',
+ DESIGN_TAB: 'Design',
+ CONFIGURE_TAB: 'Configura',
+ ANALYZE_TAB: 'Analizza',
+ SHARE_TAB: 'Condividi',
+
+ // Tipi di campo
+ SHORT_TEXT: 'Testo corto',
+ EMAIL_1: 'E-mail',
+ MULTIPLE_CHOICE: 'Scelta multipla',
+ DROPDOWN_1: 'Dropdown',
+ DATE_1: 'Data',
+ PARAGRAPH_T: 'Paragrafo',
+ YES_NO: 'Sì / no',
+ LEGAL_1: 'Legale',
+ RATING_1: 'Valutazione',
+ NUMBERS_1: 'Numeri',
+ SIGNATURE_1: 'Firma',
+ FILE_UPLOAD: 'Caricamento file',
+ OPTION_SCALE: 'Scala opzione',
+ PAGAMENTO_1: 'Pagamento',
+ STATEMENT_1: 'Dichiarazione',
+ LINK_1: 'Link',
+
+ // Anteprima del modulo
+ FORM_SUCCESS: 'Inserimento modulo con successo presentato!',
+ REVIEW_1: 'Recensione',
+ BACK_TO_FORM: 'Torna alla scheda',
+ EDIT_FORM: 'Modifica questo TellForm',
+ ADVANCEMENT_1: '{{done}} su {{total}} ha risposto',
+ CONTINUE_FORM: "Continua a formare",
+ REQUIRED_1: 'richiesta',
+ COMPLETING_NEEDED: '{{answers_not_completed}} answer (s) need completing',
+ OPTIONAL_1: 'facoltativo',
+ ERROR_EMAIL_INVALID: 'Inserisci un indirizzo e-mail valido',
+ ERROR_NOT_A_NUMBER: 'Inserisci solo numeri validi',
+ ERROR_URL_INVALID: 'Per favore un url valido',
+ OK_1: 'OK',
+ ENTER_1: 'premere INVIO',
+ NEWLINE_1: 'premere SHIFT + INVIO per creare una nuova riga',
+ CONTINUE_1: 'Continua',
+ LEGAL_ACCEPT: 'accetto',
+ LEGAL_NO_ACCEPT: 'Non accetto',
+ SUBMIT_1: 'Invia',
+ UPLOAD_FILE: 'Carica il tuo file'
+ });
}]);
@@ -3068,7 +4322,7 @@ angular.module('view-form').constant('VIEW_FORM_URL', '/forms/:formId/render');
angular.module('view-form').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',
@@ -3094,10 +4348,22 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr
CANCEL: 'Cancel',
SUBMIT: 'Submit',
UPLOAD_FILE: 'Upload your File',
+ Y: 'Y',
+ N: 'N',
+ OPTION_PLACEHOLDER: 'Type or select an option',
+ ADD_NEW_LINE_INSTR: 'Press SHIFT+ENTER to add a newline',
+ ERROR: 'Error',
+
+ FORM_404_HEADER: '404 - Form Does Not Exist',
+ FORM_404_BODY: 'The form you are trying to access does not exist. Sorry about that!',
+
+ FORM_UNAUTHORIZED_HEADER: 'Not Authorized to Access Form',
+ FORM_UNAUTHORIZED_BODY1: 'The form you are trying to access is currently private and not accesible publically.',
+ FORM_UNAUTHORIZED_BODY2: 'If you are the owner of the form, you can set it to "Public" in the "Configuration" panel in the form admin.',
});
- $translateProvider.preferredLanguage('english')
- .fallbackLanguage('english')
+ $translateProvider.preferredLanguage('en')
+ .fallbackLanguage('en')
.useSanitizeValueStrategy('escape');
}]);
@@ -3106,7 +4372,7 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr
angular.module('view-form').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',
@@ -3134,6 +4400,16 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr
UPLOAD_FILE: 'Envoyer un fichier',
Y: 'O',
N: 'N',
+ OPTION_PLACEHOLDER: 'Tapez ou sélectionnez une option',
+ ADD_NEW_LINE_INSTR: 'Appuyez sur MAJ + ENTRÉE pour ajouter une nouvelle ligne',
+ ERROR: 'Erreur',
+
+ FORM_404_HEADER: '404 - Le formulaire n\'existe pas',
+ FORM_404_BODY: 'Le formulaire auquel vous essayez d\'accéder n\'existe pas. Désolé pour ça!',
+
+ FORM_UNAUTHORIZED_HEADER: 'Non autorisé à accéder au formulaire',
+ FORM_UNAUTHORIZED_BODY1: 'Le formulaire auquel vous essayez d\'accéder est actuellement privé et inaccessible publiquement.',
+ FORM_UNAUTHORIZED_BODY2: 'Si vous êtes le propriétaire du formulaire, vous pouvez le définir sur "Public" dans le panneau "Configuration" du formulaire admin.',
});
}]);
@@ -3142,12 +4418,12 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr
angular.module('view-form').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',
- EDIT_FORM: '',
- CREATE_FORM: '',
+ EDIT_FORM: 'Bearbeiten Sie diese TellForm',
+ CREATE_FORM: 'Dieses TellForm erstellen',
ADVANCEMENT: '{{done}} von {{total}} beantwortet',
CONTINUE_FORM: 'Zum Formular',
REQUIRED: 'verpflichtend',
@@ -3170,6 +4446,16 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr
UPLOAD_FILE: 'Datei versenden',
Y: 'J',
N: 'N',
+ OPTION_PLACEHOLDER: 'Geben oder wählen Sie eine Option aus',
+ ADD_NEW_LINE_INSTR: 'Drücken Sie UMSCHALT + EINGABETASTE, um eine neue Zeile hinzuzufügen',
+ ERROR: 'Fehler',
+
+ FORM_404_HEADER: '404 - Formular existiert nicht',
+ FORM_404_BODY: 'Das Formular, auf das Sie zugreifen möchten, existiert nicht. Das tut mir leid!',
+
+ FORM_UNAUTHORIZED_HEADER: 'Nicht zum Zugriffsformular berechtigt\' ',
+ FORM_UNAUTHORIZED_BODY1: 'Das Formular, auf das Sie zugreifen möchten, ist derzeit privat und nicht öffentlich zugänglich.',
+ FORM_UNAUTHORIZED_BODY2: 'Wenn Sie der Eigentümer des Formulars sind, können Sie es im Fenster "Konfiguration" im Formular admin auf "Öffentlich" setzen.',
});
}]);
@@ -3178,12 +4464,12 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr
angular.module('view-form').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',
- EDIT_FORM: '',
- CREATE_FORM: '',
+ EDIT_FORM: 'Modifica questo TellForm',
+ CREATE_FORM: 'Crea questo TellForm',
ADVANCEMENT: '{{done}} su {{total}} completate',
CONTINUE_FORM: 'Vai al formulario',
REQUIRED: 'obbligatorio',
@@ -3206,6 +4492,16 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr
UPLOAD_FILE: 'Invia un file',
Y: 'S',
N: 'N',
+ OPTION_PLACEHOLDER: 'Digitare o selezionare un\'opzione',
+ ADD_NEW_LINE_INSTR: 'Premere SHIFT + INVIO per aggiungere una nuova riga',
+ ERROR: 'Errore',
+
+ FORM_404_HEADER: '404 - Il modulo non esiste',
+ FORM_404_BODY: 'La forma che stai cercando di accedere non esiste. Ci dispiace!',
+
+ FORM_UNAUTHORIZED_HEADER: 'Non autorizzato per accedere al modulo',
+ FORM_UNAUTHORIZED_BODY1: 'Il modulo che si sta tentando di accedere è attualmente privato e non accessibile in pubblico.',
+ FORM_UNAUTHORIZED_BODY2: 'Se sei il proprietario del modulo, puoi impostarlo su "Pubblico" nel pannello "Configurazione" nell\'amministratore di moduli.',
});
}]);
@@ -3214,35 +4510,45 @@ angular.module('view-form').config(['$translateProvider', function ($translatePr
angular.module('view-form').config(['$translateProvider', function ($translateProvider) {
- $translateProvider.translations('spanish', {
- FORM_SUCCESS: '¡El formulario ha sido enviado con éxito!',
- REVIEW: 'Revisar',
- BACK_TO_FORM: 'Regresar al formulario',
- EDIT_FORM: '',
- CREATE_FORM: '',
- ADVANCEMENT: '{{done}} de {{total}} contestadas',
- CONTINUE_FORM: 'Continuar al formulario',
- REQUIRED: 'Información requerida',
- COMPLETING_NEEDED: '{{answers_not_completed}} respuesta(s) necesita(n) ser completada(s)',
- OPTIONAL: 'Opcional',
- ERROR_EMAIL_INVALID: 'Favor de proporcionar un correo electrónico válido',
- ERROR_NOT_A_NUMBER: 'Por favor, introduzca sólo números válidos',
- ERROR_URL_INVALID: 'Favor de proporcionar un url válido',
- OK: 'OK',
- ENTER: 'pulse INTRO',
- YES: 'Si',
- NO: 'No',
- NEWLINE: 'presione SHIFT+INTRO para crear una nueva línea',
- CONTINUE: 'Continuar',
- LEGAL_ACCEPT: 'Yo acepto',
- LEGAL_NO_ACCEPT: 'Yo no acepto',
- DELETE: 'Eliminar',
- CANCEL: 'Cancelar',
- SUBMIT: 'Registrar',
- UPLOAD_FILE: 'Cargar el archivo',
- Y: 'S',
- N: 'N'
- });
+ $translateProvider.translations('es', {
+ FORM_SUCCESS: '¡El formulario ha sido enviado con éxito!',
+ REVIEW: 'Revisar',
+ BACK_TO_FORM: 'Regresar al formulario',
+ EDIT_FORM: 'Editar este TellForm',
+ CREATE_FORM: 'Crear este TellForm',
+ ADVANCEMENT: '{{done}} de {{total}} contestadas',
+ CONTINUE_FORM: 'Continuar al formulario',
+ REQUIRED: 'Información requerida',
+ COMPLETING_NEEDED: '{{answers_not_completed}} respuesta(s) necesita(n) ser completada(s)',
+ OPTIONAL: 'Opcional',
+ ERROR_EMAIL_INVALID: 'Favor de proporcionar un correo electrónico válido',
+ ERROR_NOT_A_NUMBER: 'Por favor, introduzca sólo números válidos',
+ ERROR_URL_INVALID: 'Favor de proporcionar un url válido',
+ OK: 'OK',
+ ENTER: 'pulse INTRO',
+ YES: 'Si',
+ NO: 'No',
+ NEWLINE: 'presione SHIFT+INTRO para crear una nueva línea',
+ CONTINUE: 'Continuar',
+ LEGAL_ACCEPT: 'Yo acepto',
+ LEGAL_NO_ACCEPT: 'Yo no acepto',
+ DELETE: 'Eliminar',
+ CANCEL: 'Cancelar',
+ SUBMIT: 'Registrar',
+ UPLOAD_FILE: 'Cargar el archivo',
+ Y: 'S',
+ N: 'N',
+ OPTION_PLACEHOLDER: 'Escriba o seleccione una opción',
+ ADD_NEW_LINE_INSTR: 'Presione MAYÚS + ENTRAR para agregar una nueva línea',
+ ERROR: 'Error',
+
+ FORM_404_HEADER: '404 - La forma no existe',
+ FORM_404_BODY: 'El formulario al que intenta acceder no existe. ¡Lo siento por eso!',
+
+ FORM_UNAUTHORIZED_HEADER: 'Non autorizzato per accedere al modulo',
+ FORM_UNAUTHORIZED_BODY1: 'Il modulo che si sta tentando di accedere è attualmente privato e non accessibile in pubblico.',
+ FORM_UNAUTHORIZED_BODY2: 'Se sei il proprietario del modulo, puoi impostarlo su "Pubblico" nel pannello "Configurazione" nell\'amministratore di moduli.',
+ });
}]);
diff --git a/public/dist/application.min.js b/public/dist/application.min.js
index ccac72bf..fde20b0a 100644
--- a/public/dist/application.min.js
+++ b/public/dist/application.min.js
@@ -1,3 +1,6 @@
-"use strict";var ApplicationConfiguration=function(){var a="TellForm",b=["duScroll","ui.select","ngSanitize","vButton","ngResource","TellForm.templates","ui.router","ui.bootstrap","ui.utils","pascalprecht.translate","view-form"],c=function(b,c){angular.module(b,c||[]),angular.module(a).requires.push(b)};return{applicationModuleName:a,applicationModuleVendorDependencies:b,registerModule:c}}();angular.module(ApplicationConfiguration.applicationModuleName,ApplicationConfiguration.applicationModuleVendorDependencies),angular.module(ApplicationConfiguration.applicationModuleName).config(["$locationProvider",function(a){a.hashPrefix("!")}]),angular.module(ApplicationConfiguration.applicationModuleName).constant("APP_PERMISSIONS",{viewAdminSettings:"viewAdminSettings",editAdminSettings:"editAdminSettings",editForm:"editForm",viewPrivateForm:"viewPrivateForm"}),angular.module(ApplicationConfiguration.applicationModuleName).constant("USER_ROLES",{admin:"admin",normal:"user",superuser:"superuser"}),angular.module(ApplicationConfiguration.applicationModuleName).constant("FORM_URL","/forms/:formId"),angular.element(document).ready(function(){"#_=_"===window.location.hash&&(window.location.hash="#!"),angular.bootstrap(document,[ApplicationConfiguration.applicationModuleName])}),ApplicationConfiguration.registerModule("core",["users"]),ApplicationConfiguration.registerModule("forms",["ngFileUpload","ui.router.tabs","ui.date","ui.sortable","angular-input-stars","users","ngclipboard"]),ApplicationConfiguration.registerModule("users"),angular.module("core").config(["$stateProvider","$urlRouterProvider",function(a,b,c){b.otherwise("/forms")}]),angular.module(ApplicationConfiguration.applicationModuleName).run(["$rootScope","Auth","$state","$stateParams",function(a,b,c,d){a.$state=c,a.$stateParams=d,a.$on("$stateChangeSuccess",function(a,d,e,f){c.previous=f;var g=["home","signin","resendVerifyEmail","verify","signup","signup-success","forgot","reset-invalid","reset","reset-success"];g.indexOf(d.name)>0?b.isAuthenticated()&&(a.preventDefault(),c.go("listForms")):"access_denied"===d.name||b.isAuthenticated()||"submitForm"===d.name||(a.preventDefault(),c.go("listForms"))})}]),angular.module(ApplicationConfiguration.applicationModuleName).run(["$rootScope","Auth","User","Authorizer","$state","$stateParams",function(a,b,c,d,e,f){a.$on("$stateChangeStart",function(a,f){var g,h,i;h=f&&f.data&&f.data.permissions?f.data.permissions:null,b.ensureHasCurrentUser(c),i=b.currentUser,i&&(g=new d(i),null!==h&&(g.canAccess(h)||(a.preventDefault(),e.go("access_denied"))))})}]),angular.module("core").controller("HeaderController",["$rootScope","$scope","Menus","$state","Auth","User","$window","$translate","$locale",function(a,b,c,d,e,f,g,h,i){a.signupDisabled=g.signupDisabled,b.user=a.user=e.ensureHasCurrentUser(f),b.authentication=a.authentication=e,a.languages=b.languages=["en","fr","es","it","de"],b.authentication.isAuthenticated()?a.language=b.user.language:a.language=i.id.substring(0,2),h.use(a.language),b.isCollapsed=!1,a.hideNav=!1,b.menu=c.getMenu("topbar"),b.signout=function(){var c=f.logout();c.then(function(){e.logout(),e.ensureHasCurrentUser(f),b.user=a.user=null,d.go("listForms"),d.reload()},function(a){console.error("Logout Failed: "+a)})},b.toggleCollapsibleMenu=function(){b.isCollapsed=!b.isCollapsed},b.$on("$stateChangeSuccess",function(c,d,e,f,g){b.isCollapsed=!1,a.hideNav=!1,angular.isDefined(d.data)&&angular.isDefined(d.data.hideNav)&&(a.hideNav=d.data.hideNav)})}]),angular.module("core").service("Menus",[function(){this.defaultRoles=["*"],this.menus={};var a=function(a){if(a){if(~this.roles.indexOf("*"))return!0;for(var b in a.roles)for(var c in this.roles)if(this.roles[c]===a.roles[b])return!0;return!1}return this.isPublic};this.validateMenuExistance=function(a){if(a&&a.length){if(this.menus[a])return!0;throw new Error("Menu does not exists")}throw new Error("MenuId was not provided")},this.getMenu=function(a){return this.validateMenuExistance(a),this.menus[a]},this.addMenu=function(b,c,d){return this.menus[b]={isPublic:c||!1,roles:d||this.defaultRoles,items:[],shouldRender:a},this.menus[b]},this.removeMenu=function(a){this.validateMenuExistance(a),delete this.menus[a]},this.addMenuItem=function(b,c,d,e,f,g,h,i){return this.validateMenuExistance(b),this.menus[b].items.push({title:c,link:d,menuItemType:e||"item",menuItemClass:e,uiRoute:f||"/"+d,isPublic:null===g||"undefined"==typeof g?this.menus[b].isPublic:g,roles:null===h||"undefined"==typeof h?this.menus[b].roles:h,position:i||0,items:[],shouldRender:a}),this.menus[b]},this.addSubMenuItem=function(b,c,d,e,f,g,h,i){this.validateMenuExistance(b);for(var j in this.menus[b].items)this.menus[b].items[j].link===c&&this.menus[b].items[j].items.push({title:d,link:e,uiRoute:f||"/"+e,isPublic:null===g||"undefined"==typeof g?this.menus[b].items[j].isPublic:g,roles:null===h||"undefined"==typeof h?this.menus[b].items[j].roles:h,position:i||0,shouldRender:a});return this.menus[b]},this.removeMenuItem=function(a,b){this.validateMenuExistance(a);for(var c in this.menus[a].items)this.menus[a].items[c].link===b&&this.menus[a].items.splice(c,1);return this.menus[a]},this.removeSubMenuItem=function(a,b){this.validateMenuExistance(a);for(var c in this.menus[a].items)for(var d in this.menus[a].items[c].items)this.menus[a].items[c].items[d].link===b&&this.menus[a].items[c].items.splice(d,1);return this.menus[a]},this.addMenu("topbar",!1,["*"]),this.addMenu("bottombar",!1,["*"])}]),angular.module("core").factory("subdomain",["$location",function(a){var b=a.host();return b.indexOf(".")<0?null:b.split(".")[0]}]),angular.module("forms").run(["Menus",function(a){a.addMenuItem("topbar","My Forms","forms","","/forms",!1)}]).filter("secondsToDateTime",[function(){return function(a){return new Date(1970,0,1).setSeconds(a)}}]).filter("formValidity",[function(){return function(a){if(a&&a.form_fields&&a.visible_form_fields){var b=Object.keys(a),c=(b.filter(function(a){return"$"!==a[0]}),a.form_fields),d=c.filter(function(a){return"object"==typeof a&&"statement"!==a.fieldType&&"rating"!==a.fieldType?!!a.fieldValue:"rating"===a.fieldType||void 0}).length;return d-(a.form_fields.length-a.visible_form_fields.length)}return 0}}]).filter("trustSrc",["$sce",function(a){return function(b){return a.trustAsResourceUrl(b)}}]).config(["$provide",function(a){a.decorator("accordionDirective",["$delegate",function(a){var b=a[0];return b.replace=!0,a}])}]),angular.module("forms").config(["$stateProvider",function(a){a.state("listForms",{url:"/forms",templateUrl:"modules/forms/admin/views/list-forms.client.view.html",resolve:{Forms:"GetForms",myForms:["GetForms","$q",function(a,b){var c=b.defer();return a.query(function(a){c.resolve(a)}),c.promise}]},controller:"ListFormsController",controllerAs:"ctrl"}).state("submitForm",{url:"/forms/:formId",templateUrl:"/static/form_modules/forms/base/views/submit-form.client.view.html",data:{hideNav:!0},resolve:{Forms:"GetForms",myForm:["GetForms","$stateParams","$q",function(a,b,c){var d=c.defer();return a.get({formId:b.formId},function(a){d.resolve(a)}),d.promise}]},controller:"SubmitFormController",controllerAs:"ctrl"}).state("viewForm",{url:"/forms/:formId/admin",templateUrl:"modules/forms/admin/views/admin-form.client.view.html",data:{permissions:["editForm"]},resolve:{GetForms:"GetForms",myForm:["GetForms","$stateParams","$q",function(a,b,c){var d=c.defer();return a.get({formId:b.formId},function(a){d.resolve(a)}),d.promise}]},controller:"AdminFormController"}).state("viewForm.configure",{url:"/configure",templateUrl:"modules/forms/admin/views/adminTabs/configure.html"}).state("viewForm.design",{url:"/design",templateUrl:"modules/forms/admin/views/adminTabs/design.html"}).state("viewForm.analyze",{url:"/analyze",templateUrl:"modules/forms/admin/views/adminTabs/analyze.html"}).state("viewForm.create",{url:"/create",templateUrl:"modules/forms/admin/views/adminTabs/create.html"})}]),angular.module("forms").factory("GetForms",["$resource","FORM_URL",function(a,b){return a(b,{formId:"@_id"},{query:{method:"GET",isArray:!0},get:{method:"GET",transformResponse:function(a,b){var c=angular.fromJson(a);return c.visible_form_fields=_.filter(c.form_fields,function(a){return a.deletePreserved===!1}),c}},update:{method:"PUT"},save:{method:"POST"}})}]),angular.module("users").config(["$httpProvider",function(a){a.interceptors.push(["$q","$location",function(a,b){return{responseError:function(c){return"/users/me"!==b.path()&&c.config&&"/users/me"!==c.config.url&&(401===c.status?(b.nextAfterLogin=b.path(),b.path("/signin")):403===c.status&&b.path("/access_denied")),a.reject(c)}}}])}]),angular.module("users").config(["$stateProvider",function(a){var b=function(a,b,c,d,e){var f=a.defer();return e.currentUser&&e.currentUser.email?b(f.resolve):e.currentUser=d.getCurrent(function(){e.login(),b(f.resolve())},function(){e.logout(),b(f.reject()),c.go("signin",{reload:!0})}),f.promise};b.$inject=["$q","$timeout","$state","User","Auth"];var c=function(a,b,c){var d=c.defer();return b(a.signupDisabled?d.reject():d.resolve()),d.promise};c.$inject=["$window","$timeout","$q"],a.state("profile",{resolve:{loggedin:b},url:"/settings/profile",templateUrl:"modules/users/views/settings/edit-profile.client.view.html"}).state("password",{resolve:{loggedin:b},url:"/settings/password",templateUrl:"modules/users/views/settings/change-password.client.view.html"}).state("accounts",{resolve:{loggedin:b},url:"/settings/accounts",templateUrl:"modules/users/views/settings/social-accounts.client.view.html"}).state("signup",{resolve:{isDisabled:c},url:"/signup",templateUrl:"modules/users/views/authentication/signup.client.view.html"}).state("signup-success",{resolve:{isDisabled:c},url:"/signup-success",templateUrl:"modules/users/views/authentication/signup-success.client.view.html"}).state("signin",{url:"/signin",templateUrl:"modules/users/views/authentication/signin.client.view.html"}).state("access_denied",{url:"/access_denied",templateUrl:"modules/users/views/authentication/access-denied.client.view.html"}).state("verify",{resolve:{isDisabled:c},url:"/verify/:token",templateUrl:"modules/users/views/verify/verify-account.client.view.html"}).state("resendVerifyEmail",{resolve:{isDisabled:c},url:"/verify",templateUrl:"modules/users/views/verify/resend-verify-email.client.view.html"}).state("forgot",{url:"/password/forgot",templateUrl:"modules/users/views/password/forgot-password.client.view.html"}).state("reset-invalid",{url:"/password/reset/invalid",templateUrl:"modules/users/views/password/reset-password-invalid.client.view.html"}).state("reset-success",{url:"/password/reset/success",templateUrl:"modules/users/views/password/reset-password-success.client.view.html"}).state("reset",{url:"/password/reset/:token",templateUrl:"modules/users/views/password/reset-password.client.view.html"})}]),angular.module("users").controller("AuthenticationController",["$scope","$location","$state","$rootScope","User","Auth",function(a,b,c,d,e,f){a=d,a.credentials={},a.error="",a.signin=function(){e.login(a.credentials).then(function(b){f.login(b),a.user=d.user=f.ensureHasCurrentUser(e),"home"!==c.previous.name&&"verify"!==c.previous.name&&""!==c.previous.name?c.go(c.previous.name):c.go("listForms")},function(b){d.user=f.ensureHasCurrentUser(e),a.user=d.user,a.error=b,console.error("loginError: "+b)})},a.signup=function(){return"admin"===a.credentials?void(a.error="Username cannot be 'admin'. Please pick another username."):void e.signup(a.credentials).then(function(a){c.go("signup-success")},function(b){console.error(b),b?(a.error=b,console.error(b)):console.error("No response received")})}}]),angular.module("users").controller("PasswordController",["$scope","$stateParams","$state","User",function(a,b,c,d){a.error="",a.askForPasswordReset=function(){d.askForPasswordReset(a.credentials).then(function(b){a.success=b.message,a.credentials=null},function(b){a.error=b,a.credentials=null})},a.resetUserPassword=function(){a.success=a.error=null,d.resetPassword(a.passwordDetails,b.token).then(function(b){a.success=b.message,a.passwordDetails=null,c.go("reset-success")},function(b){a.error=b.message||b,a.passwordDetails=null})}}]),angular.module("users").controller("SettingsController",["$scope","$rootScope","$http","$state","Users","Auth",function(a,b,c,d,e,f){a.user=f.currentUser,a.hasConnectedAdditionalSocialAccounts=function(b){for(var c in a.user.additionalProvidersData)return!0;return!1},a.cancel=function(){a.user=f.currentUser},a.isConnectedSocialAccount=function(b){return a.user.provider===b||a.user.additionalProvidersData&&a.user.additionalProvidersData[b]},a.removeUserSocialAccount=function(b){a.success=a.error=null,c["delete"]("/users/accounts",{params:{provider:b}}).success(function(b){a.success=!0,a.user=b}).error(function(b){a.error=b.message})},a.updateUserProfile=function(b){if(b){a.success=a.error=null;var c=new e(a.user);c.$update(function(b){a.success=!0,a.user=b},function(b){a.error=b.data.message})}else a.submitted=!0},a.changeUserPassword=function(){a.success=a.error=null,c.post("/users/password",a.passwordDetails).success(function(b){a.success=!0,a.passwordDetails=null}).error(function(b){a.error=b.message})}}]),angular.module("users").controller("VerifyController",["$scope","$state","$rootScope","User","Auth","$stateParams",function(a,b,c,d,e,f){a.isResetSent=!1,a.credentials={},a.error="",a.resendVerifyEmail=function(){d.resendVerifyEmail(a.credentials.email).then(function(b){a.success=b.message,a.credentials=null,a.isResetSent=!0},function(b){a.error=b,a.credentials.email=null,a.isResetSent=!1})},a.validateVerifyToken=function(){f.token&&(console.log(f.token),d.validateVerifyToken(f.token).then(function(b){a.success=b.message,a.isResetSent=!0,a.credentials.email=null},function(b){a.isResetSent=!1,a.error=b,a.credentials.email=null}))}}]),angular.module("users").factory("Auth",["$window",function(a){var b={isLoggedIn:!1},c={_currentUser:null,get currentUser(){return this._currentUser},ensureHasCurrentUser:function(d){return c._currentUser&&c._currentUser.username?c._currentUser:a.user?(c._currentUser=a.user,c._currentUser):void d.getCurrent().then(function(d){return c._currentUser=d,b.isLoggedIn=!0,a.user=c._currentUser,c._currentUser},function(d){return b.isLoggedIn=!1,c._currentUser=null,a.user=null,null})},isAuthenticated:function(){return!!c._currentUser},getUserState:function(){return b},login:function(a){b.isLoggedIn=!0,c._currentUser=a},logout:function(){a.user=null,b.isLoggedIn=!1,c._currentUser=null}};return c}]),angular.module("users").service("Authorizer",["APP_PERMISSIONS","USER_ROLES",function(a,b){return function(c){return{canAccess:function(d){var e,f,g;for(angular.isArray(d)||(d=[d]),e=0,f=d.length;e-1;case a.viewPrivateForm:case a.editForm:return c.roles.indexOf(b.admin)>-1||c.roles.indexOf(b.normal)>-1}}return!1}}}}]),angular.module("users").factory("User",["$window","$q","$timeout","$http","$state",function(a,b,c,d,e){var f={getCurrent:function(){var a=b.defer();return d.get("/users/me").success(function(b){a.resolve(b)}).error(function(){a.reject("User's session has expired")}),a.promise},login:function(a){var c=b.defer();return d.post("/auth/signin",a).then(function(a){c.resolve(a.data)},function(a){c.reject(a.data.message||a.data)}),c.promise},logout:function(){var a=b.defer();return d.get("/auth/signout").then(function(b){a.resolve(null)},function(b){a.reject(b.data.message||b.data)}),a.promise},signup:function(a){var c=b.defer();return d.post("/auth/signup",a).then(function(a){c.resolve(a.data)},function(a){c.reject(a.data.message||a.data)}),c.promise},resendVerifyEmail:function(a){var c=b.defer();return d.post("/auth/verify",{email:a}).then(function(a){c.resolve(a.data)},function(a){c.reject(a.data.message||a.data)}),c.promise},validateVerifyToken:function(a){var c=/^([A-Za-z0-9]{48})$/g;if(!c.test(a))throw new Error("Error token: "+a+" is not a valid verification token");var e=b.defer();return d.get("/auth/verify/"+a).then(function(a){e.resolve(a.data)},function(a){e.reject(a.data)}),e.promise},resetPassword:function(a,c){var e=b.defer();return d.post("/auth/reset/"+c,a).then(function(a){e.resolve(a)},function(a){e.reject(a.data.message||a.data)}),e.promise},askForPasswordReset:function(a){var c=b.defer();return d.post("/auth/forgot",a).then(function(a){c.resolve(a.data)},function(a){c.reject(a.data.message||a.data)}),c.promise}};return f}]),angular.module("users").factory("Users",["$resource",function(a){return a("users",{},{update:{method:"PUT"}})}]),angular.module("core").config(["$translateProvider",function(a){a.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"}),a.preferredLanguage("en").fallbackLanguage("en").useSanitizeValueStrategy("escape")}]),angular.module("core").config(["$translateProvider",function(a){a.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"})}]),angular.module("core").config(["$translateProvider",function(a){a.translations("es",{MENU:"MENU",SIGNUP_TAB:"Registrarse",SIGNIN_TAB:"Entrar",SIGNOUT_TAB:"Salir",EDIT_PROFILE:"Editar Perfil",MY_FORMS:"Mis formularios",MY_SETTINGS:"Mis configuraciones",CHANGE_PASSWORD:"Cambiar contraseña"})}]),angular.module("forms").controller("AdminFormController",["$rootScope","$window","$scope","$stateParams","$state","Forms","CurrentForm","$http","$uibModal","myForm","$filter",function(a,b,c,d,e,f,g,h,i,j,k){c.activePill=0,c.copied=!1,c.onCopySuccess=function(a){c.copied=!0},c=a,c.animationsEnabled=!0,c.myform=j,a.saveInProgress=!1,c.oldForm=_.cloneDeep(c.myform),g.setForm(c.myform),c.formURL="/#!/forms/"+c.myform._id,c.myform.isLive?b.subdomainsDisabled===!0?c.actualFormURL=window.location.protocol+"//"+window.location.host+"/view"+c.formURL:window.location.host.split(".").length<3?c.actualFormURL=window.location.protocol+"//"+c.myform.admin.username+"."+window.location.host+c.formURL:c.actualFormURL=window.location.protocol+"//"+c.myform.admin.username+"."+window.location.host.split(".").slice(1,3).join(".")+c.formURL:c.actualFormURL=window.location.protocol+"//"+window.location.host+c.formURL;var l=c.refreshFrame=function(){document.getElementById("iframe")&&document.getElementById("iframe").contentWindow.location.reload()};c.tabData=[{heading:k("translate")("CONFIGURE_TAB"),templateName:"configure"}],c.designTabActive=!1,c.deactivateDesignTab=function(){c.designTabActive=!1},c.activateDesignTab=function(){c.designTabActive=!0},c.setForm=function(a){c.myform=a},a.resetForm=function(){c.myform=f.get({formId:d.formId})},c.openDeleteModal=function(){c.deleteModal=i.open({animation:c.animationsEnabled,templateUrl:"formDeleteModal.html",controller:"AdminFormController",resolve:{myForm:function(){return c.myform}}}),c.deleteModal.result.then(function(a){c.selected=a})},c.cancelDeleteModal=function(){c.deleteModal&&c.deleteModal.dismiss("cancel")},c.removeCurrentForm=function(){if(c.deleteModal&&c.deleteModal.opened){c.deleteModal.close();var a=c.myform._id;if(!a)throw new Error("Error - removeCurrentForm(): $scope.myform._id does not exist");h["delete"]("/forms/"+a).then(function(a){e.go("listForms",{},{reload:!0})},function(a){console.error(a)})}},c.updateDesign=function(a,b,d,e){c.update(a,b,d,e,function(){l()})},c.update=a.update=function(b,d,e,f,g){var i=!0;if(b||(i=!a.saveInProgress),i){var j=null;if(b||(a.saveInProgress=!0),e){for(var k=new RegExp("^[0-9a-fA-F]{24}$"),l=0;l]+/i,test:function(a){return!this.regExp.test(a)}},b.openDeleteModal=function(a){b.deleteModal=h.open({animation:b.animationsEnabled,templateUrl:"deleteModalListForms.html",controller:["$uibModalInstance","items","$scope",function(a,b,c){c.content=b,c.cancel=c.cancelDeleteModal,c.deleteForm=function(){c.$parent.removeForm(b.formIndex)}}],resolve:{items:function(){return{currFormTitle:b.myforms[a].title,formIndex:a}}}})},b.cancelDeleteModal=function(){b.deleteModal&&b.deleteModal.dismiss("cancel")},b.openCreateModal=function(){b.showCreateModal||(b.showCreateModal=!0)},b.closeCreateModal=function(){b.showCreateModal&&(b.showCreateModal=!1)},b.setForm=function(a){b.myform=a},b.goToWithId=function(a,b){d.go(a,{formId:b},{reload:!0})},b.duplicateForm=function(a){var c=_.cloneDeep(b.myforms[a]);delete c._id,g.post("/forms",{form:c}).success(function(c,d,e){b.myforms.splice(a+1,0,c)}).error(function(a){console.error(a),null===a&&(b.error=a.data.message)})},b.createNewForm=function(){var a={};a.title=b.forms.createForm.title.$modelValue,a.language=b.forms.createForm.language.$modelValue,b.forms.createForm.$valid&&b.forms.createForm.$dirty&&g.post("/forms",{form:a}).success(function(a,c,d){b.goToWithId("viewForm.create",a._id+"")}).error(function(a){console.error(a),b.error=a.data.message})},b.removeForm=function(a){if(a>=b.myforms.length||a<0)throw new Error("Error: form_index in removeForm() must be between 0 and "+b.myforms.length-1);g["delete"]("/forms/"+b.myforms[a]._id).success(function(c,d,e){b.myforms.splice(a,1),b.cancelDeleteModal()}).error(function(a){console.error(a)})}}]),angular.module("forms").directive("configureFormDirective",["$rootScope","$http","Upload","CurrentForm",function(a,b,c,d){return{templateUrl:"modules/forms/admin/views/directiveViews/form/configure-form.client.view.html",restrict:"E",scope:{myform:"=",user:"=",pdfFields:"@",formFields:"@"},controller:["$scope",function(b){b.log="",b.languages=a.languages,b.resetForm=a.resetForm,b.update=a.update}]}}]),angular.module("forms").directive("editFormDirective",["$rootScope","FormFields","$uibModal",function(a,b,c){return{templateUrl:"modules/forms/admin/views/directiveViews/form/edit-form.client.view.html",restrict:"E",transclude:!0,scope:{myform:"="},controller:["$scope",function(d){var e;d.sortableOptions={appendTo:".dropzone",forceHelperSize:!0,forcePlaceholderSize:!0,update:function(a,b){d.update(!1,d.myform,!0,!1,function(a){})}},d.openEditModal=function(a,b,e){d.editFieldModal=c.open({animation:!0,templateUrl:"editFieldModal.html",windowClass:"edit-modal-window",controller:["$uibModalInstance","$scope",function(c,d){d.field=a,d.showLogicJump=!1,d.isEdit=b,d.showAddOptions=function(a){return"dropdown"===d.field.fieldType||"checkbox"===d.field.fieldType||"radio"===d.field.fieldType},d.validShapes=["Heart","Star","thumbs-up","thumbs-down","Circle","Square","Check Circle","Smile Outlined","Hourglass","bell","Paper Plane","Comment","Trash"],d.addOption=function(){if("checkbox"===d.field.fieldType||"dropdown"===d.field.fieldType||"radio"===d.field.fieldType){d.field.fieldOptions||(d.field.fieldOptions=[]);var a=d.field.fieldOptions.length+1,b={option_id:Math.floor(1e5*Math.random()),option_title:"Option "+a,option_value:"Option "+a};d.field.fieldOptions.push(b)}},d.deleteOption=function(a){if("checkbox"===d.field.fieldType||"dropdown"===d.field.fieldType||"radio"===d.field.fieldType)for(var b=0;b',restrict:"E",scope:{typeName:"@"},controller:["$scope",function(a){var b={textfield:"fa fa-pencil-square-o",dropdown:"fa fa-th-list",date:"fa fa-calendar",checkbox:"fa fa-check-square-o",radio:"fa fa-dot-circle-o",email:"fa fa-envelope-o",textarea:"fa fa-pencil-square",legal:"fa fa-legal",file:"fa fa-cloud-upload",rating:"fa fa-star-half-o",link:"fa fa-link",scale:"fa fa-sliders",stripe:"fa fa-credit-card",statement:"fa fa-quote-left",yes_no:"fa fa-toggle-on",number:"fa fa-slack"};a.typeIcon=b[a.typeName]}]}});var __indexOf=[].indexOf||function(a){for(var b=0,c=this.length;b=0&&(c=c+b+".html"),d.get(c)};return{template:"{{field.title}}
",restrict:"E",scope:{field:"=",required:"&",design:"=",index:"=",forms:"="},link:function(a,d){c.chooseDefaultOption=a.chooseDefaultOption=function(b){"yes_no"===b?a.field.fieldValue="true":"rating"===b?a.field.fieldValue=0:"radio"===a.field.fieldType?a.field.fieldValue=a.field.fieldOptions[0].option_value:"legal"===b&&(a.field.fieldValue="true",c.nextField())},a.nextField=c.nextField,a.setActiveField=c.setActiveField,"date"===a.field.fieldType&&(a.dateOptions={changeYear:!0,changeMonth:!0,altFormat:"mm/dd/yyyy",yearRange:"1900:-0",defaultDate:0});var e=a.field.fieldType;if("number"===a.field.fieldType||"textfield"===a.field.fieldType||"email"===a.field.fieldType||"link"===a.field.fieldType){switch(a.field.fieldType){case"textfield":a.input_type="text";break;case"email":a.input_type="email",a.placeholder="joesmith@example.com";break;case"number":a.input_type="text",a.validateRegex=/^-?\d+$/;break;default:a.input_type="url",a.placeholder="http://example.com"}e="textfield"}var g=f(e);d.html(g).show();b(d.contents())(a)}}}]),angular.module("view-form").directive("onEnterKey",["$rootScope",function(a){return{restrict:"A",link:function(b,c,d){c.bind("keydown keypress",function(b){var c=b.which||b.keyCode,e=!1;null!==d.onEnterKeyDisabled&&(e=d.onEnterKeyDisabled),13!==c||b.shiftKey||e||(b.preventDefault(),a.$apply(function(){a.$eval(d.onEnterKey)}))})}}}]).directive("onTabKey",["$rootScope",function(a){return{restrict:"A",link:function(b,c,d){c.bind("keyup keypress",function(b){var c=b.which||b.keyCode;9!==c||b.shiftKey||(b.preventDefault(),a.$apply(function(){a.$eval(d.onTabKey)}))})}}}]).directive("onEnterOrTabKey",["$rootScope",function(a){return{restrict:"A",link:function(b,c,d){c.bind("keydown keypress",function(b){var c=b.which||b.keyCode;13!==c&&9!==c||b.shiftKey||(b.preventDefault(),a.$apply(function(){a.$eval(d.onEnterOrTabKey)}))})}}}]).directive("onTabAndShiftKey",["$rootScope",function(a){return{restrict:"A",link:function(b,c,d){c.bind("keydown keypress",function(b){var c=b.which||b.keyCode;9===c&&b.shiftKey&&(console.log("onTabAndShiftKey"),b.preventDefault(),a.$apply(function(){a.$eval(d.onTabAndShiftKey)}))})}}}]),angular.module("view-form").directive("onFinishRender",["$rootScope","$timeout",function(a,b){return{restrict:"A",link:function(b,c,d){if(c.attr("ng-repeat")||c.attr("data-ng-repeat")){var e=d.onFinishRender||"ngRepeat";b.$first&&!b.$last?b.$evalAsync(function(){a.$broadcast(e+" Started")}):b.$last&&b.$evalAsync(function(){a.$broadcast(e+" Finished")})}}}}]),jsep.addBinaryOp("contains",10),jsep.addBinaryOp("!contains",10),jsep.addBinaryOp("begins",10),jsep.addBinaryOp("!begins",10),jsep.addBinaryOp("ends",10),jsep.addBinaryOp("!ends",10),angular.module("view-form").directive("submitFormDirective",["$http","TimeCounter","$filter","$rootScope","SendVisitorData","$translate","$timeout",function(a,b,c,d,e,f,g){return{templateUrl:"form_modules/forms/base/views/directiveViews/form/submit-form.client.view.html",restrict:"E",scope:{myform:"=",ispreview:"="},controller:["$document","$window","$scope",function(f,g,h){var i=!1,j="submit_field";h.forms={},h.ispreview&&b.restartClock();var k=h.myform.visible_form_fields.filter(function(a){return"statement"!==a.fieldType}).length,l=c("formValidity")(h.myform);h.translateAdvancementData={done:l,total:k,answers_not_completed:k-l},h.reloadForm=function(){h.myform.submitted=!1,h.myform.form_fields=_.chain(h.myform.visible_form_fields).map(function(a){return a.fieldValue="",a}).value(),h.loading=!1,h.error="",h.selected={_id:"",index:0},h.setActiveField(h.myform.visible_form_fields[0]._id,0,!1),b.restartClock()};var m=function(a){var b=a.logicJump;if(b.enabled&&b.expressionString&&b.valueB&&a.fieldValue){var c,d,e=jsep(b.expressionString);if("field"===e.left.name?(c=a.fieldValue,d=b.valueB):(c=b.valueB,d=a.fieldValue),"number"===a.fieldType||"scale"===a.fieldType||"rating"===a.fieldType)switch(e.operator){case"==":return parseInt(c)===parseInt(d);case"!==":return parseInt(c)!==parseInt(d);case">":return parseInt(c)>parseInt(d);case">=":return parseInt(c)>parseInt(d);case"<":return parseInt(c)-1;case"!contains":return!(c.indexOf(d)>-1);case"begins":return c.startsWith(d);case"!begins":return!c.startsWith(d);case"ends":return c.endsWith(d);case"!ends":return c.endsWith(d);default:return!1}}},n=function(){
-if(null===h.selected)throw console.error("current active field is null"),new Error("current active field is null");return h.selected._id===j?h.myform.form_fields.length-1:h.selected.index};h.isActiveField=function(a){return h.selected._id===a._id},h.setActiveField=d.setActiveField=function(a,b,d){if(null!==h.selected&&(a||null!==b)){if(a){if(null===b){b=h.myform.visible_form_fields.length;for(var e=0;e .field-directive:nth-of-type("+String(h.myform.visible_form_fields.length-1)+")"),m=$(l).height(),n=k-g-1.2*m,o=.9;h.selected.index===h.myform.visible_form_fields.length?bn?(a=h.selected.index+1,h.setActiveField(j,a,!1)):ef*o&&(a=h.selected.index-1,h.setActiveField(null,a,!1))}h.$apply()},d.nextField=h.nextField=function(){if(h.selected&&h.selected.index>-1)if(h.selected._id!==j){var a=h.myform.visible_form_fields[h.selected.index];a.logicJump&&a.logicJump.jumpTo&&m(a)?h.setActiveField(a.logicJump.jumpTo,null,!0):h.selected.index0&&h.setActiveField(null,a,!0)},d.goToInvalid=h.goToInvalid=function(){var a=$(".row.field-directive .ng-invalid.focusOn, .row.field-directive .ng-untouched.focusOn:not(.ng-valid)").first().parents(".row.field-directive").first().attr("data-id");h.setActiveField(a,null,!0)},h.exitStartPage=function(){h.myform.startPage.showStart=!1,h.myform.visible_form_fields.length>0&&(h.selected._id=h.myform.visible_form_fields[0]._id)};var o=function(){var a=new MobileDetect(window.navigator.userAgent),b="other";return a.tablet()?b="tablet":a.mobile()?b="mobile":a.is("bot")||(b="desktop"),{type:b,name:window.navigator.platform}},p=function(){$.ajaxSetup({async:!1});var a=$.getJSON("https://freegeoip.net/json/").responseJSON;return $.ajaxSetup({async:!0}),a&&a.ip||(a={ip:"Adblocker"}),{ipAddr:a.ip,geoLocation:{City:a.city,Country:a.country_name}}};d.submitForm=h.submitForm=function(){if(h.forms.myForm.$invalid)return void h.goToInvalid();var d=b.stopClock();h.loading=!0;var f=_.cloneDeep(h.myform),g=o();f.device=g;var i=p();f.ipAddr=i.ipAddr,f.geoLocation=i.geoLocation,f.timeElapsed=d,f.percentageComplete=c("formValidity")(h.myform)/h.myform.visible_form_fields.length*100,delete f.endPage,delete f.isLive,delete f.provider,delete f.startPage,delete f.visible_form_fields,delete f.analytics,delete f.design,delete f.submissions,delete f.submitted;for(var j=0;j"),a.put("modules/forms/admin/views/admin-form.client.view.html",''),a.put("modules/forms/admin/views/list-forms.client.view.html",''),a.put("modules/forms/admin/views/adminTabs/analyze.html"," "),a.put("modules/forms/admin/views/adminTabs/configure.html"," "),a.put("modules/forms/admin/views/adminTabs/create.html"," "),a.put("modules/forms/admin/views/directiveViews/form/configure-form.client.view.html",''),a.put("modules/forms/admin/views/directiveViews/form/edit-form.client.view.html",''),
+a.put("modules/forms/admin/views/directiveViews/form/edit-submissions-form.client.view.html","{{ 'TOTAL_VIEWS' | translate }}
{{ 'RESPONSES' | translate }}
{{ 'COMPLETION_RATE' | translate }}
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{myform.analytics.visitors.length}}
{{myform.analytics.submissions}}
{{myform.analytics.conversionRate | number:0}}%
{{ AverageTimeElapsed | secondsToDateTime | date:'mm:ss'}}
{{ 'DESKTOP_AND_LAPTOP' | translate }}
{{ 'TABLETS' | translate }}
{{ 'PHONES' | translate }}
{{ 'OTHER' | translate }}
{{ 'UNIQUE_VISITS' | translate }}
{{DeviceStatistics.desktop.visits}}
{{ 'UNIQUE_VISITS' | translate }}
{{DeviceStatistics.tablet.visits}}
{{ 'UNIQUE_VISITS' | translate }}
{{DeviceStatistics.tablet.visits}}
{{ 'UNIQUE_VISITS' | translate }}
{{DeviceStatistics.other.visits}}
{{ 'RESPONSES' | translate }}
{{DeviceStatistics.desktop.responses}}
{{ 'RESPONSES' | translate }}
{{DeviceStatistics.tablet.responses}}
{{ 'RESPONSES' | translate }}
{{DeviceStatistics.phone.responses}}
{{ 'RESPONSES' | translate }}
{{DeviceStatistics.other.responses}}
{{ 'COMPLETION_RATE' | translate }}
{{DeviceStatistics.desktop.completion}}%
{{ 'COMPLETION_RATE' | translate }}
{{DeviceStatistics.tablet.completion}}%
{{ 'COMPLETION_RATE' | translate }}
{{DeviceStatistics.phone.completion}}%
{{ 'COMPLETION_RATE' | translate }}
{{DeviceStatistics.other.completion}}%
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{DeviceStatistics.desktop.average_time | secondsToDateTime | date:'mm:ss'}}
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{DeviceStatistics.tablet.average_time | secondsToDateTime | date:'mm:ss'}}
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{DeviceStatistics.phone.average_time | secondsToDateTime | date:'mm:ss'}}
{{ 'AVERAGE_TIME_TO_COMPLETE' | translate }}
{{DeviceStatistics.other.average_time | secondsToDateTime | date:'mm:ss'}}
{{ 'FIELD_TITLE' | translate }}
{{ 'FIELD_VIEWS' | translate }}
{{ 'FIELD_RESPONSES' | translate }}
{{ 'FIELD_DROPOFF' | translate }}
{{fieldStats.field.title}}
{{fieldStats.totalViews}}
{{fieldStats.responses}}
{{fieldStats.continueRate}}%
{{ 'DELETE_SELECTED' | translate }}
{{ 'EXPORT_TO_EXCEL' | translate }}
{{ 'EXPORT_TO_CSV' | translate }}
{{ 'EXPORT_TO_JSON' | translate }}
"),a.put("modules/users/views/authentication/access-denied.client.view.html",'{{ \'ACCESS_DENIED_TEXT\' | translate }} '),a.put("modules/users/views/authentication/signin.client.view.html",''),a.put("modules/users/views/authentication/signup-success.client.view.html",'{{ \'SUCCESS_HEADER\' | translate }} {{ \'SUCCESS_TEXT\' | translate }} {{ \'NOT_ACTIVATED_YET\' | translate }} {{ \'BEFORE_YOU_CONTINUE\' | translate }} team@tellform.com
'),a.put("modules/users/views/authentication/signup.client.view.html",''),a.put("modules/users/views/password/forgot-password.client.view.html",''),a.put("modules/users/views/password/reset-password-invalid.client.view.html",'{{ \'PASSWORD_RESET_INVALID\' | translate }} '),a.put("modules/users/views/password/reset-password-success.client.view.html",'{{ \'PASSWORD_RESET_SUCCESS\' | translate }} '),a.put("modules/users/views/password/reset-password.client.view.html",'{{ \'RESET_PASSWORD\' | translate }} '),a.put("modules/users/views/settings/change-password.client.view.html",'{{ \'CHANGE_PASSWORD\' | translate }} '),a.put("modules/users/views/settings/edit-profile.client.view.html",'{{ \'EDIT_PROFILE\' | translate }} '),a.put("modules/users/views/settings/social-accounts.client.view.html",'{{ \'CONNECTED_SOCIAL_ACCOUNTS\' | translate }}: {{ \'CONNECT_OTHER_SOCIAL_ACCOUNTS\' | translate }} '),a.put("modules/users/views/verify/resend-verify-email.client.view.html",'{{ \'VERIFICATION_EMAIL_SENT\' | translate }} {{ \'VERIFICATION_EMAIL_SENT_TO\' | translate }} {{username}}. {{ \'NOT_ACTIVATED_YET\' | translate }} {{ \'CHECK_YOUR_EMAIL\' | translate }} polydaic@gmail.com
'),a.put("modules/users/views/verify/verify-account.client.view.html",'{{ \'VERIFY_SUCCESS\' | translate }} {{ \'VERIFY_ERROR\' | translate }} '),a.put("form_modules/forms/base/views/directiveViews/entryPage/startPage.html",'
{{pageData.introTitle}} {{pageData.introParagraph}}
'),a.put("form_modules/forms/base/views/directiveViews/field/date.html",'{{index+1}} {{field.title}} {{ \'OPTIONAL\' | translate }} {{field.description}}
'),a.put("form_modules/forms/base/views/directiveViews/field/dropdown.html",'{{index+1}} {{field.title}} {{ \'OPTIONAL\' | translate }} {{field.description}}
'),a.put("form_modules/forms/base/views/directiveViews/field/hidden.html"," "),a.put("form_modules/forms/base/views/directiveViews/field/legal.html",'{{index+1}} {{field.title}} {{ \'OPTIONAL\' | translate }} {{field.description}}
'),a.put("form_modules/forms/base/views/directiveViews/field/radio.html",'{{index+1}} {{field.title}} {{ \'OPTIONAL\' | translate }} {{field.description}}
'),a.put("form_modules/forms/base/views/directiveViews/field/rating.html",'{{index+1}} {{field.title}} {{ \'OPTIONAL\' | translate }} {{field.description}}
'),a.put("form_modules/forms/base/views/directiveViews/field/statement.html",'
{{field.title}} {{field.description}}
'),a.put("form_modules/forms/base/views/directiveViews/field/textarea.html",'{{index+1}} {{field.title}} {{ \'OPTIONAL\' | translate }} {{ \'NEWLINE\' | translate }} {{field.description}}
{{ \'ADD_NEW_LINE_INSTR\' | translate }}
{{ \'OK\' | translate }} {{ \'ENTER\' | translate }}
'),
+a.put("form_modules/forms/base/views/directiveViews/field/textfield.html",'{{index+1}} {{field.title}} ({{ \'OPTIONAL\' | translate }}) {{field.description}}
{{ \'ERROR\' | translate }}: {{ \'ERROR_EMAIL_INVALID\' | translate }} {{ \'ERROR_NOT_A_NUMBER\' | translate }} {{ \'ERROR_URL_INVALID\' | translate }}
{{ \'OK\' | translate }} {{ \'ENTER\' | translate }}
'),a.put("form_modules/forms/base/views/directiveViews/field/yes_no.html",'{{index+1}} {{field.title}} {{ \'OPTIONAL\' | translate }} {{field.description}}
'),a.put("form_modules/forms/base/views/directiveViews/form/submit-form.client.view.html",''),a.put("form_modules/forms/base/views/form-not-found.client.view.html",''),a.put("form_modules/forms/base/views/form-unauthorized.client.view.html",''),a.put("form_modules/forms/base/views/submit-form.client.view.html","")}]),ApplicationConfiguration.registerModule("core",["users"]),ApplicationConfiguration.registerModule("forms",["ngFileUpload","ui.router.tabs","ui.date","ui.sortable","angular-input-stars","users","ngclipboard"]),ApplicationConfiguration.registerModule("users"),angular.module("core").config(["$stateProvider","$urlRouterProvider",function(a,b,c){b.otherwise("/forms")}]),angular.module(ApplicationConfiguration.applicationModuleName).run(["$rootScope","Auth","$state","$stateParams",function(a,b,c,d){a.$state=c,a.$stateParams=d,a.$on("$stateChangeSuccess",function(a,d,e,f){c.previous=f;var g=["home","signin","resendVerifyEmail","verify","signup","signup-success","forgot","reset-invalid","reset","reset-success"];g.indexOf(d.name)>0?b.isAuthenticated()&&(a.preventDefault(),c.go("listForms")):"access_denied"===d.name||b.isAuthenticated()||"submitForm"===d.name||(a.preventDefault(),c.go("listForms"))})}]),angular.module(ApplicationConfiguration.applicationModuleName).run(["$rootScope","Auth","User","Authorizer","$state","$stateParams",function(a,b,c,d,e,f){a.$on("$stateChangeStart",function(a,f){var g,h,i;h=f&&f.data&&f.data.permissions?f.data.permissions:null,b.ensureHasCurrentUser(c),i=b.currentUser,i&&(g=new d(i),null!==h&&(g.canAccess(h)||(a.preventDefault(),e.go("access_denied"))))})}]),angular.module("core").controller("HeaderController",["$rootScope","$scope","Menus","$state","Auth","User","$window","$translate","$locale",function(a,b,c,d,e,f,g,h,i){a.signupDisabled=g.signupDisabled,b.user=a.user=e.ensureHasCurrentUser(f),b.authentication=a.authentication=e,a.languages=b.languages=["en","fr","es","it","de"],b.authentication.isAuthenticated()?a.language=b.user.language:a.language=i.id.substring(0,2),h.use(a.language),b.isCollapsed=!1,a.hideNav=!1,b.menu=c.getMenu("topbar"),b.signout=function(){var c=f.logout();c.then(function(){e.logout(),e.ensureHasCurrentUser(f),b.user=a.user=null,d.go("listForms"),d.reload()},function(a){console.error("Logout Failed: "+a)})},b.toggleCollapsibleMenu=function(){b.isCollapsed=!b.isCollapsed},b.$on("$stateChangeSuccess",function(c,d,e,f,g){b.isCollapsed=!1,a.hideNav=!1,angular.isDefined(d.data)&&angular.isDefined(d.data.hideNav)&&(a.hideNav=d.data.hideNav)})}]),angular.module("core").service("Menus",[function(){this.defaultRoles=["*"],this.menus={};var a=function(a){if(a){if(~this.roles.indexOf("*"))return!0;for(var b in a.roles)for(var c in this.roles)if(this.roles[c]===a.roles[b])return!0;return!1}return this.isPublic};this.validateMenuExistance=function(a){if(a&&a.length){if(this.menus[a])return!0;throw new Error("Menu does not exists")}throw new Error("MenuId was not provided")},this.getMenu=function(a){return this.validateMenuExistance(a),this.menus[a]},this.addMenu=function(b,c,d){return this.menus[b]={isPublic:c||!1,roles:d||this.defaultRoles,items:[],shouldRender:a},this.menus[b]},this.removeMenu=function(a){this.validateMenuExistance(a),delete this.menus[a]},this.addMenuItem=function(b,c,d,e,f,g,h,i){return this.validateMenuExistance(b),this.menus[b].items.push({title:c,link:d,menuItemType:e||"item",menuItemClass:e,uiRoute:f||"/"+d,isPublic:null===g||"undefined"==typeof g?this.menus[b].isPublic:g,roles:null===h||"undefined"==typeof h?this.menus[b].roles:h,position:i||0,items:[],shouldRender:a}),this.menus[b]},this.addSubMenuItem=function(b,c,d,e,f,g,h,i){this.validateMenuExistance(b);for(var j in this.menus[b].items)this.menus[b].items[j].link===c&&this.menus[b].items[j].items.push({title:d,link:e,uiRoute:f||"/"+e,isPublic:null===g||"undefined"==typeof g?this.menus[b].items[j].isPublic:g,roles:null===h||"undefined"==typeof h?this.menus[b].items[j].roles:h,position:i||0,shouldRender:a});return this.menus[b]},this.removeMenuItem=function(a,b){this.validateMenuExistance(a);for(var c in this.menus[a].items)this.menus[a].items[c].link===b&&this.menus[a].items.splice(c,1);return this.menus[a]},this.removeSubMenuItem=function(a,b){this.validateMenuExistance(a);for(var c in this.menus[a].items)for(var d in this.menus[a].items[c].items)this.menus[a].items[c].items[d].link===b&&this.menus[a].items[c].items.splice(d,1);return this.menus[a]},this.addMenu("topbar",!1,["*"]),this.addMenu("bottombar",!1,["*"])}]),angular.module("core").factory("subdomain",["$location",function(a){var b=a.host();return b.indexOf(".")<0?null:b.split(".")[0]}]),angular.module("forms").run(["Menus",function(a){a.addMenuItem("topbar","My Forms","forms","","/forms",!1)}]).filter("secondsToDateTime",[function(){return function(a){return new Date(1970,0,1).setSeconds(a)}}]).filter("formValidity",[function(){return function(a){if(a&&a.form_fields&&a.visible_form_fields){var b=Object.keys(a),c=(b.filter(function(a){return"$"!==a[0]}),a.form_fields),d=c.filter(function(a){return"object"==typeof a&&"statement"!==a.fieldType&&"rating"!==a.fieldType?!!a.fieldValue:"rating"===a.fieldType||void 0}).length;return d-(a.form_fields.length-a.visible_form_fields.length)}return 0}}]).filter("trustSrc",["$sce",function(a){return function(b){return a.trustAsResourceUrl(b)}}]).config(["$provide",function(a){a.decorator("accordionDirective",["$delegate",function(a){var b=a[0];return b.replace=!0,a}])}]),angular.module("forms").config(["$stateProvider",function(a){a.state("listForms",{url:"/forms",templateUrl:"modules/forms/admin/views/list-forms.client.view.html",resolve:{Forms:"GetForms",myForms:["GetForms","$q",function(a,b){var c=b.defer();return a.query(function(a){c.resolve(a)}),c.promise}]},controller:"ListFormsController",controllerAs:"ctrl"}).state("submitForm",{url:"/forms/:formId",templateUrl:"/static/form_modules/forms/base/views/submit-form.client.view.html",data:{hideNav:!0},resolve:{Forms:"GetForms",myForm:["GetForms","$stateParams","$q",function(a,b,c){var d=c.defer();return a.get({formId:b.formId},function(a){d.resolve(a)}),d.promise}]},controller:"SubmitFormController",controllerAs:"ctrl"}).state("viewForm",{url:"/forms/:formId/admin",templateUrl:"modules/forms/admin/views/admin-form.client.view.html",data:{permissions:["editForm"]},resolve:{GetForms:"GetForms",myForm:["GetForms","$stateParams","$q",function(a,b,c){var d=c.defer();return a.get({formId:b.formId},function(a){d.resolve(a)}),d.promise}]},controller:"AdminFormController"}).state("viewForm.configure",{url:"/configure",templateUrl:"modules/forms/admin/views/adminTabs/configure.html"}).state("viewForm.design",{url:"/design",templateUrl:"modules/forms/admin/views/adminTabs/design.html"}).state("viewForm.analyze",{url:"/analyze",templateUrl:"modules/forms/admin/views/adminTabs/analyze.html"}).state("viewForm.create",{url:"/create",templateUrl:"modules/forms/admin/views/adminTabs/create.html"})}]),angular.module("forms").factory("GetForms",["$resource","FORM_URL",function(a,b){return a(b,{formId:"@_id"},{query:{method:"GET",isArray:!0},get:{method:"GET",transformResponse:function(a,b){var c=angular.fromJson(a);return c.visible_form_fields=_.filter(c.form_fields,function(a){return a.deletePreserved===!1}),c}},update:{method:"PUT"},save:{method:"POST"}})}]),angular.module("users").config(["$httpProvider",function(a){a.interceptors.push(["$q","$location",function(a,b){return{responseError:function(c){return"/users/me"!==b.path()&&c.config&&"/users/me"!==c.config.url&&(401===c.status?(b.nextAfterLogin=b.path(),b.path("/signin")):403===c.status&&b.path("/access_denied")),a.reject(c)}}}])}]),angular.module("users").config(["$stateProvider",function(a){var b=function(a,b,c,d,e){var f=a.defer();return e.currentUser&&e.currentUser.email?b(f.resolve):e.currentUser=d.getCurrent(function(){e.login(),b(f.resolve())},function(){e.logout(),b(f.reject()),c.go("signin",{reload:!0})}),f.promise};b.$inject=["$q","$timeout","$state","User","Auth"];var c=function(a,b,c){var d=c.defer();return b(a.signupDisabled?d.reject():d.resolve()),d.promise};c.$inject=["$window","$timeout","$q"],a.state("profile",{resolve:{loggedin:b},url:"/settings/profile",templateUrl:"modules/users/views/settings/edit-profile.client.view.html"}).state("password",{resolve:{loggedin:b},url:"/settings/password",templateUrl:"modules/users/views/settings/change-password.client.view.html"}).state("accounts",{resolve:{loggedin:b},url:"/settings/accounts",templateUrl:"modules/users/views/settings/social-accounts.client.view.html"}).state("signup",{resolve:{isDisabled:c},url:"/signup",templateUrl:"modules/users/views/authentication/signup.client.view.html"}).state("signup-success",{resolve:{isDisabled:c},url:"/signup-success",templateUrl:"modules/users/views/authentication/signup-success.client.view.html"}).state("signin",{url:"/signin",templateUrl:"modules/users/views/authentication/signin.client.view.html"}).state("access_denied",{url:"/access_denied",templateUrl:"modules/users/views/authentication/access-denied.client.view.html"}).state("verify",{resolve:{isDisabled:c},url:"/verify/:token",templateUrl:"modules/users/views/verify/verify-account.client.view.html"}).state("resendVerifyEmail",{resolve:{isDisabled:c},url:"/verify",templateUrl:"modules/users/views/verify/resend-verify-email.client.view.html"}).state("forgot",{url:"/password/forgot",templateUrl:"modules/users/views/password/forgot-password.client.view.html"}).state("reset-invalid",{url:"/password/reset/invalid",templateUrl:"modules/users/views/password/reset-password-invalid.client.view.html"}).state("reset-success",{url:"/password/reset/success",templateUrl:"modules/users/views/password/reset-password-success.client.view.html"}).state("reset",{url:"/password/reset/:token",templateUrl:"modules/users/views/password/reset-password.client.view.html"})}]),angular.module("users").controller("AuthenticationController",["$scope","$location","$state","$rootScope","User","Auth","$translate","$window",function(a,b,c,d,e,f,g,h){g.use(h.locale),a=d,a.credentials={},a.error="",a.forms=[],a.signin=function(){console.log(a.forms),e.login(a.credentials).then(function(b){f.login(b),a.user=d.user=f.ensureHasCurrentUser(e),"home"!==c.previous.name&&"verify"!==c.previous.name&&""!==c.previous.name?c.go(c.previous.name):c.go("listForms")},function(b){d.user=f.ensureHasCurrentUser(e),a.user=d.user,a.error=b,console.error("loginError: "+b)})},a.signup=function(){return"admin"===a.credentials?void(a.error="Username cannot be 'admin'. Please pick another username."):void e.signup(a.credentials).then(function(a){c.go("signup-success")},function(b){console.error(b),b?(a.error=b,console.error(b)):console.error("No response received")})}}]),angular.module("users").controller("PasswordController",["$scope","$stateParams","$state","User","$translate","$window",function(a,b,c,d,e,f){e.use(f.locale),a.error="",a.askForPasswordReset=function(){d.askForPasswordReset(a.credentials).then(function(b){a.success=b.message,a.error=null,a.credentials=null},function(b){a.error=b,a.success=null,a.credentials=null})},a.resetUserPassword=function(){a.success=a.error=null,d.resetPassword(a.passwordDetails,b.token).then(function(b){console.log(b.message),a.success=b.message,a.error=null,a.passwordDetails=null,c.go("reset-success")},function(b){a.error=b.message||b,a.success=null,a.passwordDetails=null})}}]),angular.module("users").controller("SettingsController",["$scope","$rootScope","$http","$state","Users","Auth",function(a,b,c,d,e,f){a.user=f.currentUser,a.hasConnectedAdditionalSocialAccounts=function(b){for(var c in a.user.additionalProvidersData)return!0;return!1},a.cancel=function(){a.user=f.currentUser},a.isConnectedSocialAccount=function(b){return a.user.provider===b||a.user.additionalProvidersData&&a.user.additionalProvidersData[b]},a.removeUserSocialAccount=function(b){a.success=a.error=null,c["delete"]("/users/accounts",{params:{provider:b}}).success(function(b){a.success=!0,a.error=null,a.user=b}).error(function(b){a.success=null,a.error=b.message})},a.updateUserProfile=function(b){if(b){a.success=a.error=null;var c=new e(a.user);c.$update(function(b){a.success=!0,a.error=null,a.user=b},function(b){a.success=null,a.error=b.data.message})}else a.submitted=!0},a.changeUserPassword=function(){a.success=a.error=null,c.post("/users/password",a.passwordDetails).success(function(b){a.success=!0,a.error=null,a.passwordDetails=null}).error(function(b){a.success=null,a.error=b.message})}}]),angular.module("users").controller("VerifyController",["$scope","$state","$rootScope","User","Auth","$stateParams","$translate","$window",function(a,b,c,d,e,f,g,h){g.use(h.locale),a.isResetSent=!1,a.credentials={},a.error="",a.resendVerifyEmail=function(){d.resendVerifyEmail(a.credentials.email).then(function(b){a.success=b.message,a.error=null,a.credentials=null,a.isResetSent=!0},function(b){a.error=b,a.success=null,a.credentials.email=null,a.isResetSent=!1})},a.validateVerifyToken=function(){f.token&&(console.log(f.token),d.validateVerifyToken(f.token).then(function(b){a.success=b.message,a.error=null,a.isResetSent=!0,a.credentials.email=null},function(b){a.isResetSent=!1,a.success=null,a.error=b,a.credentials.email=null}))}}]),angular.module("users").factory("Auth",["$window",function(a){var b={isLoggedIn:!1},c={_currentUser:null,get currentUser(){return this._currentUser},ensureHasCurrentUser:function(d){return c._currentUser&&c._currentUser.username?c._currentUser:a.user?(c._currentUser=a.user,c._currentUser):void d.getCurrent().then(function(d){return c._currentUser=d,b.isLoggedIn=!0,a.user=c._currentUser,c._currentUser},function(d){return b.isLoggedIn=!1,c._currentUser=null,a.user=null,null})},isAuthenticated:function(){return!!c._currentUser},getUserState:function(){return b},login:function(a){b.isLoggedIn=!0,c._currentUser=a},logout:function(){a.user=null,b.isLoggedIn=!1,c._currentUser=null}};return c}]),angular.module("users").service("Authorizer",["APP_PERMISSIONS","USER_ROLES",function(a,b){return function(c){return{canAccess:function(d){var e,f,g;for(angular.isArray(d)||(d=[d]),e=0,f=d.length;e-1;case a.viewPrivateForm:case a.editForm:return c.roles.indexOf(b.admin)>-1||c.roles.indexOf(b.normal)>-1}}return!1}}}}]),angular.module("users").factory("User",["$window","$q","$timeout","$http","$state",function(a,b,c,d,e){var f={getCurrent:function(){var a=b.defer();return d.get("/users/me").success(function(b){a.resolve(b)}).error(function(){a.reject("User's session has expired")}),a.promise},login:function(a){var c=b.defer();return d.post("/auth/signin",a).then(function(a){c.resolve(a.data)},function(a){c.reject(a.data.message||a.data)}),c.promise},logout:function(){var a=b.defer();return d.get("/auth/signout").then(function(b){a.resolve(null)},function(b){a.reject(b.data.message||b.data)}),a.promise},signup:function(a){var c=b.defer();return d.post("/auth/signup",a).then(function(a){c.resolve(a.data)},function(a){c.reject(a.data.message||a.data)}),c.promise},resendVerifyEmail:function(a){var c=b.defer();return d.post("/auth/verify",{email:a}).then(function(a){c.resolve(a.data)},function(a){c.reject(a.data.message||a.data)}),c.promise},validateVerifyToken:function(a){var c=/^([A-Za-z0-9]{48})$/g;if(!c.test(a))throw new Error("Error token: "+a+" is not a valid verification token");var e=b.defer();return d.get("/auth/verify/"+a).then(function(a){e.resolve(a.data)},function(a){e.reject(a.data)}),e.promise},resetPassword:function(a,c){var e=b.defer();return d.post("/auth/reset/"+c,a).then(function(a){e.resolve(a)},function(a){e.reject(a.data.message||a.data)}),e.promise},askForPasswordReset:function(a){var c=b.defer();return d.post("/auth/forgot",a).then(function(a){c.resolve(a.data)},function(a){c.reject(a.data.message||a.data)}),c.promise}};return f}]),angular.module("users").factory("Users",["$resource",function(a){return a("users",{},{update:{method:"PUT"}})}]),angular.module("core").config(["$translateProvider",function(a){a.translations("en",{MENU:"MENU",SIGNUP_TAB:"Sign Up",SIGNIN_TAB:"Sign In",SIGNOUT_TAB:"Signout",EDIT_PROFILE:"Edit Profile",MY_SETTINGS:"My Settings",CHANGE_PASSWORD:"Change Password",TOGGLE_NAVIGATION:"Toggle navigation"}),a.preferredLanguage("en").fallbackLanguage("en").useSanitizeValueStrategy("escape")}]),angular.module("core").config(["$translateProvider",function(a){a.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_SETTINGS:"Mes Paramètres",CHANGE_PASSWORD:"Changer mon Mot de Pass",TOGGLE_NAVIGATION:"Basculer la navigation"})}]),angular.module("core").config(["$translateProvider",function(a){a.translations("de",{MENU:"MENÜ",SIGNUP_TAB:"Anmelden",SIGNIN_TAB:"Anmeldung",SIGNOUT_TAB:"Abmelden",EDIT_PROFILE:"Profil bearbeiten",MY_SETTINGS:"Meine Einstellungen",CHANGE_PASSWORD:"Passwort ändern",TOGGLE_NAVIGATION:"Navigation umschalten"})}]),angular.module("core").config(["$translateProvider",function(a){a.translations("it",{MENU:"MENÜ",SIGNUP_TAB:"Vi Phrasal",SIGNIN_TAB:"Accedi",SIGNOUT_TAB:"Esci",EDIT_PROFILE:"Modifica Profilo",MY_SETTINGS:"Mie Impostazioni",CHANGE_PASSWORD:"Cambia la password",TOGGLE_NAVIGATION:"Attiva la navigazione"})}]),angular.module("core").config(["$translateProvider",function(a){a.translations("es",{MENU:"MENU",SIGNUP_TAB:"Registrarse",SIGNIN_TAB:"Entrar",SIGNOUT_TAB:"Salir",EDIT_PROFILE:"Editar Perfil",MY_SETTINGS:"Mis configuraciones",CHANGE_PASSWORD:"Cambiar contraseña",TOGGLE_NAVIGATION:"Navegación de palanca"})}]),angular.module("forms").controller("AdminFormController",["$rootScope","$window","$scope","$stateParams","$state","Forms","CurrentForm","$http","$uibModal","myForm","$filter",function(a,b,c,d,e,f,g,h,i,j,k){c.activePill=0,c.copied=!1,c.onCopySuccess=function(a){c.copied=!0},c=a,c.animationsEnabled=!0,c.myform=j,a.saveInProgress=!1,c.oldForm=_.cloneDeep(c.myform),g.setForm(c.myform),c.formURL="/#!/forms/"+c.myform._id,c.myform.isLive?b.subdomainsDisabled===!0?c.actualFormURL=window.location.protocol+"//"+window.location.host+"/view"+c.formURL:window.location.host.split(".").length<3?c.actualFormURL=window.location.protocol+"//"+c.myform.admin.username+"."+window.location.host+c.formURL:c.actualFormURL=window.location.protocol+"//"+c.myform.admin.username+"."+window.location.host.split(".").slice(1,3).join(".")+c.formURL:c.actualFormURL=window.location.protocol+"//"+window.location.host+c.formURL;var l=c.refreshFrame=function(){document.getElementById("iframe")&&document.getElementById("iframe").contentWindow.location.reload()};c.tabData=[{heading:k("translate")("CONFIGURE_TAB"),templateName:"configure"}],c.designTabActive=!1,c.deactivateDesignTab=function(){c.designTabActive=!1},c.activateDesignTab=function(){c.designTabActive=!0},c.setForm=function(a){c.myform=a},a.resetForm=function(){c.myform=f.get({formId:d.formId})},c.openDeleteModal=function(){c.deleteModal=i.open({animation:c.animationsEnabled,templateUrl:"formDeleteModal.html",controller:"AdminFormController",resolve:{myForm:function(){return c.myform}}}),c.deleteModal.result.then(function(a){c.selected=a})},c.cancelDeleteModal=function(){c.deleteModal&&c.deleteModal.dismiss("cancel")},c.removeCurrentForm=function(){if(c.deleteModal&&c.deleteModal.opened){c.deleteModal.close();var a=c.myform._id;if(!a)throw new Error("Error - removeCurrentForm(): $scope.myform._id does not exist");
+h["delete"]("/forms/"+a).then(function(a){e.go("listForms",{},{reload:!0})},function(a){console.error(a)})}},c.updateDesign=function(a,b,d,e){c.update(a,b,d,e,function(){l()})},c.update=a.update=function(b,d,e,f,g){var i=!0;if(b||(i=!a.saveInProgress),i){var j=null;if(b||(a.saveInProgress=!0),e){for(var k=new RegExp("^[0-9a-fA-F]{24}$"),l=0;l]+/i,test:function(a){return!this.regExp.test(a)}},b.openDeleteModal=function(a){b.deleteModal=h.open({animation:b.animationsEnabled,templateUrl:"deleteModalListForms.html",controller:["$uibModalInstance","items","$scope",function(a,b,c){c.content=b,c.cancel=c.cancelDeleteModal,c.deleteForm=function(){c.$parent.removeForm(b.formIndex)}}],resolve:{items:function(){return{currFormTitle:b.myforms[a].title,formIndex:a}}}})},b.cancelDeleteModal=function(){b.deleteModal&&b.deleteModal.dismiss("cancel")},b.openCreateModal=function(){b.showCreateModal||(b.showCreateModal=!0)},b.closeCreateModal=function(){b.showCreateModal&&(b.showCreateModal=!1)},b.setForm=function(a){b.myform=a},b.goToWithId=function(a,b){d.go(a,{formId:b},{reload:!0})},b.duplicateForm=function(a){var c=_.cloneDeep(b.myforms[a]);delete c._id,g.post("/forms",{form:c}).success(function(c,d,e){b.myforms.splice(a+1,0,c)}).error(function(a){console.error(a),null===a&&(b.error=a.data.message)})},b.createNewForm=function(){var a={};a.title=b.forms.createForm.title.$modelValue,a.language=b.forms.createForm.language.$modelValue,b.forms.createForm.$valid&&b.forms.createForm.$dirty&&g.post("/forms",{form:a}).success(function(a,c,d){b.goToWithId("viewForm.create",a._id+"")}).error(function(a){console.error(a),b.error=a.data.message})},b.removeForm=function(a){if(a>=b.myforms.length||a<0)throw new Error("Error: form_index in removeForm() must be between 0 and "+b.myforms.length-1);g["delete"]("/forms/"+b.myforms[a]._id).success(function(c,d,e){b.myforms.splice(a,1),b.cancelDeleteModal()}).error(function(a){console.error(a)})}}]),angular.module("forms").directive("configureFormDirective",["$rootScope","$http","Upload","CurrentForm",function(a,b,c,d){return{templateUrl:"modules/forms/admin/views/directiveViews/form/configure-form.client.view.html",restrict:"E",scope:{myform:"=",user:"=",pdfFields:"@",formFields:"@"},controller:["$scope",function(b){b.log="",b.languages=a.languages,b.resetForm=a.resetForm,b.update=a.update}]}}]),angular.module("forms").directive("editFormDirective",["$rootScope","FormFields","$uibModal",function(a,b,c){return{templateUrl:"modules/forms/admin/views/directiveViews/form/edit-form.client.view.html",restrict:"E",transclude:!0,scope:{myform:"="},controller:["$scope",function(d){var e;d.sortableOptions={appendTo:".dropzone",forceHelperSize:!0,forcePlaceholderSize:!0,update:function(a,b){d.update(!1,d.myform,!0,!1,function(a){})}},d.openEditModal=function(a,b,e){d.editFieldModal=c.open({animation:!0,templateUrl:"editFieldModal.html",windowClass:"edit-modal-window",controller:["$uibModalInstance","$scope",function(c,d){d.field=a,d.showLogicJump=!1,d.isEdit=b,d.showAddOptions=function(a){return"dropdown"===d.field.fieldType||"checkbox"===d.field.fieldType||"radio"===d.field.fieldType},d.validShapes=["Heart","Star","thumbs-up","thumbs-down","Circle","Square","Check Circle","Smile Outlined","Hourglass","bell","Paper Plane","Comment","Trash"],d.addOption=function(){if("checkbox"===d.field.fieldType||"dropdown"===d.field.fieldType||"radio"===d.field.fieldType){d.field.fieldOptions||(d.field.fieldOptions=[]);var a=d.field.fieldOptions.length+1,b={option_id:Math.floor(1e5*Math.random()),option_title:"Option "+a,option_value:"Option "+a};d.field.fieldOptions.push(b)}},d.deleteOption=function(a){if("checkbox"===d.field.fieldType||"dropdown"===d.field.fieldType||"radio"===d.field.fieldType)for(var b=0;b',restrict:"E",scope:{typeName:"@"},controller:["$scope",function(a){var b={textfield:"fa fa-pencil-square-o",dropdown:"fa fa-th-list",date:"fa fa-calendar",checkbox:"fa fa-check-square-o",radio:"fa fa-dot-circle-o",email:"fa fa-envelope-o",textarea:"fa fa-pencil-square",legal:"fa fa-legal",file:"fa fa-cloud-upload",rating:"fa fa-star-half-o",link:"fa fa-link",scale:"fa fa-sliders",stripe:"fa fa-credit-card",statement:"fa fa-quote-left",yes_no:"fa fa-toggle-on",number:"fa fa-slack"};a.typeIcon=b[a.typeName]}]}});var __indexOf=[].indexOf||function(a){for(var b=0,c=this.length;b=0&&(c=c+b+".html"),d.get(c)};return{template:"{{field.title}}
",restrict:"E",scope:{field:"=",required:"&",design:"=",index:"=",forms:"="},link:function(a,d){c.chooseDefaultOption=a.chooseDefaultOption=function(b){"yes_no"===b?a.field.fieldValue="true":"rating"===b?a.field.fieldValue=0:"radio"===a.field.fieldType?a.field.fieldValue=a.field.fieldOptions[0].option_value:"legal"===b&&(a.field.fieldValue="true",c.nextField())},a.nextField=c.nextField,a.setActiveField=c.setActiveField,"date"===a.field.fieldType&&(a.dateOptions={changeYear:!0,changeMonth:!0,altFormat:"mm/dd/yyyy",yearRange:"1900:-0",defaultDate:0});var e=a.field.fieldType;if("number"===a.field.fieldType||"textfield"===a.field.fieldType||"email"===a.field.fieldType||"link"===a.field.fieldType){switch(a.field.fieldType){case"textfield":a.input_type="text";break;case"email":a.input_type="email",a.placeholder="joesmith@example.com";break;case"number":a.input_type="text",a.validateRegex=/^-?\d+$/;break;default:a.input_type="url",a.placeholder="http://example.com"}e="textfield"}var g=f(e);d.html(g).show();b(d.contents())(a)}}}]),angular.module("view-form").directive("onEnterKey",["$rootScope",function(a){return{restrict:"A",link:function(b,c,d){c.bind("keydown keypress",function(b){var c=b.which||b.keyCode,e=!1;null!==d.onEnterKeyDisabled&&(e=d.onEnterKeyDisabled),13!==c||b.shiftKey||e||(b.preventDefault(),a.$apply(function(){a.$eval(d.onEnterKey)}))})}}}]).directive("onTabKey",["$rootScope",function(a){return{restrict:"A",link:function(b,c,d){c.bind("keyup keypress",function(b){var c=b.which||b.keyCode;9!==c||b.shiftKey||(b.preventDefault(),a.$apply(function(){a.$eval(d.onTabKey)}))})}}}]).directive("onEnterOrTabKey",["$rootScope",function(a){return{restrict:"A",link:function(b,c,d){c.bind("keydown keypress",function(b){var c=b.which||b.keyCode;13!==c&&9!==c||b.shiftKey||(b.preventDefault(),a.$apply(function(){
+a.$eval(d.onEnterOrTabKey)}))})}}}]).directive("onTabAndShiftKey",["$rootScope",function(a){return{restrict:"A",link:function(b,c,d){c.bind("keydown keypress",function(b){var c=b.which||b.keyCode;9===c&&b.shiftKey&&(console.log("onTabAndShiftKey"),b.preventDefault(),a.$apply(function(){a.$eval(d.onTabAndShiftKey)}))})}}}]),angular.module("view-form").directive("onFinishRender",["$rootScope","$timeout",function(a,b){return{restrict:"A",link:function(b,c,d){if(c.attr("ng-repeat")||c.attr("data-ng-repeat")){var e=d.onFinishRender||"ngRepeat";b.$first&&!b.$last?b.$evalAsync(function(){a.$broadcast(e+" Started")}):b.$last&&b.$evalAsync(function(){a.$broadcast(e+" Finished")})}}}}]),jsep.addBinaryOp("contains",10),jsep.addBinaryOp("!contains",10),jsep.addBinaryOp("begins",10),jsep.addBinaryOp("!begins",10),jsep.addBinaryOp("ends",10),jsep.addBinaryOp("!ends",10),angular.module("view-form").directive("submitFormDirective",["$http","TimeCounter","$filter","$rootScope","SendVisitorData","$translate","$timeout",function(a,b,c,d,e,f,g){return{templateUrl:"form_modules/forms/base/views/directiveViews/form/submit-form.client.view.html",restrict:"E",scope:{myform:"=",ispreview:"="},controller:["$document","$window","$scope",function(f,g,h){var i=!1,j="submit_field";h.forms={},h.ispreview&&b.restartClock();var k=h.myform.visible_form_fields.filter(function(a){return"statement"!==a.fieldType}).length,l=c("formValidity")(h.myform);h.translateAdvancementData={done:l,total:k,answers_not_completed:k-l},h.reloadForm=function(){h.myform.submitted=!1,h.myform.form_fields=_.chain(h.myform.visible_form_fields).map(function(a){return a.fieldValue="",a}).value(),h.loading=!1,h.error="",h.selected={_id:"",index:0},h.setActiveField(h.myform.visible_form_fields[0]._id,0,!1),b.restartClock()};var m=function(a){var b=a.logicJump;if(b.enabled&&b.expressionString&&b.valueB&&a.fieldValue){var c,d,e=jsep(b.expressionString);if("field"===e.left.name?(c=a.fieldValue,d=b.valueB):(c=b.valueB,d=a.fieldValue),"number"===a.fieldType||"scale"===a.fieldType||"rating"===a.fieldType)switch(e.operator){case"==":return parseInt(c)===parseInt(d);case"!==":return parseInt(c)!==parseInt(d);case">":return parseInt(c)>parseInt(d);case">=":return parseInt(c)>parseInt(d);case"<":return parseInt(c)-1;case"!contains":return!(c.indexOf(d)>-1);case"begins":return c.startsWith(d);case"!begins":return!c.startsWith(d);case"ends":return c.endsWith(d);case"!ends":return c.endsWith(d);default:return!1}}},n=function(){if(null===h.selected)throw console.error("current active field is null"),new Error("current active field is null");return h.selected._id===j?h.myform.form_fields.length-1:h.selected.index};h.isActiveField=function(a){return h.selected._id===a._id},h.setActiveField=d.setActiveField=function(a,b,d){if(null!==h.selected&&(a||null!==b)){if(a){if(null===b){b=h.myform.visible_form_fields.length;for(var e=0;e .field-directive:nth-of-type("+String(h.myform.visible_form_fields.length-1)+")"),m=$(l).height(),n=k-g-1.2*m,o=.9;h.selected.index===h.myform.visible_form_fields.length?bn?(a=h.selected.index+1,h.setActiveField(j,a,!1)):ef*o&&(a=h.selected.index-1,h.setActiveField(null,a,!1))}h.$apply()},d.nextField=h.nextField=function(){if(h.selected&&h.selected.index>-1)if(h.selected._id!==j){var a=h.myform.visible_form_fields[h.selected.index];a.logicJump&&a.logicJump.jumpTo&&m(a)?h.setActiveField(a.logicJump.jumpTo,null,!0):h.selected.index0&&h.setActiveField(null,a,!0)},d.goToInvalid=h.goToInvalid=function(){var a=$(".row.field-directive .ng-invalid.focusOn, .row.field-directive .ng-untouched.focusOn:not(.ng-valid)").first().parents(".row.field-directive").first().attr("data-id");h.setActiveField(a,null,!0)},h.exitStartPage=function(){h.myform.startPage.showStart=!1,h.myform.visible_form_fields.length>0&&(h.selected._id=h.myform.visible_form_fields[0]._id)};var o=function(){var a=new MobileDetect(window.navigator.userAgent),b="other";return a.tablet()?b="tablet":a.mobile()?b="mobile":a.is("bot")||(b="desktop"),{type:b,name:window.navigator.platform}},p=function(){$.ajaxSetup({async:!1});var a=$.getJSON("https://freegeoip.net/json/").responseJSON;return $.ajaxSetup({async:!0}),a&&a.ip||(a={ip:"Adblocker"}),{ipAddr:a.ip,geoLocation:{City:a.city,Country:a.country_name}}};d.submitForm=h.submitForm=function(){if(h.forms.myForm.$invalid)return void h.goToInvalid();var d=b.stopClock();h.loading=!0;var f=_.cloneDeep(h.myform),g=o();f.device=g;var i=p();f.ipAddr=i.ipAddr,f.geoLocation=i.geoLocation,f.timeElapsed=d,f.percentageComplete=c("formValidity")(h.myform)/h.myform.visible_form_fields.length*100,delete f.endPage,delete f.isLive,delete f.provider,delete f.startPage,delete f.visible_form_fields,delete f.analytics,delete f.design,delete f.submissions,delete f.submitted;for(var j=0;j$(\".loader\").fadeOut(\"slow\");");
+ "");
$templateCache.put("form_modules/forms/base/views/form-unauthorized.client.view.html",
- "");
+ "");
$templateCache.put("form_modules/forms/base/views/submit-form.client.view.html",
"");
$templateCache.put("form_modules/forms/base/views/directiveViews/entryPage/startPage.html",
"
{{pageData.introTitle}} {{pageData.introParagraph}}
");
$templateCache.put("form_modules/forms/base/views/directiveViews/field/date.html",
- "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
$templateCache.put("form_modules/forms/base/views/directiveViews/field/dropdown.html",
- " 0\">
{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ " 0\">
{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
$templateCache.put("form_modules/forms/base/views/directiveViews/field/hidden.html",
" ");
$templateCache.put("form_modules/forms/base/views/directiveViews/field/legal.html",
- "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
$templateCache.put("form_modules/forms/base/views/directiveViews/field/radio.html",
- " 0\">
{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ " 0\">
{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
$templateCache.put("form_modules/forms/base/views/directiveViews/field/rating.html",
- "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
+ "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{field.description}}
");
$templateCache.put("form_modules/forms/base/views/directiveViews/field/statement.html",
"
{{field.title}} {{field.description}}
{{field.description}}
{{ 'CONTINUE' | translate }}
");
$templateCache.put("form_modules/forms/base/views/directiveViews/field/textarea.html",
- "{{index+1}} {{field.title}} {{ 'OPTIONAL' | translate }} {{ 'NEWLINE' | translate }} {{field.description}}
Press SHIFT+ENTER to add a newline
-
+
{{ 'ERROR' | translate }}:
-
+
-
+
{{ 'SIGNIN_BTN' | translate }}
diff --git a/public/modules/users/views/authentication/signup.client.view.html b/public/modules/users/views/authentication/signup.client.view.html
index 71529e06..4b2f96e7 100644
--- a/public/modules/users/views/authentication/signup.client.view.html
+++ b/public/modules/users/views/authentication/signup.client.view.html
@@ -12,15 +12,15 @@
-
+
-
+
-
+
{{ 'SIGNUP_BTN' | translate }}
diff --git a/public/modules/users/views/password/forgot-password.client.view.html b/public/modules/users/views/password/forgot-password.client.view.html
index 98a5b53b..e3fce3f3 100755
--- a/public/modules/users/views/password/forgot-password.client.view.html
+++ b/public/modules/users/views/password/forgot-password.client.view.html
@@ -16,9 +16,14 @@
-
+
{{ 'PASSWORD_RESTORE_HEADER' | translate }}
+
diff --git a/public/modules/users/views/password/reset-password-invalid.client.view.html b/public/modules/users/views/password/reset-password-invalid.client.view.html
index c78a6e73..6f6227d0 100755
--- a/public/modules/users/views/password/reset-password-invalid.client.view.html
+++ b/public/modules/users/views/password/reset-password-invalid.client.view.html
@@ -1,4 +1,17 @@
-
- {{ 'PASSWORD_RESET_INVALID' | translate }}
- {{ 'ASK_FOR_NEW_PASSWORD' | translate }}
+
+
+
+
+
+
+
+ {{ 'PASSWORD_RESET_INVALID' | translate }}
+
+
+
+
diff --git a/public/modules/users/views/password/reset-password-success.client.view.html b/public/modules/users/views/password/reset-password-success.client.view.html
index bbddd766..3be0be2a 100755
--- a/public/modules/users/views/password/reset-password-success.client.view.html
+++ b/public/modules/users/views/password/reset-password-success.client.view.html
@@ -1,4 +1,16 @@
-
- {{ 'PASSWORD_RESET_SUCCESS' | translate }}
- {{ 'CONTINUE_TO_LOGIN' | translate }}
+
+
+
+
+
+
+
+
{{ 'PASSWORD_RESET_SUCCESS' | translate }}
+
+
+
diff --git a/public/modules/users/views/password/reset-password.client.view.html b/public/modules/users/views/password/reset-password.client.view.html
index 4d2288f5..0c7d4513 100755
--- a/public/modules/users/views/password/reset-password.client.view.html
+++ b/public/modules/users/views/password/reset-password.client.view.html
@@ -3,19 +3,19 @@