Commit 3cd6b93a32abcdf2ef6851b6d98831734f7049cb
Exists in
master
and in
8 other branches
Merge branch 'merlin' into rafael
Showing
29 changed files
with
368 additions
and
262 deletions
Show diff stats
.gitignore
gulp/server.js
@@ -16,7 +16,7 @@ function browserSyncInit(baseDir, browser) { | @@ -16,7 +16,7 @@ function browserSyncInit(baseDir, browser) { | ||
16 | browser = browser === undefined ? 'default' : browser; | 16 | browser = browser === undefined ? 'default' : browser; |
17 | 17 | ||
18 | var routes = null; | 18 | var routes = null; |
19 | - if(baseDir === conf.paths.src || (util.isArray(baseDir) && baseDir.indexOf(conf.paths.src) !== -1)) { | 19 | + if (baseDir === conf.paths.src || (util.isArray(baseDir) && baseDir.indexOf(conf.paths.src) !== -1)) { |
20 | routes = { | 20 | routes = { |
21 | '/bower_components': 'bower_components' | 21 | '/bower_components': 'bower_components' |
22 | }; | 22 | }; |
@@ -34,29 +34,48 @@ function browserSyncInit(baseDir, browser) { | @@ -34,29 +34,48 @@ function browserSyncInit(baseDir, browser) { | ||
34 | * | 34 | * |
35 | * For more details and option, https://github.com/chimurai/http-proxy-middleware/blob/v0.0.5/README.md | 35 | * For more details and option, https://github.com/chimurai/http-proxy-middleware/blob/v0.0.5/README.md |
36 | */ | 36 | */ |
37 | - if(gutil.env.target) { | ||
38 | - server.middleware = proxyMiddleware(['/api/**', '/image_uploads/**'], { | ||
39 | - target: gutil.env.target, | ||
40 | - changeOrigin: true, | ||
41 | - proxyTable: { | ||
42 | - 'localhost:3000' : gutil.env.target | ||
43 | - } | ||
44 | - | ||
45 | - }); | ||
46 | - } else { | ||
47 | - // no target! Point to localhost | 37 | + if (gutil.env.local) { |
38 | + // no target env. Point to localhost | ||
48 | server.middleware = proxyMiddleware('/api', { | 39 | server.middleware = proxyMiddleware('/api', { |
49 | target: 'http://0.0.0.0:9000/', | 40 | target: 'http://0.0.0.0:9000/', |
50 | pathRewrite: { | 41 | pathRewrite: { |
51 | - // rewrite paths | ||
52 | - '^/api/v1/articles' : '/articles' | 42 | + // rewrite paths |
43 | + '^/api/v1/articles': '/articles' | ||
53 | }, | 44 | }, |
54 | proxyTable: { | 45 | proxyTable: { |
55 | // when request.headers.host == 'dev.localhost:3000', | 46 | // when request.headers.host == 'dev.localhost:3000', |
56 | // override target 'http://www.example.org' to 'http://localhost:8000' | 47 | // override target 'http://www.example.org' to 'http://localhost:8000' |
57 | // 'dev.localhost:3000' : 'http://localhost:8000' | 48 | // 'dev.localhost:3000' : 'http://localhost:8000' |
58 | - 'hom.dialoga.gov.br' : 'http://localhost:9000', | ||
59 | - 'login.dialoga.gov.br' : 'http://localhost:9000' | 49 | + 'hom.dialoga.gov.br': 'http://localhost:9000', |
50 | + 'login.dialoga.gov.br': 'http://localhost:9000' | ||
51 | + } | ||
52 | + }); | ||
53 | + } | ||
54 | + | ||
55 | + if (gutil.env.production) { | ||
56 | + var host_production = 'http://login.dialoga.gov.br/'; | ||
57 | + server.middleware = proxyMiddleware([ | ||
58 | + '/api/**', | ||
59 | + '/image_uploads/**' | ||
60 | + ], { | ||
61 | + target: host_production, | ||
62 | + changeOrigin: true, | ||
63 | + proxyTable: { | ||
64 | + 'localhost:3000': host_production | ||
65 | + } | ||
66 | + }); | ||
67 | + } | ||
68 | + | ||
69 | + if (gutil.env.staging) { | ||
70 | + var host_staging = 'http://hom.login.dialoga.gov.br/'; | ||
71 | + server.middleware = proxyMiddleware([ | ||
72 | + '/api/**', | ||
73 | + '/image_uploads/**' | ||
74 | + ], { | ||
75 | + target: host_staging, | ||
76 | + changeOrigin: true, | ||
77 | + proxyTable: { | ||
78 | + 'localhost:3000': host_staging | ||
60 | } | 79 | } |
61 | }); | 80 | }); |
62 | } | 81 | } |
@@ -73,18 +92,18 @@ browserSync.use(browserSyncSpa({ | @@ -73,18 +92,18 @@ browserSync.use(browserSyncSpa({ | ||
73 | selector: '[ng-app]'// Only needed for angular apps | 92 | selector: '[ng-app]'// Only needed for angular apps |
74 | })); | 93 | })); |
75 | 94 | ||
76 | -gulp.task('serve', ['watch'], function () { | 95 | +gulp.task('serve', ['watch'], function() { |
77 | browserSyncInit([path.join(conf.paths.tmp, '/serve'), conf.paths.src]); | 96 | browserSyncInit([path.join(conf.paths.tmp, '/serve'), conf.paths.src]); |
78 | }); | 97 | }); |
79 | 98 | ||
80 | -gulp.task('serve:dist', ['build'], function () { | 99 | +gulp.task('serve:dist', ['build'], function() { |
81 | browserSyncInit(conf.paths.dist); | 100 | browserSyncInit(conf.paths.dist); |
82 | }); | 101 | }); |
83 | 102 | ||
84 | -gulp.task('serve:e2e', ['inject'], function () { | 103 | +gulp.task('serve:e2e', ['inject'], function() { |
85 | browserSyncInit([conf.paths.tmp + '/serve', conf.paths.src], []); | 104 | browserSyncInit([conf.paths.tmp + '/serve', conf.paths.src], []); |
86 | }); | 105 | }); |
87 | 106 | ||
88 | -gulp.task('serve:e2e-dist', ['build'], function () { | 107 | +gulp.task('serve:e2e-dist', ['build'], function() { |
89 | browserSyncInit(conf.paths.dist, []); | 108 | browserSyncInit(conf.paths.dist, []); |
90 | }); | 109 | }); |
@@ -0,0 +1,17 @@ | @@ -0,0 +1,17 @@ | ||
1 | +(function() { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + angular | ||
5 | + .module('dialoga') | ||
6 | + .directive('appFooter', appFooter); | ||
7 | + | ||
8 | + /** @ngInject */ | ||
9 | + function appFooter() { | ||
10 | + var directive = { | ||
11 | + restrict: 'E', | ||
12 | + templateUrl: 'app/components/app-footer/app-footer.html' | ||
13 | + }; | ||
14 | + | ||
15 | + return directive; | ||
16 | + } | ||
17 | +})(); |
@@ -0,0 +1,10 @@ | @@ -0,0 +1,10 @@ | ||
1 | +<div id="footer"> | ||
2 | + <div class="container"> | ||
3 | + <div class="row"> | ||
4 | + <div class="col-xs-12 text-center"> | ||
5 | + <a id="termos-de-uso" ui-sref="termos-de-uso">Termos de uso</a> | ||
6 | + <a href="#header" style="position:absolute;right:0;top:-10px;" ng-click="scrollTo('#header')">Voltar para o topo</a> | ||
7 | + </div> | ||
8 | + </div> | ||
9 | + </div> | ||
10 | +</div> |
@@ -0,0 +1,21 @@ | @@ -0,0 +1,21 @@ | ||
1 | +$barra-theme: ("green": #00420c, "yellow": #2c66ce, "blue": #0042b1); | ||
2 | + | ||
3 | +#footer-brasil { | ||
4 | + background: none repeat scroll 0% 0% map-get($barra-theme, "blue"); | ||
5 | + padding: 1em 0px; | ||
6 | + max-width: 100%; | ||
7 | +} | ||
8 | + | ||
9 | +#footer { | ||
10 | + padding: 20px 0; | ||
11 | + a { | ||
12 | + margin: 10px auto; | ||
13 | + } | ||
14 | + | ||
15 | + .contraste & { | ||
16 | + background-color: #000; | ||
17 | + a { | ||
18 | + color: #fff; | ||
19 | + } | ||
20 | + } | ||
21 | +} |
@@ -0,0 +1,17 @@ | @@ -0,0 +1,17 @@ | ||
1 | +(function() { | ||
2 | + 'use strict'; | ||
3 | + | ||
4 | + angular | ||
5 | + .module('dialoga') | ||
6 | + .directive('appHeader', appHeader); | ||
7 | + | ||
8 | + /** @ngInject */ | ||
9 | + function appHeader() { | ||
10 | + var directive = { | ||
11 | + restrict: 'E', | ||
12 | + templateUrl: 'app/components/app-header/app-header.html' | ||
13 | + }; | ||
14 | + | ||
15 | + return directive; | ||
16 | + } | ||
17 | +})(); |
@@ -0,0 +1,15 @@ | @@ -0,0 +1,15 @@ | ||
1 | +<header id="header" class="container"> | ||
2 | + | ||
3 | + <div class="row hidden-xs"> | ||
4 | + <div class="col-sm-12"> | ||
5 | + <auth-user></auth-user> | ||
6 | + </div> | ||
7 | + </div> | ||
8 | + | ||
9 | + <div class="row"> | ||
10 | + <div class="col-sm-12"> | ||
11 | + <app-navbar></app-navbar> | ||
12 | + </div> | ||
13 | + </div> | ||
14 | + | ||
15 | +</header> |
src/app/components/auth/auth.service.js
@@ -8,10 +8,10 @@ | @@ -8,10 +8,10 @@ | ||
8 | .factory('AuthInterceptor', AuthInterceptor); | 8 | .factory('AuthInterceptor', AuthInterceptor); |
9 | 9 | ||
10 | /** @ngInject */ | 10 | /** @ngInject */ |
11 | - function AuthService($http, $rootScope, Session, AUTH_EVENTS, API, $log) { | 11 | + function AuthService($q, $http, $rootScope, Session, AUTH_EVENTS, API, PATH, $log) { |
12 | 12 | ||
13 | function register (data){ | 13 | function register (data){ |
14 | - var url = API.host + '/api/v1/register'; | 14 | + var url = PATH.host + '/api/v1/register'; |
15 | $log.debug('data', data); | 15 | $log.debug('data', data); |
16 | // var encodedData = data; | 16 | // var encodedData = data; |
17 | var encodedData = ''; | 17 | var encodedData = ''; |
@@ -22,6 +22,8 @@ | @@ -22,6 +22,8 @@ | ||
22 | encodedData += '&password=' + data.password; | 22 | encodedData += '&password=' + data.password; |
23 | encodedData += '&password_confirmation=' + data.password_confirmation; | 23 | encodedData += '&password_confirmation=' + data.password_confirmation; |
24 | encodedData += '&user_terms_accepted=' + data.user_terms_accepted; | 24 | encodedData += '&user_terms_accepted=' + data.user_terms_accepted; |
25 | + encodedData += '&captcha_text=' + data.captcha_text; | ||
26 | + encodedData += '&txtToken_captcha_serpro_gov_br=' + data.txtToken_captcha_serpro_gov_br; | ||
25 | 27 | ||
26 | // var encodedData = _encodeObj(data); | 28 | // var encodedData = _encodeObj(data); |
27 | // var encodedData = angular.element.param(data); | 29 | // var encodedData = angular.element.param(data); |
@@ -44,8 +46,8 @@ | @@ -44,8 +46,8 @@ | ||
44 | }, function(response) { | 46 | }, function(response) { |
45 | $log.debug('AuthService.register [FAIL] response', response); | 47 | $log.debug('AuthService.register [FAIL] response', response); |
46 | 48 | ||
47 | - $rootScope.$broadcast(AUTH_EVENTS.registerFailed); | ||
48 | - return response; | 49 | + $rootScope.$broadcast(AUTH_EVENTS.registerFailed, response); |
50 | + return $q.reject(response); | ||
49 | }); | 51 | }); |
50 | } | 52 | } |
51 | 53 |
src/app/components/navbar/navbar.html
1 | <div class="app-navbar"> | 1 | <div class="app-navbar"> |
2 | + <div id="dialoga-nas-redes"> | ||
3 | + <div class="text text-right"> | ||
4 | + <p>Dialoga<br>Nas Redes</p> | ||
5 | + </div> | ||
6 | + <social-share></social-share> | ||
7 | + </div> | ||
2 | <nav id="navigation" class="header-navbar navbar navbar-static-top" role="navigation"> | 8 | <nav id="navigation" class="header-navbar navbar navbar-static-top" role="navigation"> |
3 | <div class="navbar-header"> | 9 | <div class="navbar-header"> |
4 | <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false"> | 10 | <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar-collapse" aria-expanded="false"> |
src/app/components/navbar/navbar.scss
@@ -103,3 +103,17 @@ | @@ -103,3 +103,17 @@ | ||
103 | } | 103 | } |
104 | } | 104 | } |
105 | } | 105 | } |
106 | + | ||
107 | +#dialoga-nas-redes { | ||
108 | + position: absolute; | ||
109 | + right: 0; | ||
110 | + top: 0; | ||
111 | + z-index: 1000; | ||
112 | + | ||
113 | + .text { | ||
114 | + position: absolute; | ||
115 | + top: 5px; | ||
116 | + right: 210px; | ||
117 | + width: 100px; | ||
118 | + } | ||
119 | +} | ||
106 | \ No newline at end of file | 120 | \ No newline at end of file |
src/app/components/proposal-carousel/proposal-carousel.html
@@ -24,7 +24,7 @@ | @@ -24,7 +24,7 @@ | ||
24 | </div> | 24 | </div> |
25 | </div> | 25 | </div> |
26 | <div class="proposal-carousel-bottom color-theme-common-bg" ng-click="vm.showProposalsList()"> | 26 | <div class="proposal-carousel-bottom color-theme-common-bg" ng-click="vm.showProposalsList()"> |
27 | - <div>Veja as propostas mais vortadas</div> | 27 | + <div>Veja as propostas mais votadas</div> |
28 | <div class="proposal-carousel-bottom-icon"> | 28 | <div class="proposal-carousel-bottom-icon"> |
29 | <span class="glyphicon glyphicon-chevron-down pull-right color-theme-common-fg"></span> | 29 | <span class="glyphicon glyphicon-chevron-down pull-right color-theme-common-fg"></span> |
30 | </div> | 30 | </div> |
src/app/components/proposal-list/proposal-list.directive.js
@@ -33,8 +33,8 @@ | @@ -33,8 +33,8 @@ | ||
33 | throw { name: 'NotDefined', message: 'The attribute "proposals" is undefined.'}; | 33 | throw { name: 'NotDefined', message: 'The attribute "proposals" is undefined.'}; |
34 | } | 34 | } |
35 | 35 | ||
36 | - if(!vm.per_page){ | ||
37 | - vm.per_page = 5; | 36 | + if(!vm.perPage){ |
37 | + vm.perPage = 5; | ||
38 | } | 38 | } |
39 | 39 | ||
40 | vm.initPorposalList(); | 40 | vm.initPorposalList(); |
@@ -50,10 +50,10 @@ | @@ -50,10 +50,10 @@ | ||
50 | vm.proposalsLength = vm.proposals.length; | 50 | vm.proposalsLength = vm.proposals.length; |
51 | 51 | ||
52 | 52 | ||
53 | - if ((vm.proposalsLength % vm.per_page) === 0) { | ||
54 | - vm.pages = vm.proposalsLength / vm.per_page; | 53 | + if ((vm.proposalsLength % vm.perPage) === 0) { |
54 | + vm.pages = vm.proposalsLength / vm.perPage; | ||
55 | } else{ | 55 | } else{ |
56 | - vm.pages = (vm.proposalsLength / vm.per_page) + 1; | 56 | + vm.pages = (vm.proposalsLength / vm.perPage) + 1; |
57 | } | 57 | } |
58 | 58 | ||
59 | // vm.arraypages = new Array(Math.ceil(vm.pages)); | 59 | // vm.arraypages = new Array(Math.ceil(vm.pages)); |
@@ -81,8 +81,8 @@ | @@ -81,8 +81,8 @@ | ||
81 | ProposalListController.prototype.getProposalsPerPage = function (pageIndex) { | 81 | ProposalListController.prototype.getProposalsPerPage = function (pageIndex) { |
82 | var vm = this; | 82 | var vm = this; |
83 | 83 | ||
84 | - var initialIndex = pageIndex * vm.per_page; | ||
85 | - var finalIndex = initialIndex + vm.per_page; | 84 | + var initialIndex = pageIndex * vm.perPage; |
85 | + var finalIndex = initialIndex + vm.perPage; | ||
86 | 86 | ||
87 | return vm.proposals.slice(initialIndex, finalIndex); | 87 | return vm.proposals.slice(initialIndex, finalIndex); |
88 | }; | 88 | }; |
@@ -132,7 +132,7 @@ | @@ -132,7 +132,7 @@ | ||
132 | templateUrl: 'app/components/proposal-list/proposal-list.html', | 132 | templateUrl: 'app/components/proposal-list/proposal-list.html', |
133 | scope: { | 133 | scope: { |
134 | proposals: '=', | 134 | proposals: '=', |
135 | - per_page: '=' | 135 | + perPage: '=' |
136 | }, | 136 | }, |
137 | controller: ProposalListController, | 137 | controller: ProposalListController, |
138 | controllerAs: 'vm', | 138 | controllerAs: 'vm', |
src/app/components/proposal-list/proposal-list.html
@@ -27,8 +27,7 @@ | @@ -27,8 +27,7 @@ | ||
27 | <div class="row row-actions"> | 27 | <div class="row row-actions"> |
28 | <div class="col-sm-8"> | 28 | <div class="col-sm-8"> |
29 | <button type="button" class="btn btn-link btn-rate color-theme-common-fg" ng-click="vm.showContent(proposal)"> | 29 | <button type="button" class="btn btn-link btn-rate color-theme-common-fg" ng-click="vm.showContent(proposal)"> |
30 | - Avalie esta proposta | ||
31 | - <span class="glyphicon glyphicon-chevron-right" aria-hidden="true"></span> | 30 | + Participe |
32 | </button> | 31 | </button> |
33 | </div> | 32 | </div> |
34 | <div class="col-sm-4"> | 33 | <div class="col-sm-4"> |
src/app/components/social-share/social-share.scss
1 | .social-share { | 1 | .social-share { |
2 | + min-width: 200px; | ||
3 | + padding: 5px; | ||
4 | + height: 47px; | ||
5 | + | ||
6 | + &:after { | ||
7 | + clear: both; | ||
8 | + } | ||
9 | + | ||
2 | &.list-inline { | 10 | &.list-inline { |
3 | margin: 0; | 11 | margin: 0; |
4 | } | 12 | } |
13 | + li { | ||
14 | + float: left; | ||
15 | + padding: 0; | ||
16 | + margin: 0; | ||
17 | + width: 45px; | ||
18 | + text-align: center; | ||
19 | + | ||
20 | + & > a { | ||
21 | + padding: 0; | ||
22 | + } | ||
23 | + | ||
24 | + &:first-child { | ||
25 | + // margin-left: 5px; | ||
26 | + } | ||
27 | + } | ||
5 | } | 28 | } |
29 | + |
src/app/index.route.js
@@ -13,65 +13,55 @@ | @@ -13,65 +13,55 @@ | ||
13 | ncyBreadcrumb: {label: 'Home'}, | 13 | ncyBreadcrumb: {label: 'Home'}, |
14 | reloadOnSearch: false, | 14 | reloadOnSearch: false, |
15 | views: { | 15 | views: { |
16 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
17 | 'main': { | 16 | 'main': { |
18 | templateUrl: 'app/pages/inicio/inicio.html', | 17 | templateUrl: 'app/pages/inicio/inicio.html', |
19 | controller: 'InicioPageController', | 18 | controller: 'InicioPageController', |
20 | controllerAs: 'pageInicio' | 19 | controllerAs: 'pageInicio' |
21 | - }, | ||
22 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 20 | + } |
23 | } | 21 | } |
24 | }) | 22 | }) |
25 | .state('entrar', { | 23 | .state('entrar', { |
26 | url: '/entrar?redirect_uri&message', | 24 | url: '/entrar?redirect_uri&message', |
27 | ncyBreadcrumb: {label: 'Entrar'}, | 25 | ncyBreadcrumb: {label: 'Entrar'}, |
28 | views: { | 26 | views: { |
29 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
30 | 'main': { | 27 | 'main': { |
31 | templateUrl: 'app/pages/auth/signin.html', | 28 | templateUrl: 'app/pages/auth/signin.html', |
32 | controller: 'AuthPageController', | 29 | controller: 'AuthPageController', |
33 | controllerAs: 'pageSignin' | 30 | controllerAs: 'pageSignin' |
34 | - }, | ||
35 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 31 | + } |
36 | } | 32 | } |
37 | }) | 33 | }) |
38 | .state('recuperar', { | 34 | .state('recuperar', { |
39 | url: '/recuperar', | 35 | url: '/recuperar', |
40 | ncyBreadcrumb: {label: 'Recuperar'}, | 36 | ncyBreadcrumb: {label: 'Recuperar'}, |
41 | views: { | 37 | views: { |
42 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
43 | 'main': { | 38 | 'main': { |
44 | templateUrl: 'app/pages/auth/recover.html', | 39 | templateUrl: 'app/pages/auth/recover.html', |
45 | controller: 'AuthPageController', | 40 | controller: 'AuthPageController', |
46 | controllerAs: 'pageSignin' | 41 | controllerAs: 'pageSignin' |
47 | - }, | ||
48 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 42 | + } |
49 | } | 43 | } |
50 | }) | 44 | }) |
51 | .state('alterar', { | 45 | .state('alterar', { |
52 | url: '/alterar', | 46 | url: '/alterar', |
53 | ncyBreadcrumb: {label: 'Alterar'}, | 47 | ncyBreadcrumb: {label: 'Alterar'}, |
54 | views: { | 48 | views: { |
55 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
56 | 'main': { | 49 | 'main': { |
57 | templateUrl: 'app/pages/auth/change.html', | 50 | templateUrl: 'app/pages/auth/change.html', |
58 | controller: 'AuthPageController', | 51 | controller: 'AuthPageController', |
59 | controllerAs: 'pageSignin' | 52 | controllerAs: 'pageSignin' |
60 | - }, | ||
61 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 53 | + } |
62 | } | 54 | } |
63 | }) | 55 | }) |
64 | .state('cadastrar', { | 56 | .state('cadastrar', { |
65 | url: '/cadastrar', | 57 | url: '/cadastrar', |
66 | ncyBreadcrumb: {label: 'Cadastrar'}, | 58 | ncyBreadcrumb: {label: 'Cadastrar'}, |
67 | views: { | 59 | views: { |
68 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
69 | 'main': { | 60 | 'main': { |
70 | templateUrl: 'app/pages/auth/signup.html', | 61 | templateUrl: 'app/pages/auth/signup.html', |
71 | controller: 'AuthPageController', | 62 | controller: 'AuthPageController', |
72 | controllerAs: 'pageSignup' | 63 | controllerAs: 'pageSignup' |
73 | - }, | ||
74 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 64 | + } |
75 | } | 65 | } |
76 | }) | 66 | }) |
77 | .state('programas', { | 67 | .state('programas', { |
@@ -79,13 +69,11 @@ | @@ -79,13 +69,11 @@ | ||
79 | reloadOnSearch: false, | 69 | reloadOnSearch: false, |
80 | ncyBreadcrumb: {label: 'Programas'}, | 70 | ncyBreadcrumb: {label: 'Programas'}, |
81 | views: { | 71 | views: { |
82 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
83 | 'main': { | 72 | 'main': { |
84 | templateUrl: 'app/pages/programas/programas.html', | 73 | templateUrl: 'app/pages/programas/programas.html', |
85 | controller: 'ProgramasPageController', | 74 | controller: 'ProgramasPageController', |
86 | controllerAs: 'pageProgramas' | 75 | controllerAs: 'pageProgramas' |
87 | - }, | ||
88 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 76 | + } |
89 | } | 77 | } |
90 | }) | 78 | }) |
91 | .state('programa', { | 79 | .state('programa', { |
@@ -96,13 +84,11 @@ | @@ -96,13 +84,11 @@ | ||
96 | parent: 'programas' | 84 | parent: 'programas' |
97 | }, | 85 | }, |
98 | views: { | 86 | views: { |
99 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
100 | 'main': { | 87 | 'main': { |
101 | templateUrl: 'app/pages/programas/programa.html', | 88 | templateUrl: 'app/pages/programas/programa.html', |
102 | controller: 'ProgramaPageController', | 89 | controller: 'ProgramaPageController', |
103 | controllerAs: 'pagePrograma' | 90 | controllerAs: 'pagePrograma' |
104 | - }, | ||
105 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 91 | + } |
106 | } | 92 | } |
107 | }) | 93 | }) |
108 | .state('propostas', { | 94 | .state('propostas', { |
@@ -110,13 +96,11 @@ | @@ -110,13 +96,11 @@ | ||
110 | reloadOnSearch: false, | 96 | reloadOnSearch: false, |
111 | ncyBreadcrumb: {label: 'Propostas'}, | 97 | ncyBreadcrumb: {label: 'Propostas'}, |
112 | views: { | 98 | views: { |
113 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
114 | 'main': { | 99 | 'main': { |
115 | templateUrl: 'app/pages/propostas/propostas.html', | 100 | templateUrl: 'app/pages/propostas/propostas.html', |
116 | controller: 'PropostasPageController', | 101 | controller: 'PropostasPageController', |
117 | controllerAs: 'pagePropostas' | 102 | controllerAs: 'pagePropostas' |
118 | - }, | ||
119 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 103 | + } |
120 | } | 104 | } |
121 | }) | 105 | }) |
122 | .state('ranking', { | 106 | .state('ranking', { |
@@ -124,13 +108,11 @@ | @@ -124,13 +108,11 @@ | ||
124 | reloadOnSearch: false, | 108 | reloadOnSearch: false, |
125 | ncyBreadcrumb: {label: 'Propostas'}, | 109 | ncyBreadcrumb: {label: 'Propostas'}, |
126 | views: { | 110 | views: { |
127 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
128 | 'main': { | 111 | 'main': { |
129 | templateUrl: 'app/pages/propostas/ranking.html', | 112 | templateUrl: 'app/pages/propostas/ranking.html', |
130 | controller: 'PropostasPageController', | 113 | controller: 'PropostasPageController', |
131 | controllerAs: 'pagePropostas' | 114 | controllerAs: 'pagePropostas' |
132 | - }, | ||
133 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 115 | + } |
134 | } | 116 | } |
135 | }) | 117 | }) |
136 | .state('propostas-conteudo', { | 118 | .state('propostas-conteudo', { |
@@ -140,39 +122,33 @@ | @@ -140,39 +122,33 @@ | ||
140 | parent: 'propostas' | 122 | parent: 'propostas' |
141 | }, | 123 | }, |
142 | views: { | 124 | views: { |
143 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
144 | 'main': { | 125 | 'main': { |
145 | templateUrl: 'app/pages/propostas/proposta.html', | 126 | templateUrl: 'app/pages/propostas/proposta.html', |
146 | controller: 'PropostasPageController', | 127 | controller: 'PropostasPageController', |
147 | controllerAs: 'pagePropostas' | 128 | controllerAs: 'pagePropostas' |
148 | - }, | ||
149 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 129 | + } |
150 | } | 130 | } |
151 | }) | 131 | }) |
152 | .state('duvidas', { | 132 | .state('duvidas', { |
153 | url: '/duvidas', | 133 | url: '/duvidas', |
154 | ncyBreadcrumb: {label: 'Dúvidas'}, | 134 | ncyBreadcrumb: {label: 'Dúvidas'}, |
155 | views: { | 135 | views: { |
156 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
157 | 'main': { | 136 | 'main': { |
158 | templateUrl: 'app/pages/duvidas/duvidas.html', | 137 | templateUrl: 'app/pages/duvidas/duvidas.html', |
159 | controller: 'DuvidasPageController', | 138 | controller: 'DuvidasPageController', |
160 | controllerAs: 'pageDuvidas' | 139 | controllerAs: 'pageDuvidas' |
161 | - }, | ||
162 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 140 | + } |
163 | } | 141 | } |
164 | }) | 142 | }) |
165 | .state('sobre', { | 143 | .state('sobre', { |
166 | url: '/sobre', | 144 | url: '/sobre', |
167 | ncyBreadcrumb: {label: 'Sobre'}, | 145 | ncyBreadcrumb: {label: 'Sobre'}, |
168 | views: { | 146 | views: { |
169 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
170 | 'main': { | 147 | 'main': { |
171 | templateUrl: 'app/pages/article/article.html', | 148 | templateUrl: 'app/pages/article/article.html', |
172 | controller: 'ArticlePageController', | 149 | controller: 'ArticlePageController', |
173 | controllerAs: 'pageArticle' | 150 | controllerAs: 'pageArticle' |
174 | - }, | ||
175 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 151 | + } |
176 | } | 152 | } |
177 | }) | 153 | }) |
178 | .state('termos-de-uso', { | 154 | .state('termos-de-uso', { |
@@ -180,35 +156,29 @@ | @@ -180,35 +156,29 @@ | ||
180 | ncyBreadcrumb: {label: 'Termos de Uso'}, | 156 | ncyBreadcrumb: {label: 'Termos de Uso'}, |
181 | controller: 'ArticlePageController', | 157 | controller: 'ArticlePageController', |
182 | views: { | 158 | views: { |
183 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
184 | 'main': { | 159 | 'main': { |
185 | templateUrl: 'app/pages/article/article.html', | 160 | templateUrl: 'app/pages/article/article.html', |
186 | controller: 'ArticlePageController', | 161 | controller: 'ArticlePageController', |
187 | controllerAs: 'pageArticle' | 162 | controllerAs: 'pageArticle' |
188 | - }, | ||
189 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 163 | + } |
190 | } | 164 | } |
191 | }) | 165 | }) |
192 | .state('mapa-do-site', { | 166 | .state('mapa-do-site', { |
193 | url: '/mapa-do-site', | 167 | url: '/mapa-do-site', |
194 | ncyBreadcrumb: {label: 'Mapa do Site'}, | 168 | ncyBreadcrumb: {label: 'Mapa do Site'}, |
195 | views: { | 169 | views: { |
196 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
197 | 'main': { | 170 | 'main': { |
198 | templateUrl: 'app/pages/mapa-do-site/mapa-do-site.html', | 171 | templateUrl: 'app/pages/mapa-do-site/mapa-do-site.html', |
199 | controller: 'SitemapPageController', | 172 | controller: 'SitemapPageController', |
200 | controllerAs: 'sitemap' | 173 | controllerAs: 'sitemap' |
201 | - }, | ||
202 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 174 | + } |
203 | } | 175 | } |
204 | }) | 176 | }) |
205 | .state('erro', { | 177 | .state('erro', { |
206 | url: '/erro', | 178 | url: '/erro', |
207 | ncyBreadcrumb: {label: 'Erro'}, | 179 | ncyBreadcrumb: {label: 'Erro'}, |
208 | views: { | 180 | views: { |
209 | - 'header': { templateUrl: 'app/pages/header/header.html' }, | ||
210 | - 'main': { templateUrl: 'app/pages/erro/erro.html' }, | ||
211 | - 'footer': { templateUrl: 'app/pages/footer/footer.html' } | 181 | + 'main': { templateUrl: 'app/pages/erro/erro.html' } |
212 | } | 182 | } |
213 | }) | 183 | }) |
214 | ; | 184 | ; |
src/app/index.run.js
@@ -4,12 +4,13 @@ | @@ -4,12 +4,13 @@ | ||
4 | 4 | ||
5 | angular | 5 | angular |
6 | .module('dialoga') | 6 | .module('dialoga') |
7 | - .run(runAuth) | ||
8 | - .run(runSocialAuth) | ||
9 | .run(runAccessibility) | 7 | .run(runAccessibility) |
8 | + .run(runAuth) | ||
9 | + .run(runCaptcha) | ||
10 | + .run(runColorUtils) | ||
10 | .run(runHistory) | 11 | .run(runHistory) |
11 | .run(runPath) | 12 | .run(runPath) |
12 | - .run(runColorUtils) | 13 | + .run(runSocialAuth) |
13 | .run(runUtils) | 14 | .run(runUtils) |
14 | .run(runBlock); | 15 | .run(runBlock); |
15 | 16 | ||
@@ -45,18 +46,53 @@ | @@ -45,18 +46,53 @@ | ||
45 | } | 46 | } |
46 | 47 | ||
47 | /** @ngInject */ | 48 | /** @ngInject */ |
49 | + function runCaptcha($window, $log, GUID) { | ||
50 | + var serpro_captcha_clienteId = 'fdbcdc7a0b754ee7ae9d865fda740f17'; | ||
51 | + | ||
52 | + $window.initCaptcha = function(element) { | ||
53 | + var $element = angular.element(element); | ||
54 | + | ||
55 | + // already have a started captcha | ||
56 | + if ($element.data('captcha')) { | ||
57 | + $log.info('Captcha already initialized. Abort.'); | ||
58 | + return; | ||
59 | + } | ||
60 | + | ||
61 | + // Create a new instance of Captcha | ||
62 | + var oCaptcha_serpro_gov_br = new $window.captcha_serpro_gov_br(); | ||
63 | + | ||
64 | + // Set the initial data | ||
65 | + $element.val(''); | ||
66 | + $element.data('captcha', oCaptcha_serpro_gov_br); | ||
67 | + oCaptcha_serpro_gov_br.clienteId = serpro_captcha_clienteId; | ||
68 | + // oCaptcha_serpro_gov_br.url = "/serprocaptcha"; | ||
69 | + oCaptcha_serpro_gov_br.criarUI(element, 'css', 'serpro_captcha_component_', GUID.generate()); | ||
70 | + }; | ||
71 | + | ||
72 | + $window.reloadCaptcha = function(element) { | ||
73 | + var $element = angular.element(element); | ||
74 | + | ||
75 | + if ($element.data('captcha')) { | ||
76 | + $element.data('captcha').recarregar(); | ||
77 | + } | ||
78 | + }; | ||
79 | + | ||
80 | + $log.debug('runCaptcha'); | ||
81 | + } | ||
82 | + | ||
83 | + /** @ngInject */ | ||
48 | function runSocialAuth($window, $rootScope, $interval, $log) { | 84 | function runSocialAuth($window, $rootScope, $interval, $log) { |
49 | 85 | ||
50 | - $window.oauthClientAction = function (url){ | 86 | + $window.oauthClientAction = function(url) { |
51 | var child = $window.open(url, '_blank'); | 87 | var child = $window.open(url, '_blank'); |
52 | var interval = $interval(function() { | 88 | var interval = $interval(function() { |
53 | try { | 89 | try { |
54 | - if(!child.closed) { | 90 | + if (!child.closed) { |
55 | child.postMessage({ | 91 | child.postMessage({ |
56 | message: 'requestOauthClientPluginResult' | 92 | message: 'requestOauthClientPluginResult' |
57 | }, '*'); | 93 | }, '*'); |
58 | } | 94 | } |
59 | - } catch(e) { | 95 | + } catch (e) { |
60 | // we're here when the child window has been navigated away or closed | 96 | // we're here when the child window has been navigated away or closed |
61 | if (child.closed) { | 97 | if (child.closed) { |
62 | $interval.cancel(interval); | 98 | $interval.cancel(interval); |
@@ -118,7 +154,7 @@ | @@ -118,7 +154,7 @@ | ||
118 | // prevent skip link from redirecting | 154 | // prevent skip link from redirecting |
119 | if ($event) { $event.preventDefault(); } | 155 | if ($event) { $event.preventDefault(); } |
120 | 156 | ||
121 | - if(angular.isString(target)){ | 157 | + if (angular.isString(target)) { |
122 | target = angular.element(target); | 158 | target = angular.element(target); |
123 | } | 159 | } |
124 | 160 | ||
@@ -137,7 +173,7 @@ | @@ -137,7 +173,7 @@ | ||
137 | $rootScope.$previousState.splice(-MAX_HISTORY, MAX_HISTORY); | 173 | $rootScope.$previousState.splice(-MAX_HISTORY, MAX_HISTORY); |
138 | }); | 174 | }); |
139 | 175 | ||
140 | - $rootScope.goBack = $rootScope.goBack || function () { | 176 | + $rootScope.goBack = $rootScope.goBack || function() { |
141 | return $rootScope.$previousState.pop(); | 177 | return $rootScope.$previousState.pop(); |
142 | }; | 178 | }; |
143 | } | 179 | } |
@@ -178,7 +214,7 @@ | @@ -178,7 +214,7 @@ | ||
178 | 214 | ||
179 | /** @ngInject */ | 215 | /** @ngInject */ |
180 | function runUtils($rootScope) { | 216 | function runUtils($rootScope) { |
181 | - $rootScope.stripHtml = function (text) { | 217 | + $rootScope.stripHtml = function(text) { |
182 | return String(text).replace(/<[^>]+>/gm, ''); | 218 | return String(text).replace(/<[^>]+>/gm, ''); |
183 | }; | 219 | }; |
184 | } | 220 | } |
src/app/index.scss
@@ -155,34 +155,6 @@ body { | @@ -155,34 +155,6 @@ body { | ||
155 | } | 155 | } |
156 | } | 156 | } |
157 | 157 | ||
158 | - | ||
159 | -.social-share { | ||
160 | - min-width: 200px; | ||
161 | - background-color: #eee; | ||
162 | - padding: 5px; | ||
163 | - height: 47px; | ||
164 | - | ||
165 | - &:after { | ||
166 | - clear: both; | ||
167 | - } | ||
168 | - | ||
169 | - li { | ||
170 | - float: left; | ||
171 | - padding: 0; | ||
172 | - margin: 0; | ||
173 | - width: 45px; | ||
174 | - text-align: center; | ||
175 | - | ||
176 | - & > a { | ||
177 | - padding: 0; | ||
178 | - } | ||
179 | - | ||
180 | - &:first-child { | ||
181 | - // margin-left: 5px; | ||
182 | - } | ||
183 | - } | ||
184 | -} | ||
185 | - | ||
186 | .icon { | 158 | .icon { |
187 | display: inline-block; | 159 | display: inline-block; |
188 | vertical-align: middle; | 160 | vertical-align: middle; |
src/app/pages/auth/auth.controller.js
@@ -6,7 +6,7 @@ | @@ -6,7 +6,7 @@ | ||
6 | .controller('AuthPageController', AuthPageController); | 6 | .controller('AuthPageController', AuthPageController); |
7 | 7 | ||
8 | /** @ngInject */ | 8 | /** @ngInject */ |
9 | - function AuthPageController($scope, $rootScope, $window, $location, $state, $timeout, AUTH_EVENTS, AuthService, DialogaService, Session, $log) { | 9 | + function AuthPageController($scope, $rootScope, $window, $location, $state, $timeout, $interval, AUTH_EVENTS, AuthService, DialogaService, Session, $log) { |
10 | var vm = this; | 10 | var vm = this; |
11 | 11 | ||
12 | vm.$scope = $scope; | 12 | vm.$scope = $scope; |
@@ -15,6 +15,7 @@ | @@ -15,6 +15,7 @@ | ||
15 | vm.$location = $location; | 15 | vm.$location = $location; |
16 | vm.$state = $state; | 16 | vm.$state = $state; |
17 | vm.$timeout = $timeout; | 17 | vm.$timeout = $timeout; |
18 | + vm.$interval = $interval; | ||
18 | vm.AUTH_EVENTS = AUTH_EVENTS; | 19 | vm.AUTH_EVENTS = AUTH_EVENTS; |
19 | vm.AuthService = AuthService; | 20 | vm.AuthService = AuthService; |
20 | vm.DialogaService = DialogaService; | 21 | vm.DialogaService = DialogaService; |
@@ -78,14 +79,38 @@ | @@ -78,14 +79,38 @@ | ||
78 | AuthPageController.prototype.attachListeners = function() { | 79 | AuthPageController.prototype.attachListeners = function() { |
79 | var vm = this; | 80 | var vm = this; |
80 | 81 | ||
82 | + vm.$scope.$on(vm.AUTH_EVENTS.registerSuccess, function(event, response) { | ||
83 | + vm.$log.debug('TODO: handle register success'); | ||
84 | + vm.$log.debug('[register success] response', response); | ||
85 | + }); | ||
86 | + | ||
87 | + vm.$scope.$on(vm.AUTH_EVENTS.registerFailed, function(event, response) { | ||
88 | + vm.$log.debug('TODO: handle register error'); | ||
89 | + vm.$log.debug('[register error] response', response); | ||
90 | + | ||
91 | + var reason = response.data.message; | ||
92 | + vm.errorMessage = reason; | ||
93 | + }); | ||
94 | + | ||
81 | vm.$scope.$on('oauthClientPluginResult', function(event, response) { | 95 | vm.$scope.$on('oauthClientPluginResult', function(event, response) { |
82 | vm.$log.debug('response', response); | 96 | vm.$log.debug('response', response); |
83 | 97 | ||
84 | // var logged_id = response.data.logged_id; | 98 | // var logged_id = response.data.logged_id; |
85 | // var private_token = response.data.private_token; | 99 | // var private_token = response.data.private_token; |
86 | // var user = response.data.user; | 100 | // var user = response.data.user; |
87 | - | ||
88 | }); | 101 | }); |
102 | + | ||
103 | + var stop = null; | ||
104 | + stop = vm.$interval(function(){ | ||
105 | + var $el = angular.element('#serpro_captcha'); | ||
106 | + | ||
107 | + if ($el && $el.length > 0 ){ | ||
108 | + vm.$window.initCaptcha($el[0]); | ||
109 | + vm.$interval.cancel(stop); | ||
110 | + stop = undefined; | ||
111 | + } | ||
112 | + | ||
113 | + }, 200); | ||
89 | }; | 114 | }; |
90 | 115 | ||
91 | AuthPageController.prototype.onClickLogout = function() { | 116 | AuthPageController.prototype.onClickLogout = function() { |
@@ -94,7 +119,7 @@ | @@ -94,7 +119,7 @@ | ||
94 | vm.AuthService.logout(); | 119 | vm.AuthService.logout(); |
95 | }; | 120 | }; |
96 | 121 | ||
97 | - AuthPageController.prototype.submitSigup = function(credentials) { | 122 | + AuthPageController.prototype.submitSingup = function(credentials) { |
98 | var vm = this; | 123 | var vm = this; |
99 | 124 | ||
100 | vm.AuthService.register(credentials).then(function(response) { | 125 | vm.AuthService.register(credentials).then(function(response) { |
@@ -108,8 +133,19 @@ | @@ -108,8 +133,19 @@ | ||
108 | }, function(response) { | 133 | }, function(response) { |
109 | vm.$log.debug('register error.response', response); | 134 | vm.$log.debug('register error.response', response); |
110 | 135 | ||
136 | + var message = response.data.message; | ||
137 | + vm.errorMessage = message; | ||
138 | + | ||
139 | + if(response.data.code === 500){ | ||
140 | + vm.internalError = true; | ||
141 | + } | ||
142 | + | ||
143 | + | ||
111 | // TODO: mensagens de erro | 144 | // TODO: mensagens de erro |
112 | // TODO: tratar multiplos erros | 145 | // TODO: tratar multiplos erros |
146 | + | ||
147 | + // javascript_console_message: "Unable to reach Serpro's Captcha validation service" | ||
148 | + // message: "Internal captcha validation error" | ||
113 | }); | 149 | }); |
114 | }; | 150 | }; |
115 | 151 | ||
@@ -137,15 +173,14 @@ | @@ -137,15 +173,14 @@ | ||
137 | 173 | ||
138 | // start countdown | 174 | // start countdown |
139 | vm.countdown = vm.delay; | 175 | vm.countdown = vm.delay; |
140 | - (function countdown() { | ||
141 | - vm.$timeout(function() { | ||
142 | - vm.countdown--; | ||
143 | - vm.$log.debug('vm.countdown', vm.countdown); | ||
144 | - if (vm.countdown > 0) { | ||
145 | - countdown(); | ||
146 | - } | ||
147 | - }, 1000); | ||
148 | - })(); | 176 | + var stop = null; |
177 | + stop = vm.$interval(function() { | ||
178 | + vm.countdown--; | ||
179 | + if (vm.countdown <= 0) { | ||
180 | + vm.$interval.cancel(stop); | ||
181 | + stop = undefined; | ||
182 | + } | ||
183 | + }, 1000); | ||
149 | 184 | ||
150 | vm.$timeout(function() { | 185 | vm.$timeout(function() { |
151 | var state = vm.params.state; | 186 | var state = vm.params.state; |
src/app/pages/auth/signin.html
@@ -82,92 +82,87 @@ | @@ -82,92 +82,87 @@ | ||
82 | </p> | 82 | </p> |
83 | </div> | 83 | </div> |
84 | </div> | 84 | </div> |
85 | - <div class="row"> | ||
86 | - <div class="col-xs-6"> | ||
87 | - <button type="button" ng-click="pageSignin.authWithFacebook()" class="btn btn-lg btn-block btn-social btn-facebook"> | ||
88 | - <span aria-hidden="true" class="icon-circle icon-small icon-circle-social-facebook"> | ||
89 | - <span class="icon icon-social-facebook"></span> | ||
90 | - </span> | ||
91 | - <span class="text">Entrar com Facebook</span> | ||
92 | - </button> | ||
93 | - </div> | ||
94 | - <div class="col-xs-6"> | ||
95 | - <button type="button" ng-click="pageSignin.authWithGooglePlus()" class="btn btn-lg btn-block btn-social btn-google-plus"> | ||
96 | - <span aria-hidden="true" class="icon-circle icon-small icon-circle-social-googleplus"> | ||
97 | - <span class="icon icon-social-googleplus"></span> | ||
98 | - </span> | ||
99 | - <span class="text">Entrar com Google+</span> | ||
100 | - </button> | 85 | + <div class="row" ng-if="pageSignin.errorMessage"> |
86 | + <div class="col-sm-12"> | ||
87 | + <div class="alert alert-danger"> | ||
88 | + {{pageSignin.errorMessage}} | ||
89 | + </div> | ||
90 | + <div ng-if="vm.internalError"> | ||
91 | + <p>Este erro parece ser um problema interno.<br/>Por favor, tente novamente mais tarde.</p> | ||
92 | + <p>Caso o problema persista, entre em contato!</p> | ||
93 | + <p><a ui-sref="duvidas">Ir para página de contato</a></p> | ||
94 | + </div> | ||
101 | </div> | 95 | </div> |
102 | </div> | 96 | </div> |
103 | <div class="row"> | 97 | <div class="row"> |
104 | <div class="col-sm-12"> | 98 | <div class="col-sm-12"> |
105 | - <hr class="separator separator-cadastro"></hr> | ||
106 | - </div> | ||
107 | - <div class="row"> | ||
108 | - <div class="col-sm-12"> | ||
109 | - <form name="signupForm" ng-submit="pageSignin.submitSigup(pageSignin.signup)"> | ||
110 | - <div class="form-group"> | ||
111 | - <label for="signup-form--name">Nome*:</label> | ||
112 | - <span class="pull-right">*Dados obrigatórios</span> | ||
113 | - <input type="text" id="signup-form--name" name="name" class="form-control input-lg" ng-class="{ 'has-error' : signupForm.name.$invalid && signupForm.name.$touched }" ng-model="pageSignin.signup.name" ng-minlength="" ng-maxlength="" required> | ||
114 | - <validation-messages field="signupForm.name"/> | ||
115 | - </div> | ||
116 | - <div class="form-group"> | ||
117 | - <label for="signup-form--email">E-mail*:</label> | ||
118 | - <input type="email" id="signup-form--email" name="email" class="form-control input-lg" ng-class="{ 'has-error' : signupForm.email.$invalid && signupForm.email.$touched }" ng-model="pageSignin.signup.email" ng-minlength="" ng-maxlength="" required> | ||
119 | - <validation-messages field="signupForm.email"/> | 99 | + <form name="signupForm" ng-submit="pageSignin.submitSigup(pageSignin.signup)"> |
100 | + <div class="form-group"> | ||
101 | + <label for="signup-form--name">Nome*:</label> | ||
102 | + <span class="pull-right">*Dados obrigatórios</span> | ||
103 | + <input type="text" id="signup-form--name" name="name" class="form-control input-lg" ng-class="{ 'has-error' : signupForm.name.$invalid && signupForm.name.$touched }" ng-model="pageSignin.signup.name" ng-minlength="" ng-maxlength="" required> | ||
104 | + <validation-messages field="signupForm.name"/> | ||
105 | + </div> | ||
106 | + <div class="form-group"> | ||
107 | + <label for="signup-form--email">E-mail*:</label> | ||
108 | + <input type="email" id="signup-form--email" name="email" class="form-control input-lg" ng-class="{ 'has-error' : signupForm.email.$invalid && signupForm.email.$touched }" ng-model="pageSignin.signup.email" ng-minlength="" ng-maxlength="" required> | ||
109 | + <validation-messages field="signupForm.email"/> | ||
110 | + </div> | ||
111 | + <div class="row"> | ||
112 | + <div class="col-sm-6"> | ||
113 | + <div class="form-group"> | ||
114 | + <label for="signup-form--password">Senha*:</label> | ||
115 | + <input type="password" id="signup-form--password" name="password" class="form-control input-lg" ng-class="{ 'has-error' : signupForm.password.$invalid && signupForm.password.$touched }" ng-model="pageSignin.signup.password" ng-minlength="" ng-maxlength="" required> | ||
116 | + <validation-messages field="signupForm.password"/> | ||
117 | + </div> | ||
120 | </div> | 118 | </div> |
121 | - <div class="row"> | ||
122 | - <div class="col-sm-6"> | ||
123 | - <div class="form-group"> | ||
124 | - <label for="signup-form--password">Senha*:</label> | ||
125 | - <input type="password" id="signup-form--password" name="password" class="form-control input-lg" ng-class="{ 'has-error' : signupForm.password.$invalid && signupForm.password.$touched }" ng-model="pageSignin.signup.password" ng-minlength="" ng-maxlength="" required> | ||
126 | - <validation-messages field="signupForm.password"/> | ||
127 | - </div> | 119 | + <div class="col-sm-6"> |
120 | + <div class="form-group"> | ||
121 | + <label for="signup-form--password-confirmation">Confirmar Senha*:</label> | ||
122 | + <input type="password" id="signup-form--password-confirmation" name="password_confirmation" class="form-control input-lg" ng-class="{ 'has-error' : signupForm.password_confirmation.$invalid && signupForm.password_confirmation.$touched }" ng-model="pageSignin.signup.password_confirmation" ng-minlength="" ng-maxlength="" required> | ||
123 | + <validation-messages field="signupForm.password_confirmation"/> | ||
128 | </div> | 124 | </div> |
129 | - <div class="col-sm-6"> | ||
130 | - <div class="form-group"> | ||
131 | - <label for="signup-form--password-confirmation">Confirmar Senha*:</label> | ||
132 | - <input type="password" id="signup-form--password-confirmation" name="password_confirmation" class="form-control input-lg" ng-class="{ 'has-error' : signupForm.password_confirmation.$invalid && signupForm.password_confirmation.$touched }" ng-model="pageSignin.signup.password_confirmation" ng-minlength="" ng-maxlength="" required> | ||
133 | - <validation-messages field="signupForm.password_confirmation"/> | ||
134 | - </div> | 125 | + </div> |
126 | + </div> | ||
127 | + <div class="row"> | ||
128 | + <div class="col-sm-12" ng-show="(signupForm.password.$viewValue.length > 0 && signupForm.password_confirmation.$viewValue.length > 0) && (signupForm.password.$viewValue !== signupForm.password_confirmation.$viewValue)"> | ||
129 | + <div class="error-message"> | ||
130 | + As senhas estão diferentes. | ||
135 | </div> | 131 | </div> |
136 | </div> | 132 | </div> |
137 | - <div class="row"> | ||
138 | - <div class="col-sm-12" ng-show="(signupForm.password.$viewValue.length > 0 && signupForm.password_confirmation.$viewValue.length > 0) && (signupForm.password.$viewValue !== signupForm.password_confirmation.$viewValue)"> | 133 | + <div class="col-sm-12"> |
134 | + <span class="text" ng-show="signupForm.password.$viewValue.length > 0 && signupForm.password.$viewValue.length < 6"> | ||
139 | <div class="error-message"> | 135 | <div class="error-message"> |
140 | - As senhas estão diferentes. | 136 | + A senha deve ter 6 ou mais caracteres e conter números e letras. |
141 | </div> | 137 | </div> |
142 | - </div> | ||
143 | - <div class="col-sm-12"> | ||
144 | - <span class="text" ng-show="signupForm.password.$viewValue.length > 0 && signupForm.password.$viewValue.length < 6"> | ||
145 | - <div class="error-message"> | ||
146 | - A senha deve ter 6 ou mais caracteres e conter números e letras. | ||
147 | - </div> | ||
148 | - </span> | ||
149 | - </div> | 138 | + </span> |
150 | </div> | 139 | </div> |
151 | - <div class="form-group"> | ||
152 | - <div class="checkbox"> | ||
153 | - <label for="user_terms_accepted"> | ||
154 | - <input type="checkbox" id="user_terms_accepted" name="user_terms_accepted" value="aceito" ng-model="pageSignin.signup.user_terms_accepted" required> | ||
155 | - Já li e concordo com os | ||
156 | - <button type="button" class="btn btn-link" style="padding:0 0 4px 0;" data-toggle="modal" data-target="#modalTermosDeUso">Termos de Uso</button> | ||
157 | - </label> | ||
158 | - </div> | ||
159 | - </input> | ||
160 | - <validation-messages field="signupForm.user_terms_accepted"/> | ||
161 | </div> | 140 | </div> |
162 | <div class="form-group"> | 141 | <div class="form-group"> |
163 | - <span>Digite o texto da imagem</span> | ||
164 | - <p>O Captcha vai aqui</p> | 142 | + <div class="checkbox"> |
143 | + <label for="user_terms_accepted"> | ||
144 | + <input type="checkbox" id="user_terms_accepted" name="user_terms_accepted" value="aceito" ng-model="pageSignin.signup.user_terms_accepted" required> | ||
145 | + Já li e concordo com os | ||
146 | + <button type="button" class="btn btn-link" style="padding:0 0 4px 0;" data-toggle="modal" data-target="#modalTermosDeUso">Termos de Uso</button> | ||
147 | + </label> | ||
148 | + </div> | ||
149 | + </input> | ||
150 | + <validation-messages field="signupForm.user_terms_accepted"/> | ||
151 | + </div> | ||
152 | + <div class="form-group"> | ||
153 | + <div id="serpro_captcha" class="captcha"> | ||
165 | </div> | 154 | </div> |
166 | - <div class="form-group"> | ||
167 | - <button class="btn btn-lg btn-block btn-submit" ng-class=" {'disabled' : !pageSignin.signup.user_terms_accepted }" type="submit">Cadastrar</button> | 155 | + <div class="captcha"> |
156 | + Digite os caracteres acima: | ||
168 | </div> | 157 | </div> |
169 | - </form> | ||
170 | - </div> | 158 | + <div class="captcha"> |
159 | + <input type="text" name="captcha_text" id="captcha_text" aria-label="Escreva os caracteres do captcha aqui" ng-model="pageSignin.signup.captcha_text"> | ||
160 | + </div> | ||
161 | + </div> | ||
162 | + <div class="form-group"> | ||
163 | + <button class="btn btn-lg btn-block btn-submit" ng-class=" {'disabled' : !pageSignin.signup.user_terms_accepted }" type="submit">Cadastrar</button> | ||
164 | + </div> | ||
165 | + </form> | ||
171 | </div> | 166 | </div> |
172 | </div> | 167 | </div> |
173 | </div> | 168 | </div> |
src/app/pages/footer/footer.html
@@ -1,10 +0,0 @@ | @@ -1,10 +0,0 @@ | ||
1 | -<div id="footer"> | ||
2 | - <div class="container"> | ||
3 | - <div class="row"> | ||
4 | - <div class="col-xs-12 text-center"> | ||
5 | - <a id="termos-de-uso" ui-sref="termos-de-uso">Termos de uso</a> | ||
6 | - <a href="#header" style="position:absolute;right:0;top:-10px;" ng-click="scrollTo('#header')">Voltar para o topo</a> | ||
7 | - </div> | ||
8 | - </div> | ||
9 | - </div> | ||
10 | -</div> |
src/app/pages/footer/footer.scss
@@ -1,21 +0,0 @@ | @@ -1,21 +0,0 @@ | ||
1 | -$barra-theme: ("green": #00420c, "yellow": #2c66ce, "blue": #0042b1); | ||
2 | - | ||
3 | -#footer-brasil { | ||
4 | - background: none repeat scroll 0% 0% map-get($barra-theme, "blue"); | ||
5 | - padding: 1em 0px; | ||
6 | - max-width: 100%; | ||
7 | -} | ||
8 | - | ||
9 | -#footer { | ||
10 | - padding: 20px 0; | ||
11 | - a { | ||
12 | - margin: 10px auto; | ||
13 | - } | ||
14 | - | ||
15 | - .contraste & { | ||
16 | - background-color: #000; | ||
17 | - a { | ||
18 | - color: #fff; | ||
19 | - } | ||
20 | - } | ||
21 | -} |
src/app/pages/header/header.html
@@ -1,20 +0,0 @@ | @@ -1,20 +0,0 @@ | ||
1 | -<header id="header" class="container"> | ||
2 | - | ||
3 | - <div class="row hidden-xs"> | ||
4 | - <div class="col-sm-12"> | ||
5 | - <auth-user></auth-user> | ||
6 | - </div> | ||
7 | - </div> | ||
8 | - | ||
9 | - <div class="row"> | ||
10 | - <div class="col-sm-12"> | ||
11 | - <app-navbar></app-navbar> | ||
12 | - </div> | ||
13 | - </div> | ||
14 | - | ||
15 | - <!-- <div class="row"> | ||
16 | - <div class="col-sm-12"> | ||
17 | - <div ncy-breadcrumb></div> | ||
18 | - </div> | ||
19 | - </div> --> | ||
20 | -</header> |
src/app/pages/header/header.scss
src/app/pages/programas/programa.controller.js
@@ -76,6 +76,7 @@ | @@ -76,6 +76,7 @@ | ||
76 | vm.loadingTopProposals = true; | 76 | vm.loadingTopProposals = true; |
77 | vm.DialogaService.getProposalsByTopicId(vm.article.id, {}, function(data) { | 77 | vm.DialogaService.getProposalsByTopicId(vm.article.id, {}, function(data) { |
78 | vm.proposals = data.articles; | 78 | vm.proposals = data.articles; |
79 | + vm.proposalsTopFive = vm.proposals.slice(0, 5); | ||
79 | vm.proposalsTopRated = vm.proposals.slice(0, 3); | 80 | vm.proposalsTopRated = vm.proposals.slice(0, 3); |
80 | vm.loadingTopProposals = false; | 81 | vm.loadingTopProposals = false; |
81 | }, function(error) { | 82 | }, function(error) { |
src/app/pages/programas/programa.html
@@ -111,7 +111,7 @@ | @@ -111,7 +111,7 @@ | ||
111 | </div> | 111 | </div> |
112 | </section> | 112 | </section> |
113 | 113 | ||
114 | - <section id="section-proposal-list" class="proposal-extended-section" style="display:none;" ng-if="pagePrograma.proposals && pagePrograma.proposals.length > 0"> | 114 | + <section id="section-proposal-list" class="proposal-extended-section" style="display:none;" ng-if="pagePrograma.proposalsTopFive && pagePrograma.proposalsTopFive.length > 0"> |
115 | <div class="container"> | 115 | <div class="container"> |
116 | <div class="proposal-extended-section-header"> | 116 | <div class="proposal-extended-section-header"> |
117 | <h3 class="color-theme-fg">Resultados de propostas mais votadas</h3> | 117 | <h3 class="color-theme-fg">Resultados de propostas mais votadas</h3> |
@@ -120,7 +120,7 @@ | @@ -120,7 +120,7 @@ | ||
120 | </button> | 120 | </button> |
121 | </div> | 121 | </div> |
122 | <div class="proposal-extended-section-content"> | 122 | <div class="proposal-extended-section-content"> |
123 | - <proposal-list proposals="pagePrograma.proposals"></proposal-list> | 123 | + <proposal-list proposals="pagePrograma.proposalsTopFive"></proposal-list> |
124 | </div> | 124 | </div> |
125 | </div> | 125 | </div> |
126 | </section> | 126 | </section> |
src/app/pages/propostas/ranking.html
@@ -78,7 +78,7 @@ | @@ -78,7 +78,7 @@ | ||
78 | 78 | ||
79 | <div class="row"> | 79 | <div class="row"> |
80 | <div class="col-sm-12" ng-if="pagePropostas.proposals"> | 80 | <div class="col-sm-12" ng-if="pagePropostas.proposals"> |
81 | - <proposal-list proposals="pagePropostas.filtredProposals"></proposal-list> | 81 | + <proposal-list proposals="pagePropostas.filtredProposals" per-page="10"></proposal-list> |
82 | </div> | 82 | </div> |
83 | <div ng-if="!pagePropostas.proposals && pagePropostas.loadingProposals"> | 83 | <div ng-if="!pagePropostas.proposals && pagePropostas.loadingProposals"> |
84 | <div class="alert alert-info" role="alert"> | 84 | <div class="alert alert-info" role="alert"> |
src/assets/images/icons/sprite.png
107 KB
src/index.html
@@ -37,7 +37,8 @@ | @@ -37,7 +37,8 @@ | ||
37 | <p class="browsehappy">Você está usando um navegador <strong>antigo</strong>. Por favor, <a href="http://browsehappy.com/">atualize o navegador</a> para melhorar a experiência de uso.</p> | 37 | <p class="browsehappy">Você está usando um navegador <strong>antigo</strong>. Por favor, <a href="http://browsehappy.com/">atualize o navegador</a> para melhorar a experiência de uso.</p> |
38 | <![endif]--> | 38 | <![endif]--> |
39 | 39 | ||
40 | - <div ui-view="header"></div> | 40 | + <app-header></app-header> |
41 | + | ||
41 | <div id="content" ui-view="main"></div> | 42 | <div id="content" ui-view="main"></div> |
42 | <div ui-view="footer"></div> | 43 | <div ui-view="footer"></div> |
43 | 44 | ||
@@ -59,5 +60,6 @@ | @@ -59,5 +60,6 @@ | ||
59 | <!-- endinject --> | 60 | <!-- endinject --> |
60 | <!-- endbuild --> | 61 | <!-- endbuild --> |
61 | <script defer="defer" src="http://barra.brasil.gov.br/barra.js" type="text/javascript"></script> | 62 | <script defer="defer" src="http://barra.brasil.gov.br/barra.js" type="text/javascript"></script> |
63 | + <script defer="defer" src="http://captcha2.servicoscorporativos.serpro.gov.br/js/captcha.serpro.gov.br.js"></script> | ||
62 | </body> | 64 | </body> |
63 | </html> | 65 | </html> |