From 25ce55b4c776d02028c676f13fe3de7544bfed25 Mon Sep 17 00:00:00 2001 From: David Baldwynn Date: Fri, 27 Oct 2017 15:59:57 -0700 Subject: [PATCH] moved to pug from swig and fixed public form when subdomains are disabled --- app/routes/forms.server.routes.js | 5 +- app/views/404.server.view.pug | 10 ++ app/views/500.server.view.pug | 9 ++ app/views/form.server.view.pug | 110 ++++++++++++++++++++ app/views/index.server.view.pug | 4 + app/views/layout.server.view.html | 4 +- app/views/layout.server.view.pug | 106 +++++++++++++++++++ app/views/redoc.server.view.pug | 62 +++++++++++ app/views/verification.email.view.pug | 51 +++++++++ app/views/welcome.email.view.pug | 49 +++++++++ config/env/all.js | 2 +- config/express.js | 26 ++++- config/locales/de.json | 4 + config/locales/en.json | 4 + config/locales/es.json | 4 + config/locales/fr.json | 4 + config/locales/it.json | 4 + package.json | 8 +- public/dist/form_populate_template_cache.js | 12 +-- public/modules/users/config/i18n/french.js | 2 +- public/modules/users/config/i18n/german.js | 4 +- public/modules/users/config/i18n/italian.js | 2 +- 22 files changed, 467 insertions(+), 19 deletions(-) create mode 100644 app/views/404.server.view.pug create mode 100644 app/views/500.server.view.pug create mode 100644 app/views/form.server.view.pug create mode 100644 app/views/index.server.view.pug create mode 100644 app/views/layout.server.view.pug create mode 100644 app/views/redoc.server.view.pug create mode 100644 app/views/verification.email.view.pug create mode 100644 app/views/welcome.email.view.pug create mode 100644 config/locales/de.json create mode 100644 config/locales/en.json create mode 100644 config/locales/es.json create mode 100644 config/locales/fr.json create mode 100644 config/locales/it.json diff --git a/app/routes/forms.server.routes.js b/app/routes/forms.server.routes.js index 5695ae01..6798e525 100644 --- a/app/routes/forms.server.routes.js +++ b/app/routes/forms.server.routes.js @@ -25,10 +25,13 @@ module.exports = function(app) { } else { app.route('/forms/:formIdFast([a-zA-Z0-9]+)/render') .get(forms.readForRender); + + app.route('/view/') + .get(core.form); } app.route('/forms/:formIdFast([a-zA-Z0-9]+)') - .post(forms.createSubmission) + .post(forms.createSubmission) app.route('/forms') .get(auth.isAuthenticatedOrApiKey, forms.list) diff --git a/app/views/404.server.view.pug b/app/views/404.server.view.pug new file mode 100644 index 00000000..0804db65 --- /dev/null +++ b/app/views/404.server.view.pug @@ -0,0 +1,10 @@ +extends layout.server.view.pug + +block content + section.public-form.auth.sigin-view.valign-wrapper + div.row.valign + h3.col-md-12.text-center=__('404_Header') + div.col-md-4.col-md-offset-4 + div.col-md-12.text-center(style="padding-bottom: 50px;") + | #{url} is not a valid path. + diff --git a/app/views/500.server.view.pug b/app/views/500.server.view.pug new file mode 100644 index 00000000..84d80035 --- /dev/null +++ b/app/views/500.server.view.pug @@ -0,0 +1,9 @@ +extends layout.server.view.pug + +block content + section.public-form.auth.sigin-view.valign-wrapper + div.row.valign + h3.col-md-12.text-center=__('500_Header') + div.col-md-4.col-md-offset-4 + div.col-md-12.text-center(style="padding-bottom: 50px;") + | #{error} diff --git a/app/views/form.server.view.pug b/app/views/form.server.view.pug new file mode 100644 index 00000000..6fc9ec9f --- /dev/null +++ b/app/views/form.server.view.pug @@ -0,0 +1,110 @@ +doctype html +html(lang='en', xmlns='http://www.w3.org/1999/xhtml') + head + title #{title} Form + // General META + meta(charset='utf-8') + meta(http-equiv='Content-type', content='text/html;charset=UTF-8') + meta(http-equiv='X-UA-Compatible', content='IE=edge,chrome=1') + meta(name='viewport', content='width=device-width,initial-scale=1,maximum-scale=1') + meta(name='apple-mobile-web-app-capable', content='yes') + meta(name='apple-mobile-web-app-status-bar-style', content='black') + // Semantic META + meta(name='keywords', content='#{keywords}') + meta(name='description', content='#{description}') + // Facebook META + meta(property='og:site_name', content='#{title}') + meta(property='og:title', content='#{title}') + meta(property='og:description', content='#{description}') + meta(property='og:url', content='#{url}') + meta(property='og:image', content='/img/brand/logo.png') + meta(property='og:type', content='website') + // Twitter META + meta(name='twitter:title', content='#{title}') + meta(name='twitter:description', content='#{description}') + meta(name='twitter:url', content='#{url}') + meta(name='twitter:image', content='/img/brand/logo.png') + style. + .loader { + position: fixed; + left: 0px; + top: 0px; + width: 100%; + height: 100%; + z-index: 9999; + background: url('/static/dist/page-loader.gif') 50% 35% no-repeat rgb(249,249,249); + background-size: 50px 50px; + } + // Fav Icon + link(href='/static/modules/core/img/brand/favicon.ico', rel='shortcut icon', type='image/x-icon') + + body(ng-cloak='') + .loader + section.content + section(ui-view='') + //Embedding The User Object signupDisabled, socketPort and socketUrl Boolean + script(type='text/javascript'). + var signupDisabled = !{signupDisabled}; + var socketPort = false; + var socketUrl = false; + var subdomainsDisabled = !{subdomainsDisabled}; + + //Embedding socketPort + if socketPort + script(type='text/javascript'). + socketPort = !{socketPort} + + //Embedding socketUrl + if socketUrl + script(type='text/javascript'). + socketUrl = !{socketUrl} + script(src='/static/lib/jquery/dist/jquery.min.js', type='text/javascript') + link(rel='stylesheet', href='/static/lib/font-awesome/css/font-awesome.min.css') + link(rel='stylesheet', href='/static/lib/bootstrap/dist/css/bootstrap.min.css') + + //Bower CSS dependencies + each bowerCssFile in bowerCssFiles + link(rel='stylesheet', href='#{bowerCssFile}') + + link(rel='stylesheet', href='/static/lib/angular-input-stars/angular-input-stars.css') + link(rel='stylesheet', href='/static/lib/jquery-ui/themes/flick/jquery-ui.min.css') + // end Bower CSS dependencies + + //Application CSS Files + each cssFile in cssFiles + link(rel='stylesheet', href=cssFile) + // end Application CSS Files + + //Socket.io Client Dependency + script(src='/static/lib/socket.io-client/dist/socket.io.min.js') + script(src='/static/lib/jquery-ui/jquery-ui.js', type='text/javascript') + script(src='https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js', integrity='sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa', crossorigin='anonymous') + + //Minified Bower Dependencies + script(src='/static/dist/vendor.min.js') + script(src='/static/lib/angular-ui-date/src/date.js', type='text/javascript') + + //Application JavaScript Files + each jsFile in formJSFiles + script(type='text/javascript', src=jsFile) + // end Application Javascript dependencies + + if process.env.NODE_ENV === 'development' + //Livereload script rendered + script(async='', type='text/javascript', src='http://#{request.hostname}:35729/livereload.js') + + script Raven.config('https://825fefd6b4ed4a4da199c1b832ca845c@sentry.tellform.com/2').install(); + + if google_analytics_id + script(type='text/javascript'). + (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){ + (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o), + m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m) + })(window,document,'script','https://www.google-analytics.com/analytics.js','ga'); + + ga('create', '{{google_analytics_id}}', 'auto'); + ga('send', 'pageview'); + + script(type="text/javascript"). + window.heap=window.heap||[],heap.load=function(e,t){window.heap.appid=e,window.heap.config=t=t||{};var r=t.forceSSL||"https:"===document.location.protocol,a=document.createElement("script");a.type="text/javascript",a.async=!0,a.src=(r?"https:":"http:")+"//cdn.heapanalytics.com/js/heap-"+e+".js";var n=document.getElementsByTagName("script")[0];n.parentNode.insertBefore(a,n);for(var o=function(e){return function(){heap.push([e].concat(Array.prototype.slice.call(arguments,0)))}},p=["addEventProperties","addUserProperties","clearEventProperties","identify","removeEventProperty","setEventProperties","track","unsetEventProperty"],c=0;c window.ga=function(){ga.q.push(arguments)};ga.q=[];ga.l=+new Date; ga('create','{{google_analytics_id}}','auto');ga('send','pageview') - - + +

