Commit a8b212be0aeca8f8c5e582192c62966fd3eaa8ff

Authored by Leonardo Merlin
2 parents c07e7c4b aa0e62e2

Merge branch 'rafael' into merlin

bower.json
... ... @@ -6,6 +6,7 @@
6 6 "angular-animate": "~1.4.0",
7 7 "angular-breadcrumb": "~0.4.1",
8 8 "angular-cookies": "~1.4.0",
  9 + "angular-messages": "ng-messages#*",
9 10 "angular-sanitize": "~1.4.0",
10 11 "angular-slugify": "~1.0.1",
11 12 "angular-social-links": "~0.0.19",
... ... @@ -22,6 +23,7 @@
22 23 "angular-mocks": "~1.4.0"
23 24 },
24 25 "resolutions": {
25   - "angular": "~1.4.0"
  26 + "angular": "~1.4.0",
  27 + "angular-messages": "~1.4.5"
26 28 }
27 29 }
... ...
src/app/components/navbar/navbar.directive.js
... ... @@ -7,18 +7,6 @@
7 7  
8 8 /** @ngInject */
9 9 function appNavbar() {
10   - var directive = {
11   - restrict: 'E',
12   - templateUrl: 'app/components/navbar/navbar.html',
13   - scope: {
14   - creationDate: '='
15   - },
16   - controller: NavbarController,
17   - controllerAs: 'vm',
18   - bindToController: true
19   - };
20   -
21   - return directive;
22 10  
23 11 /** @ngInject */
24 12 function NavbarController($log) {
... ... @@ -32,6 +20,18 @@
32 20 };
33 21 }
34 22  
  23 + var directive = {
  24 + restrict: 'E',
  25 + templateUrl: 'app/components/navbar/navbar.html',
  26 + scope: {
  27 + creationDate: '='
  28 + },
  29 + controller: NavbarController,
  30 + controllerAs: 'vm',
  31 + bindToController: true
  32 + };
  33 +
  34 + return directive;
35 35 }
36 36  
37 37 })();
... ...
src/app/components/show-message/message.html 0 → 100644
... ... @@ -0,0 +1,21 @@
  1 +<div
  2 + id="message"
  3 + class="show-message">
  4 + <div class="row">
  5 + <div class="col-sm-1 col-sm-offset-2">
  6 + <div class="message-border {{ ::vm.type }}">
  7 + <span
  8 + class="glyphicon glyphicon-ok icon-white"
  9 + aria-hidden="true"></span>
  10 + </div>
  11 + </div>
  12 + <div class="col-sm-4">
  13 + <h3>{{ ::vm.title }}</h3>
  14 + </div>
  15 + </div>
  16 + <div class="row">
  17 + <div class="col-sm-8 col-sm-offset-3">
  18 + <h5>{{ ::vm.message }}</h5>
  19 + </div>
  20 + </div>
  21 +</div>
0 22 \ No newline at end of file
... ...
src/app/components/show-message/show-message.directive.js 0 → 100644
... ... @@ -0,0 +1,35 @@
  1 +(function() {
  2 + 'use strict';
  3 +
  4 + angular
  5 + .module('dialoga')
  6 + .directive('showMessage', showMessage);
  7 +
  8 + /** @ngInject */
  9 + function showMessage() {
  10 +
  11 + /** @ngInject */
  12 + function ShowMessageController($log) {
  13 + $log.debug('ShowMessageController');
  14 +
  15 + var vm = this;
  16 +
  17 + }
  18 +
  19 + var directive = {
  20 + restrict: 'E',
  21 + templateUrl: 'app/components/show-message/message.html',
  22 + scope: {
  23 + type: '=',
  24 + title: '=',
  25 + message: '='
  26 + },
  27 + controller: ShowMessageController,
  28 + controllerAs: 'vm',
  29 + bindToController: true
  30 + };
  31 +
  32 + return directive;
  33 + }
  34 +
  35 +})();
... ...
src/app/components/show-message/show-message.scss 0 → 100644
... ... @@ -0,0 +1,18 @@
  1 +.show-message {
  2 +
  3 + .message-border {
  4 + border-radius: 40px;
  5 + padding: 30px 7px;
  6 + width: 80px;
  7 + height: 80px;
  8 + display: inline-block;
  9 + }
  10 +
  11 + .success {
  12 + background-color: #8AB34D;
  13 + }
  14 +
  15 + .error {
  16 + background-color: #C93E55;
  17 + }
  18 +}
... ...
src/app/index.module.js
... ... @@ -2,6 +2,6 @@
2 2 'use strict';
3 3  
4 4 angular
5   - .module('dialoga', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ui.router', 'ngStorage', 'socialLinks', 'slugifier', 'ncy-angular-breadcrumb']);
  5 + .module('dialoga', ['ngAnimate', 'ngCookies', 'ngTouch', 'ngSanitize', 'ui.router', 'ngStorage', 'socialLinks', 'slugifier', 'ncy-angular-breadcrumb', 'ngMessages']);
6 6  
7 7 })();
... ...
src/app/index.route.js
... ... @@ -35,6 +35,45 @@
35 35 'footer': { templateUrl: 'app/pages/footer/footer.html' }
36 36 }
37 37 })
  38 + .state('mensagem', {
  39 + url: '/mensagem',
  40 + ncyBreadcrumb: {label: 'Mensagem'},
  41 + views: {
  42 + 'header': { templateUrl: 'app/pages/header/header.html' },
  43 + 'main': {
  44 + templateUrl: 'app/pages/auth/message.html',
  45 + controller: 'AuthPageController',
  46 + controllerAs: 'pageSignin'
  47 + },
  48 + 'footer': { templateUrl: 'app/pages/footer/footer.html' }
  49 + }
  50 + })
  51 + .state('recuperar', {
  52 + url: '/recuperar',
  53 + ncyBreadcrumb: {label: 'Recuperar'},
  54 + views: {
  55 + 'header': { templateUrl: 'app/pages/header/header.html' },
  56 + 'main': {
  57 + templateUrl: 'app/pages/auth/recover.html',
  58 + controller: 'AuthPageController',
  59 + controllerAs: 'pageSignin'
  60 + },
  61 + 'footer': { templateUrl: 'app/pages/footer/footer.html' }
  62 + }
  63 + })
  64 + .state('alterar', {
  65 + url: '/alterar',
  66 + ncyBreadcrumb: {label: 'Alterar'},
  67 + views: {
  68 + 'header': { templateUrl: 'app/pages/header/header.html' },
  69 + 'main': {
  70 + templateUrl: 'app/pages/auth/change.html',
  71 + controller: 'AuthPageController',
  72 + controllerAs: 'pageSignin'
  73 + },
  74 + 'footer': { templateUrl: 'app/pages/footer/footer.html' }
  75 + }
  76 + })
