diff --git a/.gitignore b/.gitignore index edf35ce..f1a805b 100644 --- a/.gitignore +++ b/.gitignore @@ -6,4 +6,8 @@ bower_components/ sass/novo.scss sass/bootstrap.scss style.css -style.css.map \ No newline at end of file +style.css.mapdist +main-bundled.js +main-init.js +main.min.js +dist/ diff --git a/gulpfile.js b/gulpfile.js index 65b8aa7..0cf4f3b 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -1,4 +1,5 @@ 'use strict'; +/* global require, __dirname, console */ var gulp = require('gulp'); // var sass = require('gulp-sass'); @@ -14,23 +15,180 @@ var connect = require('gulp-connect'); gulp.task('sass', function() { return sass('./sass/style.sass') - .on('error', function (err) { + .on('error', function(err) { console.error('Error', err.message); }) .pipe(gulp.dest('.')) .pipe(connect.reload()); }); -gulp.task('watch', function () { +gulp.task('watch', function() { gulp.watch('./sass/**/*.sass', ['sass']); }); gulp.task('connect', function() { connect.server({ - port: 8080, + port: 3000, root: [__dirname], livereload: true }); }); -gulp.task('default', ['sass','connect','watch']); +gulp.task('connect_dist', ['clean', 'copyResources', 'sass', 'compileJS', 'htmlReplace'], function() { + connect.server({ + port: 3000, + root: ['./dist'], + livereload: false + }); +}); + + +gulp.task('default', ['sass', 'connect', 'watch']); + +//var htmlusemin = require('gulp-usemin-html'); +var useRef = require('gulp-useref'); +var minifyCss = require('gulp-minify-css'); +var rev = require('gulp-rev'); +var revReplace = require('gulp-rev-replace'); +var uglify = require('gulp-uglify'); +var gulpif = require('gulp-if'); +var filter = require('gulp-filter'); +var sourcemaps = require('gulp-sourcemaps'); +var requirejsOptimize = require('gulp-requirejs-optimize'); +var concat = require('gulp-concat'); +var copy = require('gulp-copy'); +var add = require("gulp-add"); + +gulp.task('copyResources', function(){ + gulp.src(["./*.html", "style.css", "./fonts/**/*.*", "./favicon.ico", "./images/**/*.*"]) + .pipe(copy('dist/')); +}); + + +gulp.task('compileJS', function() { + var mainInit = + "require.config({ paths: { \"main\": \"main-bundled\" }});require([\"main\"]);"; + return gulp.src('js/main.js') + //.pipe(sourcemaps.init()) + .pipe(requirejsOptimize({ + baseUrl: 'js', + name: 'main', + //generateSourceMaps: true, + optimize: "none", + preserveLicenseComments: false, + findNestedDependencies: true, + mainConfigFile: 'js/main.js', + paths: { + requireLib: "require", + jquery: 'jquery-2.1.3.min', + jquery_xdomainrequest: 'jquery.xdomainrequest.min', + jquery_ui: 'jquery-ui-1.11.4.custom/jquery-ui.min', + jquery_cookie: 'jquery.cookie', + jquery_timeago: 'jquery.timeago', + jquery_timeago_pt: 'jquery.timeago.pt-br', + jquery_simplePagination: 'jquery.simplePagination', + jquery_equalHeights: 'jquery.equalHeights', + jquery_footable: 'footable', + handlebars: 'handlebars-v3.0.1', + handlebars_helpers: 'handlebars-helpers', + jquery_maxlength: 'jquery.maxlength.min', + slick: 'slick.min', + fastclick: 'fastclick.min', + layout: 'layout', + main: 'main', + proposal_app: 'proposal-app' + }, + shim: { + 'handlebars':{ + deps: ['jquery'], + exports: 'Handlebars' + }, + 'jquery_xdomainrequest': { + deps: ['jquery'] + }, + 'jquery_cookie': { + deps: ['jquery'] + }, + 'jquery_timeago': { + deps: ['jquery'] + }, + 'jquery_timeago_pt': { + deps: ['jquery_timeago'] + }, + 'jquery_simplePagination': { + deps: ['jquery'] + }, + 'jquery_equalHeights': { + deps: ['jquery'] + }, + 'footable': { + deps: ['jquery'] + }, + 'jquery_ui': { + deps: ['jquery'] + }, + 'layout': { + deps: ['jquery'] + }, + 'jquery_maxlength': { + deps: ['jquery'] + }, + 'slick': { + deps: ['jquery'] + }, + 'fastclick': { + deps: ['jquery'] + }, + 'handlebars_helpers':{ + deps: ['handlebars'] + }, + 'proposal_app' :{ + deps: ['jquery'], + exports: 'ProposalApp' + } + }, + include: ["requireLib"], + out: "dist/main.min.js" + }).on('error', function(error) { + console.log(error); + })) + .pipe(add('dist/main-init.js', mainInit)) + .pipe(concat('dist/main-bundled.js')) + //.pipe(sourcemaps.write('./')) + .pipe(gulp.dest('./')); +}); + + +gulp.task('htmlReplace', ['clean', 'sass', 'copyResources', 'compileJS'],function() { + var assets; + var jsFilter = filter("./dist/main-bundled.js"); + var cssFilter = filter("dist/*.css"); + return gulp.src('dist/index.html') + .pipe(assets = useRef.assets()) + .pipe(sourcemaps.init()) + .pipe(rev()) + .pipe(gulpif('*.js', uglify())) + .pipe(assets.restore()) + .pipe(useRef()) + .pipe(revReplace()) + .pipe(gulpif('*.css', minifyCss({ + sourceMap: true + }))) + + .pipe(assets.restore()) + .pipe(useRef()) + .pipe(revReplace()) + .pipe(sourcemaps.write('./')) + .pipe(assets.restore()) + .pipe(gulp.dest('dist/')); +}); + +var del = require('del'); + +gulp.task('clean', function(cb) { + del([ + 'dist/*.*' + ], cb); +}); + +gulp.task('build', ['clean', 'copyResources', 'sass', 'compileJS', 'htmlReplace']); diff --git a/index.html b/index.html index d832c83..28b2f51 100644 --- a/index.html +++ b/index.html @@ -10,7 +10,9 @@ - + + + + + + + + + + diff --git a/js/jquery.timeago.pt-br.js b/js/jquery.timeago.pt-br.js index 92c60c7..77d7547 100644 --- a/js/jquery.timeago.pt-br.js +++ b/js/jquery.timeago.pt-br.js @@ -1,18 +1,21 @@ -// Brazilian Portuguese -jQuery.timeago.settings.strings = { - prefixAgo: "há", - prefixFromNow: "em", - suffixAgo: null, - suffixFromNow: null, - seconds: "alguns segundos", - minute: "um minuto", - minutes: "%d minutos", - hour: "uma hora", - hours: "%d horas", - day: "um dia", - days: "%d dias", - month: "um mês", - months: "%d meses", - year: "um ano", - years: "%d anos" -}; +define(['jquery'], function(jQuery){ + // Brazilian Portuguese + jQuery.timeago.settings.strings = { + prefixAgo: "há", + prefixFromNow: "em", + suffixAgo: null, + suffixFromNow: null, + seconds: "alguns segundos", + minute: "um minuto", + minutes: "%d minutos", + hour: "uma hora", + hours: "%d horas", + day: "um dia", + days: "%d dias", + month: "um mês", + months: "%d meses", + year: "um ano", + years: "%d anos" + }; + +}); diff --git a/js/main.js b/js/main.js index b560dc7..1631400 100644 --- a/js/main.js +++ b/js/main.js @@ -1,1839 +1,1848 @@ /* global define */ -define(['jquery', 'handlebars', 'fastclick', 'proposal_app', 'handlebars_helpers', 'piwik'], function($, Handlebars, FastClick, ProposalApp){ - // 'use strict'; - - // The template code - var templateSource = $('#proposal-template').html(); - - // compile the template - var template = Handlebars.compile(templateSource); - var supportProposalTemplate = Handlebars.compile(document.getElementById('support-proposal-template').innerHTML); - var loginTemplate = Handlebars.compile(document.getElementById('login-template').innerHTML); - var resultsTemplate = Handlebars.compile(document.getElementById('results-template').innerHTML); - var articleTemplate = Handlebars.compile(document.getElementById('article-template').innerHTML); - var calendarTemplate = Handlebars.compile(document.getElementById('calendar-template').innerHTML); - - // The div/container that we are going to display the results in - var resultsPlaceholder = document.getElementById('proposal-result'); - - var logged_in = false; - - var loginButton; - - var lastHash = window.location.hash; - - var host = 'http://login.dialoga.gov.br'; - var serpro_captcha_clienteId = 'fdbcdc7a0b754ee7ae9d865fda740f17'; - var dialoga_community = 19195; - var proposal_discussion = '103358'; //participa - var cat_saude = 180; - // var cat_seguranca_publica = 182; - // var cat_educacao = 181; - // var cat_reducao_da_pobreza = 183; - var recaptchaSiteKey = '6LcLPAcTAAAAAKsd0bxY_TArhD_A7OL19SRCW7_i'; - - // There are two modes for development - // 1: Remote API - // 2: Local API with proposal database - // For (1) use port 3000 -> rails s - // For (2) use port 3001 -> rails s -p 3001 - // - // For (2) set at /etc/hosts: - // - //127.0.0.1 participa.br - //127.0.0.1 dialoga.gov.br - //127.0.0.1 login.dialoga.gov.br - //127.0.0.1 noosfero.com - //Detects for localhost settings - var patt = new RegExp(':300[0-2]/'); - var localDevelopment = false; - - if(patt.test(window.location.href)){ - localDevelopment = true; - patt = new RegExp(':3000/'); +define( + [ + 'jquery', 'handlebars', 'fastclick', + 'proposal_app', 'handlebars_helpers', + 'piwik', 'jquery_maxlength', 'jquery_xdomainrequest', + 'jquery_footable', 'jquery_simplePagination', + 'jquery_equalHeights', 'jquery_ui', + 'jquery_timeago', 'jquery_timeago_pt' + ], + function($, Handlebars, FastClick, ProposalApp){ + // 'use strict'; + + // The template code + var templateSource = $('#proposal-template').html(); + + // compile the template + var template = Handlebars.compile(templateSource); + var supportProposalTemplate = Handlebars.compile(document.getElementById('support-proposal-template').innerHTML); + var loginTemplate = Handlebars.compile(document.getElementById('login-template').innerHTML); + var resultsTemplate = Handlebars.compile(document.getElementById('results-template').innerHTML); + var articleTemplate = Handlebars.compile(document.getElementById('article-template').innerHTML); + var calendarTemplate = Handlebars.compile(document.getElementById('calendar-template').innerHTML); + + // The div/container that we are going to display the results in + var resultsPlaceholder = document.getElementById('proposal-result'); + + var logged_in = false; + + var loginButton; + + var lastHash = window.location.hash; + + var host = 'http://login.dialoga.gov.br'; + var serpro_captcha_clienteId = 'fdbcdc7a0b754ee7ae9d865fda740f17'; + var dialoga_community = 19195; + var proposal_discussion = '103358'; //participa + var cat_saude = 180; + // var cat_seguranca_publica = 182; + // var cat_educacao = 181; + // var cat_reducao_da_pobreza = 183; + var recaptchaSiteKey = '6LcLPAcTAAAAAKsd0bxY_TArhD_A7OL19SRCW7_i'; + + // There are two modes for development + // 1: Remote API + // 2: Local API with proposal database + // For (1) use port 3000 -> rails s + // For (2) use port 3001 -> rails s -p 3001 + // + // For (2) set at /etc/hosts: + // + //127.0.0.1 participa.br + //127.0.0.1 dialoga.gov.br + //127.0.0.1 login.dialoga.gov.br + //127.0.0.1 noosfero.com + //Detects for localhost settings + var patt = new RegExp(':300[0-2]/'); + var localDevelopment = false; if(patt.test(window.location.href)){ - host = 'http://login.dialoga.gov.br'; - }else if (new RegExp(':3001/').test(window.location.href)){ - host = 'http://noosfero.com:3001'; - // dialoga_community = 104; - // proposal_discussion = '413'; //Eugênio - // proposal_discussion = '392'; //Evandro - // cat_saude = 23; - recaptchaSiteKey = '6LdsWAcTAAAAAChTUUD6yu9fCDhdIZzNd7F53zf-'; //http://noosfero.com/ - } else { //ABNER - host = 'http://local.abner.com:3002'; - dialoga_community = 105; - proposal_discussion = '392'; //Evandro - recaptchaSiteKey = '6LdsWAcTAAAAAChTUUD6yu9fCDhdIZzNd7F53zf-'; //http://noosfero.com/ - cat_saude = 23; + localDevelopment = true; + patt = new RegExp(':3000/'); + + if(patt.test(window.location.href)){ + host = 'http://login.dialoga.gov.br'; + }else if (new RegExp(':3001/').test(window.location.href)){ + host = 'http://noosfero.com:3001'; + // dialoga_community = 104; + // proposal_discussion = '413'; //Eugênio + // proposal_discussion = '392'; //Evandro + // cat_saude = 23; + recaptchaSiteKey = '6LdsWAcTAAAAAChTUUD6yu9fCDhdIZzNd7F53zf-'; //http://noosfero.com/ + } else { //ABNER + host = 'http://local.abner.com:3002'; + dialoga_community = 105; + proposal_discussion = '392'; //Evandro + recaptchaSiteKey = '6LdsWAcTAAAAAChTUUD6yu9fCDhdIZzNd7F53zf-'; //http://noosfero.com/ + cat_saude = 23; + } } - } - - var BARRA_ADDED = false; - var HIDE_BARRA_DO_GOVERNO = false; - var Main; - window.Main = Main = (function(){ + var BARRA_ADDED = false; + var HIDE_BARRA_DO_GOVERNO = false; - var API = { - articles: '', - proposals: '/api/v1/articles/{topic_id}/children', + var Main; + window.Main = Main = (function(){ - }; + var API = { + articles: '', + proposals: '/api/v1/articles/{topic_id}/children', - API.getProposalsURL = function (topicId){ - return host + replace(API.proposals, '{topic_id}', topicId); - }; - - function replace(str, pattern, value){ - return str.replace(new RegExp(pattern, 'g'), value); - } + }; - function fillSignupForm(signupForm, user) { - signupForm.find('#signup-user_email').val(user.email); - signupForm.find('#signup-user_email').attr('disabled', true); - signupForm.find('#signup-user_name').val(user.login); - signupForm.find('#user_oauth_signup_token').val(user.signup_token); - signupForm.find('#user_oauth_providers').val(user.oauth_providers); - signupForm.find('div.password').hide(); - signupForm.find('div.password-confirmation').hide(); - signupForm.find('#signup-user_password').attr('required', false); - signupForm.find('#user_password_confirmation').attr('required', false); - }; - - return { - private_token: null, - getProposalId: function() { - var regexProposals = /\d.*\/propostas\/*.*/; - var proposalId = 0; - - var hasProposal = regexProposals.test(location.hash); - if( hasProposal ){ - var regexExtractProposal = /propostas\/*.*/; - proposalId = regexExtractProposal.exec(location.hash)[0].split('/')[1]; + API.getProposalsURL = function (topicId){ + return host + replace(API.proposals, '{topic_id}', topicId); + }; - } + function replace(str, pattern, value){ + return str.replace(new RegExp(pattern, 'g'), value); + } - return proposalId; - }, - loadRandomProposal: function (topic_id, force) { - /*var private_token = window.Main.private_token;*/ - var $noProposals = $('.no-proposals'); - var $loading = $('.loading'); - var $randomProposal = $('.random-proposal'); - var $body = $(document.body); - var contextMain = this; + function fillSignupForm(signupForm, user) { + signupForm.find('#signup-user_email').val(user.email); + signupForm.find('#signup-user_email').attr('disabled', true); + signupForm.find('#signup-user_name').val(user.login); + signupForm.find('#user_oauth_signup_token').val(user.signup_token); + signupForm.find('#user_oauth_providers').val(user.oauth_providers); + signupForm.find('div.password').hide(); + signupForm.find('div.password-confirmation').hide(); + signupForm.find('#signup-user_password').attr('required', false); + signupForm.find('#user_password_confirmation').attr('required', false); + }; - // reset view - $noProposals.hide(); - $loading.show(); - $randomProposal.html(''); + return { + private_token: null, + getProposalId: function() { + var regexProposals = /\d.*\/propostas\/*.*/; + var proposalId = 0; - var url = API.getProposalsURL(topic_id); - var childId = this.getProposalId(); + var hasProposal = regexProposals.test(location.hash); + if( hasProposal ){ + var regexExtractProposal = /propostas\/*.*/; + proposalId = regexExtractProposal.exec(location.hash)[0].split('/')[1]; - if(childId !== 0 && !force){ - url += '/' + childId; } - //url += '?private_token=' + private_token + '&limit=1&order=random()&_='+new Date().getTime()+'&fields=id,name,slug,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal'; - url += '?limit=1&order=random()&_='+new Date().getTime()+'&fields=id,name,slug,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal'; - - $.getJSON(url).done(function( data ) { - $loading.hide(); - $('.support-proposal .alert').hide(); - data.articles = data.articles || [data.article]; - if(data.articles.length === 0) { - $noProposals.show(); - return; + return proposalId; + }, + loadRandomProposal: function (topic_id, force) { + /*var private_token = window.Main.private_token;*/ + var $noProposals = $('.no-proposals'); + var $loading = $('.loading'); + var $randomProposal = $('.random-proposal'); + var $body = $(document.body); + var contextMain = this; + + // reset view + $noProposals.hide(); + $loading.show(); + $randomProposal.html(''); + + var url = API.getProposalsURL(topic_id); + var childId = this.getProposalId(); + + if(childId !== 0 && !force){ + url += '/' + childId; } + //url += '?private_token=' + private_token + '&limit=1&order=random()&_='+new Date().getTime()+'&fields=id,name,slug,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal'; + url += '?limit=1&order=random()&_='+new Date().getTime()+'&fields=id,name,slug,abstract,created_by&content_type=ProposalsDiscussionPlugin::Proposal'; - var article = data.articles[0]; - var parentTitle = $('#proposal-item-'+topic_id).find('.proposal-header .title').text(); - article.parent = {id: topic_id, title: parentTitle}; - $randomProposal.html(supportProposalTemplate(article)); - $body.off('click', '.vote-actions .skip'); - $body.on('click', '.vote-actions .skip', function(e) { - e.preventDefault(); - contextMain.loadRandomProposal(topic_id, true); - }); - $body.off('click', '.vote-actions .vote-action'); - $body.on('click', '.vote-actions .vote-action', function(e) { - e.preventDefault(); - - //Helps to prevent more than one vote per proposal - var $button = $(this); - var $proposal = $button.closest('.random-proposal'); + $.getJSON(url).done(function( data ) { + $loading.hide(); + $('.support-proposal .alert').hide(); - if(!logged_in) { - $(this).closest('.require-login-container').find('.button-send a').click(); + data.articles = data.articles || [data.article]; + if(data.articles.length === 0) { + $noProposals.show(); return; } - if(ProposalApp.hasProposalbeenVoted(article.id)){ - // console.debug("Proposta " + article.id + " já havia sido votada"); - Main.displaySuccess($button.closest('.support-proposal .section-content'), 'Seu voto já foi computado nesta proposta', 800); + var article = data.articles[0]; + var parentTitle = $('#proposal-item-'+topic_id).find('.proposal-header .title').text(); + article.parent = {id: topic_id, title: parentTitle}; + $randomProposal.html(supportProposalTemplate(article)); + $body.off('click', '.vote-actions .skip'); + $body.on('click', '.vote-actions .skip', function(e) { + e.preventDefault(); contextMain.loadRandomProposal(topic_id, true); - return; - } + }); + $body.off('click', '.vote-actions .vote-action'); + $body.on('click', '.vote-actions .vote-action', function(e) { + e.preventDefault(); + + //Helps to prevent more than one vote per proposal + var $button = $(this); + var $proposal = $button.closest('.random-proposal'); - $.ajax({ - type: 'post', - url: host + '/api/v1/articles/' + article.id + '/vote', - data: { - value: $(this).data('vote-value'), - private_token: Main.private_token + if(!logged_in) { + $(this).closest('.require-login-container').find('.button-send a').click(); + return; } - }).done(function(data) { - if(data.vote) { - // Main.displaySuccess($button.closest('.support-proposal .section-content'), '', 800); - $proposal.find('.abstract').hide(); - $proposal.find('.vote-actions .like').hide(); - $proposal.find('.vote-actions .dislike').hide(); - // $proposal.find('.vote-actions .vote-result').hide(); - var $successPanel = $('.success-panel').clone(); - $successPanel.find('.icon').addClass('icon-proposal-sent'); - $successPanel.find('.message').html('Voto realizado com sucesso'); - $successPanel.removeClass('hide'); - $proposal.prepend($successPanel); - $successPanel.show(); - // $successPanel.css('top', Math.max(0, (($proposal.height() - $successPanel.outerHeight()) / 2) + $proposal.offset().top) + 'px'); - // $successPanel.css('left', Math.max(0, (($proposal.width() - $successPanel.outerWidth()) / 2) + $proposal.offset().left) + 'px'); - } else { - $proposal.find('.abstract').hide(); - $proposal.find('.vote-actions .like').hide(); - $proposal.find('.vote-actions .dislike').hide(); - - var $successPanel = $('.success-panel').clone(); - // $successPanel.find('.icon').addClass('icon-proposal-sent'); - $successPanel.find('.message').html('Seu voto já foi computado nesta proposta'); - $successPanel.removeClass('hide'); - $proposal.prepend($successPanel); - $successPanel.show(); - // Main.displaySuccess($button.closest('.support-proposal .section-content'), , 800); - // $successPanel.find('.message').html('Seu voto já foi computado nesta proposta'); + + if(ProposalApp.hasProposalbeenVoted(article.id)){ + // console.debug("Proposta " + article.id + " já havia sido votada"); + Main.displaySuccess($button.closest('.support-proposal .section-content'), 'Seu voto já foi computado nesta proposta', 800); + contextMain.loadRandomProposal(topic_id, true); + return; } - // ProposalApp.addVotedProposal(article.id); - // contextMain.loadRandomProposal(topic_id, true); + + $.ajax({ + type: 'post', + url: host + '/api/v1/articles/' + article.id + '/vote', + data: { + value: $(this).data('vote-value'), + private_token: Main.private_token + } + }).done(function(data) { + if(data.vote) { + // Main.displaySuccess($button.closest('.support-proposal .section-content'), '', 800); + $proposal.find('.abstract').hide(); + $proposal.find('.vote-actions .like').hide(); + $proposal.find('.vote-actions .dislike').hide(); + // $proposal.find('.vote-actions .vote-result').hide(); + var $successPanel = $('.success-panel').clone(); + $successPanel.find('.icon').addClass('icon-proposal-sent'); + $successPanel.find('.message').html('Voto realizado com sucesso'); + $successPanel.removeClass('hide'); + $proposal.prepend($successPanel); + $successPanel.show(); + // $successPanel.css('top', Math.max(0, (($proposal.height() - $successPanel.outerHeight()) / 2) + $proposal.offset().top) + 'px'); + // $successPanel.css('left', Math.max(0, (($proposal.width() - $successPanel.outerWidth()) / 2) + $proposal.offset().left) + 'px'); + } else { + $proposal.find('.abstract').hide(); + $proposal.find('.vote-actions .like').hide(); + $proposal.find('.vote-actions .dislike').hide(); + + var $successPanel = $('.success-panel').clone(); + // $successPanel.find('.icon').addClass('icon-proposal-sent'); + $successPanel.find('.message').html('Seu voto já foi computado nesta proposta'); + $successPanel.removeClass('hide'); + $proposal.prepend($successPanel); + $successPanel.show(); + // Main.displaySuccess($button.closest('.support-proposal .section-content'), , 800); + // $successPanel.find('.message').html('Seu voto já foi computado nesta proposta'); + } + // ProposalApp.addVotedProposal(article.id); + // contextMain.loadRandomProposal(topic_id, true); + }); }); - }); - $body.off('click', '.vote-result'); - $body.on('click', '.vote-result', function(e) { - // e.preventDefault(); + $body.off('click', '.vote-result'); + $body.on('click', '.vote-result', function(e) { + // e.preventDefault(); - var $this = $(this); - var $proposalDetail = $this.parents('.proposal-detail'); - var $resultsContainer = $proposalDetail.find('.results-container'); + var $this = $(this); + var $proposalDetail = $this.parents('.proposal-detail'); + var $resultsContainer = $proposalDetail.find('.results-container'); - if($resultsContainer.css('display') === 'none') { - Main.loadRanking($resultsContainer, topic_id, 1); - } else { - $proposalDetail.find('.experience-proposal-container').show(); - $proposalDetail.find('.talk-proposal-container').show(); - $resultsContainer.hide(); + if($resultsContainer.css('display') === 'none') { + Main.loadRanking($resultsContainer, topic_id, 1); + } else { + $proposalDetail.find('.experience-proposal-container').show(); + $proposalDetail.find('.talk-proposal-container').show(); + $resultsContainer.hide(); - // remove '/resultados' from URL - window.location.hash = window.location.hash.split('/resultados')[0]; - e.preventDefault(); - } + // remove '/resultados' from URL + window.location.hash = window.location.hash.split('/resultados')[0]; + e.preventDefault(); + } + }); + + }).fail(function(){ + $loading.hide(); + $('.support-proposal .alert').show(); }); + }, + loadRanking: function($resultsContainer, topic_id, page) { + $resultsContainer.find('.loading').show(); + $resultsContainer.find('.results-content').hide(); + + var per_page = 10; + var parentId = topic_id; + //var url = host + '/api/v1/proposals_discussion_plugin/' + topic_id + '/ranking' + '?private_token=' + Main.private_token + '&per_page='+per_page+'&page='+page; + var url = host + '/api/v1/proposals_discussion_plugin/' + topic_id + '/ranking' + '?per_page='+per_page+'&page='+page; + $.getJSON(url).done(function( data, stats, xhr ) { + data.pagination = { + total: parseInt(xhr.getResponseHeader('Total')), + per_page: parseInt(xhr.getResponseHeader('Per-Page')), + page: page, + }; + + // hack: add more info to result table + var $header = $resultsContainer.closest('.categories').find('.proposal-header'); + data.title = $header.find('.title').text(); + data.topic_id = $header.find('a').attr('href').match(/\d+/)[0]; + + $resultsContainer.html(resultsTemplate(data)); + $resultsContainer.find('.loading').hide(); + $resultsContainer.find('.results-content').show(); + $resultsContainer.find('.timeago').timeago(); + $resultsContainer.show(); + $resultsContainer.find('.footable').footable(); // must be called on visible elements. + + + if(data.pagination.total > data.pagination.per_page) { + $resultsContainer.find('.paging').pagination({ + items: data.pagination.total, + itemsOnPage: data.pagination.per_page, + currentPage: data.pagination.page, + prevText: '«', + nextText: '»', + cssStyle: 'compact-theme', + onPageClick: function(page, e) { + Main.loadRanking($resultsContainer, topic_id, page); + e.preventDefault(); + } + }); + } + $resultsContainer.find('.abstract-text .truncated').click(function() { + $(this).toggleClass('truncated'); + }); + + var scrollTop = $(document).height(); + var proposalOffset = $resultsContainer.offset(); + if(proposalOffset){ + scrollTop = proposalOffset.top; + } - }).fail(function(){ - $loading.hide(); - $('.support-proposal .alert').show(); + // scroll to the end + $('html, body').animate({scrollTop: scrollTop }, 'fast'); }); - }, - loadRanking: function($resultsContainer, topic_id, page) { - $resultsContainer.find('.loading').show(); - $resultsContainer.find('.results-content').hide(); - - var per_page = 10; - var parentId = topic_id; - //var url = host + '/api/v1/proposals_discussion_plugin/' + topic_id + '/ranking' + '?private_token=' + Main.private_token + '&per_page='+per_page+'&page='+page; - var url = host + '/api/v1/proposals_discussion_plugin/' + topic_id + '/ranking' + '?per_page='+per_page+'&page='+page; - $.getJSON(url).done(function( data, stats, xhr ) { - data.pagination = { - total: parseInt(xhr.getResponseHeader('Total')), - per_page: parseInt(xhr.getResponseHeader('Per-Page')), - page: page, - }; - - // hack: add more info to result table - var $header = $resultsContainer.closest('.categories').find('.proposal-header'); - data.title = $header.find('.title').text(); - data.topic_id = $header.find('a').attr('href').match(/\d+/)[0]; - - $resultsContainer.html(resultsTemplate(data)); - $resultsContainer.find('.loading').hide(); - $resultsContainer.find('.results-content').show(); - $resultsContainer.find('.timeago').timeago(); - $resultsContainer.show(); - $resultsContainer.find('.footable').footable(); // must be called on visible elements. - - - if(data.pagination.total > data.pagination.per_page) { - $resultsContainer.find('.paging').pagination({ - items: data.pagination.total, - itemsOnPage: data.pagination.per_page, - currentPage: data.pagination.page, - prevText: '«', - nextText: '»', - cssStyle: 'compact-theme', - onPageClick: function(page, e) { - Main.loadRanking($resultsContainer, topic_id, page); - e.preventDefault(); - } - }); + $('.experience-proposal-container').hide(); + $('.talk-proposal-container').hide(); + }, + loginCallback: function(loggedIn, token, user) { + logged_in = loggedIn; + var requireLoginContainer; + $('.login .message').text(''); + if(loginButton){ + requireLoginContainer = loginButton.closest('.require-login-container'); } - $resultsContainer.find('.abstract-text .truncated').click(function() { - $(this).toggleClass('truncated'); - }); - var scrollTop = $(document).height(); - var proposalOffset = $resultsContainer.offset(); - if(proposalOffset){ - scrollTop = proposalOffset.top; + if(user && !Main.getUser()) { + Main.setUser(user); } - // scroll to the end - $('html, body').animate({scrollTop: scrollTop }, 'fast'); - }); - $('.experience-proposal-container').hide(); - $('.talk-proposal-container').hide(); - }, - loginCallback: function(loggedIn, token, user) { - logged_in = loggedIn; - var requireLoginContainer; - $('.login .message').text(''); - if(loginButton){ - requireLoginContainer = loginButton.closest('.require-login-container'); - } - - if(user && !Main.getUser()) { - Main.setUser(user); - } - - if(logged_in) { - Main.showLogout(); - if(token){ - Main.private_token = token; - } + if(logged_in) { + Main.showLogout(); + if(token){ + Main.private_token = token; + } - $.cookie('_dialoga_session', Main.private_token); + $.cookie('_dialoga_session', Main.private_token); - if(requireLoginContainer){ - // requireLoginContainer = $('.require-login-container'); - requireLoginContainer.find('.require-login').show(); - requireLoginContainer.find('.require-login .message').show(); - requireLoginContainer.find('.login-container').hide(); + if(requireLoginContainer){ + // requireLoginContainer = $('.require-login-container'); + requireLoginContainer.find('.require-login').show(); + requireLoginContainer.find('.require-login .message').show(); + requireLoginContainer.find('.login-container').hide(); - $('#login-panel').hide(); + $('#login-panel').hide(); + } + } else if (user) { + // fluxo signup vindo das caixas de login dentro dos programas + if(requireLoginContainer.length > 0){ + var loginContainer = requireLoginContainer.find('.login-container'); + loginContainer.show(); + loginContainer.find('.new-user').click(); + var $signupForm = loginContainer.find('#signup-form'); + fillSignupForm($signupForm, user); + } else { //signup botão Entrar principal vindo de OAUTH + $('#login-panel').find('a.new-user').click(); + var $signupForm = $('#login-panel #signup-form'); + fillSignupForm($signupForm, user); + } + } else { + requireLoginContainer.find('.require-login').hide(); + requireLoginContainer.find('.login-container').show(); + Main.showLogin(); } - } else if (user) { - // fluxo signup vindo das caixas de login dentro dos programas - if(requireLoginContainer.length > 0){ - var loginContainer = requireLoginContainer.find('.login-container'); - loginContainer.show(); - loginContainer.find('.new-user').click(); - var $signupForm = loginContainer.find('#signup-form'); - fillSignupForm($signupForm, user); - } else { //signup botão Entrar principal vindo de OAUTH - $('#login-panel').find('a.new-user').click(); - var $signupForm = $('#login-panel #signup-form'); - fillSignupForm($signupForm, user); + }, + guid: function() { + function s4() { + return Math.floor((1 + Math.random()) * 0x10000) + .toString(16) + .substring(1); } - } else { - requireLoginContainer.find('.require-login').hide(); - requireLoginContainer.find('.login-container').show(); - Main.showLogin(); - } - }, - guid: function() { - function s4() { - return Math.floor((1 + Math.random()) * 0x10000) - .toString(16) - .substring(1); - } - return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); - }, - display_article: function(article_id, backTo) { - //var url = host + '/api/v1/articles/' + article_id + '?private_token=' + Main.private_token; - var url = host + '/api/v1/articles/' + article_id; - $.getJSON(url).done(function( data ) { - $('#article-container .article-content').html(articleTemplate(data.article)); - $('#article-container').show(); - $('#proposal-categories').hide(); - $('#proposal-group').hide(); - $('nav').hide(); - $('#content').hide(); - $('.content').removeClass('background'); /* Remove class background*/ - $('#article-container .go-back').attr('href', backTo); - }); - }, - // inicio Eduardo - randomProposalByTheme: function(themeClasses) { - $('#proposal-group .proposal-list .proposal-item').hide(); - $.each(themeClasses, function(i, themeClass) { - var proposalsByTheme = $('#proposal-group .proposal-list .proposal-item').find('.' + themeClass); - var randomizedIndex = Math.floor(Math.random() * proposalsByTheme.length); - var proposalToShow = $(proposalsByTheme[randomizedIndex]).parents().filter('.proposal-item'); - $(proposalToShow).show(); - }); - }, - display_category_tab: function(){ - // $('#proposal-group').hide(); - this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); - $('#proposal-group').show(); /* Show random proposals*/ - $('.content').addClass('background'); /* Add class background */ - $('#proposal-categories').show(); - $('#nav-proposal-categories a').addClass('active'); - $('#nav-proposal-group a').removeClass('active'); - $('.proposal-category-items').hide(); - $('.proposal-category .arrow-box').hide(); - $('.proposal-detail').hide().removeClass('hide'); - $('#article-container').hide(); - - $('#content').show(); - $('nav').show(); - - this.computeBoxHeight(); - }, - display_proposals_tab: function(){ - // $('#proposal-categories').hide(); - // this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); - $('.proposal-item').show(); /* Show all programs */ - $('#proposal-group').show(); - $('#proposal-categories').show(); - $('.proposal-category-items').hide(); - $('.proposal-detail').hide().removeClass('hide'); - $('#nav-proposal-group a').addClass('active'); - $('#nav-proposal-categories a').removeClass('active'); - $('#content').show(); - $('.content').addClass('background'); /* Add class background */ - $('#article-container').hide(); - $('nav').show(); - $('html, body').animate({ scrollTop: $('#proposal-group').offset().top }, 'fast'); - - this.computeBoxHeight(); - }, - // fim Eduardo - display_proposal: function(proposal_id){ - $('#proposal-categories').hide(); - $('#proposal-group').hide(); - $('.proposal-category-items').hide(); /* Hide Category Items */ - $('.content').removeClass('background'); /* Remove class background*/ - $('nav').hide(); - $('#content').hide(); - $('#article-container').hide(); - // $('.make-proposal-form').hide(); - // $('.login-container').hide(); - $('.proposal-detail').hide().removeClass('hide'); // hide all proposals - // $('.proposal-detail-base').hide(); - var $proposal = $('#' + proposal_id); - $proposal.find('.proposal-detail-base').hide(); - $proposal.show(); - $proposal.find('.proposal-header').show(); - $proposal.find('.make-proposal-container').show(); - $proposal.find('.support-proposal-container').show(); - $proposal.find('.results-container').hide(); - $proposal.find('.results-container .loading').hide(); - $proposal.find('.results-container .results-content').hide(); - $proposal.find('.experience-proposal-container').show(); - $proposal.find('.talk-proposal-container').show(); - $proposal.find('.calendar').hide(); - var active_category = ''; - var category_id; - switch($proposal.find('.categories').attr('class')) { - case 'categories saude': - active_category = 'saude'; - category_id = 180; - break; - case 'categories educacao': - active_category = 'educacao'; - category_id = 181; - break; - case 'categories seguranca-publica': - active_category = 'seguranca-publica'; - category_id = 182; - break; - case 'categories reducao-da-pobreza': - active_category = 'reducao-da-pobreza'; - category_id = 183; - break; - } - - var topic_id = proposal_id.split('-').pop(); - this.loadRandomProposal(topic_id); - Main.display_events(category_id, active_category); - }, - display_proposal_detail: function(proposal_id){ - $('.content').removeClass('background'); /* Remove class background */ - $('#proposal-categories').hide(); - $('#proposal-group').hide(); - $('nav').hide(); - $('#content').hide(); - $('#article-container').hide(); - var $proposal = $('#proposal-item-' + proposal_id); - $proposal.find('.proposal-header').hide(); - $proposal.find('.make-proposal-container').hide(); - $proposal.find('.support-proposal-container').hide(); - $proposal.find('.results-container').hide(); - $proposal.find('.experience-proposal-container').hide(); - $proposal.find('.talk-proposal-container').hide(); - $proposal.find('.body').show(); - $proposal.show(); - - //var url = host + '/api/v1/articles/' + proposal_id + '?private_token=' + Main.private_token + '&fields=id,body&content_type=ProposalsDiscussionPlugin::Topic'; - var url = host + '/api/v1/articles/' + proposal_id + '?fields=id,body&content_type=ProposalsDiscussionPlugin::Topic'; - $.getJSON(url).done(function( data ) { - $('#proposal-item-' + proposal_id + ' .body-content').replaceWith(data.article.body); - }) - .fail(function( jqxhr, textStatus, error ) { - var err = textStatus + ', ' + error; - console.error( 'Request Failed: ' + err ); - }); - }, - display_proposal_by_category: function(item){ - var $item = $('#' + item); - - if($item.hasClass('proposal-category-items')){ - //Display Topics or Discussion by category - $('nav').show(); - $('#content').show(); + return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); + }, + display_article: function(article_id, backTo) { + //var url = host + '/api/v1/articles/' + article_id + '?private_token=' + Main.private_token; + var url = host + '/api/v1/articles/' + article_id; + $.getJSON(url).done(function( data ) { + $('#article-container .article-content').html(articleTemplate(data.article)); + $('#article-container').show(); + $('#proposal-categories').hide(); + $('#proposal-group').hide(); + $('nav').hide(); + $('#content').hide(); + $('.content').removeClass('background'); /* Remove class background*/ + $('#article-container .go-back').attr('href', backTo); + }); + }, + // inicio Eduardo + randomProposalByTheme: function(themeClasses) { + $('#proposal-group .proposal-list .proposal-item').hide(); + $.each(themeClasses, function(i, themeClass) { + var proposalsByTheme = $('#proposal-group .proposal-list .proposal-item').find('.' + themeClass); + var randomizedIndex = Math.floor(Math.random() * proposalsByTheme.length); + var proposalToShow = $(proposalsByTheme[randomizedIndex]).parents().filter('.proposal-item'); + $(proposalToShow).show(); + }); + }, + display_category_tab: function(){ + // $('#proposal-group').hide(); + this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); + $('#proposal-group').show(); /* Show random proposals*/ + $('.content').addClass('background'); /* Add class background */ $('#proposal-categories').show(); $('#nav-proposal-categories a').addClass('active'); $('#nav-proposal-group a').removeClass('active'); - $('#proposal-group').hide(); /* Hide section "Programas" */ - $('.content').addClass('background'); /* Add class background */ $('.proposal-category-items').hide(); + $('.proposal-category .arrow-box').hide(); $('.proposal-detail').hide().removeClass('hide'); $('#article-container').hide(); - $item.toggle( 'blind', 200, function () { - var itemOffset = $item.offset(); - if(itemOffset){ - $('html, body').animate({ scrollTop: itemOffset.top }, 'fast'); - } - } ); - $('.proposal-category .arrow-box').hide(); - var categorySlug = $item.data('category'); - $('#proposal-category-' + categorySlug).find('.arrow-box').show(); - this.computeBoxHeight(); - - } - }, - addBarraDoGoverno: function(){ - - if( BARRA_ADDED ) { return; } - - var HTML_BODY_PREPEND = '' + - '
' + - '' + - '
'; - - var HTML_BODY_APPEND = ''+ - '' + - ''; - - var STYLE_TEMA_AZUL = '' + - '