define(['handlebars', 'fastclick', 'handlebars_helpers'], function(Handlebars, FastClick){ /* global Handlebars, $ */ // 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').innerHTML); var resultsTemplate = Handlebars.compile(document.getElementById('results').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 participa = true; //Detects for localhost settings var patt = new RegExp(":3000/"); if(patt.test(window.location.href)) participa = false; if(participa){ var host = 'http://www.participa.br'; var proposal_discussion = '103358'; //participa window.recaptchaSiteKey = '6LcLPAcTAAAAAKsd0bxY_TArhD_A7OL19SRCW7_i' }else{ var host = 'http://noosfero.com:3000'; var proposal_discussion = '372'; //local serpro window.recaptchaSiteKey = '6LdsWAcTAAAAAChTUUD6yu9fCDhdIZzNd7F53zf-' //http://noosfero.com/ } var BARRA_ADDED = false; var HIDE_BARRA_DO_GOVERNO = false; Main = (function(){ return { private_token: '375bee7e17d0021af7160ce664874618', 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]; } return proposalId; }, loadRandomProposal: function (topic_id) { var private_token = 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 = host + '/api/v1/articles/' + topic_id + '/children'; var childId = this.getProposalId(); if(childId != 0){ url += '/'+childId; } url += '?private_token=' + Main.private_token + '&limit=1&order=random()&_='+new Date().getTime()+'&fields=id,name,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; } 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) { contextMain.loadRandomProposal(topic_id); e.preventDefault(); }); $body.off('click', '.vote-actions .like'); $body.on('click', '.vote-actions .like', function(e) { //Helps to prevent more than one vote per proposal if(ProposalApp.hasProposalbeenVoted(article.id)){ console.log("Proposta " + article.id + " já havia sido votada"); contextMain.loadRandomProposal(topic_id); e.preventDefault(); return; } if(!logged_in) { $(this).closest('.support-proposal').find('.send-button a').click(); e.preventDefault(); return; } $.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*/ ) { ProposalApp.addVotedProposal(article.id); contextMain.loadRandomProposal(topic_id); }); e.preventDefault(); }); $body.off('click', '.vote-result'); $body.on('click', '.vote-result', function(e) { 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 { $('.experience-proposal-container').show(); $('.talk-proposal-container').show(); $resultsContainer.hide(); } 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 url = host + '/api/v1/proposals_discussion_plugin/' + topic_id + '/ranking' + '?private_token=' + Main.private_token + '&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, }; $resultsContainer.html(resultsTemplate(data)); $resultsContainer.find('.loading').hide(); $resultsContainer.find('.results-content').show(); $(".timeago").timeago(); $resultsContainer.show(); 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(); } }); } // scroll to the end $('html, body').animate({ scrollTop: $(document).height() }, 'fast'); }); $('.experience-proposal-container').hide(); $('.talk-proposal-container').hide(); }, loginCallback: function(loggedIn, token, user) { logged_in = loggedIn; $('.login .message').text(''); if(logged_in) { if(token){ Main.private_token = token; } loginButton.siblings('.require-login').show(); loginButton.siblings('.require-login .message').show(); loginButton.siblings('.login-container').hide(); $.cookie('_dialoga_session', Main.private_token); } else if (user) { var loginContainer = loginButton.siblings('.login-container'); loginContainer.show(); loginContainer.find('.new-user').click(); var signupForm = loginContainer.find('#signup-form'); signupForm.find("#user_email").val(user.email); signupForm.find("#user_name").val(user.login); signupForm.find("#user_oauth_providers").val(user.oauth_providers); //signupForm.find(".password").hide(); //signupForm.find(".password-confirmation").hide(); } else { loginButton.siblings('.require-login').hide(); loginButton.siblings('.login-container').show(); } }, guid: function() { function s4() { return Math.floor((1 + Math.random()) * 0x10000) .toString(16) .substring(1); } return s4() + s4() + '-' + s4() + '-' + s4() + '-' + s4() + '-' + s4() + s4() + s4(); }, // 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-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(); $('#content').show(); $('nav').show(); }, display_proposals_tab: function(){ $('#proposal-categories').hide(); this.randomProposalByTheme(['category-saude', 'category-seguranca-publica', 'category-educacao', 'category-reducao-da-pobreza']); $('#proposal-group').show(); $('#nav-proposal-group a').addClass('active'); $('#nav-proposal-categories a').removeClass('active'); $('#content').show(); $('nav').show(); }, // fim Eduardo display_proposal: function(proposal_id){ $('#proposal-categories').hide(); $('#proposal-group').hide(); $('.proposal-category-items').hide(); /* Hide Category Items */ $('nav').hide(); $('#content').hide(); // $('.make-proposal-form').hide(); // $('.login-container').hide(); $('.proposal-detail').hide(); // hide all proposals // $('.proposal-detail-base').hide(); $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 = ''; switch($proposal.find('.categories').attr('class')) { case 'categories saude': active_category = 'saude'; break; case 'categories educacao': active_category = 'educacao'; break; case 'categories seguranca-publica': active_category = 'seguranca-publica'; break; case 'categories reducao-da-pobreza': active_category = 'reducao-da-pobreza'; break; } $proposal.find('.calendar.' + active_category).show(); $proposal.find('.calendar').slick(); var topic_id = proposal_id.split('-').pop(); this.loadRandomProposal(topic_id); }, display_proposal_detail: function(proposal_id){ $('#proposal-categories').hide(); $('#proposal-group').hide(); $('nav').hide(); $('#content').hide(); $proposal = $('#proposal-item-' + proposal_id); $proposal.find('.make-proposal-form').hide(); $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'; $.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.log( '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(); $('#proposal-categories').show(); $('#nav-proposal-categories a').addClass('active'); $('#nav-proposal-group a').removeClass('active'); $('#proposal-group').hide(); /* Hide section "Programas" */ $('.proposal-category-items').hide(); $('.proposal-detail').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(); } }, addBarraDoGoverno: function(){ if( BARRA_ADDED ) { return; } var HTML_BODY_PREPEND = '' + '