Merge branch 'stage' into logic_jump

This commit is contained in:
David Baldwynn 2016-08-26 15:17:39 -07:00
commit fbf11011dd
42 changed files with 762 additions and 555 deletions

View file

@ -1,4 +1,4 @@
TellForm [<img src="/" width="250px">](https://digitalocean.com/)
======== ========
[![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=UY555MCBZM722) [![Donate](https://img.shields.io/badge/Donate-PayPal-green.svg)](https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=UY555MCBZM722)
@ -14,7 +14,7 @@ TellForm is an *opensource alternative to TypeForm* built ontop of nodejs that c
[See examples here](https://tellform.com/examples) [See examples here](https://tellform.com/examples)
####Sponsored by ####Sponsored by
[<img src="https://www.digitalocean.com/assets/images/logos-badges/png/DO_Logo_Horizontal_Blue-3db19536.png" width="250px">](https://digitalocean.com/) [<img src="https://www.digitalocean.com/assets/media/logos-badges/png/DO_Logo_Horizontal_Blue-3db19536.png" width="250px">](https://digitalocean.com/)
[<img src="https://a0wx592cvgzripj.global.ssl.fastly.net/_static/780f0361d74cc3da6680cfa4f855336a/getsentry/images/branding/png/sentry-horizontal-black.png" width="250px">](https://getsentry.com/) [<img src="https://a0wx592cvgzripj.global.ssl.fastly.net/_static/780f0361d74cc3da6680cfa4f855336a/getsentry/images/branding/png/sentry-horizontal-black.png" width="250px">](https://getsentry.com/)
[<img src="https://dka575ofm4ao0.cloudfront.net/assets/base/logos/common-aececb0b4319b8fb61ac5b47a6983f96.png" width="250px">](https://statuspage.io/) [<img src="https://dka575ofm4ao0.cloudfront.net/assets/base/logos/common-aececb0b4319b8fb61ac5b47a6983f96.png" width="250px">](https://statuspage.io/)
[<img src="http://bcsrq.com/wp-content/uploads/2014/04/StickerMuleLogo300.png" width="250px">](https://stickermule.com/) [<img src="http://bcsrq.com/wp-content/uploads/2014/04/StickerMuleLogo300.png" width="250px">](https://stickermule.com/)

View file

@ -13,9 +13,8 @@ exports.index = function(req, res) {
}; };
exports.form = function(req, res) { exports.form = function(req, res) {
console.log('\n\n\nRENDERING FORM\n\n\n'); //Allow form to be embedded
//Allow form to be embeded res.set('X-Frame-Options', 'GOFORIT');
res.removeHeader('X-Frame-Options');
res.render('form', { res.render('form', {
user: req.user || null, user: req.user || null,

View file

@ -20,6 +20,7 @@ var config_nev = function () {
var User = require('../../models/user.server.model'); var User = require('../../models/user.server.model');
nev.configure({ nev.configure({
persistentUserModel: User, persistentUserModel: User,
tempUserCollection: config.tempUserCollection, tempUserCollection: config.tempUserCollection,
@ -30,7 +31,7 @@ var config_nev = function () {
verifyMailOptions: { verifyMailOptions: {
from: config.mailer.from, from: config.mailer.from,
subject: 'Confirm your account', subject: 'Confirm your account',
html: '<p>Please verify your account by clicking <a href="${URL}">this link</a>. If you are unable to do so, copy and ' + html: '<p>Please verify your account by clicking <a href="http://${URL}">this link</a>. If you are unable to do so, copy and ' +
'paste the following link into your browser:</p><p>${URL}</p>', 'paste the following link into your browser:</p><p>${URL}</p>',
text: 'Please verify your account by clicking the following link, or by copying and pasting it into your browser: ${URL}' text: 'Please verify your account by clicking the following link, or by copying and pasting it into your browser: ${URL}'
}, },
@ -86,7 +87,6 @@ exports.resendVerificationEmail = function(req, res, next){
} }
if (userFound){ if (userFound){
console.log('hello');
res.status(200).send('Verification email successfully Re-Sent'); res.status(200).send('Verification email successfully Re-Sent');
}else { }else {
// user hasn't been found yet // user hasn't been found yet

View file

@ -46,19 +46,19 @@ var UserSchema = new Schema({
type: String, type: String,
trim: true, trim: true,
default: '', default: '',
validate: { /*validate: {
validator: validateLocalStrategyProperty, validator: validateLocalStrategyProperty,
message: 'Please fill in your first name' message: 'Please fill in your first name'
} }*/
}, },
lastName: { lastName: {
type: String, type: String,
trim: true, trim: true,
default: '', default: '',
validate: { /*validate: {
validator: validateLocalStrategyProperty, validator: validateLocalStrategyProperty,
message: 'Please fill in your last name' message: 'Please fill in your last name'
} }*/
}, },
email: { email: {
type: String, type: String,

View file

@ -61,11 +61,11 @@
</head> </head>
<body ng-cloak> <body ng-cloak>
<div class="github-fork-ribbon-wrapper right-bottom hidden-xs"> <!--<div class="github-fork-ribbon-wrapper right-bottom hidden-xs">
<div class="github-fork-ribbon"> <div class="github-fork-ribbon">
<a href="https://github.com/whitef0x0/tellform">Fork me on GitHub</a> <a href="https://github.com/whitef0x0/tellform">Fork me on GitHub</a>
</div> </div>
</div> </div>-->
<section class="content"> <section class="content">
<section ui-view></section> <section ui-view></section>
</section> </section>

View file

@ -1,4 +1,4 @@
{% extends 'layout.server.view.html' %} {% extends 'layout.server.view.html' %}
{% block content %} {% block content %}
<section ui-view></section> <section class="content" ui-view></section>
{% endblock %} {% endblock %}

View file

@ -34,6 +34,8 @@
<link href="/static/modules/core/img/brand/favicon.ico" rel="shortcut icon" type="image/x-icon"> <link href="/static/modules/core/img/brand/favicon.ico" rel="shortcut icon" type="image/x-icon">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css"> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/font-awesome/4.6.1/css/font-awesome.min.css">
<link rel="stylesheet" href="/static/lib/bootstrap/dist/css/bootstrap.min.css"> <link rel="stylesheet" href="/static/lib/bootstrap/dist/css/bootstrap.min.css">
<link rel='stylesheet' href='https://fonts.googleapis.com/css?family=Source+Sans+Pro:300,400,600,700,900'>
<!--Bower CSS dependencies--> <!--Bower CSS dependencies-->
{% for bowerCssFile in bowerCssFiles %} {% for bowerCssFile in bowerCssFiles %}
<link rel="stylesheet" href="{{bowerCssFile}}"> <link rel="stylesheet" href="{{bowerCssFile}}">
@ -61,15 +63,12 @@
</head> </head>
<body ng-cloak> <body ng-cloak>
<div class="github-fork-ribbon-wrapper right-bottom hidden-xs"> <!--<div class="github-fork-ribbon-wrapper right-bottom hidden-xs">
<div class="github-fork-ribbon"> <div class="github-fork-ribbon">
<a href="https://github.com/whitef0x0/tellform">Fork me on GitHub</a> <a href="https://github.com/whitef0x0/tellform">Fork me on GitHub</a>
</div> </div>
</div> </div>-->
<header data-ng-include="'/static/modules/core/views/header.client.view.html'"></header> {% block content %}{% endblock %}
<section class="content">
{% block content %}{% endblock %}
</section>
<script src="/static/lib/file-saver.js/FileSaver.js" type="text/javascript"></script> <script src="/static/lib/file-saver.js/FileSaver.js" type="text/javascript"></script>
<!--Embedding The User Object--> <!--Embedding The User Object-->

View file

@ -1,18 +1,71 @@
<!DOCTYPE html> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml"> <html>
<head> <head>
</head> <meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
<body> </head>
<p>Dear {{name}},</p> <body style="padding: 0; width: 100% !important; -webkit-text-size-adjust: 100%; margin: 0; -ms-text-size-adjust: 100%;" marginheight="0" marginwidth="0">
<br> <center>
<p> <table cellpadding="8" cellspacing="0" style="*width: 540px; padding: 0; width: 100% !important; background: #ffffff; margin: 0; background-color: #ffffff;" border="0">
You have just created a new account at {{appName}}. To use your account you must activate it.s <tr>
</p> <td valign="top">
<p>Please visit this url to activate your account:</p> <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">
<p>{{url}}</p> <tr>
<strong>If you didn't make this request, you can ignore this email.</strong> <td colspan="3" height="6"></td>
<br> </tr>
<br> <tr>
<p>The {{appName}} Support Team</p> <td>
</body> <table cellpadding="0" cellspacing="0" style="line-height: 25px;" border="0" align="center">
<tr>
<td colspan="3" height="30"></td>
</tr>
<tr>
<td width="36"></td>
<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">
//- -----------------------------------------------------------------------------------
//- Only Edit Here
//- -----------------------------------------------------------------------------------
p Hello {{name}}!
p
| Welcome to {{appName}}! Here is a special link to activate your new account:
p
a(href='${URL}') Activate my account
p
| Thanks so much for using our services! If you have any questions, or suggestions, please feel free to email us here at&nbsp;
a(href='mailto:{{contactEmail}}') {{contactEmail}}
| .
p   - The {{appName}} team
//- ----------------------------------------------------------------------------------
</td>
<td width="36"></td>
</tr>
<tr>
<td colspan="3" height="36"></td>
</tr>
</table>
</td>
</tr>
</table>
<table cellpadding="0" cellspacing="0" align="center" border="0">
<tr>
<td height="10"></td>
</tr>
<tr>
<td style="padding: 0; border-collapse: collapse;">
<table cellpadding="0" cellspacing="0" align="center" border="0">
<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;"></tr>
<td width="400" align="left">
<td width="128" align="right">© </td>
</td>
</table>
</td>
</tr>
</table>
</td>
</tr>
</table>
</center>
</body>
</html> </html>

View file

@ -15,7 +15,10 @@ module.exports = function() {
}, },
function(username, password, done) { function(username, password, done) {
User.findOne({ User.findOne({
username: username $or: [
{ "username": username},
{ "email": username}
]
}, function(err, user) { }, function(err, user) {
if (err) { if (err) {
return done(err); return done(err);

View file

@ -82,6 +82,7 @@
"passport-google-oauth": "~0.2.0", "passport-google-oauth": "~0.2.0",
"passport-linkedin": "~1.0.0", "passport-linkedin": "~1.0.0",
"passport-local": "~1.0.0", "passport-local": "~1.0.0",
"passport-localapikey-update": "^0.5.0",
"passport-twitter": "~1.0.2", "passport-twitter": "~1.0.2",
"path-exists": "^2.1.0", "path-exists": "^2.1.0",
"pdffiller": "~0.1.1", "pdffiller": "~0.1.1",

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -6,11 +6,12 @@ angular.module('core').controller('HeaderController', ['$rootScope', '$scope', '
$rootScope.signupDisabled = $window.signupDisabled; $rootScope.signupDisabled = $window.signupDisabled;
$scope.user = $rootScope.user = Auth.ensureHasCurrentUser(User); $scope.user = $rootScope.user = Auth.ensureHasCurrentUser(User);
console.log(Auth.ensureHasCurrentUser(User));
$scope.authentication = $rootScope.authentication = Auth; $scope.authentication = $rootScope.authentication = Auth;
$rootScope.languages = $scope.languages = ['en', 'fr', 'es', 'it', 'de']; $rootScope.languages = $scope.languages = ['en', 'fr', 'es', 'it', 'de'];
console.log($locale.id);
//Set global app language //Set global app language
if($scope.authentication.isAuthenticated()){ if($scope.authentication.isAuthenticated()){
$rootScope.language = $scope.user.language; $rootScope.language = $scope.user.language;
@ -30,9 +31,12 @@ angular.module('core').controller('HeaderController', ['$rootScope', '$scope', '
Auth.ensureHasCurrentUser(User); Auth.ensureHasCurrentUser(User);
$scope.user = $rootScope.user = null; $scope.user = $rootScope.user = null;
$state.go('listForms'); $state.go('listForms');
//Refresh view
$state.reload();
}, },
function(reason) { function(reason) {
console.log('Logout Failed: ' + reason); console.error('Logout Failed: ' + reason);
}); });
}; };

View file

@ -1,64 +1,89 @@
body { body {
overflow-x: hidden; overflow-x: hidden;
font-family: 'Source Sans Pro', sans-serif;
font-size: 16px;
}
.vcenter {
display: inline-block;
vertical-align: middle;
float: none;
}
/* Custom CSS for Buttons */
.btn-rounded {
border-radius: 100px;
font-size: 14px;
padding: 10px 28px;
margin: 0 2px;
margin-top: 1em;
text-transform: uppercase;
text-decoration: none!important;
}
.btn-secondary {
background: #DDDDDD;
color: #4c4c4c;
border: 2px #4c4c4c solid;
}
.btn-secondary:hover {
background: #cacaca;
border-color: #cacaca;
} }
/*Navbar Custom CSS*/ /*Navbar Custom CSS*/
.navbar {
min-height: 60px;
}
.navbar-inverse { .navbar-inverse {
background-color:#fafafa; background-color:#588EB4;
border: 0; border: 0;
color: white!important;
} }
.navbar .navbar-brand { .navbar .navbar-brand {
font-size: 1.6em; min-height: 60px;
font-weight: 900; padding: 10px;
color: rgb(255,131,131);
}
.navbar .navbar-brand:hover, .navbar .navbar-brand:visited {
color: #FA787E;
}
.navbar li.dropdown a.dropdown-toggle:hover > *{
color: black;
}
.navbar li.dropdown a.dropdown-toggle > *{
color: #d9d9d9;
}
.navbar li.dropdown.open a.dropdown-toggle:hover > *{
color: white;
}
.navbar .navbar-brand span {
text-decoration: underline;
}
.nav.navbar-nav.navbar-right li {
padding-right: 20px;
} }
.navbar-inverse .navbar-nav>li>a, .navbar li.dropdown a.dropdown-toggle > * { .navbar-nav {
color: rgb(131,131,131); min-height: 60px;
} }
.navbar-inverse .navbar-nav .active > a, .navbar li.dropdown.open a.dropdown-toggle > *, .navbar-inverse .navbar-nav>.open>a, .navbar-inverse .navbar-nav>.open>a, .navbar-inverse .navbar-nav>.open>a:focus, .navbar-inverse .navbar-nav>.open>a:hover {
background-color: rgb(131,131,131); .navbar-nav > li {
color: white!important;
min-height: 60px;
} }
.navbar-inverse .navbar-toggle { .navbar-nav > li > a {
background-color: #ddd; padding-top: 20px;
border:none;
}
.navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
color: white; color: white;
} }
.navbar-inverse .navbar-collapse{ .navbar-nav > li:hover, .navbar-nav > li.active {
background-color: #4b7096;
}
.navbar-inverse .navbar-nav>.open>a, .navbar-inverse .navbar-nav>.open>a:focus, .navbar-inverse .navbar-nav>.open>a:hover {
background-color: transparent;
color: inherit;
border: none; border: none;
} }
.navbar-inverse .navbar-nav>li>a {
color: white;
}
.navbar li.dropdown a.dropdown-toggle:hover > *{
color: #f9f9f9;
}
.navbar-inverse .navbar-toggle {
border:none;
}
.undecorated-link:hover { .undecorated-link:hover {
text-decoration: none; text-decoration: none;
} }
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak { [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
display: none !important; display: none !important;
} }
.browsehappy.jumbotron.hide,
body.ng-cloak .dropdown-menu>li>a {
{ color: #515151;
display: block;
} }
/*Hero Section CSS (for /home)*/ /*Hero Section CSS (for /home)*/

View file

@ -1,114 +0,0 @@
/* columns of same height styles */
.row-height {
display: table;
table-layout: fixed;
height: 100%;
width: 100%;
}
.col-height {
display: table-cell;
float: none;
height: 100%;
}
.col-top {
vertical-align: top;
}
.col-middle {
vertical-align: middle;
}
.col-bottom {
vertical-align: bottom;
}
@media (min-width: 480px) {
.row-xs-height {
display: table;
table-layout: fixed;
height: 100%;
width: 100%;
}
.col-xs-height {
display: table-cell;
float: none;
height: 100%;
}
.col-xs-top {
vertical-align: top;
}
.col-xs-middle {
vertical-align: middle;
}
.col-xs-bottom {
vertical-align: bottom;
}
}
@media (min-width: 768px) {
.row-sm-height {
display: table;
table-layout: fixed;
height: 100%;
width: 100%;
}
.col-sm-height {
display: table-cell;
float: none;
height: 100%;
}
.col-sm-top {
vertical-align: top;
}
.col-sm-middle {
vertical-align: middle;
}
.col-sm-bottom {
vertical-align: bottom;
}
}
@media (min-width: 992px) {
.row-md-height {
display: table;
table-layout: fixed;
height: 100%;
width: 100%;
}
.col-md-height {
display: table-cell;
float: none;
height: 100%;
}
.col-md-top {
vertical-align: top;
}
.col-md-middle {
vertical-align: middle;
}
.col-md-bottom {
vertical-align: bottom;
}
}
@media (min-width: 1200px) {
.row-lg-height {
display: table;
table-layout: fixed;
height: 100%;
width: 100%;
}
.col-lg-height {
display: table-cell;
float: none;
height: 100%;
}
.col-lg-top {
vertical-align: top;
}
.col-lg-middle {
vertical-align: middle;
}
.col-lg-bottom {
vertical-align: bottom;
}
}

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 9.3 KiB

View file

@ -1,4 +1,4 @@
<section class="navbar navbar-fixed-top navbar-inverse" data-ng-controller="HeaderController" ng-hide="hideNav"> <section class="navbar navbar-inverse" data-ng-controller="HeaderController" ng-hide="hideNav">
<div class="container" > <div class="container" >
<div class="navbar-header"> <div class="navbar-header">
<button class="navbar-toggle" type="button" data-ng-click="toggleCollapsibleMenu()"> <button class="navbar-toggle" type="button" data-ng-click="toggleCollapsibleMenu()">
@ -6,7 +6,7 @@
<span>{{ 'MENU_BTN' | translate }}</span> <span>{{ 'MENU_BTN' | translate }}</span>
</button> </button>
<a href="https://www.tellform.com/#!/" class="navbar-brand"> <a href="https://www.tellform.com/#!/" class="navbar-brand">
<i class="fa fa-archive" style="padding-right: 0.3em;"></i>Tell<span>Form</span> <img src="/static/modules/core/img/logo_white.svg" height="100%">
</a> </a>
</div> </div>
<nav class="collapse navbar-collapse" collapse="!isCollapsed" role="navigation"> <nav class="collapse navbar-collapse" collapse="!isCollapsed" role="navigation">
@ -49,8 +49,8 @@
</li> </li>
</ul> </ul>
</li> </li>
<li ng-click="signout()"> <li>
<a>{{ 'SIGNOUT_TAB' | translate }}</a> <a href='/' ng-click="signout()">{{ 'SIGNOUT_TAB' | translate }}</a>
</li> </li>
</ul> </ul>
</nav> </nav>

View file

@ -1,8 +1,12 @@
'use strict'; 'use strict';
// Forms controller // Forms controller
angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope', '$stateParams', '$state', 'Forms', 'CurrentForm', '$http', '$uibModal', 'myForm', '$filter', angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope', '$stateParams', '$state', 'Forms', 'CurrentForm', '$http', '$uibModal', 'myForm', '$filter', '$sce',
function($rootScope, $scope, $stateParams, $state, Forms, CurrentForm, $http, $uibModal, myForm, $filter) { function($rootScope, $scope, $stateParams, $state, Forms, CurrentForm, $http, $uibModal, myForm, $filter, $sce) {
$scope.trustSrc = function(src) {
return $sce.trustAsResourceUrl(src);
};
$scope = $rootScope; $scope = $rootScope;
$scope.animationsEnabled = true; $scope.animationsEnabled = true;
@ -11,24 +15,34 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope
CurrentForm.setForm($scope.myform); CurrentForm.setForm($scope.myform);
$scope.formURL = $scope.myform.admin.username + '.tellform.com'; $scope.formURL = "/#!/forms/" + $scope.myform._id;
$scope.tabData = [
console.log($scope.myform);
$scope.actualFormURL = window.location.protocol + '//' + $scope.myform.admin.username + '.' + window.location.host + "/#!/forms/" + $scope.myform._id;
var refreshFrame = $scope.refreshFrame = function(){
document.getElementById('iframe').contentWindow.location.reload();
};
$scope.tabData = [
{ {
heading: $filter('translate')('CREATE_TAB'), heading: $filter('translate')('CREATE_TAB'),
route: 'viewForm.create' templateName: 'create'
}, },
{ /*{
heading: $filter('translate')('DESIGN_TAB'), heading: $filter('translate')('DESIGN_TAB'),
route: 'viewForm.design' templateName: 'design'
}, },*/
{ {
heading: $filter('translate')('CONFIGURE_TAB'), heading: $filter('translate')('CONFIGURE_TAB'),
route: 'viewForm.configure' templateName: 'configure'
}, },
{ {
heading: $filter('translate')('ANALYZE_TAB'), heading: $filter('translate')('ANALYZE_TAB'),
route: 'viewForm.analyze' templateName: 'analyze'
} }
]; ];
@ -93,6 +107,7 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope
// Update existing Form // Update existing Form
$scope.update = $rootScope.update = function(updateImmediately, cb){ $scope.update = $rootScope.update = function(updateImmediately, cb){
refreshFrame();
var continueUpdate = true; var continueUpdate = true;
if(!updateImmediately){ if(!updateImmediately){

View file

@ -1,6 +1,8 @@
<header data-ng-include="'/static/modules/core/views/header.client.view.html'"></header>
<div class="container" cg-busy="{promise:updatePromise,templateUrl:'modules/forms/admin/views/directiveViews/cgBusy/update-form-message-TypeB.html',message:'Updating form...', backdrop:false, wrapperClass:'.busy-updating-wrapper'}"></div> <div class="container" cg-busy="{promise:updatePromise,templateUrl:'modules/forms/admin/views/directiveViews/cgBusy/update-form-message-TypeB.html',message:'Updating form...', backdrop:false, wrapperClass:'.busy-updating-wrapper'}"></div>
<section class="container admin-form"> <section class="admin-form">
<!-- Modal Delete Dialog Template --> <!-- Modal Delete Dialog Template -->
<script type="text/ng-template" id="myModalContent.html"> <script type="text/ng-template" id="myModalContent.html">
@ -27,7 +29,7 @@
</div> </div>
</script> </script>
<div class="page-header row-fluid" style="padding-bottom: 1em;"> <div class="page-header" style="padding-bottom: 1em;">
<div class="col-xs-10 col-sm-8"> <div class="col-xs-10 col-sm-8">
<h1 class="hidden-sm hidden-xs" data-ng-bind="myform.title" style="margin-bottom: 0px;"></h1> <h1 class="hidden-sm hidden-xs" data-ng-bind="myform.title" style="margin-bottom: 0px;"></h1>
<h2 class="hidden-md hidden-lg" data-ng-bind="myform.title" style="margin-bottom: 0px;"></h2> <h2 class="hidden-md hidden-lg" data-ng-bind="myform.title" style="margin-bottom: 0px;"></h2>
@ -43,13 +45,13 @@
</div> </div>
<div class="col-xs-1 col-sm-2"> <div class="col-xs-1 col-sm-2">
<small class="pull-right"> <small class="pull-right">
<a class="btn btn-default view-form-btn" href="//{{formURL}}/#!/forms/{{myform._id}}"> <a class="btn btn-secondary view-form-btn" href="{{actualFormURL}}">
<span class="hidden-xs hidden-sm"> <span class="hidden-xs hidden-sm">
{{ 'VIEW' | translate }} {{ 'VIEW' | translate }}
<span ng-show="myform.isLive"> <span ng-show="myform.isLive">
{{ 'LIVE' | translate }} {{ 'LIVE' | translate }}
</span> </span>
<span ng-hide="myform.isLive">{{ 'PREVIEW' | translate }}</span> {{ 'FORM' | translate }} <span ng-hide="myform.isLive">{{ 'PREVIEW' | translate }}</span>
</span> </span>
<span class="hidden-xs hidden-md hidden-lg"> <span class="hidden-xs hidden-md hidden-lg">
View View
@ -63,16 +65,84 @@
</div> </div>
</div> </div>
<div class="row-fluid"> <div class="row">
<div class="col-xs-12"> <div class="col-xs-12">
<!-- <tabset> --> <uib-tabset active="activePill" vertical="true" type="pills">
<tabs data="tabData"></tabs> <uib-tab ng-repeat="tab in tabData" index="$index" heading="{{tab.heading}}">
<!-- </tabset> --> <div class='row' data-ng-include="'/static/modules/forms/admin/views/adminTabs/'+tab.templateName+'.html'" onload="form_url = trustSrc(formURL)"></div>
</div> </uib-tab>
<uib-tab heading="Design" index="5">
<div class="config-form design container">
<div class="row">
<div class="col-md-4 col-sm-12 container">
<div class="row field">
<div class="field-title col-sm-5">
<h5>{{ 'BACKGROUND_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-6">
<input class="form-control" colorpicker="hex" type="text" ng-model="myform.design.colors.backgroundColor" ng-style="{ 'background-color': myform.design.colors.backgroundColor }"/>
</div>
</div>
<div class="col-xs-12"> <div class="row field">
<ui-view></ui-view> <div class="field-title col-sm-5">
</div> <h5>{{ 'QUESTION_TEXT_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-6">
<input class="form-control" colorpicker="hex" type="text" ng-model="myform.design.colors.questionColor" ng-style="{ 'background-color': myform.design.colors.questionColor }"/>
</div>
</div>
<div class="row field">
<div class="field-title col-sm-5">
<h5>{{ 'ANSWER_TEXT_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-6">
<input class="form-control" colorpicker="hex" type="text" ng-model="myform.design.colors.answerColor" ng-style="{ 'background-color': myform.design.colors.answerColor }"/>
</div>
</div>
<div class="row field">
<div class="field-title col-sm-5">
<h5>{{ 'BTN_BACKGROUND_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-6">
<input class="form-control" colorpicker="hex" type="text"
ng-model="myform.design.colors.buttonColor"
ng-style="{ 'background-color': myform.design.colors.buttonColor }"/>
</div>
</div>
<div class="row field">
<div class="field-title col-sm-5">
<h5>{{ 'BTN_TEXT_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-6">
<input class="form-control" colorpicker="hex" type="text"
ng-model="myform.design.colors.buttonTextColor"
ng-style="{ 'background-color': myform.design.colors.buttonTextColor }"/>
</div>
</div>
</div>
<div class="col-md-8 hide-md hide-lg">
<iframe id="iframe" ng-if="!!formURL" src="{{trustSrc(formURL)}}" style="border: none; box-shadow: 0px 0px 10px 0px grey; overflow: hidden; height: 400px; width: 90%; position: absolute;"></iframe>
</div>
</div>
<div class="row">
<div class="col-sm-offset-4 col-sm-2">
<button class="btn btn-signup btn-rounded" type="button" ng-click="update(false, null)"><i class="icon-arrow-left icon-white"></i>{{ 'SAVE_CHANGES' | translate }}</button>
</div>
<div class="col-sm-1">
<button class="btn btn-secondary btn-rounded" type="button" ng-click="resetForm()"><i class="icon-eye-open icon-white"></i>{{ 'CANCEL' | translate }}</button>
</div>
</div>
</div>
</uib-tab>
</uib-tabset>
</div>
</div> </div>
</section> </section>

View file

@ -1,21 +1,12 @@
<div class="config-form design container"> <div class="config-form design container">
<div class="row"> <div class="row">
<div class="col-md-12 container"> <div class="col-md-4 col-sm-12 container">
<div class="row">
<div class="col-sm-12">
<h2 class="hidden-sm hidden-xs">{{ 'DESIGN_HEADER' | translate }}</h2>
<h3 class="hidden-lg hidden-md">{{ 'DESIGN_HEADER' | translate }}</h3>
</div>
</div>
<div class="row field"> <div class="row field">
<div class="field-title col-sm-3"> <div class="field-title col-sm-3">
<h5>{{ 'BACKGROUND_COLOR' | translate }}</h5> <h5>{{ 'BACKGROUND_COLOR' | translate }}</h5>
</div> </div>
<div class="field-input col-sm-6">
<div class="field-input col-sm-9"> <input ng-change="refreshIframe()" class="form-control" colorpicker="hex" type="text" ng-model="myform.design.colors.backgroundColor" ng-style="{ 'background-color': myform.design.colors.backgroundColor }"/>
<input colorpicker="hex" type="text" ng-model="myform.design.colors.backgroundColor" ng-style="{ 'background-color': myform.design.colors.backgroundColor }"/>
</div> </div>
</div> </div>
@ -24,11 +15,8 @@
<h5>{{ 'QUESTION_TEXT_COLOR' | translate }}</h5> <h5>{{ 'QUESTION_TEXT_COLOR' | translate }}</h5>
</div> </div>
<div class="field-input col-sm-9"> <div class="field-input col-sm-6">
<input ng-change="refreshIframe()" class="form-control" colorpicker="hex" type="text" ng-model="myform.design.colors.questionColor" ng-style="{ 'background-color': myform.design.colors.questionColor }"/>
<input colorpicker="hex" type="text" ng-model="myform.design.colors.questionColor" ng-style="{ 'background-color': myform.design.colors.questionColor }"/>
</div> </div>
</div> </div>
@ -37,8 +25,8 @@
<h5>{{ 'ANSWER_TEXT_COLOR' | translate }}</h5> <h5>{{ 'ANSWER_TEXT_COLOR' | translate }}</h5>
</div> </div>
<div class="field-input col-sm-9"> <div class="field-input col-sm-6">
<input colorpicker="hex" type="text" ng-model="myform.design.colors.answerColor" ng-style="{ 'background-color': myform.design.colors.answerColor }"/> <input ng-change="refreshIframe()" class="form-control" colorpicker="hex" type="text" ng-model="myform.design.colors.answerColor" ng-style="{ 'background-color': myform.design.colors.answerColor }"/>
</div> </div>
</div> </div>
@ -47,8 +35,8 @@
<h5>{{ 'BTN_BACKGROUND_COLOR' | translate }}</h5> <h5>{{ 'BTN_BACKGROUND_COLOR' | translate }}</h5>
</div> </div>
<div class="field-input col-sm-9"> <div class="field-input col-sm-6">
<input colorpicker="hex" type="text" <input ng-change="refreshIframe()" class="form-control" colorpicker="hex" type="text"
ng-model="myform.design.colors.buttonColor" ng-model="myform.design.colors.buttonColor"
ng-style="{ 'background-color': myform.design.colors.buttonColor }"/> ng-style="{ 'background-color': myform.design.colors.buttonColor }"/>
</div> </div>
@ -58,21 +46,24 @@
<h5>{{ 'BTN_TEXT_COLOR' | translate }}</h5> <h5>{{ 'BTN_TEXT_COLOR' | translate }}</h5>
</div> </div>
<div class="field-input col-sm-9"> <div class="field-input col-sm-6">
<input colorpicker="hex" type="text" <input ng-change="refreshIframe()" class="form-control" colorpicker="hex" type="text"
ng-model="myform.design.colors.buttonTextColor" ng-model="myform.design.colors.buttonTextColor"
ng-style="{ 'background-color': myform.design.colors.buttonTextColor }"/> ng-style="{ 'background-color': myform.design.colors.buttonTextColor }"/>
</div> </div>
</div> </div>
</div> </div>
<div class="col-md-8 hide-md hide-lg">
<iframe refreshable="refreshDesign" ng-if="!!form_url" src="{{form_url}}" style="border: none; box-shadow: 0px 0px 10px 0px grey; overflow: hidden; height: 95vh; width: 90%; position: absolute;"></iframe>
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-sm-offset-4 col-sm-2"> <div class="col-sm-offset-4 col-sm-2">
<button class="btn btn-primary btn-large" type="button" ng-click="update(false, null)"><i class="icon-arrow-left icon-white"></i> Save Changes</button> <button class="btn btn-signup btn-rounded" type="button" ng-click="update(false, null)"><i class="icon-arrow-left icon-white"></i>{{ 'SAVE_CHANGES' | translate }}</button>
</div> </div>
<div class="col-sm-1"> <div class="col-sm-1">
<button class="btn btn-default" type="button" ng-click="resetForm()"><i class="icon-eye-open icon-white"></i> Cancel</button> <button class="btn btn-secondary btn-rounded" type="button" ng-click="resetForm()"><i class="icon-eye-open icon-white"></i>{{ 'CANCEL' | translate }}</button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,22 +1,21 @@
<div class="config-form container"> <div class="config-form container">
<div class="row"> <!--<div class="row">
<div class="col-sm-offset-2 col-sm-10">
<!-- Settings --> <h2 class="hidden-sm hidden-xs">{{ 'ADVANCED_SETTINGS' | translate }}</h2>
<div class="col-sm-12 container-fluid"> <h3 class="hidden-lg hidden-md">{{ 'ADVANCED_SETTINGS' | translate }}</h3>
<div class="row"> </div>
<div class="col-sm-12"> </div>-->
<h2 class="hidden-sm hidden-xs">{{ 'ADVANCED_SETTINGS' | translate }}</h2> <!-- Settings -->
<h3 class="hidden-lg hidden-md">{{ 'ADVANCED_SETTINGS' | translate }}</h3> <div class="row">
</div> <div class="col-sm-offset-2 col-sm-4">
</div>
<div class="row field"> <div class="row field">
<div class="field-title col-sm-4"> <div class="field-title col-sm-12">
<h5>{{ 'FORM_NAME' | translate }}</h5> <h5>{{ 'FORM_NAME' | translate }}</h5>
</div> </div>
<div class="col-sm-8"> <div class="col-sm-12">
<input type="text" <input class="form-control"
type="text"
ng-model="myform.title" ng-model="myform.title"
value="{{myform.title}}" value="{{myform.title}}"
style="width: 100%;" style="width: 100%;"
@ -26,44 +25,28 @@
</div> </div>
<div class="row field"> <div class="row field">
<div class="field-title col-sm-6"> <div class="field-title col-sm-12">
<h5>{{ 'FORM_STATUS' | translate }}</h5> <h5>{{ 'FORM_STATUS' | translate }}</h5>
</div> </div>
<div class="field-input col-sm-6"> <div class="field-input col-sm-12">
<label> <label style="display: inline-block;">
<input type="radio" data-ng-value="true" ng-model="myform.isLive" ng-required="true" style="background-color:#33CC00;"/> <input type="radio" data-ng-value="true" ng-model="myform.isLive" ng-required="true" style="background-color:#33CC00;"/>
&nbsp;<span>{{ 'PUBLIC' | translate }}</span> &nbsp;<span>{{ 'PUBLIC' | translate }}</span>
</label> </label>
<label> <label style="display: inline-block;">
<input type="radio" data-ng-value="false" ng-model="myform.isLive" ng-required="true" /> <input type="radio" data-ng-value="false" ng-model="myform.isLive" ng-required="true" />
&nbsp;<span>{{ 'PRIVATE' | translate }}</span> &nbsp;<span>{{ 'PRIVATE' | translate }}</span>
</label> </label>
</div> </div>
</div> </div>
<div class="row field">
<div class="field-title col-sm-4">
<h5>{{ 'GA_TRACKING_CODE' | translate }}</h5>
</div>
<div class="col-sm-8">
<input type="text"
ng-model="myform.analytics.gaCode"
value="{{myform.analytics.gaCode}}"
style="width: 100%;"
ng-minlength="4"
placeholder="UA-XXXXX-Y"
ng-pattern="/\bUA-\d{4,10}-\d{1,4}\b/">
</div>
</div>
<div class="row field"> <div class="row field">
<div class="col-xs-6 field-title">Language</div> <div class="col-sm-12 field-title">Language</div>
<div class="col-xs-4 field-input"> <div class="col-sm-12 field-input">
<select ng-model="myform.language"> <select ng-model="myform.language">
<option ng-repeat="language in languages" <option ng-repeat="language in languages"
ng-selected="language == myform.language" ng-selected="language == myform.language"
@ -74,51 +57,69 @@
<span class="required-error" ng-show="field.required && !field.fieldValue">* required</span> <span class="required-error" ng-show="field.required && !field.fieldValue">* required</span>
</div> </div>
</div> </div>
<div class="row field">
<div class="field-title col-sm-6">
<h5>{{ 'DISPLAY_FOOTER' | translate }}</h5>
</div>
<div class="field-input col-sm-6">
<label>
<input type="radio" data-ng-value="false" ng-model="myform.hideFooter" ng-required="true" />
&nbsp;<span>{{ 'YES' | translate }}</span>
</label>
<label>
<input type="radio" data-ng-value="true" ng-model="myform.hideFooter" ng-required="true" />
&nbsp;<span>{{ 'No' | translate }}</span>
</label>
</div>
</div>
<div class="row field">
<div class="field-title col-sm-6">
<h5>Display Start Page?</h5>
</div>
<div class="field-input col-sm-6">
<label>
<input type="radio" data-ng-value="true" ng-model="myform.startPage.showStart" ng-required="true" style="background-color:#33CC00;"/>
&nbsp;<span>{{ 'YES' | translate }}</span>
</label>
<label>
<input type="radio" data-ng-value="false" ng-model="myform.startPage.showStart" ng-required="true" />
&nbsp;<span>{{ 'NO' | translate }}</span>
</label>
</div>
</div>
</div> </div>
<div class="col-sm-4">
<div class="row field">
<div class="field-title col-sm-12">
<h5>{{ 'GA_TRACKING_CODE' | translate }}</h5>
</div>
<div class="col-sm-12">
<input class="form-control"
type="text"
ng-model="myform.analytics.gaCode"
value="{{myform.analytics.gaCode}}"
style="width: 100%;"
ng-minlength="4"
placeholder="UA-XXXXX-Y"
ng-pattern="/\bUA-\d{4,10}-\d{1,4}\b/">
</div>
</div>
<div class="row field">
<div class="field-title col-sm-12">
<h5>{{ 'DISPLAY_FOOTER' | translate }}</h5>
</div>
<div class="field-input col-sm-12">
<label style="display: inline-block;">
<input type="radio" data-ng-value="false" ng-model="myform.hideFooter" ng-required="true" />
&nbsp;<span>{{ 'YES' | translate }}</span>
</label>
<label style="display: inline-block;">
<input type="radio" data-ng-value="true" ng-model="myform.hideFooter" ng-required="true" />
&nbsp;<span>{{ 'No' | translate }}</span>
</label>
</div>
</div>
<div class="row field">
<div class="field-title col-sm-12">
<h5>Display Start Page?</h5>
</div>
<div class="field-input col-sm-12">
<label style="display: inline-block;">
<input type="radio" data-ng-value="true" ng-model="myform.startPage.showStart" ng-required="true" style="background-color:#33CC00;"/>
&nbsp;<span>{{ 'YES' | translate }}</span>
</label>
<label style="display: inline-block;">
<input type="radio" data-ng-value="false" ng-model="myform.startPage.showStart" ng-required="true" />
&nbsp;<span>{{ 'NO' | translate }}</span>
</label>
</div>
</div>
</div>
</div> </div>
<div class="row"> <div class="row">
<div class="col-sm-offset-4 col-sm-2"> <div class="col-sm-offset-4 col-sm-2">
<button class="btn btn-primary btn-large" type="button" ng-click="update(false, null)"><i class="icon-arrow-left icon-white"></i>{{ 'SAVE_CHANGES' | translate }}</button> <button class="btn btn-signup btn-rounded" type="button" ng-click="update(false, null)"><i class="icon-arrow-left icon-white"></i>{{ 'SAVE_CHANGES' | translate }}</button>
</div> </div>
<div class="col-sm-1"> <div class="col-sm-1">
<button class="btn btn-default" type="button" ng-click="resetForm()"><i class="icon-eye-open icon-white"></i>{{ 'CANCEL' | translate }}</button> <button class="btn btn-secondary btn-rounded" type="button" ng-click="resetForm()"><i class="icon-eye-open icon-white"></i>{{ 'CANCEL' | translate }}</button>
</div> </div>
</div> </div>
</div> </div>

View file

@ -1,7 +1,7 @@
<form class="row container" name="editForm" auto-save-form auto-save-watch="myform" auto-save-callback="update"> <form class="row container" name="editForm" auto-save-form auto-save-watch="myform" auto-save-callback="update">
<!-- Add Fields Element --> <!-- Add Fields Element -->
<div class="col-xs-2 col-sm-4 col-md-4 add-field"> <div class="col-xs-2 col-sm-4 add-field">
<div class="row add-field-title"> <div class="row add-field-title">
<h3 class="col-md-12 hidden-sm hidden-xs">{{ 'ADD_FIELD_LG' | translate }}</h3> <h3 class="col-md-12 hidden-sm hidden-xs">{{ 'ADD_FIELD_LG' | translate }}</h3>

View file

@ -1,8 +1,5 @@
<div class="submissions-table row container"> <div class="submissions-table row container">
<div class="row text-center analytics"> <div class="row text-center analytics">
<div class="row col-xs-12 header-numbers">
Overview Analytics
</div>
<div class="row col-xs-12 header-title"> <div class="row col-xs-12 header-title">
<div class="col-xs-3"> <div class="col-xs-3">
{{ 'TOTAL_VIEWS' | translate }} {{ 'TOTAL_VIEWS' | translate }}
@ -37,9 +34,6 @@
{{AverageTimeElapsed | secondsToDateTime | date:'mm:ss'}} {{AverageTimeElapsed | secondsToDateTime | date:'mm:ss'}}
</div> </div>
</div> </div>
<div class="row col-xs-12 header-numbers">
Device Analytics
</div>
<div class="row col-xs-12 detailed-title"> <div class="row col-xs-12 detailed-title">
<div class="col-xs-3"> <div class="col-xs-3">
{{ 'DESKTOP_AND_LAPTOP' | translate }} {{ 'DESKTOP_AND_LAPTOP' | translate }}
@ -210,9 +204,6 @@
</div> </div>
</div> </div>
<div class="row col-xs-12 text-center" style="font-size:5em;">
Field Analytics
</div>
<div class="row col-xs-12 field-title-row"> <div class="row col-xs-12 field-title-row">
<div class="col-xs-3"> <div class="col-xs-3">
@ -247,9 +238,6 @@
</div> </div>
</div> </div>
<br> <br>
<div class="row col-xs-12 header-numbers text-center" style="font-size:5em;">
Responses Table
</div>
<div class="row table-tools"> <div class="row table-tools">
<div class="col-xs-2"> <div class="col-xs-2">
<button class="btn btn-danger" ng-click="deleteSelectedSubmissions()" ng-disabled="!isAtLeastOneChecked();"> <button class="btn btn-danger" ng-click="deleteSelectedSubmissions()" ng-disabled="!isAtLeastOneChecked();">

View file

@ -1,3 +1,5 @@
<header data-ng-include="'/static/modules/core/views/header.client.view.html'"></header>
<section class="overlay" ng-if="showCreateModal" ng-click="closeCreateModal()"></section> <section class="overlay" ng-if="showCreateModal" ng-click="closeCreateModal()"></section>
<section data-ng-controller="ListFormsController as ctrl" data-ng-init="findAll()" class="container"> <section data-ng-controller="ListFormsController as ctrl" data-ng-init="findAll()" class="container">

View file

@ -1,3 +1,19 @@
/* Custom Tab CSS */
.nav.nav-pills.nav-stacked {
width: 16.66666667%;
float: left;
position: relative;
min-height: 1px;
padding-right: 15px;
}
div.tab-content {
width: 83.33333333%;
position: relative;
min-height: 1px;
float:left;
padding-top: 0!important;
}
.panel-default.startPage { .panel-default.startPage {
border-style: dashed; border-style: dashed;
border-color: #a9a9a9; border-color: #a9a9a9;
@ -60,11 +76,11 @@ section.content p.breakwords {
word-break: break-all; word-break: break-all;
} }
.btn { .public-form .btn {
border: 1px solid #c6c6c6; border: 1px solid #c6c6c6;
} }
.btn[type='submit'] { .public-form .btn[type='submit'] {
font-size: 1.5em; font-size: 1.5em;
padding: 0.35em 1.2em 0.35em 1.2em; padding: 0.35em 1.2em 0.35em 1.2em;
} }
@ -82,7 +98,7 @@ section.content > section > section.container {
font-size: 18px; font-size: 18px;
font-weight: normal; font-weight: normal;
} }
.input-block { .public-form .input-block {
display: block; display: block;
width: 100%; width: 100%;
} }
@ -116,7 +132,7 @@ div.form-fields {
position: relative; position: relative;
padding-top: 35vh; padding-top: 35vh;
} }
.letter { .public-form .letter {
position: relative; position: relative;
display: -moz-inline-stack; display: -moz-inline-stack;
display: inline-block; display: inline-block;
@ -302,6 +318,8 @@ div.config-form .row.field {
} }
.admin-form .page-header { .admin-form .page-header {
border: none; border: none;
margin-top: none;
margin-bottom: none;
} }
/*Styles for admin view tabs */ /*Styles for admin view tabs */

View file

@ -4,6 +4,7 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
$translateProvider.translations('en', { $translateProvider.translations('en', {
ACCESS_DENIED_TEXT: 'You need to be logged in to access this page', ACCESS_DENIED_TEXT: 'You need to be logged in to access this page',
USERNAME_OR_EMAIL_LABEL: 'Username or Email',
USERNAME_LABEL: 'Username', USERNAME_LABEL: 'Username',
PASSWORD_LABEL: 'Password', PASSWORD_LABEL: 'Password',
CURRENT_PASSWORD_LABEL: 'Current Password', CURRENT_PASSWORD_LABEL: 'Current Password',
@ -15,10 +16,15 @@ angular.module('users').config(['$translateProvider', function ($translateProvid
LANGUAGE_LABEL: 'Language', LANGUAGE_LABEL: 'Language',
EMAIL_LABEL: 'Email', EMAIL_LABEL: 'Email',
SIGNUP_HEADER_TEXT: 'Sign up with your email', SIGNUP_ACCOUNT_LINK: 'Don\'t have an account? Sign up here',
SIGNIN_HEADER_TEXT: 'Sign in with your email or username', SIGN_IN_ACCOUNT_LINK: 'Already have an account? Sign in here',
SIGNUP_HEADER_TEXT: 'Sign up',
SIGNIN_HEADER_TEXT: 'Sign in',
SIGNUP_ERROR_TEXT: 'Couldn\'t complete registration due to errors', SIGNUP_ERROR_TEXT: 'Couldn\'t complete registration due to errors',
ENTER_ACCOUNT_EMAIL: 'Enter your account email.',
RESEND_VERIFICATION_EMAIL: 'Resend Verification Email',
SAVE_CHANGES: 'Save Changes',
UPDATE_PROFILE_BTN: 'Update Profile', UPDATE_PROFILE_BTN: 'Update Profile',
PROFILE_SAVE_SUCCESS: 'Profile saved successfully', PROFILE_SAVE_SUCCESS: 'Profile saved successfully',

View file

@ -2,8 +2,9 @@
angular.module('users').controller('PasswordController', ['$scope', '$stateParams', '$state', 'User', angular.module('users').controller('PasswordController', ['$scope', '$stateParams', '$state', 'User',
function($scope, $stateParams, $state, User) { function($scope, $stateParams, $state, User) {
$scope.error = '';
$scope.error = '';
// Submit forgotten password account id // Submit forgotten password account id
$scope.askForPasswordReset = function() { $scope.askForPasswordReset = function() {
User.askForPasswordReset($scope.credentials).then( User.askForPasswordReset($scope.credentials).then(
@ -37,4 +38,4 @@ angular.module('users').controller('PasswordController', ['$scope', '$stateParam
); );
}; };
} }
]); ]);

View file

@ -1,10 +1,11 @@
'use strict'; 'use strict';
angular.module('users').controller('SettingsController', ['$scope', '$rootScope', '$http', '$state', 'Users', angular.module('users').controller('SettingsController', ['$scope', '$rootScope', '$http', '$state', 'Users', 'Auth',
function($scope, $rootScope, $http, $state, Users) { function($scope, $rootScope, $http, $state, Users, Auth) {
$scope.user = $rootScope.user;
// Check if there are additional accounts $scope.user = Auth.currentUser;
// Check if there are additional accounts
$scope.hasConnectedAdditionalSocialAccounts = function(provider) { $scope.hasConnectedAdditionalSocialAccounts = function(provider) {
for (var i in $scope.user.additionalProvidersData) { for (var i in $scope.user.additionalProvidersData) {
return true; return true;
@ -12,6 +13,10 @@ angular.module('users').controller('SettingsController', ['$scope', '$rootScope'
return false; return false;
}; };
$scope.cancel = function(){
$scope.user = Auth.currentUser;
};
// Check if provider is already in use with current user // Check if provider is already in use with current user
$scope.isConnectedSocialAccount = function(provider) { $scope.isConnectedSocialAccount = function(provider) {
return $scope.user.provider === provider || ($scope.user.additionalProvidersData && $scope.user.additionalProvidersData[provider]); return $scope.user.provider === provider || ($scope.user.additionalProvidersData && $scope.user.additionalProvidersData[provider]);
@ -65,4 +70,4 @@ angular.module('users').controller('SettingsController', ['$scope', '$rootScope'
}; };
} }
]); ]);

View file

@ -1,11 +1,83 @@
.row.auth form .field-input select { section.auth {
padding: 0.45em 0.9em; padding: 70px 0;
width: 100%; position: absolute;
background: transparent; min-height: 100%;
font-size: 16px; top: 0;
border: 1px solid #ccc; left: 0;
height: 34px; width: 100%;
color: white;
background-color: #50B5C1; /* Old browsers */
background: -moz-linear-gradient(137deg, #50B5C1 0%, #6450A0 85%); /* FF3.6-15 */
background: -webkit-linear-gradient(137deg, #50B5C1 0%, #6450A0 85%); /* Chrome10-25,Safari5.1-6 */
background: linear-gradient(137deg, #50B5C1 0%, #6450A0 85%);
background: linear-gradient(137deg, #50B5C1 0%, #6450A0 85%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#50B5C1', endColorstr='#6450A0', GradientType=1); /* IE6-9 fallback on horizontal gradient */
} }
section.auth > h3{
font-size: 2em;
font-weight: 500;
}
.valign-wrapper {
display: -webkit-flex;
display: -ms-flexbox;
display: flex;
-webkit-align-items: center;
-ms-flex-align: center;
align-items: center;
}
.valign-wrapper .valign {
display: block;
width: 100%;
}
section.auth a {
color: white;
text-decoration: underline;
}
section.auth.signup-view > h3 {
font-size: 3em;
padding-bottom: 0.5em;
}
section.auth form .field-input select {
padding: 0.45em 0.9em;
width: 100%;
background: transparent;
font-size: 16px;
border: 1px solid #ccc;
height: 34px;
}
section.auth input {
color: #4c4c4c;
}
.btn-rounded.btn-signup {
background-color: #FFD747;
color: #896D0B;
border: 2px #FFD747 solid;
}
.btn-rounded.btn-signup:hover {
color: #FFD747;
background-color: #896D0B;
border: 2px #896D0B solid;
}
.btn-rounded.btn-default {
background-color: transparent;
color: white;
border: 2px white solid;
}
.btn-rounded.btn-default:focus, .btn-rounded.btn-default:hover {
color: #6450A0;
background-color: white;
border-color: white;
}
@media (min-width: 992px) { @media (min-width: 992px) {
.nav-users { .nav-users {
@ -22,20 +94,17 @@
position: absolute; position: absolute;
} }
section.auth { section.auth input.form-control {
margin-top: 5em; border: none;
} }
section.auth > h3{
font-size: 3em;
font-weight: 500;
color: #777;
}
section.auth.signup-view > h3 { input.form-control {
font-size: 4.4em; border-radius: 4px;
padding-bottom: 0.5em; box-shadow: none;
} font-size: 18px;
padding: 30px 20px;
}
/* section.auth.signup-view.success > h3 { .btn {
padding-bottom: 1.2em; border: none;
}*/ }

View file

@ -1,4 +1,4 @@
<section class="row text-center auth"> <section class="text-center auth">
<h3 class="col-md-12">{{ 'ACCESS_DENIED_TEXT' | translate }}</h3> <h3 class="col-md-12">{{ 'ACCESS_DENIED_TEXT' | translate }}</h3>
<a href="/#!/sigin" class="col-md-12">{{ 'SIGNIN_BTN' | translate }}</a> <a href="/#!/sigin" class="col-md-12">{{ 'SIGNIN_BTN' | translate }}</a>
</section> </section>

View file

@ -1,5 +1,5 @@
<section class="row auth" data-ng-controller="AuthenticationController"> <section class="auth sigin-view valign-wrapper" data-ng-controller="AuthenticationController">
<h3 class="col-md-12 text-center">{{ 'SIGNIN_HEADER_TEXT' | translate }}</h3> <!--<h3 class="col-md-12 text-center">{{ 'SIGNIN_HEADER_TEXT' | translate }}</h3>-->
<!-- <div class="col-md-12 text-center"> <!-- <div class="col-md-12 text-center">
<a href="/auth/facebook" class="undecorated-link"> <a href="/auth/facebook" class="undecorated-link">
<img src="/modules/users/img/buttons/facebook.png"> <img src="/modules/users/img/buttons/facebook.png">
@ -18,35 +18,40 @@
</a> </a>
</div> --> </div> -->
<!-- <h3 class="col-md-12 text-center">Or with your account</h3> --> <!-- <h3 class="col-md-12 text-center">Or with your account</h3> -->
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6">
<form class="signin form-horizontal" autocomplete="off">
<fieldset>
<div data-ng-show="error" class="text-center text-danger">
Error: <strong data-ng-bind="error"></strong>
</div>
<div class="form-group">
<label for="username">{{ 'USERNAME_LABEL' | translate }}</label>
<input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="{{ 'USERNAME_LABEL' | translate }}" ng-pattern="languageRegExp" ng-minlength="4">
</div>
<div class="form-group">
<label for="password">{{ 'PASSWORD_LABEL' | translate }}</label>
<input type="password" id="password" name="password" class="form-control" data-ng-model="credentials.password" placeholder="{{ 'PASSWORD_LABEL' | translate }}">
</div>
<div class="forgot-password">
<a ui-sref="forgot">{{ 'FORGOT_PASSWORD_LINK' | translate }}</a>
<br>
<a ui-sref="verify">{{ 'REVERIFY_ACCOUNT_LINK' | translate }}</a>
</div>
<div class="text-center form-group">
<button class="btn btn-primary" ng-click="signin()">{{ 'SIGNIN_BTN' | translate }}</button>
<span ng-hide="$root.signupDisabled"> <div class="row valign">
&nbsp; or&nbsp; <div class="col-md-4 col-md-offset-4">
<a ui-sref="signup">{{ 'SIGNUP_BTN' | translate }}</a> <div class="col-md-12 text-center" style="padding-bottom: 50px;">
</span> <img src="/static/modules/core/img/logo_white.svg" height="100px">
</div>
<div class="col-md-12">
<form class="signin form-horizontal" autocomplete="off">
<fieldset>
<div data-ng-show="error" class="text-center text-danger">
Error: <strong data-ng-bind="error"></strong>
</div>
<div class="form-group">
<!--<label for="username">{{ 'USERNAME_LABEL' | translate }}</label>-->
<input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="{{ 'USERNAME_OR_EMAIL_LABEL' | translate }}" ng-minlength="4">
</div>
<div class="form-group">
<!--<label for="password">{{ 'PASSWORD_LABEL' | translate }}</label>-->
<input type="password" id="password" name="password" class="form-control" data-ng-model="credentials.password" placeholder="{{ 'PASSWORD_LABEL' | translate }}" ng-minlength="4">
</div>
<div class="form-group">
<button class="btn btn-signup btn-rounded btn-block" ng-click="signin()">{{ 'SIGNIN_BTN' | translate }}</button>
</div>
<div class="text-center forgot-password">
<a ui-sref="forgot">{{ 'FORGOT_PASSWORD_LINK' | translate }}</a>
</div>
</div> </fieldset>
</fieldset> </form>
</form> </div>
</div>
<div class="text-center forgot-password col-md-12">
<a ui-sref="signup">{{ 'SIGNUP_ACCOUNT_LINK' | translate }}</a>
</div>
</div> </div>
</section> </section>

View file

@ -1,4 +1,4 @@
<section class="row auth signup-view success" data-ng-controller="AuthenticationController"> <section class="auth signup-view success" data-ng-controller="AuthenticationController">
<!-- <h3 class="col-md-12 text-center">Sign up using your social accounts</h3> <!-- <h3 class="col-md-12 text-center">Sign up using your social accounts</h3>
<div class="col-md-12 text-center"> <div class="col-md-12 text-center">
<a href="/auth/facebook" class="undecorated-link"> <a href="/auth/facebook" class="undecorated-link">
@ -29,7 +29,7 @@
<p> <p>
<strong>{{ 'BEFORE_YOU_CONTINUE' | translate }}</strong> <a href="mail:polydaic@gmail.com">polydaic@gmail.com</a></p> <strong>{{ 'BEFORE_YOU_CONTINUE' | translate }}</strong> <a href="mail:polydaic@gmail.com">polydaic@gmail.com</a></p>
<div class="text-center form-group"> <div class="text-center form-group">
<button type="submit" class="btn btn-large btn-primary"> <button type="submit" class="btn btn-primary btn-rounded">
<a href="/#!/" style="color: white; text-decoration: none;">Continue</a> <a href="/#!/" style="color: white; text-decoration: none;">Continue</a>
</button> </button>
</div> </div>

View file

@ -1,4 +1,4 @@
<section class="row auth signup-view" data-ng-controller="AuthenticationController"> <section class="auth signup-view valign-wrapper" data-ng-controller="AuthenticationController">
<!-- <h3 class="col-md-12 text-center">Sign up using your social accounts</h3> <!-- <h3 class="col-md-12 text-center">Sign up using your social accounts</h3>
<div class="col-md-12 text-center"> <div class="col-md-12 text-center">
<a href="/auth/facebook" class="undecorated-link"> <a href="/auth/facebook" class="undecorated-link">
@ -17,54 +17,41 @@
<img src="/modules/users/img/buttons/github.png"> <img src="/modules/users/img/buttons/github.png">
</a> </a>
</div> --> </div> -->
<h3 class="col-md-12 text-center">{{ 'SIGNUP_HEADER_TEXT' | translate }}</h3> <!--<h3 class="col-md-12 text-center">{{ 'SIGNUP_HEADER_TEXT' | translate }}</h3>-->
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6">
<form name="userForm" data-ng-submit="signup()" class="signin form-horizontal" autocomplete="off"> <div class="row valign">
<fieldset> <div class="col-md-12 text-center vcenter" style="padding-bottom: 50px;">
<div data-ng-show="error" id="signup_errors" class="text-center text-danger"> <img src="/static/modules/core/img/logo_white.svg" height="100px">
{{'SIGNUP_ERROR_TEXT' | translate}}: <br> </div>
<strong data-ng-bind="error"></strong> <div class="col-xs-offset-3 col-xs-6 col-sm-offset-4 col-sm-4">
</div> <form name="userForm" data-ng-submit="signup()" class="signin form-horizontal" autocomplete="off">
<div class="form-group"> <fieldset>
<label for="firstName">{{ 'FIRST_NAME_LABEL' | translate }}</label> <div data-ng-show="error" id="signup_errors" class="text-center text-danger">
<input type="text" ng-pattern="/^[a-zA-Z0-9 \-.]*$/" required id="firstName" name="firstName" class="form-control" ng-model="credentials.firstName" placeholder="First Name"> {{'SIGNUP_ERROR_TEXT' | translate}}: <br>
</div> <strong data-ng-bind="error"></strong>
<div class="form-group">
<label for="lastName">{{ 'LAST_NAME_LABEL' | translate }}</label>
<input type="text" ng-pattern="/^[a-zA-Z0-9 \-.]*$/" required id="lastName" name="lastName" class="form-control" ng-model="credentials.lastName" placeholder="Last Name">
</div>
<div class="row form-group">
<div class="field-title">
<b>{{ 'LANGUAGE_LABEL' | translate }}</b>
</div> </div>
<div class="field-input"> <div class="form-group">
<select ng-model="user.language" required> <!--<label for="username">{{ 'USERNAME_LABEL' | translate }}</label>-->
<option ng-repeat="language in languages" <input type="text" id="username" name="username" class="form-control" ng-pattern="languageRegExp" ng-minlength="4" ng-model="credentials.username" placeholder="{{ 'USERNAME_LABEL' | translate }}" ng-minlength="4">
ng-selected="language == user.language"
value="{{language}}">
{{language}}
</option>
</select>
</div> </div>
</div> <div class="form-group">
<hr> <!--<label for="email">{{ 'EMAIL_LABEL' | translate }}</label>-->
<div class="form-group"> <input type="email" id="email" name="email" class="form-control" ng-model="credentials.email" placeholder="{{ 'EMAIL_LABEL' | translate }}">
<label for="username">{{ 'USERNAME_LABEL' | translate }}</label> </div>
<input type="text" id="username" name="username" class="form-control" ng-pattern="languageRegExp" ng-minlength="4" ng-model="credentials.username" placeholder="Username"> <div class="form-group">
</div> <!--<label for="password">{{ 'PASSWORD_LABEL' | translate }}</label>-->
<div class="form-group"> <input type="password" id="password" name="password" class="form-control" ng-model="credentials.password" placeholder="{{ 'PASSWORD_LABEL' | translate }}" ng-minlength="4">
<label for="email">{{ 'EMAIL_LABEL' | translate }}</label> </div>
<input type="email" id="email" name="email" class="form-control" ng-model="credentials.email" placeholder="Email"> <div class="text-center form-group">
</div> <button type="submit" class="btn btn-signup btn-rounded btn-block">{{ 'SIGNUP_BTN' | translate }}</button>
<div class="form-group"> </div>
<label for="password">{{ 'PASSWORD_LABEL' | translate }}</label>
<input type="password" id="password" name="password" class="form-control" ng-model="credentials.password" placeholder="Password"> </fieldset>
</div> </form>
<div class="text-center form-group">
<button type="submit" class="btn btn-large btn-primary">{{ 'SIGNUP_BTN' | translate }}</button> <div class="text-center forgot-password">
</div> <a ui-sref="signin">{{ 'SIGN_IN_ACCOUNT_LINK' | translate }}</a>
</div>
</fieldset> </div>
</form>
</div> </div>
</section> </section>

View file

@ -1,22 +1,27 @@
<section class="auth row" data-ng-controller="PasswordController"> <section class="auth valign-wrapper" data-ng-controller="PasswordController">
<h3 class="col-md-12 text-center">{{ 'PASSWORD_RESTORE_HEADER' | translate }}</h3> <div class="row valign">
<p class="small text-center">{{ 'ENTER_YOUR_EMAIL' | translate }}</p> <div class="col-md-4 col-md-offset-4">
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6"> <div class="col-md-12 text-center" style="padding-bottom: 50px;">
<form data-ng-submit="askForPasswordReset()" class="signin form-horizontal" autocomplete="off"> <img src="/static/modules/core/img/logo_white.svg" height="100px">
<fieldset> </div>
<div class="form-group"> <div class="col-md-12">
<input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="{{ 'USERNAME_LABEL' | translate }}"> <form data-ng-submit="askForPasswordReset()" autocomplete="off">
</div> <fieldset>
<div class="text-center form-group"> <div class="form-group">
<button type="submit" class="btn btn-primary">{{ 'UPDATE_PASSWORD_LABEL' | translate }}</button> <input type="text" id="username" name="username" class="form-control" data-ng-model="credentials.username" placeholder="{{ 'USERNAME_OR_EMAIL_LABEL' | translate }}">
</div> </div>
<div data-ng-show="error" class="text-center text-danger"> <div class="text-center form-group">
<strong>{{error}}</strong> <button type="submit" class="btn btn-signup btn-rounded btn-block">{{ 'PASSWORD_RESTORE_HEADER' | translate }}</button>
</div> </div>
<div data-ng-show="success" class="text-center text-success"> <div data-ng-show="error" class="text-center text-danger">
<strong>{{success}}</strong> <strong>{{error}}</strong>
</div> </div>
</fieldset> <div data-ng-show="success" class="text-center text-success">
</form> <strong>{{success}}</strong>
</div>
</fieldset>
</form>
</div>
</div>
</div> </div>
</section> </section>

View file

@ -1,4 +1,6 @@
<section class="row auth" data-ng-controller="SettingsController"> <header data-ng-include="'/static/modules/core/views/header.client.view.html'"></header>
<section class="row" data-ng-controller="SettingsController">
<h3 class="col-md-12 text-center">Change your password</h3> <h3 class="col-md-12 text-center">Change your password</h3>
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6"> <div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6">
<form data-ng-submit="changeUserPassword()" class="signin form-horizontal" autocomplete="off"> <form data-ng-submit="changeUserPassword()" class="signin form-horizontal" autocomplete="off">

View file

@ -1,5 +1,7 @@
1<section class="row auth" data-ng-controller="SettingsController" > <header data-ng-include="'/static/modules/core/views/header.client.view.html'"></header>
<h3 class="col-xs-offset-1 col-xs-10 text-center">Edit your profile</h3>
<section class="row" data-ng-controller="SettingsController">
<h2 class="col-xs-offset-1 col-xs-10 text-center">Edit your profile</h2>
<div class="col-xs-offset-3 col-xs-6"> <div class="col-xs-offset-3 col-xs-6">
<form name="userForm" data-ng-submit="updateUserProfile(userForm.$valid)" class="signin form-horizontal" autocomplete="off"> <form name="userForm" data-ng-submit="updateUserProfile(userForm.$valid)" class="signin form-horizontal" autocomplete="off">
<fieldset> <fieldset>
@ -13,18 +15,18 @@
<div class="form-group row"> <div class="form-group row">
<div class="col-xs-7 field-title"> <div class="col-xs-7 field-title">
<b>{{ 'FIRST_NAME_LABEL' | translate }}</b> {{ 'FIRST_NAME_LABEL' | translate }}
</div> </div>
<div class="col-xs-12 field-input"> <div class="col-xs-12 field-input">
<input type="text" id="firstName" name="firstName" class="form-control" data-ng-model="user.firstName" placeholder="First Name" ng-pattern="/^[a-zA-Z0-9 \-.]*$/"> <input type="text" id="firstName" name="firstName" class="form-control" data-ng-model="user.firstName" ng-pattern="/^[\w0-9 \-.]*$/">
</div> </div>
</div> </div>
<div class="form-group row"> <div class="form-group row">
<div class="col-xs-7 field-title"> <div class="col-xs-7 field-title">
<b>Last Name</b> {{ 'LAST_NAME_LABEL' | translate }}
</div> </div>
<div class="col-xs-12 field-input"> <div class="col-xs-12 field-input">
<input type="text" id="lastName" name="lastName" class="form-control" data-ng-model="user.lastName" placeholder="Last Name" ng-pattern="/^[a-zA-Z0-9 \-.]*$/"> <input type="text" id="lastName" name="lastName" class="form-control" data-ng-model="user.lastName" ng-pattern="/^[\w0-9 \-.]*$/">
</div> </div>
</div> </div>
<div class="row"> <div class="row">
@ -32,7 +34,7 @@
</div> </div>
<div class="row form-group"> <div class="row form-group">
<div class="col-xs-7 field-title"> <div class="col-xs-7 field-title">
<b>{{ 'LANGUAGE_LABEL' | translate }}</b> {{ 'LANGUAGE_LABEL' | translate }}
</div> </div>
<div class="col-xs-12 field-input"> <div class="col-xs-12 field-input">
<select ng-model="user.language" required> <select ng-model="user.language" required>
@ -47,25 +49,28 @@
<div class="row form-group"> <div class="row form-group">
<div class="col-xs-7 field-title"> <div class="col-xs-7 field-title">
<b>Username</b> {{ 'USERNAME_LABEL' | translate }}
</div> </div>
<div class="col-xs-12 field-input"> <div class="col-xs-12 field-input">
<input type="text" id="username" name="username" class="form-control" data-ng-model="user.username" placeholder="Username"> <input type="text" id="username" name="username" class="form-control" data-ng-model="user.username">
</div> </div>
</div> </div>
<div class="row form-group"> <div class="row form-group">
<div class="col-xs-7 field-title"> <div class="col-xs-7 field-title">
<b>{{ 'EMAIL_LABEL' | translate }}</b> {{ 'EMAIL_LABEL' | translate }}
</div> </div>
<div class="col-xs-12 field-input"> <div class="col-xs-12 field-input">
<input type="email" id="email" name="email" class="form-control" data-ng-model="user.email" placeholder="Email"> <input type="email" id="email" name="email" class="form-control" data-ng-model="user.email">
</div> </div>
</div> </div>
<div class="text-center form-group"> <div class="text-center form-group">
<button type="submit" class="btn btn-large btn-primary" style="font-size:1.6em;"> <button type="submit" class="btn btn-signup btn-rounded">
{{ 'SUBMIT_BTN' | translate }} {{ 'SAVE_CHANGES' | translate }}
</button>
<button type="none" ng-click="cancel()" class="btn btn-rounded">
{{ 'CANCEL' | translate }}
</button> </button>
</div> </div>

View file

@ -1,4 +1,6 @@
<section class="row auth" data-ng-controller="SettingsController"> <header data-ng-include="'/static/modules/core/views/header.client.view.html'"></header>
<section class="row" data-ng-controller="SettingsController">
<h3 class="col-md-12 text-center" data-ng-show="hasConnectedAdditionalSocialAccounts()">Connected social accounts:</h3> <h3 class="col-md-12 text-center" data-ng-show="hasConnectedAdditionalSocialAccounts()">Connected social accounts:</h3>
<div class="col-md-12 text-center"> <div class="col-md-12 text-center">
<div data-ng-repeat="(providerName, providerData) in user.additionalProvidersData" class="remove-account-container"> <div data-ng-repeat="(providerName, providerData) in user.additionalProvidersData" class="remove-account-container">
@ -26,4 +28,4 @@
<img src="/modules/users/img/buttons/github.png"> <img src="/modules/users/img/buttons/github.png">
</a> </a>
</div> </div>
</section> </section>

View file

@ -1,36 +1,45 @@
<section class="auth row" data-ng-controller="VerifyController"> <section class="auth valign-wrapper" data-ng-controller="VerifyController">
<section ng-if="!isResetSent">
<h3 class="col-md-12 text-center">Resend your account verification email</h3> <section class="row valign" ng-if="!isResetSent">
<p class="small text-center">Enter your account email.</p> <div class="col-md-4 col-md-offset-4">
<div data-ng-show="error" class="text-center text-danger"> <div class="col-md-12 text-center" style="padding-bottom: 50px;">
<strong>{{error}}</strong> <img src="/static/modules/core/img/logo_white.svg" height="100px">
</div> </div>
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6"> <div data-ng-show="error" class="text-center text-danger">
<form data-ng-submit="resendVerifyEmail()" class="signin form-horizontal" autocomplete="off"> <strong>{{error}}</strong>
<fieldset> </div>
<div class="form-group"> <div class="col-md-12">
<input type="text" id="email" name="email" class="form-control" data-ng-model="credentials.email" placeholder="bob@example.com"> <form data-ng-submit="resendVerifyEmail()" class="signin form-horizontal" autocomplete="off">
</div> <fieldset>
<div class="text-center form-group"> <div class="form-group">
<button type="submit" class="btn btn-primary" ng-click="resendVerifyEmail()">{{ 'SUBMIT_BTN' | translate }}</button> <input type="text" id="email" name="email" class="form-control" data-ng-model="credentials.email" placeholder="{{ 'ENTER_ACCOUNT_EMAIL' | translate}}">
</div> </div>
</fieldset> <div class="text-center form-group">
</form> <button type="submit" class="btn btn-signup btn-rounded btn-block" ng-click="resendVerifyEmail()">{{ 'RESEND_VERIFICATION_EMAIL' | translate }}</button>
</div>
</fieldset>
</form>
</div>
</div> </div>
</section> </section>
<section ng-if="isResetSent"> <section class="row valign" ng-if="isResetSent">
<h3 class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6 text-center">Verification Email has been Sent </h3> <div class="col-md-4 col-md-offset-4">
<div class="col-xs-offset-2 col-xs-8 col-md-offset-3 col-md-6"> <div class="col-md-12 text-center" style="padding-bottom: 50px;">
<h2> <img src="/static/modules/core/img/logo_white.svg" height="100px">
{{ 'VERIFICATION_EMAIL_SENT' | translate }} {{username}}. </div>
<br> {{ 'NOT_ACTIVATED_YET' | translate }} <h3 class="col-md-12 text-center">Verification Email has been Sent</h3>
</h2> <div class="col-md-12">
<p> {{ 'CHECK_YOUR_EMAIL' | translate }} <a href="mail:polydaic@gmail.com">polydaic@gmail.com</a></p> <h2>
<div class="text-center form-group"> {{ 'VERIFICATION_EMAIL_SENT' | translate }} {{username}}.
<button type="submit" class="btn btn-large btn-primary"> <br> {{ 'NOT_ACTIVATED_YET' | translate }}
</h2>
<p> {{ 'CHECK_YOUR_EMAIL' | translate }} <a href="mail:polydaic@gmail.com">polydaic@gmail.com</a></p>
<div class="text-center form-group">
<button type="submit" class="btn btn-large btn-primary btn-rounded">
<a href="/#!/" style="color:white;">Continue</a> <a href="/#!/" style="color:white;">Continue</a>
</button> </button>
</div>
</div> </div>
</div> </div>
</section> </section>

View file

@ -1,14 +1,35 @@
<section style="margin-top:50px;" class="row text-center" data-ng-controller="VerifyController" ng-init="validateVerifyToken()"> <section class="auth" data-ng-controller="VerifyController" ng-init="validateVerifyToken()">
<section class="row text-center" ng-if="isResetSent"> <section class="row text-center" ng-if="isResetSent">
<h3 class="col-md-12"></h3> <div class="col-md-4 col-md-offset-4">
<a href="/#!/signin" class="col-md-12">{{ 'CONTINUE_TO_LOGIN' | translate }}</a> <div class="col-md-12 text-center" style="padding-bottom: 50px;">
<img src="/static/modules/core/img/logo_white.svg" height="100px">
</div>
<div class="col-md-12">
<a href="/#!/signin" class="btn btn-signup btn-rounded btn-block">{{ 'CONTINUE_TO_LOGIN' | translate }}</a>
</div>
</div>
</section> </section>
<section class="row text-center" ng-if="!isResetSent"> <section class="row text-center" ng-if="!isResetSent">
<h3 class="col-md-12">{{ 'VERIFY_ERROR' | translate }}</h3> <div class="col-md-4 col-md-offset-4">
<a href="/#!/verify" class="col-md-6">{{ 'REVERIFY_ACCOUNT_LINK' | translate }}</a> <div class="col-md-12 text-center" style="padding-bottom: 50px;">
<a href="/#!/signin" class="col-md-6">{{ 'SIGNIN_BTN' | translate }}</a> <img src="/static/modules/core/img/logo_white.svg" height="100px">
</div>
<h3 class="col-md-12">
{{ 'VERIFY_ERROR' | translate }}
</h3>
<div class="col-md-12">
<a href="/#!/verify" class="btn btn-rounded btn-default">
{{ 'REVERIFY_ACCOUNT_LINK' | translate }}
</a>
</div>
<div class="col-sm-12">
<a href="/#!/signin" class="btn btn-rounded btn-primary">
{{ 'SIGNIN_BTN' | translate }}
</a>
</div>
</div>
</section> </section>
</section> </section>