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)
@ -14,7 +14,7 @@ TellForm is an *opensource alternative to TypeForm* built ontop of nodejs that c
[See examples here](https://tellform.com/examples)
####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://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/)

View file

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

View file

@ -20,6 +20,7 @@ var config_nev = function () {
var User = require('../../models/user.server.model');
nev.configure({
persistentUserModel: User,
tempUserCollection: config.tempUserCollection,
@ -30,7 +31,7 @@ var config_nev = function () {
verifyMailOptions: {
from: config.mailer.from,
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>',
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){
console.log('hello');
res.status(200).send('Verification email successfully Re-Sent');
}else {
// user hasn't been found yet

View file

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

View file

@ -61,11 +61,11 @@
</head>
<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">
<a href="https://github.com/whitef0x0/tellform">Fork me on GitHub</a>
</div>
</div>
</div>-->
<section class="content">
<section ui-view></section>
</section>

View file

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

View file

@ -34,6 +34,8 @@
<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="/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-->
{% for bowerCssFile in bowerCssFiles %}
<link rel="stylesheet" href="{{bowerCssFile}}">
@ -61,15 +63,12 @@
</head>
<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">
<a href="https://github.com/whitef0x0/tellform">Fork me on GitHub</a>
</div>
</div>
<header data-ng-include="'/static/modules/core/views/header.client.view.html'"></header>
<section class="content">
{% block content %}{% endblock %}
</section>
</div>-->
{% block content %}{% endblock %}
<script src="/static/lib/file-saver.js/FileSaver.js" type="text/javascript"></script>
<!--Embedding The User Object-->

View file

@ -1,18 +1,71 @@
<!DOCTYPE html>
<html lang="en" xmlns="http://www.w3.org/1999/xhtml">
<head>
</head>
<body>
<p>Dear {{name}},</p>
<br>
<p>
You have just created a new account at {{appName}}. To use your account you must activate it.s
</p>
<p>Please visit this url to activate your account:</p>
<p>{{url}}</p>
<strong>If you didn't make this request, you can ignore this email.</strong>
<br>
<br>
<p>The {{appName}} Support Team</p>
</body>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd">
<html>
<head>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
</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">
<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">
<tr>
<td colspan="3" height="6"></td>
</tr>
<tr>
<td>
<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>

View file

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

View file

@ -82,6 +82,7 @@
"passport-google-oauth": "~0.2.0",
"passport-linkedin": "~1.0.0",
"passport-local": "~1.0.0",
"passport-localapikey-update": "^0.5.0",
"passport-twitter": "~1.0.2",
"path-exists": "^2.1.0",
"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;
$scope.user = $rootScope.user = Auth.ensureHasCurrentUser(User);
console.log(Auth.ensureHasCurrentUser(User));
$scope.authentication = $rootScope.authentication = Auth;
$rootScope.languages = $scope.languages = ['en', 'fr', 'es', 'it', 'de'];
console.log($locale.id);
//Set global app language
if($scope.authentication.isAuthenticated()){
$rootScope.language = $scope.user.language;
@ -30,9 +31,12 @@ angular.module('core').controller('HeaderController', ['$rootScope', '$scope', '
Auth.ensureHasCurrentUser(User);
$scope.user = $rootScope.user = null;
$state.go('listForms');
//Refresh view
$state.reload();
},
function(reason) {
console.log('Logout Failed: ' + reason);
console.error('Logout Failed: ' + reason);
});
};

View file

@ -1,64 +1,89 @@
body {
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 {
min-height: 60px;
}
.navbar-inverse {
background-color:#fafafa;
background-color:#588EB4;
border: 0;
color: white!important;
}
.navbar .navbar-brand {
font-size: 1.6em;
font-weight: 900;
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;
min-height: 60px;
padding: 10px;
}
.navbar-inverse .navbar-nav>li>a, .navbar li.dropdown a.dropdown-toggle > * {
color: rgb(131,131,131);
.navbar-nav {
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);
color: white!important;
.navbar-nav > li {
min-height: 60px;
}
.navbar-inverse .navbar-toggle {
background-color: #ddd;
border:none;
}
.navbar-inverse .navbar-toggle:hover, .navbar-inverse .navbar-toggle:focus {
.navbar-nav > li > a {
padding-top: 20px;
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;
}
.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 {
text-decoration: none;
}
[ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak {
display: none !important;
}
.browsehappy.jumbotron.hide,
body.ng-cloak
{
display: block;
.dropdown-menu>li>a {
color: #515151;
}
/*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="navbar-header">
<button class="navbar-toggle" type="button" data-ng-click="toggleCollapsibleMenu()">
@ -6,7 +6,7 @@
<span>{{ 'MENU_BTN' | translate }}</span>
</button>
<a href="https://www.tellform.com/#!/" class="navbar-brand">
<i class="fa fa-archive" style="padding-right: 0.3em;"></i>Tell<span>Form</span>
<img src="/static/modules/core/img/logo_white.svg" height="100%">
</a>
</div>
<nav class="collapse navbar-collapse" collapse="!isCollapsed" role="navigation">
@ -49,8 +49,8 @@
</li>
</ul>
</li>
<li ng-click="signout()">
<a>{{ 'SIGNOUT_TAB' | translate }}</a>
<li>
<a href='/' ng-click="signout()">{{ 'SIGNOUT_TAB' | translate }}</a>
</li>
</ul>
</nav>

View file

@ -1,8 +1,12 @@
'use strict';
// Forms controller
angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope', '$stateParams', '$state', 'Forms', 'CurrentForm', '$http', '$uibModal', 'myForm', '$filter',
function($rootScope, $scope, $stateParams, $state, Forms, CurrentForm, $http, $uibModal, myForm, $filter) {
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, $sce) {
$scope.trustSrc = function(src) {
return $sce.trustAsResourceUrl(src);
};
$scope = $rootScope;
$scope.animationsEnabled = true;
@ -11,24 +15,34 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope
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'),
route: 'viewForm.create'
templateName: 'create'
},
{
/*{
heading: $filter('translate')('DESIGN_TAB'),
route: 'viewForm.design'
},
templateName: 'design'
},*/
{
heading: $filter('translate')('CONFIGURE_TAB'),
route: 'viewForm.configure'
templateName: 'configure'
},
{
heading: $filter('translate')('ANALYZE_TAB'),
route: 'viewForm.analyze'
templateName: 'analyze'
}
];
@ -93,6 +107,7 @@ angular.module('forms').controller('AdminFormController', ['$rootScope', '$scope
// Update existing Form
$scope.update = $rootScope.update = function(updateImmediately, cb){
refreshFrame();
var continueUpdate = true;
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>
<section class="container admin-form">
<section class="admin-form">
<!-- Modal Delete Dialog Template -->
<script type="text/ng-template" id="myModalContent.html">
@ -27,7 +29,7 @@
</div>
</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">
<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>
@ -43,13 +45,13 @@
</div>
<div class="col-xs-1 col-sm-2">
<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">
{{ 'VIEW' | translate }}
<span ng-show="myform.isLive">
{{ 'LIVE' | translate }}
</span>
<span ng-hide="myform.isLive">{{ 'PREVIEW' | translate }}</span> {{ 'FORM' | translate }}
<span ng-hide="myform.isLive">{{ 'PREVIEW' | translate }}</span>
</span>
<span class="hidden-xs hidden-md hidden-lg">
View
@ -63,16 +65,84 @@
</div>
</div>
<div class="row-fluid">
<div class="row">
<div class="col-xs-12">
<!-- <tabset> -->
<tabs data="tabData"></tabs>
<!-- </tabset> -->
</div>
<uib-tabset active="activePill" vertical="true" type="pills">
<uib-tab ng-repeat="tab in tabData" index="$index" heading="{{tab.heading}}">
<div class='row' data-ng-include="'/static/modules/forms/admin/views/adminTabs/'+tab.templateName+'.html'" onload="form_url = trustSrc(formURL)"></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">
<ui-view></ui-view>
</div>
<div class="row field">
<div class="field-title col-sm-5">
<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>
</section>

View file

@ -1,21 +1,12 @@
<div class="config-form design container">
<div class="row">
<div class="col-md-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="col-md-4 col-sm-12 container">
<div class="row field">
<div class="field-title col-sm-3">
<h5>{{ 'BACKGROUND_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-9">
<input colorpicker="hex" type="text" ng-model="myform.design.colors.backgroundColor" ng-style="{ 'background-color': myform.design.colors.backgroundColor }"/>
<div class="field-input col-sm-6">
<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 }"/>
</div>
</div>
@ -24,11 +15,8 @@
<h5>{{ 'QUESTION_TEXT_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-9">
<input colorpicker="hex" type="text" ng-model="myform.design.colors.questionColor" ng-style="{ 'background-color': myform.design.colors.questionColor }"/>
<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 }"/>
</div>
</div>
@ -37,8 +25,8 @@
<h5>{{ 'ANSWER_TEXT_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-9">
<input colorpicker="hex" type="text" ng-model="myform.design.colors.answerColor" ng-style="{ 'background-color': myform.design.colors.answerColor }"/>
<div class="field-input col-sm-6">
<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>
@ -47,8 +35,8 @@
<h5>{{ 'BTN_BACKGROUND_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-9">
<input colorpicker="hex" type="text"
<div class="field-input col-sm-6">
<input ng-change="refreshIframe()" class="form-control" colorpicker="hex" type="text"
ng-model="myform.design.colors.buttonColor"
ng-style="{ 'background-color': myform.design.colors.buttonColor }"/>
</div>
@ -58,21 +46,24 @@
<h5>{{ 'BTN_TEXT_COLOR' | translate }}</h5>
</div>
<div class="field-input col-sm-9">
<input colorpicker="hex" type="text"
<div class="field-input col-sm-6">
<input ng-change="refreshIframe()" 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 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 class="row">
<div class="col-sm-offset-4 col-sm-2">
<button class="btn btn-primary btn-large" type="button" ng-click="update(false, null)"><i class="icon-arrow-left icon-white"></i> Save Changes</button>
</div>
<div class="col-sm-1">
<button class="btn btn-default" type="button" ng-click="resetForm()"><i class="icon-eye-open icon-white"></i> Cancel</button>
</div>
<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>

View file

@ -1,22 +1,21 @@
<div class="config-form container">
<div class="row">
<!-- Settings -->
<div class="col-sm-12 container-fluid">
<div class="row">
<div class="col-sm-12">
<h2 class="hidden-sm hidden-xs">{{ 'ADVANCED_SETTINGS' | translate }}</h2>
<h3 class="hidden-lg hidden-md">{{ 'ADVANCED_SETTINGS' | translate }}</h3>
</div>
</div>
<!--<div class="row">
<div class="col-sm-offset-2 col-sm-10">
<h2 class="hidden-sm hidden-xs">{{ 'ADVANCED_SETTINGS' | translate }}</h2>
<h3 class="hidden-lg hidden-md">{{ 'ADVANCED_SETTINGS' | translate }}</h3>
</div>
</div>-->
<!-- Settings -->
<div class="row">
<div class="col-sm-offset-2 col-sm-4">
<div class="row field">
<div class="field-title col-sm-4">
<div class="field-title col-sm-12">
<h5>{{ 'FORM_NAME' | translate }}</h5>
</div>
<div class="col-sm-8">
<input type="text"
<div class="col-sm-12">
<input class="form-control"
type="text"
ng-model="myform.title"
value="{{myform.title}}"
style="width: 100%;"
@ -26,44 +25,28 @@
</div>
<div class="row field">
<div class="field-title col-sm-6">
<div class="field-title col-sm-12">
<h5>{{ 'FORM_STATUS' | translate }}</h5>
</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;"/>
&nbsp;<span>{{ 'PUBLIC' | translate }}</span>
</label>
<label>
<label style="display: inline-block;">
<input type="radio" data-ng-value="false" ng-model="myform.isLive" ng-required="true" />
&nbsp;<span>{{ 'PRIVATE' | translate }}</span>
</label>
</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="col-xs-6 field-title">Language</div>
<div class="col-xs-4 field-input">
<div class="col-sm-12 field-title">Language</div>
<div class="col-sm-12 field-input">
<select ng-model="myform.language">
<option ng-repeat="language in languages"
ng-selected="language == myform.language"
@ -74,51 +57,69 @@
<span class="required-error" ng-show="field.required && !field.fieldValue">* required</span>
</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 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 class="row">
<div class="col-sm-offset-4 col-sm-2">
<button class="btn btn-primary btn-large" type="button" ng-click="update(false, null)"><i class="icon-arrow-left icon-white"></i>{{ 'SAVE_CHANGES' | translate }}</button>
</div>
<div class="col-sm-1">
<button class="btn btn-default" type="button" ng-click="resetForm()"><i class="icon-eye-open icon-white"></i>{{ 'CANCEL' | translate }}</button>
</div>
<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>

View file

@ -1,7 +1,7 @@
<form class="row container" name="editForm" auto-save-form auto-save-watch="myform" auto-save-callback="update">
<!-- 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">
<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="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="col-xs-3">
{{ 'TOTAL_VIEWS' | translate }}
@ -37,9 +34,6 @@
{{AverageTimeElapsed | secondsToDateTime | date:'mm:ss'}}
</div>
</div>
<div class="row col-xs-12 header-numbers">
Device Analytics
</div>
<div class="row col-xs-12 detailed-title">
<div class="col-xs-3">
{{ 'DESKTOP_AND_LAPTOP' | translate }}
@ -210,9 +204,6 @@
</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="col-xs-3">
@ -247,9 +238,6 @@
</div>
</div>
<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="col-xs-2">
<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 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 {
border-style: dashed;
border-color: #a9a9a9;
@ -60,11 +76,11 @@ section.content p.breakwords {
word-break: break-all;
}
.btn {
.public-form .btn {
border: 1px solid #c6c6c6;
}
.btn[type='submit'] {
.public-form .btn[type='submit'] {
font-size: 1.5em;
padding: 0.35em 1.2em 0.35em 1.2em;
}
@ -82,7 +98,7 @@ section.content > section > section.container {
font-size: 18px;
font-weight: normal;
}
.input-block {
.public-form .input-block {
display: block;
width: 100%;
}
@ -116,7 +132,7 @@ div.form-fields {
position: relative;
padding-top: 35vh;
}
.letter {
.public-form .letter {
position: relative;
display: -moz-inline-stack;
display: inline-block;
@ -302,6 +318,8 @@ div.config-form .row.field {
}
.admin-form .page-header {
border: none;
margin-top: none;
margin-bottom: none;
}
/*Styles for admin view tabs */

View file

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

View file

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

View file

@ -1,10 +1,11 @@
'use strict';
angular.module('users').controller('SettingsController', ['$scope', '$rootScope', '$http', '$state', 'Users',
function($scope, $rootScope, $http, $state, Users) {
$scope.user = $rootScope.user;
angular.module('users').controller('SettingsController', ['$scope', '$rootScope', '$http', '$state', 'Users', 'Auth',
function($scope, $rootScope, $http, $state, Users, Auth) {
// Check if there are additional accounts
$scope.user = Auth.currentUser;
// Check if there are additional accounts
$scope.hasConnectedAdditionalSocialAccounts = function(provider) {
for (var i in $scope.user.additionalProvidersData) {
return true;
@ -12,6 +13,10 @@ angular.module('users').controller('SettingsController', ['$scope', '$rootScope'
return false;
};
$scope.cancel = function(){
$scope.user = Auth.currentUser;
};
// Check if provider is already in use with current user
$scope.isConnectedSocialAccount = function(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 {
padding: 0.45em 0.9em;
width: 100%;
background: transparent;
font-size: 16px;
border: 1px solid #ccc;
height: 34px;
section.auth {
padding: 70px 0;
position: absolute;
min-height: 100%;
top: 0;
left: 0;
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) {
.nav-users {
@ -22,20 +94,17 @@
position: absolute;
}
section.auth {
margin-top: 5em;
section.auth input.form-control {
border: none;
}
section.auth > h3{
font-size: 3em;
font-weight: 500;
color: #777;
}
section.auth.signup-view > h3 {
font-size: 4.4em;
padding-bottom: 0.5em;
}
input.form-control {
border-radius: 4px;
box-shadow: none;
font-size: 18px;
padding: 30px 20px;
}
/* section.auth.signup-view.success > h3 {
padding-bottom: 1.2em;
}*/
.btn {
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>
<a href="/#!/sigin" class="col-md-12">{{ 'SIGNIN_BTN' | translate }}</a>
</section>

View file

@ -1,5 +1,5 @@
<section class="row auth" data-ng-controller="AuthenticationController">
<h3 class="col-md-12 text-center">{{ 'SIGNIN_HEADER_TEXT' | translate }}</h3>
<section class="auth sigin-view valign-wrapper" data-ng-controller="AuthenticationController">
<!--<h3 class="col-md-12 text-center">{{ 'SIGNIN_HEADER_TEXT' | translate }}</h3>-->
<!-- <div class="col-md-12 text-center">
<a href="/auth/facebook" class="undecorated-link">
<img src="/modules/users/img/buttons/facebook.png">
@ -18,35 +18,40 @@
</a>
</div> -->
<!-- <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">
&nbsp; or&nbsp;
<a ui-sref="signup">{{ 'SIGNUP_BTN' | translate }}</a>
</span>
<div class="row valign">
<div class="col-md-4 col-md-offset-4">
<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">
<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>
</form>
</fieldset>
</form>
</div>
</div>
<div class="text-center forgot-password col-md-12">
<a ui-sref="signup">{{ 'SIGNUP_ACCOUNT_LINK' | translate }}</a>
</div>
</div>
</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>
<div class="col-md-12 text-center">
<a href="/auth/facebook" class="undecorated-link">
@ -29,7 +29,7 @@
<p>
<strong>{{ 'BEFORE_YOU_CONTINUE' | translate }}</strong> <a href="mail:polydaic@gmail.com">polydaic@gmail.com</a></p>
<div class="text-center form-group">
<button type="submit" class="btn btn-large btn-primary">
<button type="submit" class="btn btn-primary btn-rounded">
<a href="/#!/" style="color: white; text-decoration: none;">Continue</a>
</button>
</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>
<div class="col-md-12 text-center">
<a href="/auth/facebook" class="undecorated-link">
@ -17,54 +17,41 @@
<img src="/modules/users/img/buttons/github.png">
</a>
</div> -->
<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">
<fieldset>
<div data-ng-show="error" id="signup_errors" class="text-center text-danger">
{{'SIGNUP_ERROR_TEXT' | translate}}: <br>
<strong data-ng-bind="error"></strong>
</div>
<div class="form-group">
<label for="firstName">{{ 'FIRST_NAME_LABEL' | translate }}</label>
<input type="text" ng-pattern="/^[a-zA-Z0-9 \-.]*$/" required id="firstName" name="firstName" class="form-control" ng-model="credentials.firstName" placeholder="First Name">
</div>
<div class="form-group">
<label for="lastName">{{ 'LAST_NAME_LABEL' | 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>
<!--<h3 class="col-md-12 text-center">{{ 'SIGNUP_HEADER_TEXT' | translate }}</h3>-->
<div class="row valign">
<div class="col-md-12 text-center vcenter" style="padding-bottom: 50px;">
<img src="/static/modules/core/img/logo_white.svg" height="100px">
</div>
<div class="col-xs-offset-3 col-xs-6 col-sm-offset-4 col-sm-4">
<form name="userForm" data-ng-submit="signup()" class="signin form-horizontal" autocomplete="off">
<fieldset>
<div data-ng-show="error" id="signup_errors" class="text-center text-danger">
{{'SIGNUP_ERROR_TEXT' | translate}}: <br>
<strong data-ng-bind="error"></strong>
</div>
<div class="field-input">
<select ng-model="user.language" required>
<option ng-repeat="language in languages"
ng-selected="language == user.language"
value="{{language}}">
{{language}}
</option>
</select>
<div class="form-group">
<!--<label for="username">{{ 'USERNAME_LABEL' | translate }}</label>-->
<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">
</div>
</div>
<hr>
<div class="form-group">
<label for="username">{{ 'USERNAME_LABEL' | translate }}</label>
<input type="text" id="username" name="username" class="form-control" ng-pattern="languageRegExp" ng-minlength="4" ng-model="credentials.username" placeholder="Username">
</div>
<div class="form-group">
<label for="email">{{ 'EMAIL_LABEL' | translate }}</label>
<input type="email" id="email" name="email" class="form-control" ng-model="credentials.email" placeholder="Email">
</div>
<div class="form-group">
<label for="password">{{ 'PASSWORD_LABEL' | translate }}</label>
<input type="password" id="password" name="password" class="form-control" ng-model="credentials.password" placeholder="Password">
</div>
<div class="text-center form-group">
<button type="submit" class="btn btn-large btn-primary">{{ 'SIGNUP_BTN' | translate }}</button>
</div>
</fieldset>
</form>
<div class="form-group">
<!--<label for="email">{{ 'EMAIL_LABEL' | translate }}</label>-->
<input type="email" id="email" name="email" class="form-control" ng-model="credentials.email" placeholder="{{ 'EMAIL_LABEL' | translate }}">
</div>
<div class="form-group">
<!--<label for="password">{{ 'PASSWORD_LABEL' | translate }}</label>-->
<input type="password" id="password" name="password" class="form-control" ng-model="credentials.password" placeholder="{{ 'PASSWORD_LABEL' | translate }}" ng-minlength="4">
</div>
<div class="text-center form-group">
<button type="submit" class="btn btn-signup btn-rounded btn-block">{{ 'SIGNUP_BTN' | translate }}</button>
</div>
</fieldset>
</form>
<div class="text-center forgot-password">
<a ui-sref="signin">{{ 'SIGN_IN_ACCOUNT_LINK' | translate }}</a>
</div>
</div>
</div>
</section>

View file

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

View file

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

View file

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