38 77 .state('cadastrar', {
39 78 url: '/cadastrar',
40 79 ncyBreadcrumb: {label: 'Cadastrar'},
... ...
src/app/layout.scss
... ... @@ -114,3 +114,26 @@
114 114 vertical-align: bottom;
115 115 }
116 116 }
  117 +
  118 +.has-error {
  119 + border-color: #FF0000;
  120 + border-width: 1px;
  121 +}
  122 +
  123 +.error-message {
  124 + color: #ff4431
  125 +}
  126 +
  127 +.modal-termos-uso-header{
  128 + border-bottom: none;
  129 + padding: 0px;
  130 + min-height: 10px;
  131 + border-bottom: none;
  132 + padding: 0px;
  133 +}
  134 +
  135 +.modal-termos-uso-body {
  136 + padding: 30px;
  137 + height: 500px;
  138 + overflow-y: auto;
  139 +}
... ...
src/app/pages/auth/auth.scss
1 1 .auth-content{
2 2  
  3 + .btn-submit {
  4 + background-color: #5E749D;
  5 + color: #fff;
  6 + font-weight: bold;
  7 + }
  8 +
3 9 .btn-social {
4 10 color: #fff;
5 11 font-weight: bold;
  12 + padding: 15px 16px;
  13 + font-size: 16px;
  14 + white-space: normal;
6 15  
7 16 &:hover,
8 17 &:focus {color: #fff;}
9 18  
10 19 &.btn-facebook {
11   - background-color: #33477a;
  20 + background-color: #496AA0;
  21 +
12 22 &:hover,
13 23 &:focus {background-color: #304373; }
14 24 &:active {background-color: #33477a; }
... ... @@ -19,6 +29,9 @@
19 29 &:focus {background-color: #b12b23; }
20 30 &:active {background-color: #b92d25; }
21 31 }
  32 + @media (max-width: 991px) {
  33 + margin-bottom: 20px;
  34 + }
22 35 }
23 36  
24 37 .btn {
... ... @@ -39,25 +52,61 @@
39 52 }
40 53 }
41 54  
42   - .separator-or {
  55 + .border-social-icon {
  56 + border-radius: 25px;
  57 + padding: 7px 9px;
  58 + width: 40px;
  59 + height: 40px;
  60 + display: inline-block;
  61 +
  62 + &.border-social-facebook {
  63 + background: #547BBC;
  64 + }
  65 +
  66 + &.border-social-googlePlus {
  67 + background: #D44105;
  68 + }
  69 + }
  70 +
  71 + .separator {
43 72 border-top: 2px solid #d8d8d8;
44 73 text-align: center;
45 74 font-weight: bold;
  75 + margin-top: 20px;
  76 + margin-bottom: 35px;
46 77  
47 78 &:after {
  79 + position: absolute;
  80 + top: 4px;
  81 + margin-left: -26px;
  82 + font-size: 20px;
  83 + line-height: 30px;
  84 + padding: 0 0.25em;
  85 + background: $gray;
  86 +
  87 + .contraste & {
  88 + background: #000;
  89 + }
  90 + }
  91 +
  92 + &.separator-or:after {
48 93 content: "ou";
49   - position: absolute;
50   - top: 4px;
51   - left: 50%;
52   - margin-left: -26px;
53   - font-size: 30px;
54   - line-height: 30px;
55   - padding: 0 0.25em;
56   - background: $gray;
  94 + left: 51%;
  95 + }
57 96  
58   - .contraste & {
59   - background: #000;
60   - }
  97 + &.separator-cadastro:after {
  98 + content: "ou preencha o formulario";
  99 + left: 31%;
61 100 }
  101 +
  102 + }
  103 +
  104 + input[type="checkbox"] {
  105 + display:inline-block;
  106 + width:18px;
  107 + height:18px;
  108 + margin:-1px 4px 0 0;
  109 + vertical-align:middle;
  110 + cursor:pointer;
62 111 }
63 112 }
... ...
src/app/pages/auth/change.html 0 → 100644
... ... @@ -0,0 +1,97 @@
  1 +<div class="container">
  2 + <div class="row">
  3 + <div class="col-sm-12">
  4 + <h2>Esqueci minha senha</h2>
  5 + <h5>Agra é só criar e confirmar sua nova senha.</h5>
  6 + </div>
  7 + </div>
  8 +</div>
  9 +<section
  10 + role="main"
  11 + class="section-gray auth-content">
  12 + <div class="container">
  13 + <div class="row">
  14 + <!-- Mostra só se estiver logado -->
  15 + <div ng-if="pageSignin.currentUser">
  16 + <div class="row">
  17 + <div class="col-sm-8 col-sm-offset-2">
  18 + <h3>Você está logado!</h3>
  19 + <button
  20 + type="button"
  21 + ng-click="pageSignin.onClickLogout()"
  22 + class="btn btn-primary">Sair</button>
  23 + </div>
  24 + </div>
  25 + </div>
  26 + <!-- Mostra só se não estiver logado -->
  27 + <div ng-if="!pageSignin.currentUser">
  28 + <br>
  29 + <div class="col-sm-8 col-sm-offset-2">
  30 + <div class="row">
  31 + <div class="col-md-12">
  32 + <form
  33 + name="changePassForm"
  34 + ng-submit="">
  35 + <div class="row">
  36 + <div class="col-md-6">
  37 + <div class="form-group">
  38 + <label for="inputPassword">Senha*</label>
  39 + <input
  40 + type="password"
  41 + id="inputPassword"
  42 + name="inputPassword"
  43 + class="form-control input-lg"
  44 + ng-class="{ 'has-error' : changePassForm.inputPassword.$invalid && changePassForm.inputPassword.$touched }"
  45 + ng-model="password"
  46 + required>
  47 + <div ng-show="changePassForm.inputPassword.$touched">
  48 + <div ng-messages="changePassForm.inputPassword.$error">
  49 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  50 + </div>
  51 + </div>
  52 + </div>
  53 + </div>
  54 + <div class="col-md-6">
  55 + <div class="form-group">
  56 + <label for="inputRepeatPassword">Confirmar senha*</label>
  57 + <input
  58 + type="password"
  59 + id="inputRepeatPassword"
  60 + name="inputRepeatPassword"
  61 + class="form-control input-lg"
  62 + ng-class="{ 'has-error' : changePassForm.inputRepeatPassword.$invalid && changePassForm.inputRepeatPassword.$touched }"
  63 + ng-model="repeatPassword"
  64 + required>
  65 + <div ng-show="changePassForm.inputRepeatPassword.$touched">
  66 + <div ng-messages="changePassForm.inputRepeatPassword.$error">
  67 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  68 + </div>
  69 + </div>
  70 + </div>
  71 + </div>
  72 + </div>
  73 + <div class="row">
  74 + <div class="col-sm-12">
  75 + <span>
  76 + A senha deve ter 6 ou mais caracteres e conter números e letras.
  77 + </span>
  78 + </div>
  79 + </div>
  80 + <br>
  81 + <div class="row">
  82 + <div class="col-md-6 col-sm-offset-3">
  83 + <div class="form-group">
  84 + <button
  85 + class="btn btn-lg btn-block btn-submit"
  86 + type="submit">Confirmar alteração de senha</button>
  87 + </div>
  88 + </div>
  89 + </div>
  90 + </form>
  91 + </div>
  92 + </div>
  93 + </div>
  94 + <br></div>
  95 + </div>
  96 + </div>
  97 +</section>
0 98 \ No newline at end of file
... ...
src/app/pages/auth/message.html 0 → 100644
... ... @@ -0,0 +1,70 @@
  1 +<section
  2 + role="main"
  3 + class="section-gray auth-content">
  4 + <div class="container">
  5 + <show-message
  6 + type="'error'"
  7 + title="'Cadastro efetuado com sucesso :)'"
  8 + message="'Agora você faz parte do Dialoga Brasil. Você será redirecionado para a página (página) em 10 segundos'"></show-message>
  9 + </div>
  10 +
  11 + <a href="#termosDeUso" data-toggle="modal">Termos de Uso</a>
  12 +
  13 + <div class="modal fade" id="termosDeUso" tabindex="-1" role="dialog" aria-labelledby="termosDeUsoLabel">
  14 + <div class="modal-dialog" role="document">
  15 + <div class="modal-content">
  16 + <div class="modal-header modal-termos-uso-header">
  17 + <button type="button" class="close" data-dismiss="modal" aria-label="Close">
  18 + <span aria-hidden="true">&times;</span>
  19 + </button>
  20 + </div>
  21 + <div class="modal-body modal-termos-uso-body">
  22 + <h3>Termos de Uso</h3>
  23 + <p>
  24 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  25 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  26 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  27 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  28 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  29 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  30 + </p>
  31 + <p>
  32 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  33 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  34 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  35 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  36 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  37 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  38 + </p>
  39 + <p>
  40 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  41 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  42 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  43 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  44 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  45 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  46 + </p>
  47 +
  48 + <p>
  49 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  50 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  51 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  52 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  53 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  54 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  55 + </p>
  56 +
  57 + <p>
  58 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  59 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  60 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  61 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  62 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  63 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  64 + </p>
  65 +
  66 + </div>
  67 + </div>
  68 + </div>
  69 + </div>
  70 +</section>
0 71 \ No newline at end of file
... ...
src/app/pages/auth/recover.html 0 → 100644
... ... @@ -0,0 +1,72 @@
  1 +<div class="container">
  2 + <div class="row">
  3 + <div class="col-sm-12">
  4 + <h2>Esqueci minha senha</h2>
  5 + <h5>
  6 + Calma, podemos ajudar! Informe o seu e-mail que a gente envia um link de alteração.
  7 + </h5>
  8 + </div>
  9 + </div>
  10 +</div>
  11 +<section
  12 + role="main"
  13 + class="section-gray auth-content">
  14 + <div class="container">
  15 + <div class="row">
  16 + <!-- Mostra só se estiver logado -->
  17 + <div ng-if="pageSignin.currentUser">
  18 + <div class="row">
  19 + <div class="col-sm-8 col-sm-offset-2">
  20 + <h3>Você está logado!</h3>
  21 + <button
  22 + type="button"
  23 + ng-click="pageSignin.onClickLogout()"
  24 + class="btn btn-primary">Sair</button>
  25 + </div>
  26 + </div>
  27 + </div>
  28 + <!-- Mostra só se não estiver logado -->
  29 + <div ng-if="!pageSignin.currentUser">
  30 + <br>
  31 + <div class="col-sm-8 col-sm-offset-2">
  32 + <div class="row">
  33 + <div class="col-md-12">
  34 + <form
  35 + name="recoverPassForm"
  36 + ng-submit="pageSignin.login(pageSignin.credentials)">
  37 + <div class="form-group">
  38 + <label for="inputUsername">E-mail*</label>
  39 + <input
  40 + type="email"
  41 + id="inputUsername"
  42 + name="inputUsername"
  43 + class="form-control input-lg"
  44 + ng-class="{ 'has-error' : recoverPassForm.inputUsername.$invalid && recoverPassForm.inputUsername.$touched }"
  45 + ng-model="pageSignin.credentials.username"
  46 + required />
  47 + <div ng-show="recoverPassForm.inputUsername.$touched">
  48 + <div ng-messages="recoverPassForm.inputUsername.$error">
  49 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  50 + </div>
  51 + </div>
  52 + </div>
  53 + <div class="form-group">
  54 + <div class="input-group">
  55 + <label for="inputPassword">Digite o texto desta imagem</label>
  56 + <br>
  57 + <span>Aqui vai um CAPTCHA</span>
  58 + </div>
  59 + </div>
  60 + <div class="form-group">
  61 + <button
  62 + class="btn btn-lg btn-block btn-submit"
  63 + type="submit">Solicitar alteração de senha</button>
  64 + </div>
  65 + </form>
  66 + </div>
  67 + </div>
  68 + </div>
  69 + <br></div>
  70 + </div>
  71 + </div>
  72 +</section>
0 73 \ No newline at end of file
... ...
src/app/pages/auth/signin.html
  1 +<div class="container">
  2 + <div class="row">
  3 + <div class="col-sm-12">
  4 + <h2>Cadastrar ou entrar</h2>
  5 + </div>
  6 + </div>
  7 +</div>
1 8 <section role="main" class="section-gray auth-content">
2 9 <div class="container">
3   -
4   - <div ng-if="pageSignin.currentUser">
5   - <div class="row">
6   - <div class="col-sm-8 col-sm-offset-2">
7   - <h3>Você está logado!</h3>
8   - <button type="button" ng-click="pageSignin.onClickLogout()" class="btn btn-primary">Sair</button>
  10 + <div class="row">
  11 + <!-- Mostra só se estiver logado -->
  12 + <div ng-if="pageSignin.currentUser">
  13 + <div class="row">
  14 + <div class="col-sm-8 col-sm-offset-2">
  15 + <h3>Você está logado!</h3>
  16 + <button type="button" ng-click="pageSignin.onClickLogout()" class="btn btn-primary">Sair</button>
  17 + </div>
  18 + </div>
  19 + </div>
  20 + <!-- Mostra só se não estiver logado -->
  21 + <div ng-if="!pageSignin.currentUser">
  22 + <div class="col-sm-6">
  23 + <div class="row">
  24 + <div class="col-md-12">
  25 + <h2>Já possui cadastro</h2>
  26 + <p>Use seus dados para acessar o Dialoga Brasil</p>
  27 + <form name="loginForm" ng-submit="pageSignin.login(pageSignin.credentials)" novalidate>
  28 + <div class="form-group">
  29 + <label for="inputLoginUsername">E-mail*</label>
  30 + <input type="email" id="inputLoginUsername" name="inputLoginUsername" class="form-control input-lg" ng-class="{ 'has-error' : loginForm.inputLoginUsername.$invalid && loginForm.inputLoginUsername.$touched }" ng-model="pageSignin.credentials.username" required/>
  31 + <div ng-show="loginForm.inputLoginUsername.$touched">
  32 + <div ng-messages="loginForm.inputLoginUsername.$error">
  33 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  34 + </div>
  35 + </div>
  36 + </div>
  37 + <div class="form-group">
  38 + <label for="inputLoginPassword">Senha*</label>
  39 + <input type="password" id="inputLoginPassword" name="inputLoginPassword" class="form-control input-lg" ng-class="{ 'has-error' : loginForm.inputLoginPassword.$invalid && loginForm.inputLoginPassword.$touched }" ng-model="pageSignin.credentials.password" required>
  40 + <div ng-show="loginForm.inputLoginPassword.$touched">
  41 + <div ng-messages="loginForm.inputLoginPassword.$error">
  42 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  43 + </div>
  44 + </div>
  45 + </div>
  46 + <div class="form-group">
  47 + <button class="btn btn-lg btn-block btn-submit" type="submit">Entrar</button>
  48 + </div>
  49 + </form>
  50 + </div>
  51 + </div>
  52 + <div class="row">
  53 + <div class="col-md-12">
  54 + <hr class="separator separator-or"></hr>
  55 + </div>
  56 + </div>
  57 + <div class="row">
  58 + <div class="col-md-5">
  59 + <button type="button" class="btn btn-lg btn-block btn-social btn-facebook">
  60 + <div class="border-social-icon border-social-facebook">
  61 + <span class="glyphicon icon-google-plus icon-white" aria-hidden="true">
  62 + <!-- Facebook -->
  63 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25">
  64 + <path d="M18 32L12 32 12 16l-4 0 0-5.5 4 0 0-3.2C12 2.7 13.2 0 18.5 0l4.4 0 0 5.5 -2.8 0c-2.1 0-2.2 0.8-2.2 2.2l0 2.8 5 0 -0.6 5.5L18 16 18 32z"/>
  65 + </svg>
  66 + </span>
  67 + </div>
  68 + <span class="text">Entrar com Facebook</span>
  69 + </button>
  70 + </div>
  71 + <div class="col-md-5">
  72 + <button type="button" class="btn btn-lg btn-block btn-social btn-google-plus">
  73 + <div class="border-social-icon border-social-googlePlus">
  74 + <span class="glyphicon icon-google-plus icon-white" aria-hidden="true">
  75 + <!-- Google Plus -->
  76 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25">
  77 + <path d="M17.5 2c0 0-6.3 0-8.4 0C5.3 2 1.8 4.8 1.8 8.1c0 3.4 2.6 6.1 6.4 6.1 0.3 0 0.5 0 0.8 0 -0.2 0.5-0.4 1-0.4 1.6 0 0.9 0.5 1.7 1.1 2.3 -0.5 0-0.9 0-1.5 0C3.6 18.1 0 21.1 0 24.1c0 3 3.9 4.9 8.6 4.9 5.3 0 8.2-3 8.2-6 0-2.4-0.7-3.9-2.9-5.4 -0.8-0.5-2.2-1.8-2.2-2.6 0-0.9 0.3-1.3 1.6-2.4 1.4-1.1 2.4-2.6 2.4-4.4 0-2.1-0.9-4.2-2.7-4.8l2.7 0L17.5 2zM14.5 22.5c0.1 0.3 0.1 0.6 0.1 0.9 0 2.4-1.6 4.4-6.1 4.4 -3.2 0-5.5-2-5.5-4.5 0-2.4 2.9-4.4 6.1-4.4 0.8 0 1.4 0.1 2.1 0.3C12.9 20.4 14.2 21.1 14.5 22.5zM9.4 13.4c-2.2-0.1-4.2-2.4-4.6-5.2 -0.4-2.8 1.1-5 3.2-4.9 2.2 0.1 4.2 2.3 4.6 5.2C13 11.2 11.6 13.4 9.4 13.4zM26 8L26 2 24 2 24 8 18 8 18 10 24 10 24 16 26 16 26 10 32 10 32 8z"/>
  78 + </svg>
  79 + </span>
  80 + </div>
  81 + <span class="text">Entrar com Google+</span>
  82 + </button>
  83 + </div>
  84 + </div>
  85 + </div>
  86 + <div class="col-sm-6">
  87 + <div class="row">
  88 + <div class="col-sm-12">
  89 + <h2>Ou cadastre-se</h2>
  90 + <p>
  91 + Para fazer parte do Dialoga Brasil, interagir com as propostas e enviar as suas!
  92 + </p>
  93 + </div>
  94 + </div>
  95 + <div class="row">
  96 + <div class="col-md-6">
  97 + <button type="button" class="btn btn-lg btn-block btn-social btn-facebook">
  98 + <div class="border-social-icon border-social-facebook">
  99 + <span class="glyphicon icon-google-plus icon-white" aria-hidden="true">
  100 + <!-- Google Plus -->
  101 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25">
  102 + <path d="M18 32L12 32 12 16l-4 0 0-5.5 4 0 0-3.2C12 2.7 13.2 0 18.5 0l4.4 0 0 5.5 -2.8 0c-2.1 0-2.2 0.8-2.2 2.2l0 2.8 5 0 -0.6 5.5L18 16 18 32z"/>
  103 + </svg>
  104 + </span>
  105 + </div>
  106 + <span class="text">Conectar pelo Facebook</span>
  107 + </button>
  108 + </div>
  109 + <div class="col-md-6">
  110 + <button type="button" class="btn btn-lg btn-block btn-social btn-google-plus">
  111 + <div class="border-social-icon border-social-googlePlus">
  112 + <span class="glyphicon icon-google-plus icon-white" aria-hidden="true">
  113 + <!-- Google Plus -->
  114 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25">
  115 + <path d="M17.5 2c0 0-6.3 0-8.4 0C5.3 2 1.8 4.8 1.8 8.1c0 3.4 2.6 6.1 6.4 6.1 0.3 0 0.5 0 0.8 0 -0.2 0.5-0.4 1-0.4 1.6 0 0.9 0.5 1.7 1.1 2.3 -0.5 0-0.9 0-1.5 0C3.6 18.1 0 21.1 0 24.1c0 3 3.9 4.9 8.6 4.9 5.3 0 8.2-3 8.2-6 0-2.4-0.7-3.9-2.9-5.4 -0.8-0.5-2.2-1.8-2.2-2.6 0-0.9 0.3-1.3 1.6-2.4 1.4-1.1 2.4-2.6 2.4-4.4 0-2.1-0.9-4.2-2.7-4.8l2.7 0L17.5 2zM14.5 22.5c0.1 0.3 0.1 0.6 0.1 0.9 0 2.4-1.6 4.4-6.1 4.4 -3.2 0-5.5-2-5.5-4.5 0-2.4 2.9-4.4 6.1-4.4 0.8 0 1.4 0.1 2.1 0.3C12.9 20.4 14.2 21.1 14.5 22.5zM9.4 13.4c-2.2-0.1-4.2-2.4-4.6-5.2 -0.4-2.8 1.1-5 3.2-4.9 2.2 0.1 4.2 2.3 4.6 5.2C13 11.2 11.6 13.4 9.4 13.4zM26 8L26 2 24 2 24 8 18 8 18 10 24 10 24 16 26 16 26 10 32 10 32 8z"/>
  116 + </svg>
  117 + </span>
  118 + </div>
  119 + <span class="text">Conectar pelo Google+</span>
  120 + </button>
  121 + </div>
  122 + </div>
  123 + <div class="row">
  124 + <div class="col-sm-12">
  125 + <hr class="separator separator-cadastro"></hr>
9 126 </div>
10 127 </div>
11   - </div>
12   -
13   - <div ng-if="!pageSignin.currentUser">
14 128 <div class="row">
15   - <div class="col-sm-8 col-sm-offset-2">
16   - <h2>Identifique-se</h2>
17   - <form name="loginForm" ng-submit="pageSignin.login(pageSignin.credentials)">
  129 + <div class="col-sm-12">
  130 + <form name="cadastroForm">
18 131 <div class="form-group">
19   - <label for="inputUsername" class="sr-only">E-mail:</label>
20   - <div class="input-group">
21   - <div class="input-group-addon"><span class="glyphicon glyphicon-user"></span></div>
22   - <input type="text" id="inputUsername" class="form-control" placeholder="E-mail" required="" autofocus="" ng-model="pageSignin.credentials.username">
  132 + <label for="inputNome">Nome:</label>
  133 + <span class="pull-right">*Dados obrigatórios</span>
  134 + <input type="text" id="inputNome" name="inputNome" class="form-control input-lg" ng-class="{ 'has-error' : cadastroForm.inputNome.$invalid && cadastroForm.inputNome.$touched }" ng-model="nome" ng-minlength="" ng-maxlength="" required>
  135 + <div ng-show="cadastroForm.inputNome.$touched">
  136 + <div ng-messages="cadastroForm.inputNome.$error">
  137 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  138 + </div>
23 139 </div>
24 140 </div>
25 141 <div class="form-group">
26   - <label for="inputPassword" class="sr-only">Senha:</label>
27   - <div class="input-group">
28   - <div class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></div>
29   - <input type="password" id="inputPassword" class="form-control" placeholder="Senha" required="" ng-model="pageSignin.credentials.password">
  142 + <label for="inputEmail">E-mail*</label>
  143 + <input type="email" id="inputEmail" name="inputEmail" class="form-control input-lg" ng-class="{ 'has-error' : cadastroForm.inputEmail.$invalid && cadastroForm.inputEmail.$touched }" ng-model="email" ng-minlength="" ng-maxlength="" required>
  144 + <div ng-show="cadastroForm.inputEmail.$touched">
  145 + <div ng-messages="cadastroForm.inputEmail.$error">
  146 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  147 + </div>
  148 + </div>
  149 + </div>
  150 + <div class="row">
  151 + <div class="col-sm-6">
  152 + <div class="form-group">
  153 + <label for="inputPassword">Senha:</label>
  154 + <input type="password" id="inputPassword" name="inputPassword" class="form-control input-lg" ng-class="{ 'has-error' : cadastroForm.inputPassword.$invalid && cadastroForm.inputPassword.$touched }" ng-model="senha" ng-minlength="" ng-maxlength="" required>
  155 + <div ng-show="cadastroForm.inputPassword.$touched">
  156 + <div ng-messages="cadastroForm.inputPassword.$error">
  157 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  158 + </div>
  159 + </div>
  160 + </div>
  161 + </div>
  162 + <div class="col-sm-6">
  163 + <div class="form-group">
  164 + <label for="inputRepeatPassword">Confirmar Senha:</label>
  165 + <input type="password" id="inputRepeatPassword" name="inputRepeatPassword" class="form-control input-lg" ng-class="{ 'has-error' : cadastroForm.inputRepeatPassword.$invalid && cadastroForm.inputRepeatPassword.$touched }" ng-model="senhaRepetida" ng-minlength="" ng-maxlength="" required>
  166 + <div ng-show="cadastroForm.inputRepeatPassword.$touched">
  167 + <div ng-messages="cadastroForm.inputRepeatPassword.$error">
  168 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  169 + </div>
  170 + </div>
  171 + </div>
  172 + </div>
  173 + </div>
  174 + <div class="row">
  175 + <div class="col-sm-12">
  176 + <span class="text">
  177 + A senha deve ter 6 ou mais caracteres e conter números e letras.
  178 + </span>
30 179 </div>
31 180 </div>
32 181 <div class="form-group">
33   - <button class="btn btn-lg btn-primary btn-block" type="submit">Entrar</button>
  182 + <input type="checkbox" id="termosDeUso" name="termosDeUso" value="aceito" required>
  183 + Já li os
  184 + <a href="">Termos de Uso</a>
  185 + e concordo com os mesmos*
  186 + </input>
  187 + <div ng-show="cadastroForm.termosDeUso.$touched">
  188 + <div ng-messages="cadastroForm.termosDeUso.$error">
  189 + <div ng-messages-include="app/pages/geral/error-messages.html"></div>
  190 + </div>
34 191 </div>
35   - </form>
36   - </div>
37   - </div>
38   - <div class="row">
39   - <div class="col-sm-8 col-sm-offset-2">
40   - <hr class="separator-or"></hr>
41   - </div>
42   - </div>
43   - <div class="row">
44   - <div class="col-sm-8 col-sm-offset-2">
45   - <button class="btn btn-lg btn-link btn-block" type="button" ui-sref="cadastrar">Cadastre-se</button>
46   - </div>
  192 + </div>
  193 + <div class="form-group">
  194 + <span>Digite o texto da imagem</span>
  195 + <p>O Captcha vai aqui</p>
  196 + </div>
  197 + <div class="form-group">
  198 + <button class="btn btn-lg btn-block btn-submit" type="submit">Cadastrar</button>
  199 + </div>
  200 + </form>
47 201 </div>
48 202 </div>
49 203 </div>
50   -</section>
  204 +</div>
  205 +</div>
  206 +</div>
  207 +</section>
51 208 \ No newline at end of file
... ...
src/app/pages/auth/signup.html
... ... @@ -9,49 +9,85 @@
9 9 <div class="container">
10 10 <div class="row">
11 11 <div class="col-sm-12">
12   - <h1>Cadastro</h1>
13   - <p>Cadastre-se para fazer parte do Dialoga Brasil, interagir com as propostas e enviar as suas!</p>
  12 + <!-- <h1>Ou cadastre-se</h1> -->
  13 + <!-- <p>Para fazer parte do Dialoga Brasil, interagir com as propostas e enviar as suas!</p> -->
14 14 </div>
15 15 </div>
16 16 </div>
17 17 </section>
18 18 <section role="main" class="section-gray auth-content">
19   - <div class="container">
20   - <div class="row">
21   - <div class="col-sm-8 col-sm-offset-2">
22   - <h2>Conecte-se por redes sociais</h2>
23   - <div class="col-sm-6">
24   - <button type="button" class="btn btn-lg btn-block btn-social btn-facebook">
25   - <span class="glyphicon icon-facebook icon-white" aria-hidden="true">
26   - <!-- Facebook -->
27   - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M18 32L12 32 12 16l-4 0 0-5.5 4 0 0-3.2C12 2.7 13.2 0 18.5 0l4.4 0 0 5.5 -2.8 0c-2.1 0-2.2 0.8-2.2 2.2l0 2.8 5 0 -0.6 5.5L18 16 18 32z"/></svg>
28   - </span>
29   - <span class="text">
30   - Conectar pelo Facebook
31   - </span>
32   - </button>
33   - </div>
34   - <div class="col-sm-6">
35   - <button type="button" class="btn btn-lg btn-block btn-social btn-google-plus">
36   - <span class="glyphicon icon-google-plus icon-white" aria-hidden="true">
37   - <!-- Google Plus -->
38   - <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M17.5 2c0 0-6.3 0-8.4 0C5.3 2 1.8 4.8 1.8 8.1c0 3.4 2.6 6.1 6.4 6.1 0.3 0 0.5 0 0.8 0 -0.2 0.5-0.4 1-0.4 1.6 0 0.9 0.5 1.7 1.1 2.3 -0.5 0-0.9 0-1.5 0C3.6 18.1 0 21.1 0 24.1c0 3 3.9 4.9 8.6 4.9 5.3 0 8.2-3 8.2-6 0-2.4-0.7-3.9-2.9-5.4 -0.8-0.5-2.2-1.8-2.2-2.6 0-0.9 0.3-1.3 1.6-2.4 1.4-1.1 2.4-2.6 2.4-4.4 0-2.1-0.9-4.2-2.7-4.8l2.7 0L17.5 2zM14.5 22.5c0.1 0.3 0.1 0.6 0.1 0.9 0 2.4-1.6 4.4-6.1 4.4 -3.2 0-5.5-2-5.5-4.5 0-2.4 2.9-4.4 6.1-4.4 0.8 0 1.4 0.1 2.1 0.3C12.9 20.4 14.2 21.1 14.5 22.5zM9.4 13.4c-2.2-0.1-4.2-2.4-4.6-5.2 -0.4-2.8 1.1-5 3.2-4.9 2.2 0.1 4.2 2.3 4.6 5.2C13 11.2 11.6 13.4 9.4 13.4zM26 8L26 2 24 2 24 8 18 8 18 10 24 10 24 16 26 16 26 10 32 10 32 8z"/></svg>
39   - </span>
40   - <span class="text">
41   - Conectar pelo Google+
42   - </span>
43   - </button>
44   - </div>
  19 +<div class="row">
  20 + <div class="col-sm-12">
  21 + <h1>Ou cadastre-se</h1>
  22 + <p>Para fazer parte do Dialoga Brasil, interagir com as propostas e enviar as suas!</p>
45 23 </div>
46 24 </div>
  25 + <div class="container">
47 26 <div class="row">
48   - <div class="col-sm-8 col-sm-offset-2">
49   - <hr class="separator-or"></hr>
  27 + <div class="col-md-6">
  28 + <button type="button" class="btn btn-lg btn-block btn-social btn-facebook">
  29 + <span class="glyphicon icon-facebook icon-white" aria-hidden="true">
  30 + <!-- Facebook -->
  31 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M18 32L12 32 12 16l-4 0 0-5.5 4 0 0-3.2C12 2.7 13.2 0 18.5 0l4.4 0 0 5.5 -2.8 0c-2.1 0-2.2 0.8-2.2 2.2l0 2.8 5 0 -0.6 5.5L18 16 18 32z"/></svg>
  32 + </span>
  33 + <span class="text">
  34 + Conectar pelo Facebook
  35 + </span>
  36 + </button>
  37 + </div>
  38 + <div class="col-md-6">
  39 + <button type="button" class="btn btn-lg btn-block btn-social btn-google-plus">
  40 + <span class="glyphicon icon-google-plus icon-white" aria-hidden="true">
  41 + <!-- Google Plus -->
  42 + <svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 33 33" width="25" height="25"><path d="M17.5 2c0 0-6.3 0-8.4 0C5.3 2 1.8 4.8 1.8 8.1c0 3.4 2.6 6.1 6.4 6.1 0.3 0 0.5 0 0.8 0 -0.2 0.5-0.4 1-0.4 1.6 0 0.9 0.5 1.7 1.1 2.3 -0.5 0-0.9 0-1.5 0C3.6 18.1 0 21.1 0 24.1c0 3 3.9 4.9 8.6 4.9 5.3 0 8.2-3 8.2-6 0-2.4-0.7-3.9-2.9-5.4 -0.8-0.5-2.2-1.8-2.2-2.6 0-0.9 0.3-1.3 1.6-2.4 1.4-1.1 2.4-2.6 2.4-4.4 0-2.1-0.9-4.2-2.7-4.8l2.7 0L17.5 2zM14.5 22.5c0.1 0.3 0.1 0.6 0.1 0.9 0 2.4-1.6 4.4-6.1 4.4 -3.2 0-5.5-2-5.5-4.5 0-2.4 2.9-4.4 6.1-4.4 0.8 0 1.4 0.1 2.1 0.3C12.9 20.4 14.2 21.1 14.5 22.5zM9.4 13.4c-2.2-0.1-4.2-2.4-4.6-5.2 -0.4-2.8 1.1-5 3.2-4.9 2.2 0.1 4.2 2.3 4.6 5.2C13 11.2 11.6 13.4 9.4 13.4zM26 8L26 2 24 2 24 8 18 8 18 10 24 10 24 16 26 16 26 10 32 10 32 8z"/></svg>
  43 + </span>
  44 + <span class="text">
  45 + Conectar pelo Google+
  46 + </span>
  47 + </button>
50 48 </div>
51 49 </div>
  50 + <div class="row">
  51 + <div class="col-sm-12">
  52 + <hr class="separator separator-cadastro"></hr>
  53 + </div>
  54 + </div>
52 55 <div class="row">
53   - <div class="col-sm-8 col-sm-offset-2">
54   - <h2>Faça o cadastro abaixo</h2>
  56 + <div class="col-sm-12">
  57 + <form name="loginForm" ng-submit="pageSignin.login(pageSignin.credentials)">
  58 + <div class="form-group">
  59 + <label for="inputNome">Nome:</label>
  60 + <input type="text" id="inputNome" class="form-control input-lg" required="true" autofocus="" ng-model="">
  61 + </div>
  62 + <div class="form-group">
  63 + <label for="inputEmail">E-mail*</label>
  64 + <input type="text" id="inputEmail" class="form-control input-lg" required="true" autofocus="" ng-model="">
  65 + </div>
  66 + <div class="form-group">
  67 + <div class="input-group">
  68 + <label for="inputPassword">Senha:</label>
  69 + <input type="password" id="inputPassword" class="form-control input-lg" required="true" ng-model="">
  70 + </div>
  71 + </div>
  72 + <div class="form-group">
  73 +
  74 + <div class="input-group">
  75 + <label for="inputRepeatPassword">Confirmar Senha:</label>
  76 + <input type="password" id="inputRepeatPassword" class="form-control input-lg" required="true" ng-model="">
  77 + </div>
  78 + </div>
  79 + <span>A senha deve ter 6 ou mais caracteres e conter números e letras.</span>
  80 + <div class="form-group">
  81 + <input type="checkbox" name="termosDeUso" value="aceito">Já li os <a href="">Termos de Uso</a> e concordo com os mesmos*</input>
  82 + </div>
  83 + <div class="form-group">
  84 + <span>Digite o texto da imagem</span>
  85 + <p>O Captcha vai aqui</p>
  86 + </div>
  87 + <div class="form-group">
  88 + <button class="btn btn-lg btn-block btn-submit" type="submit">Cadastrar</button>
  89 + </div>
  90 + </form>
55 91 </div>
56 92 </div>
57 93 </div>
... ...
src/app/pages/geral/error-messages.html 0 → 100644
... ... @@ -0,0 +1,6 @@
  1 +<div class="error-message">
  2 + <div ng-message="required" >Ops, o campo é obrigatório.</div>
  3 + <div ng-message="minlength">O campo deve ser maior.</div>
  4 + <div ng-message="maxlength">O campo deve ser menor</div>
  5 + <div ng-message="email">O endereço de e-mail deve ser válido</div>
  6 +</div>
0 7 \ No newline at end of file
... ...
src/app/pages/geral/termosDeUso.html 0 → 100644
... ... @@ -0,0 +1,92 @@
  1 +<div class="modal fade modalTermosDeUso" id="termosDeUso" tabindex="-1" role="dialog" aria-labelledby="termosDeUsoLabel">
  2 + <div class="modal-dialog" role="document">
  3 + <div class="modal-content">
  4 + <div class="modal-header">
  5 + <button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
  6 + <h4 class="modal-title" id="termosDeUsoLabel">Termos de Uso</h4>
  7 + </div>
  8 + <div class="modal-body">
  9 + <p>
  10 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  11 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  12 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  13 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  14 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  15 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  16 + </p>
  17 +
  18 + <p>
  19 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  20 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  21 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  22 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  23 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  24 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  25 + </p>
  26 +
  27 + <p>
  28 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  29 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  30 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  31 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  32 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  33 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  34 + </p>
  35 +
  36 + <p>
  37 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  38 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  39 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  40 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  41 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  42 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  43 + </p>
  44 +
  45 + <p>
  46 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  47 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  48 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  49 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  50 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  51 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  52 + </p>
  53 +
  54 + <p>
  55 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  56 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  57 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  58 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  59 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  60 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  61 + </p>
  62 +
  63 + <p>
  64 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  65 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  66 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  67 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  68 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  69 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  70 + </p>
  71 +
  72 + <p>
  73 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  74 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  75 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  76 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  77 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  78 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  79 + </p>
  80 +
  81 + <p>
  82 + Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod
  83 + tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam,
  84 + quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
  85 + consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
  86 + cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
  87 + proident, sunt in culpa qui officia deserunt mollit anim id est laborum.
  88 + </p>
  89 + </div>
  90 + </div>
  91 + </div>
  92 + </div>
0 93 \ No newline at end of file
... ...