Commit 1f3b224781a82793ac9a287b93c22c305b25213a

Authored by Michel Felipe
2 parents 97685963 84ac10a9
Exists in jasmine-testing

Merge with master updates

index.html
... ... @@ -31,7 +31,6 @@
31 31 return this;
32 32 },
33 33 getBase: function(){
34   -
35 34 if(!_base){
36 35 this.initBase();
37 36 }
... ...
js/handlebars-helpers.js
... ... @@ -65,9 +65,19 @@ define(['handlebars'], function(Handlebars){
65 65 return article.votes_for - article.votes_against;
66 66 });
67 67  
  68 + Handlebars.registerHelper('apoio', function(article) {
  69 + // return (article.votes_for - article.votes_against)/(article.countViews);
  70 + return 0;
  71 + });
  72 +
  73 + Handlebars.registerHelper('participacao', function(article) {
  74 + // return (article.votes_for + article.votes_against)/(article.countViews);
  75 + return 0;
  76 + });
  77 +
68 78 Handlebars.registerHelper('select_proposal', function(proposals, category_slug, selected_id) {
69 79 var ret = '<label for="proposal-selection" class="sr-only">Selecione o programa</label>'
70   - ret = ret + '<select id="proposal-selection" name="proposal-selection" title="Selecione o programa" class="proposal-selection">';
  80 + ret = ret + '<select id="proposal-selection" name="proposal-selection" data-proposal="'+selected_id+'" title="Selecione o programa" class="proposal-selection">';
71 81  
72 82 for(var i=0; i<proposals.length; i++) {
73 83 if(!proposal_has_category(proposals[i], category_slug)) continue;
... ...
js/jquery.xdomainrequest.min.js 0 → 100644
... ... @@ -0,0 +1,7 @@
  1 +/*!
  2 + * jQuery-ajaxTransport-XDomainRequest - v1.0.3 - 2014-06-06
  3 + * https://github.com/MoonScript/jQuery-ajaxTransport-XDomainRequest
  4 + * Copyright (c) 2014 Jason Moon (@JSONMOON)
  5 + * Licensed MIT (/blob/master/LICENSE.txt)
  6 + */
  7 +(function(a){if(typeof define==='function'&&define.amd){define(['jquery'],a)}else if(typeof exports==='object'){module.exports=a(require('jquery'))}else{a(jQuery)}}(function($){if($.support.cors||!$.ajaxTransport||!window.XDomainRequest){return}var n=/^https?:\/\//i;var o=/^get|post$/i;var p=new RegExp('^'+location.protocol,'i');$.ajaxTransport('* text html xml json',function(j,k,l){if(!j.crossDomain||!j.async||!o.test(j.type)||!n.test(j.url)||!p.test(j.url)){return}var m=null;return{send:function(f,g){var h='';var i=(k.dataType||'').toLowerCase();m=new XDomainRequest();if(/^\d+$/.test(k.timeout)){m.timeout=k.timeout}m.ontimeout=function(){g(500,'timeout')};m.onload=function(){var a='Content-Length: '+m.responseText.length+'\r\nContent-Type: '+m.contentType;var b={code:200,message:'success'};var c={text:m.responseText};try{if(i==='html'||/text\/html/i.test(m.contentType)){c.html=m.responseText}else if(i==='json'||(i!=='text'&&/\/json/i.test(m.contentType))){try{c.json=$.parseJSON(m.responseText)}catch(e){b.code=500;b.message='parseerror'}}else if(i==='xml'||(i!=='text'&&/\/xml/i.test(m.contentType))){var d=new ActiveXObject('Microsoft.XMLDOM');d.async=false;try{d.loadXML(m.responseText)}catch(e){d=undefined}if(!d||!d.documentElement||d.getElementsByTagName('parsererror').length){b.code=500;b.message='parseerror';throw'Invalid XML: '+m.responseText;}c.xml=d}}catch(parseMessage){throw parseMessage;}finally{g(b.code,b.message,c,a)}};m.onprogress=function(){};m.onerror=function(){g(500,'error',{text:m.responseText})};if(k.data){h=($.type(k.data)==='string')?k.data:$.param(k.data)}m.open(j.type,j.url);m.send(h)},abort:function(){if(m){m.abort()}}}})}));
0 8 \ No newline at end of file
... ...
js/main.js
... ... @@ -30,6 +30,353 @@ define([&#39;handlebars_helpers&#39;,&#39;jquery_ui&#39;,&#39;jquery_slick&#39;, &#39;jquery_maxlength&#39;, &#39;la
30 30 //var proposal_discussion = '401'; //casa
31 31 }
32 32  
  33 + var BARRA_ADDED = false;
  34 + var HIDE_BARRA_DO_GOVERNO = false;
  35 +
  36 + Main = (function(){
  37 +
  38 + return {
  39 + loadRandomProposal: function (topic_id, private_token) {
  40 + var $noProposals = $('.no-proposals');
  41 + var $loading = $('.loading');
  42 + var $randomProposal = $('.random-proposal');
  43 + var $body = $(document.body);
  44 + var contextMain = this;
  45 +
  46 + // reset view
  47 + $noProposals.hide();
  48 + $loading.show();
  49 + $randomProposal.html('');
  50 +
  51 + var url = host + '/api/v1/articles/' + topic_id + '/children' + '?private_token=' + private_token + '&limit=1&order=random()&_='+new Date().getTime()+'&fields=id,name,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal';
  52 + $.getJSON(url).done(function( data ) {
  53 + $loading.hide();
  54 +
  55 + if(data.articles.length === 0) {
  56 + $noProposals.show();
  57 + return;
  58 + }
  59 +
  60 + var article = data.articles[0];
  61 + $randomProposal.html(supportProposalTemplate(article));
  62 + $body.off('click', '.vote-actions .skip');
  63 + $body.on('click', '.vote-actions .skip', function(e) {
  64 + contextMain.loadRandomProposal(topic_id, private_token);
  65 + e.preventDefault();
  66 + });
  67 + $body.off('click', '.vote-actions .like');
  68 + $body.on('click', '.vote-actions .like', function(e) {
  69 + //Helps to prevent more than one vote per proposal
  70 + if(ProposalApp.hasProposalbeenVoted(article.id)){
  71 + console.log("Proposta " + article.id + " já havia sido votada");
  72 + contextMain.loadRandomProposal(topic_id, private_token);
  73 + e.preventDefault();
  74 + return;
  75 + }
  76 + $.ajax({
  77 + type: 'post',
  78 + url: host + '/api/v1/articles/' + article.id + '/vote',
  79 + data: {
  80 + value: $(this).data('vote-value'),
  81 + private_token: private_token
  82 + }
  83 + }).done(function( /*data*/ ) {
  84 + ProposalApp.addVotedProposal(article.id);
  85 + contextMain.loadRandomProposal(topic_id, private_token);
  86 + });
  87 + e.preventDefault();
  88 + });
  89 +
  90 + $body.off('click', '.vote-result');
  91 + $body.on('click', '.vote-result', function(e) {
  92 +
  93 + var $this = $(this);
  94 + var $proposalDetail = $this.parents('.proposal-detail');
  95 + var $resultsContainer = $proposalDetail.find('.results-container');
  96 +
  97 + // $resultsContainer.toggle();
  98 + // $resultsContainer.toggleClass('hide');
  99 +
  100 + if($resultsContainer.css('display') === 'none') {
  101 +
  102 + $resultsContainer.find('.loading').show();
  103 + $resultsContainer.find('.results-content').hide();
  104 +
  105 + var url = host + '/api/v1/articles/' + topic_id + '/children' + '?private_token=' + private_token + '&limit=10&order=votes_score&fields=id,name,abstract,votes_for,votes_against&content_type=ProposalsDiscussionPlugin::Proposal';
  106 + $.getJSON(url).done(function( data ) {
  107 +
  108 + $resultsContainer.html(resultsTemplate(data));
  109 + $resultsContainer.find('.loading').hide();
  110 + $resultsContainer.find('.results-content').show();
  111 + $resultsContainer.show();
  112 +
  113 + // scroll to the end
  114 + $('html, body').animate({
  115 + scrollTop: $(document).height()
  116 + }, 'fast');
  117 + });
  118 + $('.experience-proposal-container').hide();
  119 + $('.talk-proposal-container').hide();
  120 + } else {
  121 + $('.experience-proposal-container').show();
  122 + $('.talk-proposal-container').show();
  123 + $resultsContainer.hide();
  124 + }
  125 +
  126 + e.preventDefault();
  127 + });
  128 + });
  129 + },
  130 +
  131 + loginCallback: function(loggedIn, token) {
  132 + logged_in = loggedIn;
  133 + $('.login .message').text('');
  134 +
  135 + if(logged_in) {
  136 + if(token){
  137 + private_token = token;
  138 + }
  139 + loginButton.siblings('.save-article-form').show();
  140 + loginButton.siblings('.save-article-form .message').show();
  141 + loginButton.siblings('.login-container').hide();
  142 + $.cookie('_dialoga_session', private_token);
  143 + } else {
  144 + loginButton.siblings('.save-article-form').hide();
  145 + loginButton.siblings('.login-container').show();
  146 + }
  147 + },
  148 + guid: function() {
  149 + function s4() {
  150 + return Math.floor((1 + Math.random()) * 0x10000)
  151 + .toString(16)
  152 + .substring(1);
  153 + }
  154 + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4();
  155 + },
  156 + display_category_tab: function(){
  157 + $('#proposal-group').hide();
  158 + $('#proposal-categories').show();
  159 + $('#nav-proposal-categories a').addClass('active');
  160 + $('#nav-proposal-group a').removeClass('active');
  161 + $('.proposal-category-items').hide();
  162 + $('.proposal-category .arrow-box').hide();
  163 + $('.proposal-detail').hide();
  164 +
  165 + $('#content').show();
  166 + $('nav').show();
  167 + },
  168 + display_proposals_tab: function(){
  169 + $('#proposal-categories').hide();
  170 + $('#proposal-group').show();
  171 + $('#nav-proposal-group a').addClass('active');
  172 + $('#nav-proposal-categories a').removeClass('active');
  173 + $('#content').show();
  174 + $('nav').show();
  175 + },
  176 + display_proposal: function(proposal_id){
  177 + $('#proposal-categories').hide();
  178 + $('#proposal-group').hide();
  179 + $('nav').hide();
  180 + $('#content').hide();
  181 + // $('.make-proposal-form').hide();
  182 + // $('.login-container').hide();
  183 + $('.proposal-detail').hide(); // hide all proposals
  184 + // $('.proposal-detail-base').hide();
  185 + $proposal = $('#' + proposal_id);
  186 + $proposal.find('.proposal-detail-base').hide();
  187 + $proposal.show();
  188 + $proposal.find('.proposal-header').show();
  189 + $proposal.find('.make-proposal-container').show();
  190 + $proposal.find('.support-proposal-container').show();
  191 + $proposal.find('.results-container').hide();
  192 + $proposal.find('.results-container .loading').hide();
  193 + $proposal.find('.results-container .results-content').hide();
  194 + $proposal.find('.experience-proposal-container').show();
  195 + $proposal.find('.talk-proposal-container').show();
  196 + $proposal.find('.calendar').slick();
  197 +
  198 + var topic_id = proposal_id.split('-').pop();
  199 + this.loadRandomProposal(topic_id, private_token);
  200 + },
  201 + display_proposal_detail: function(proposal_id){
  202 + $('#proposal-categories').hide();
  203 + $('#proposal-group').hide();
  204 + $('nav').hide();
  205 + $('#content').hide();
  206 + $proposal = $('#proposal-item-' + proposal_id);
  207 + $proposal.find('.make-proposal-form').hide();
  208 + $proposal.find('.proposal-header').hide();
  209 + $proposal.find('.make-proposal-container').hide();
  210 + $proposal.find('.support-proposal-container').hide();
  211 + $proposal.find('.results-container').hide();
  212 + $proposal.find('.experience-proposal-container').hide();
  213 + $proposal.find('.talk-proposal-container').hide();
  214 + $proposal.find('.body').show();
  215 + $proposal.show();
  216 +
  217 + var url = host + '/api/v1/articles/' + proposal_id + '?private_token=' + private_token + '&fields=id,body&content_type=ProposalsDiscussionPlugin::Topic';
  218 + $.getJSON(url).done(function( data ) {
  219 + $('#proposal-item-' + proposal_id + ' .body-content').replaceWith(data.article.body);
  220 + })
  221 + .fail(function( jqxhr, textStatus, error ) {
  222 + var err = textStatus + ', ' + error;
  223 + console.log( 'Request Failed: ' + err );
  224 + });
  225 + },
  226 + display_proposal_by_category: function(item){
  227 + var $item = $('#' + item);
  228 +
  229 + if($item.hasClass('proposal-category-items')){
  230 + //Display Topics or Discussion by category
  231 + $('nav').show();
  232 + $('#content').show();
  233 + $('#proposal-categories').show();
  234 + $('#nav-proposal-categories a').addClass('active');
  235 + $('#nav-proposal-group a').removeClass('active');
  236 + $('.proposal-category-items').hide();
  237 + $('.proposal-detail').hide();
  238 + $item.toggle( 'blind', 1000 );
  239 + $('.proposal-category .arrow-box').hide();
  240 + var categorySlug = $item.data('category');
  241 + $('#proposal-category-' + categorySlug).find('.arrow-box').show();
  242 + }
  243 + },
  244 + addBarraDoGoverno: function(){
  245 +
  246 + if( BARRA_ADDED ) { return; }
  247 +
  248 + var HTML_BODY_PREPEND = '' +
  249 + '<div id="barra-brasil" style="background:#7F7F7F; height: 20px; padding:0 0 0 10px;display:block;"> ' +
  250 + '<ul id="menu-barra-temp" style="list-style:none;">' +
  251 + '<li style="display:inline; float:left;padding-right:10px; margin-right:10px; border-right:1px solid #EDEDED"><a href="http://brasil.gov.br" style="font-family:sans,sans-serif; text-decoration:none; color:white;">Portal do Governo Brasileiro</a></li> ' +
  252 + '<li><a style="font-family:sans,sans-serif; text-decoration:none; color:white;" href="http://epwg.governoeletronico.gov.br/barra/atualize.html">Atualize sua Barra de Governo</a></li>' +
  253 + '</ul>' +
  254 + '</div>';
  255 +
  256 + var HTML_BODY_APPEND = ''+
  257 + '<div id="footer-brasil"></div>' +
  258 + '<script defer="defer" src="http://barra.brasil.gov.br/barra.js" type="text/javascript"></script>';
  259 +
  260 + var STYLE_TEMA_AZUL = '' +
  261 + '<style>'+
  262 + '#footer-brasil {'+
  263 + 'background: none repeat scroll 0% 0% #0042b1;'+
  264 + 'padding: 1em 0px;'+
  265 + 'max-width: 100%;'+
  266 + 'margin-top: 40px;'+
  267 + '}'+
  268 + '#barra-brasil ul {'+
  269 + 'width: auto;'+
  270 + '}'+
  271 + '<style>';
  272 +
  273 + var $body = $(document.body);
  274 + $body.prepend(HTML_BODY_PREPEND);
  275 + $body.append(HTML_BODY_APPEND);
  276 + $body.append(STYLE_TEMA_AZUL);
  277 +
  278 + BARRA_ADDED = true;
  279 + },
  280 + updateHash: function(hash){
  281 + var id = hash.replace(/^.*#/, '');
  282 + var elem = document.getElementById(id);
  283 +
  284 + // preserve the query param
  285 + // if (HIDE_BARRA_DO_GOVERNO && (hash.indexOf('?barra=false') === -1)){
  286 + // hash += '?barra=false';
  287 + // }
  288 +
  289 + if ( !elem ) {
  290 + window.location.hash = hash;
  291 + return;
  292 + }
  293 +
  294 + elem.id = id+'-tmp';
  295 + window.location.hash = hash;
  296 + elem.id = id;
  297 + },
  298 + locationHashChanged: function(){
  299 + var hash = window.location.hash;
  300 + this.navigateTo(hash);
  301 + },
  302 + navigateTo: function(hash){
  303 + var regexProposals = /#\/programas/;
  304 + var regexCategory = /#\/temas/;
  305 + var regexHideBarra = /barra=false$/;
  306 +
  307 + if( !(regexHideBarra.exec(hash) !== null) && !HIDE_BARRA_DO_GOVERNO ){
  308 + this.addBarraDoGoverno();
  309 + }else{
  310 + HIDE_BARRA_DO_GOVERNO = true;
  311 + }
  312 +
  313 + // remove query params
  314 + hash = hash.split('?')[0];
  315 +
  316 + var parts = hash.split('/');
  317 +
  318 + var isProposal = regexProposals.exec(hash) !== null;
  319 + var isCategory = regexCategory.exec(hash) !== null;
  320 +
  321 + if( isProposal ){
  322 +
  323 + // go to proposal
  324 + var proposalId = parts[2];
  325 + this.navigateToProposal(proposalId);
  326 + }
  327 +
  328 + if( isCategory ){
  329 +
  330 + // go to category
  331 + var categoryId = parts[3];
  332 + this.navigateToCategory(categoryId);
  333 + }
  334 +
  335 + // default
  336 + if( !isProposal && !isCategory ){
  337 + // show the 'index' -> category tab
  338 + this.display_category_tab();
  339 + }
  340 +
  341 + $('html, body').animate({ scrollTop: 0 }, 'fast');
  342 + },
  343 + navigateToProposal: function(proposalId){
  344 + var regexSubpages = /sobre-o-programa$/;
  345 + if(proposalId === undefined){
  346 + this.display_proposals_tab();
  347 + }else if(regexSubpages.exec(window.location.hash) == null){
  348 + this.display_proposal('proposal-item-' + proposalId);
  349 + }else{
  350 + this.display_proposal_detail(proposalId);
  351 + }
  352 + },
  353 + navigateToCategory: function(categoryId){
  354 + if(categoryId === undefined){
  355 + this.display_category_tab();
  356 + }else{
  357 + this.display_proposal_by_category('proposal-item-' + categoryId);
  358 + }
  359 + },
  360 + oauthClientAction: function(url) {
  361 + var child = window.open(url, "_blank");
  362 + var interval = setInterval(function() {
  363 + try {
  364 + if(!child.closed) {
  365 + child.postMessage({ message: "requestOauthClientPluginResult" }, "*");
  366 + }
  367 + }
  368 + catch(e) {
  369 + // we're here when the child window has been navigated away or closed
  370 + if (child.closed) {
  371 + clearInterval(interval);
  372 + return;
  373 + }
  374 + }
  375 + }, 300);
  376 + }
  377 + }
  378 + })();
  379 +
33 380 // Load data from localhost when it is dev env.
34 381 var noosferoAPI = host + '/api/v1/articles/' + proposal_discussion + '?private_token=' + private_token + '&fields=id,children,categories,abstract,title,image,url,setting,position';
35 382  
... ... @@ -91,6 +438,9 @@ define([&#39;handlebars_helpers&#39;,&#39;jquery_ui&#39;,&#39;jquery_slick&#39;, &#39;jquery_maxlength&#39;, &#39;la
91 438 if(isSubpage){
92 439 // return to proposal page
93 440 newHash = oldHash.split('/sobre-o-programa')[0];
  441 + }else{
  442 + $link = $(this).siblings('.proposal-link');
  443 + newHash = $link.attr('href');
94 444 }
95 445  
96 446 // Update URL and Navigate
... ... @@ -105,6 +455,9 @@ define([&#39;handlebars_helpers&#39;,&#39;jquery_ui&#39;,&#39;jquery_slick&#39;, &#39;jquery_maxlength&#39;, &#39;la
105 455 loginButton = $this.parents('.send-button');
106 456 loginButton.hide();
107 457 $this.parents('.success-proposal-sent').hide();
  458 + $wrapper = $this.parents('.make-proposal');
  459 + $wrapper.find('.subtitle').show();
  460 + $wrapper.find('.info').show();
108 461 Main.loginCallback(logged_in);
109 462 });
110 463  
... ... @@ -113,10 +466,10 @@ define([&#39;handlebars_helpers&#39;,&#39;jquery_ui&#39;,&#39;jquery_slick&#39;, &#39;jquery_maxlength&#39;, &#39;la
113 466 $('#proposal-result').toggleClass('contrast');
114 467 });
115 468  
116   - $( '.show_body a' ).on('click touchstart', function(e){
  469 + $( '.show_body' ).on('click touchstart', function(e){
117 470 e.preventDefault();
118 471  
119   - var $link = $(this);
  472 + var $link = $(this).find('a');
120 473  
121 474 // Update URL and Navigate
122 475 Main.updateHash($link.attr('href'));
... ... @@ -132,10 +485,9 @@ define([&#39;handlebars_helpers&#39;,&#39;jquery_ui&#39;,&#39;jquery_slick&#39;, &#39;jquery_maxlength&#39;, &#39;la
132 485 });
133 486  
134 487 $( '.proposal-selection' ).change(function(e){
135   - e.preventDefault();
136   -
137 488 // Update URL and Navigate
138 489 Main.updateHash('#/programas/' + this.value);
  490 + $(this).val($(this).data("proposal")).trigger("chosen:updated");
139 491 });
140 492  
141 493 var availableTags = [ ];
... ... @@ -147,7 +499,7 @@ define([&#39;handlebars_helpers&#39;,&#39;jquery_ui&#39;,&#39;jquery_slick&#39;, &#39;jquery_maxlength&#39;, &#39;la
147 499 source: availableTags,
148 500 minLength: 3,
149 501 select: function( event, ui ) {
150   - updateHash(ui.item.value);
  502 + Main.updateHash(ui.item.value);
151 503 return false;
152 504 },
153 505 appendTo: '#search-input-container',
... ... @@ -175,6 +527,8 @@ define([&#39;handlebars_helpers&#39;,&#39;jquery_ui&#39;,&#39;jquery_slick&#39;, &#39;jquery_maxlength&#39;, &#39;la
175 527 form.reset();
176 528 $form.hide();
177 529 $form.siblings('.success-sent').show();
  530 + $form.siblings('.subtitle').hide();
  531 + $form.siblings('.info').hide();
178 532 })
179 533 .fail(function( jqxhr, textStatus, error ) {
180 534 var err = textStatus + ', ' + error;
... ...
js/requirejs-config.js
... ... @@ -12,6 +12,7 @@ requirejs.config({
12 12 waitSeconds: 0,
13 13 paths: {
14 14 jquery: 'jquery-2.1.3.min',
  15 + jquery_xdomainrequest: 'jquery.xdomainrequest.min',
15 16 jquery_ui: 'jquery-ui-1.11.4.custom/jquery-ui.min',
16 17 jquery_cookie: 'jquery.cookie',
17 18 handlebars: 'handlebars-v3.0.1',
... ... @@ -32,6 +33,9 @@ requirejs.config({
32 33 deps: ['handlebars'],
33 34 exports: 'Handlebars'
34 35 },
  36 + 'jquery_xdomainrequest': {
  37 + deps: ['jquery']
  38 + },
35 39 'jquery_ui': {
36 40 deps: ['jquery']
37 41 },
... ...
sass/_accessibility.scss
... ... @@ -176,12 +176,20 @@
176 176 .contrast .category-educacao,
177 177 .contrast .category-seguranca-publica,
178 178 .contrast #proposal-categories .proposal-item .item,
179   -.contrast #proposal-group .proposal-item .item,
180 179 .contrast .make-proposal,
181 180 .contrast .support-proposal,
182 181 .contrast .experience-proposal,
183 182 .contrast .talk-proposal{
184   - border: 1px solid #fff !important;
  183 + border: 1px solid #000 !important;
  184 +}
  185 +
  186 +.contrast #proposal-group .proposal-item .item {
  187 + border: none;
  188 +}
  189 +
  190 +.contrast #proposal-categories,
  191 +.contrast #proposal-group {
  192 + border-top: 1px solid #fff !important;
185 193 }
186 194  
187 195 .contrast #proposal-categories ul.category,
... ... @@ -190,9 +198,8 @@
190 198 }
191 199  
192 200 .contrast nav li a.active{
193   - border-top: 1px solid #fff;
194   - border-left: 1px solid #fff;
195   - border-right: 1px solid #fff;
  201 + border: 1px solid #000;
  202 + border-bottom: 1px solid #fff;
196 203 }
197 204  
198 205 .contrast .saude .proposal-detail-base blockquote,
... ... @@ -251,7 +258,11 @@
251 258 /*----------------------- ELEMENTOS MOUSE HOVER ---------------------- */
252 259 .contrast #proposal-group .proposal-item:hover{
253 260 color: #fff !important;
254   - background: #000 !important;
  261 + background: #000 !important;
  262 +
  263 + .category li {
  264 + border: 1px solid #fff !important;
  265 + }
255 266 }
256 267  
257 268 .contrast .send-proposal-button.send-button > a:hover,
... ...
sass/_nav.scss
... ... @@ -25,16 +25,22 @@ nav li a {
25 25 text-decoration: none;
26 26 font-size: 16px;
27 27 font-weight: bold;
28   - color: #fff;
29   - background: #03316f;
  28 + color: #000;
  29 + background: #efefef;
30 30 padding: 20px 5px;
31 31 text-transform: uppercase;
32   - border-color: #03316f;
33   - border-style: solid;
34   - border-width: 1px 1px 0;
  32 + border-bottom: 1px solid #03316f;
  33 +
  34 +
35 35 }
36 36  
37 37 nav li a.active {
38 38 background: #fff;
39 39 color: #03316f;
  40 + border: 1px solid #03316f;
  41 + border-bottom: 1px solid #fff;
  42 +
  43 + &:hover{
  44 + cursor: default;
  45 + }
40 46 }
... ...
sass/_proposal_categories.scss
... ... @@ -182,7 +182,7 @@
182 182 }
183 183  
184 184 #proposal-group .proposal-item {
185   - border: none;
  185 + border: 1px solid #ccc;
186 186 }
187 187  
188 188 @media only screen and (max-device-width: 480px) {
... ...
sass/_proposal_detail.scss
... ... @@ -64,6 +64,11 @@
64 64 padding: 30px 0;
65 65 margin: 10px auto;
66 66 text-align: center;
  67 + cursor: pointer;
  68 + -webkit-border-radius: 6px;
  69 + -moz-border-radius: 6px;
  70 + border-radius: 6px;
  71 +
67 72  
68 73 a {
69 74 display: inline-block;
... ... @@ -99,6 +104,11 @@
99 104 width: auto;
100 105 }
101 106 }
  107 + &:after {
  108 + content:"";
  109 + display:table;
  110 + clear:both;
  111 + }
102 112 }
103 113 .results-container {
104 114 &:before {
... ... @@ -116,6 +126,8 @@
116 126 color: gray;
117 127 border: none;
118 128 margin: 10px;
  129 + -webkit-border-radius: 6px;
  130 + -moz-border-radius: 6px;
119 131 border-radius: 6px;
120 132 text-align: center;
121 133 text-decoration: none;
... ... @@ -181,21 +193,37 @@
181 193  
182 194 .proposal-header {
183 195 .title {
184   - background: $color;
  196 + background: darken($color, 15%);
185 197 }
186 198 .abstract p {
187   - background: $color;
  199 + background: darken($color, 15%);
188 200 }
189 201 .show_body {
190   - background: $color url(images/black-alpha.png);
191   - border-top: 5px solid $color;
  202 + background: $color;
  203 + // background: $color url(images/black-alpha.png);
  204 + // border-top: 5px solid $color;
  205 + transition: background-color .2s;
  206 +
  207 + &:hover,
  208 + &:focus {
  209 + background-color: saturate( lighten($color, 5%), 10% );
  210 + // -webkit-box-shadow: 0 2px 5px rgba(0,0,0,.5);
  211 + // -moz-box-shadow: 0 2px 5px rgba(0,0,0,.5);
  212 + // box-shadow: 0 2px 5px rgba(0,0,0,.5);
  213 +
  214 + span {
  215 + background-color: saturate( lighten($color, 5%), 10% );
  216 + }
  217 + }
192 218  
193 219 a {
194 220 background: transparent url(images/white-line.png) left center repeat-x;
195 221 }
196 222  
197 223 span {
198   - background: $color url(images/black-alpha.png);
  224 + background: $color;
  225 + // background: $color url(images/black-alpha.png);
  226 + transition: background-color .2s;
199 227 }
200 228 }
201 229 }
... ... @@ -241,6 +269,9 @@
241 269 border-color: #ebccd1;
242 270 font-weight:bold;
243 271 color: #a94442;
  272 +
  273 + -webkit-border-radius: 5px;
  274 + -moz-border-radius: 5px;
244 275 border-radius: 5px;
245 276 }
246 277 input, textarea {
... ... @@ -260,12 +291,20 @@
260 291 width: 60%;
261 292 border: none;
262 293 margin: 10px auto;
  294 + -webkit-border-radius: 6px;
  295 + -moz-border-radius: 6px;
263 296 border-radius: 6px;
264 297 text-align: center;
265 298 text-decoration: none;
266 299 padding: 20px;
267 300 display: block;
268 301  
  302 + transition: background-color .2s;
  303 +
  304 + &:hover,
  305 + &:focus {
  306 + background-color: saturate( lighten($color, 5%), 10% );
  307 + }
269 308 span {
270 309 padding-left: 20px;
271 310 background: transparent url(images/airplane.png) left center no-repeat;
... ... @@ -369,6 +408,8 @@
369 408 width: 60%;
370 409 border: none;
371 410 margin: 0;
  411 + -webkit-border-radius: 6px;
  412 + -moz-border-radius: 6px;
372 413 border-radius: 6px;
373 414 text-align: center;
374 415 text-decoration: none;
... ... @@ -378,6 +419,13 @@
378 419 bottom: 40px;
379 420 left: 50%;
380 421 margin-left: -30%;
  422 +
  423 + transition: background-color .2s;
  424 +
  425 + &:hover,
  426 + &:focus {
  427 + background-color: saturate( lighten($color, 5%), 10% );
  428 + }
381 429 }
382 430 .vote-result {
383 431 font-size: 14px;
... ... @@ -394,6 +442,11 @@
394 442 left: 0;
395 443 text-decoration: none;
396 444 color: $color;
  445 +
  446 + &:hover,
  447 + &:focus {
  448 + text-decoration: underline;
  449 + }
397 450 }
398 451 }
399 452 }
... ... @@ -506,6 +559,8 @@
506 559  
507 560 .actions > a.login-action{
508 561 background: $color;
  562 + -webkit-border-radius: 7px;
  563 + -moz-border-radius: 7px;
509 564 border-radius: 7px;
510 565 color: #fff;
511 566 display: block;
... ... @@ -516,6 +571,8 @@
516 571  
517 572 form .oauth .new-user{
518 573 background: $color;
  574 + -webkit-border-radius: 7px;
  575 + -moz-border-radius: 7px;
519 576 border-radius: 7px;
520 577 color: #fff;
521 578 padding: 10px 15px;
... ... @@ -566,6 +623,8 @@
566 623 overflow-y: auto;
567 624 max-height: 190px;
568 625 margin-bottom: 10px;
  626 + word-break: break-word;
  627 + word-wrap: break-word;
569 628  
570 629 @media only screen and (max-width: 1048px) {
571 630 max-height: 140px;
... ...
sass/proposal_detail/_proposal-detail-base.scss
... ... @@ -104,7 +104,9 @@
104 104 }
105 105 .go-to-proposal-button a {
106 106 background: $color;
107   - border-radius: 3px;
  107 + -webkit-border-radius: 6px;
  108 + -moz-border-radius: 6px;
  109 + border-radius: 6px;
108 110 color: #fff;
109 111 display: block;
110 112 padding: 1em;
... ... @@ -114,6 +116,12 @@
114 116 .fa-reply {
115 117 margin-right: .7em;
116 118 }
  119 +
  120 + transition: background-color .2s;
  121 + &:hover,
  122 + &:focus {
  123 + background-color: saturate( lighten($color, 5%), 10% );
  124 + }
117 125 }
118 126 .row {
119 127 margin-bottom: 1.5em;
... ...
sass/utilities/_variables.scss
1 1 $categories: (saude: #00a9bd, seguranca-publica: #e34748, educacao: #ffb400, reducao-da-pobreza: #51d0b3);
2 2 $categories-descriptions: (saude: "Saúde é direito de todos e dever do Estado. O Sistema Único de Saúde (SUS) é universal, integral e de responsabilidade do Governo Federal, estados e municípios. Atende a todos os brasileiros.", seguranca-publica: "A Segurança Pública é um direito fundamental, dever do Estado e responsabilidade de todos. A proteção da vida, a disseminação da cultura de paz e a integração dos órgãos e instituições são os maiores compromissos desta política pública.", educacao: "Uma pátria educadora se faz com oportunidades iguais para todos. Nos últimos anos, o Brasil, criou esse caminho de oportunidades. Hoje, todo brasileiro, independente de sua classe social, tem acesso à educação de qualidade em todos os níveis de ensino - da creche à pós-graduação . Muitos avanços foram realizados, mas ainda há muito a fazer. O Plano Nacional de Educação (PNE) estabelece novas metas para que o Governo Federal trabalhe em parceria com a sociedade, com os estados e os municípios na construção de um futuro melhor.", reducao-da-pobreza: "Com o esforço do Brasil para reduzir a pobreza e a desigualdade, 36 milhões de pessoas superaram a miséria na última década e o país saiu do Mapa da Fome das Nações Unidas.");
3 3 -$container-height: 500px;
  4 +$container-height: 500px;
4 5 \ No newline at end of file
... ...