404 - Form Does not Exist

The form you are trying to access does not exist. Sorry about that!
"); + "

{{ 'FORM_404_HEADER' | translate }}

{{ 'FORM_404_BODY' | translate }}
"); $templateCache.put("form_modules/forms/base/views/form-unauthorized.client.view.html", - "

Not Authorized to Access Form

The form you are trying to access is currently private and not accesible publically.
If you are the owner of the form, you can set it to \"Public\" in the \"Configuration\" panel in the form admin.
"); + "

{{ 'FORM_UNAUTHORIZED_HEADER' | translate }}

{{ 'FORM_UNAUTHORIZED_BODY1' | translate }}
{{ 'FORM_UNAUTHORIZED_BODY2' | translate }}
"); $templateCache.put("form_modules/forms/base/views/submit-form.client.view.html", "
"); @@ -12,11 +12,11 @@ angular.module('TellForm-Form.form_templates', []).run(['$templateCache', functi $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}}


"); + "
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}}


"); $templateCache.put("form_modules/forms/base/views/directiveViews/field/rating.html", @@ -24,10 +24,10 @@ angular.module('TellForm-Form.form_templates', []).run(['$templateCache', functi $templateCache.put("form_modules/forms/base/views/directiveViews/field/statement.html", "

{{field.title}}

