Commit d2009d0fa5259c422fbe44247c9f03ccddd06a48
1 parent
a67c49e2
Exists in
master
and in
5 other branches
Add login form on header (fix #303)
Showing
3 changed files
with
122 additions
and
44 deletions
Show diff stats
index.html
@@ -90,7 +90,6 @@ | @@ -90,7 +90,6 @@ | ||
90 | fjs.parentNode.insertBefore(js, fjs); | 90 | fjs.parentNode.insertBefore(js, fjs); |
91 | }(document, 'script', 'facebook-jssdk'));</script> | 91 | }(document, 'script', 'facebook-jssdk'));</script> |
92 | 92 | ||
93 | - | ||
94 | <div class=""> | 93 | <div class=""> |
95 | <div id="proposal-result"></div> | 94 | <div id="proposal-result"></div> |
96 | </div> | 95 | </div> |
@@ -98,11 +97,20 @@ | @@ -98,11 +97,20 @@ | ||
98 | 97 | ||
99 | <script id="proposal-template" type="text/x-handlebars-template"> | 98 | <script id="proposal-template" type="text/x-handlebars-template"> |
100 | <header class="container"> | 99 | <header class="container"> |
101 | - <a id="display-contrast" href="#">Alto Contraste</a> | ||
102 | - <div class="participar"> | ||
103 | - <!--<a href="#" class="button button-inline participe">Participe</a>--> | ||
104 | - <a href="#" class="entrar">Entrar</a> | ||
105 | - <a href="#" class="logout hide">Sair</a> | 100 | + <div class="row" style="margin: 10px 0 0 0"> |
101 | + <div class="col-xs-5"> | ||
102 | + <a id="display-contrast" href="#">Alto Contraste</a> | ||
103 | + </div> | ||
104 | + <div class="col-xs-7"> | ||
105 | + <div class="participar"> | ||
106 | + <!--<a href="#" class="button button-inline participe">Participe</a>--> | ||
107 | + <a id="login-button" href="#" class="login"><i class="icon icon-login"></i>Entrar</a> | ||
108 | + <a id="logout-button" href="#" class="logout hide"><i class="icon icon-login"></i><span class="name"></span>Sair</a> | ||
109 | + </div> | ||
110 | + </div> | ||
111 | + <div class="col-xs-12"> | ||
112 | + <div id="login-panel" class="hide"></div> | ||
113 | + </div> | ||
106 | </div> | 114 | </div> |
107 | <h1> | 115 | <h1> |
108 | <a href="#" class='logo'>{{article.title}}</a> | 116 | <a href="#" class='logo'>{{article.title}}</a> |
@@ -367,7 +375,7 @@ | @@ -367,7 +375,7 @@ | ||
367 | </div> | 375 | </div> |
368 | </script> | 376 | </script> |
369 | 377 | ||
370 | - <script id="results" type="text/x-handlebars-template"> | 378 | + <script id="results-template" type="text/x-handlebars-template"> |
371 | <div class="box box-propostas"> | 379 | <div class="box box-propostas"> |
372 | <div class="loading">Carregando...</div> | 380 | <div class="loading">Carregando...</div> |
373 | <div class="results-content hide"> | 381 | <div class="results-content hide"> |
@@ -407,7 +415,7 @@ | @@ -407,7 +415,7 @@ | ||
407 | </div> | 415 | </div> |
408 | </script> | 416 | </script> |
409 | 417 | ||
410 | - <script id="login" type="text/x-handlebars-template"> | 418 | + <script id="login-template" type="text/x-handlebars-template"> |
411 | <div class="loading">Carregando...</div> | 419 | <div class="loading">Carregando...</div> |
412 | <form id="login-form" class="login"> | 420 | <form id="login-form" class="login"> |
413 | <div class="message hide"></div> | 421 | <div class="message hide"></div> |
@@ -485,7 +493,7 @@ | @@ -485,7 +493,7 @@ | ||
485 | </ul> | 493 | </ul> |
486 | </script> | 494 | </script> |
487 | 495 | ||
488 | - <script id="article" type="text/x-handlebars-template"> | 496 | + <script id="article-template" type="text/x-handlebars-template"> |
489 | <div class="title"> | 497 | <div class="title"> |
490 | {{{title}}} | 498 | {{{title}}} |
491 | </div> | 499 | </div> |
@@ -506,11 +514,11 @@ | @@ -506,11 +514,11 @@ | ||
506 | <a href="#/artigo/107880">Termos de uso</a> | 514 | <a href="#/artigo/107880">Termos de uso</a> |
507 | </div> | 515 | </div> |
508 | 516 | ||
509 | - <script type='text/javascript' > | 517 | + <script type="text/javascript"> |
510 | loadRequireJS(); | 518 | loadRequireJS(); |
511 | </script> | 519 | </script> |
512 | 520 | ||
513 | - <script src='https://www.google.com/recaptcha/api.js?hl=pt-BR' async defer></script> | 521 | + <script src="https://www.google.com/recaptcha/api.js?hl=pt-BR" async defer></script> |
514 | 522 | ||
515 | </body> | 523 | </body> |
516 | 524 |
js/main.js
@@ -7,9 +7,9 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | @@ -7,9 +7,9 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | ||
7 | // compile the template | 7 | // compile the template |
8 | var template = Handlebars.compile(templateSource); | 8 | var template = Handlebars.compile(templateSource); |
9 | var supportProposalTemplate = Handlebars.compile(document.getElementById('support-proposal-template').innerHTML); | 9 | var supportProposalTemplate = Handlebars.compile(document.getElementById('support-proposal-template').innerHTML); |
10 | - var loginTemplate = Handlebars.compile(document.getElementById('login').innerHTML); | ||
11 | - var resultsTemplate = Handlebars.compile(document.getElementById('results').innerHTML); | ||
12 | - var articleTemplate = Handlebars.compile(document.getElementById('article').innerHTML); | 10 | + var loginTemplate = Handlebars.compile(document.getElementById('login-template').innerHTML); |
11 | + var resultsTemplate = Handlebars.compile(document.getElementById('results-template').innerHTML); | ||
12 | + var articleTemplate = Handlebars.compile(document.getElementById('article-template').innerHTML); | ||
13 | 13 | ||
14 | // The div/container that we are going to display the results in | 14 | // The div/container that we are going to display the results in |
15 | var resultsPlaceholder = document.getElementById('proposal-result'); | 15 | var resultsPlaceholder = document.getElementById('proposal-result'); |
@@ -592,17 +592,17 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | @@ -592,17 +592,17 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | ||
592 | return this.user; | 592 | return this.user; |
593 | }, | 593 | }, |
594 | showLogin: function(){ | 594 | showLogin: function(){ |
595 | - $('.entrar').show(); | ||
596 | - $('.logout').hide(); | 595 | + $('#login-button').show(); |
596 | + $('#logout-button').hide(); | ||
597 | }, | 597 | }, |
598 | showLogout: function(){ | 598 | showLogout: function(){ |
599 | - $('.entrar').hide(); | 599 | + $('#login-button').hide(); |
600 | var name = ''; | 600 | var name = ''; |
601 | if(this.user){ | 601 | if(this.user){ |
602 | - name = this.user.person.name + ' | '; | 602 | + name = this.user.person.name + ' - '; |
603 | } | 603 | } |
604 | - $('.logout').text(name + 'Sair'); | ||
605 | - $('.logout').show(); | 604 | + $('#logout-button .name').text(name); |
605 | + $('#logout-button').show(); | ||
606 | }, | 606 | }, |
607 | responseToText: function(responseJSONmessage){ | 607 | responseToText: function(responseJSONmessage){ |
608 | var o = JSON.parse(responseJSONmessage); | 608 | var o = JSON.parse(responseJSONmessage); |
@@ -640,7 +640,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | @@ -640,7 +640,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | ||
640 | maxLinesByParagraph = lines | 640 | maxLinesByParagraph = lines |
641 | } | 641 | } |
642 | }); | 642 | }); |
643 | - console.log('maxLinesByParagraph', maxLinesByParagraph); | 643 | + // console.log('maxLinesByParagraph', maxLinesByParagraph); |
644 | 644 | ||
645 | // get the bigger title | 645 | // get the bigger title |
646 | $visibleProposals.each(function(index, proposalItemEl){ | 646 | $visibleProposals.each(function(index, proposalItemEl){ |
@@ -651,7 +651,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | @@ -651,7 +651,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | ||
651 | maxLinesByTitle = lines | 651 | maxLinesByTitle = lines |
652 | } | 652 | } |
653 | }); | 653 | }); |
654 | - console.log('maxLinesByTitle', maxLinesByTitle); | 654 | + // console.log('maxLinesByTitle', maxLinesByTitle); |
655 | 655 | ||
656 | $visibleProposals.each(function(index, proposalItemEl){ | 656 | $visibleProposals.each(function(index, proposalItemEl){ |
657 | var $proposalItemEl = $(proposalItemEl); | 657 | var $proposalItemEl = $(proposalItemEl); |
@@ -677,6 +677,16 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | @@ -677,6 +677,16 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | ||
677 | var lineHeight = parseInt($el.css('lineHeight')); | 677 | var lineHeight = parseInt($el.css('lineHeight')); |
678 | var lines = Math.ceil(divHeight / lineHeight); | 678 | var lines = Math.ceil(divHeight / lineHeight); |
679 | return lines; | 679 | return lines; |
680 | + }, | ||
681 | + handleLoginSuccess: function (e, data){ | ||
682 | + if(data.person){ | ||
683 | + Main.setUser({person: data.person}); | ||
684 | + } | ||
685 | + | ||
686 | + Main.loginCallback(true, data.private_token); | ||
687 | + }, | ||
688 | + handleLoginFail: function (e){ | ||
689 | + // console.log('Event', e); | ||
680 | } | 690 | } |
681 | } | 691 | } |
682 | })(); | 692 | })(); |
@@ -878,30 +888,50 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | @@ -878,30 +888,50 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | ||
878 | }); | 888 | }); |
879 | } | 889 | } |
880 | 890 | ||
891 | + $(document).on('login:success', Main.handleLoginSuccess); | ||
892 | + $(document).on('login:fail', Main.handleLoginFail); | ||
893 | + | ||
881 | $(document).on('click', '.login-action', function(e) { | 894 | $(document).on('click', '.login-action', function(e) { |
882 | - var message = $('.login .message'); | ||
883 | - message.hide(); | ||
884 | - message.text(''); | ||
885 | - var button = $(this); | 895 | + e.preventDefault(); |
896 | + // console.log('obj', obj); | ||
897 | + | ||
898 | + var $this = $(this); // button | ||
899 | + var $form = $this.closest('#login-form'); | ||
900 | + var $message = $form.find('.message'); | ||
901 | + $message.text('').hide(); | ||
902 | + | ||
903 | + loginButton = $this; | ||
904 | + | ||
886 | $.ajax({ | 905 | $.ajax({ |
887 | type: 'post', | 906 | type: 'post', |
888 | url: host + '/api/v1/login', | 907 | url: host + '/api/v1/login', |
889 | - data: $(this).parents('.login').serialize(), | 908 | + data: $form.serialize(), |
890 | xhrFields: { | 909 | xhrFields: { |
891 | //withCredentials: true | 910 | //withCredentials: true |
892 | } | 911 | } |
893 | }).done(function(data) { | 912 | }).done(function(data) { |
894 | - Main.loginCallback(true, data.private_token); | ||
895 | - Main.displaySuccess(button.closest('.section-content'), 'Login efetuado com sucesso', 1000, 'icon-login-success'); | 913 | + $(document).trigger('login:success', data); |
914 | + | ||
915 | + var $sectionContent = $form.closest('.section-content'); | ||
916 | + if($sectionContent && $sectionContent.length > 0){ | ||
917 | + Main.displaySuccess($sectionContent, 'Login efetuado com sucesso', 1000, 'icon-login-success'); | ||
918 | + } | ||
919 | + | ||
920 | + var $loginPanel = $form.closest('#login-panel'); | ||
921 | + if($loginPanel && $loginPanel.length > 0){ | ||
922 | + $loginPanel.hide(); | ||
923 | + } | ||
924 | + | ||
896 | }).fail(function(data) { | 925 | }).fail(function(data) { |
897 | - message.show(); | 926 | + $(document).trigger('login:fail', data); |
927 | + | ||
928 | + $message.show(); | ||
898 | if(data.status==401){ | 929 | if(data.status==401){ |
899 | - message.text('Nome de usuário, e-mail ou senha incorretos, não foi possível acessar.'); | 930 | + $message.text('Nome de usuário, e-mail ou senha incorretos, não foi possível acessar.'); |
900 | }else{ | 931 | }else{ |
901 | - message.text('Um erro inesperado ocorreu'); | 932 | + $message.text('Um erro inesperado ocorreu'); |
902 | } | 933 | } |
903 | }); | 934 | }); |
904 | - e.preventDefault(); | ||
905 | }); | 935 | }); |
906 | 936 | ||
907 | $(document).on('click', '.social .fb-share', function(e) { | 937 | $(document).on('click', '.social .fb-share', function(e) { |
@@ -992,7 +1022,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | @@ -992,7 +1022,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | ||
992 | e.preventDefault(); | 1022 | e.preventDefault(); |
993 | }); | 1023 | }); |
994 | 1024 | ||
995 | - $(document).on('click', '.logout', function (e){ | 1025 | + $(document).on('click', '#logout-button', function (e){ |
996 | var self = $(this); | 1026 | var self = $(this); |
997 | $.removeCookie('_dialoga_session'); | 1027 | $.removeCookie('_dialoga_session'); |
998 | $.removeCookie('votedProposals'); | 1028 | $.removeCookie('votedProposals'); |
@@ -1003,6 +1033,29 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | @@ -1003,6 +1033,29 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | ||
1003 | e.preventDefault(); | 1033 | e.preventDefault(); |
1004 | }); | 1034 | }); |
1005 | 1035 | ||
1036 | + // create login panel on header | ||
1037 | + (function (){ | ||
1038 | + var $loginPanel = $('#login-panel'); | ||
1039 | + $loginPanel.hide(); | ||
1040 | + $loginPanel.removeClass('hide'); | ||
1041 | + $loginPanel.append(loginTemplate()); | ||
1042 | + $loginPanel.find('.actions') | ||
1043 | + .removeClass('col-sm-4') | ||
1044 | + .addClass('col-sm-12'); | ||
1045 | + $loginPanel.find('.oauth') | ||
1046 | + .removeClass('col-sm-8') | ||
1047 | + .addClass('col-sm-12'); | ||
1048 | + $loginPanel.find('.new-user').parent() | ||
1049 | + .removeClass('col-sm-4') | ||
1050 | + .addClass('col-sm-12'); | ||
1051 | + | ||
1052 | + $(document).on('click', '#login-button', function (e){ | ||
1053 | + e.preventDefault(); | ||
1054 | + | ||
1055 | + $loginPanel.toggle(); | ||
1056 | + }); | ||
1057 | + })(); | ||
1058 | + | ||
1006 | }); | 1059 | }); |
1007 | 1060 | ||
1008 | window.addEventListener("message", function(ev) { | 1061 | window.addEventListener("message", function(ev) { |
@@ -1057,7 +1110,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | @@ -1057,7 +1110,7 @@ define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, F | ||
1057 | })(jQuery, 'smartresize'); | 1110 | })(jQuery, 'smartresize'); |
1058 | 1111 | ||
1059 | $(window).smartresize(function(){ | 1112 | $(window).smartresize(function(){ |
1060 | - console.log('window resized'); | 1113 | + // console.log('window resized'); |
1061 | Main.computeBoxHeight(); | 1114 | Main.computeBoxHeight(); |
1062 | }); | 1115 | }); |
1063 | 1116 |
sass/style.sass
@@ -683,21 +683,38 @@ h1 | @@ -683,21 +683,38 @@ h1 | ||
683 | 683 | ||
684 | // 6.11 - login form | 684 | // 6.11 - login form |
685 | .participar | 685 | .participar |
686 | + position: relative | ||
686 | text-align: right | 687 | text-align: right |
687 | .participe | 688 | .participe |
688 | font-size: 14px | 689 | font-size: 14px |
689 | padding: 2px 10px | 690 | padding: 2px 10px |
690 | - .entrar | 691 | + .icon-login |
692 | + display: inline-block | ||
693 | + position: relative | ||
694 | + top: -2px | ||
695 | + right: 5px | ||
696 | + width: 20px | ||
697 | + height: 20px | ||
698 | + padding: 12px | ||
699 | + vertical-align: middle | ||
700 | + border: 1px solid #ccc !important | ||
691 | background: url(images/icons/icon-user.png) no-repeat 20px 50% | 701 | background: url(images/icons/icon-user.png) no-repeat 20px 50% |
692 | - // border-left: 1px solid #bcbcbc | ||
693 | - // margin-left: 20px | ||
694 | - padding-left: 40px | 702 | + .login |
703 | + margin-left: 20px | ||
695 | .logout | 704 | .logout |
696 | - background: url(images/icons/icon-user.png) no-repeat 20px 50% | ||
697 | - // border-left: 1px solid #bcbcbc | ||
698 | - // margin-left: 20px | ||
699 | - padding-left: 40px | ||
700 | -.login,.signup | 705 | + margin-left: 20px |
706 | +#login-panel | ||
707 | + position: absolute | ||
708 | + top: 0 | ||
709 | + right: 0 | ||
710 | + padding: 20px | ||
711 | + z-index: 9999 | ||
712 | + background-color: #fff | ||
713 | + border: 1px solid #ccc | ||
714 | + .loading | ||
715 | + display: none | ||
716 | +.login, | ||
717 | +.signup | ||
701 | text-align: left | 718 | text-align: left |
702 | .message | 719 | .message |
703 | background: #fcc | 720 | background: #fcc |