{{field.description}}

{{field.description}}


"); $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
{{ 'ENTER' | translate }}
"); $templateCache.put("form_modules/forms/base/views/directiveViews/field/textfield.html", - "

{{index+1}} {{field.title}} ({{ 'OPTIONAL' | translate }})

{{field.description}}

{{ 'ENTER' | translate }}
"); + "

{{index+1}} {{field.title}} ({{ 'OPTIONAL' | translate }})

{{field.description}}

{{ '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", diff --git a/public/modules/users/config/i18n/french.js b/public/modules/users/config/i18n/french.js index f090045f..578ad354 100644 --- a/public/modules/users/config/i18n/french.js +++ b/public/modules/users/config/i18n/french.js @@ -45,7 +45,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid 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' }); diff --git a/public/modules/users/config/i18n/german.js b/public/modules/users/config/i18n/german.js index 16e3624b..d4d5f144 100644 --- a/public/modules/users/config/i18n/german.js +++ b/public/modules/users/config/i18n/german.js @@ -23,7 +23,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid 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 + RESEND_VERIFICATION_EMAIL: 'Bestätigungs-E-Mail erneut senden', SAVE_CHANGES: 'Änderungen speichern', CANCEL_BTN: 'Abbrechen', @@ -47,7 +47,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid 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 ' + 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', diff --git a/public/modules/users/config/i18n/italian.js b/public/modules/users/config/i18n/italian.js index f4f89fcc..05f9272b 100644 --- a/public/modules/users/config/i18n/italian.js +++ b/public/modules/users/config/i18n/italian.js @@ -51,7 +51,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid CONTINUA: 'Continua', PASSWORD_RESTORE_HEADER: 'Ripristina password', - ENTER_YOUR_EMAIL: 'Inserisci l\'email del tuo account'. + ENTER_YOUR_EMAIL: 'Inserisci l\'email del tuo account', SUBMIT_BTN: 'Invia', ASK_FOR_NEW_PASSWORD: 'Richiedi nuova password reimpostata',