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; if(participa){ var host = 'http://www.participa.br'; var private_token = '375bee7e17d0021af7160ce664874618'; //participa var proposal_discussion = '92856'; //participa }else{ var host = 'http://noosfero.com:3000'; //var private_token = 'bd8996155f5ea4354e42fee50b4b6891'; //casa var private_token = 'aae32bf5031e895b00a20a529d763b31'; //local serpro var proposal_discussion = '632'; //local serpro //var proposal_discussion = '401'; //casa } var BARRA_ADDED = false; var HIDE_BARRA_DO_GOVERNO = false; Main = (function(){ return { loadRandomProposal: function (topic_id, 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' + '?private_token=' + 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(); if(data.articles.length === 0) { $noProposals.show(); return; } var article = data.articles[0]; $randomProposal.html(supportProposalTemplate(article)); captcha = Main.loadCaptcha($randomProposal.find('.captcha')[0]); $body.off('click', '.vote-actions .skip'); $body.on('click', '.vote-actions .skip', function(e) { contextMain.loadRandomProposal(topic_id, private_token); 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, private_token); e.preventDefault(); return; } */ $.ajax({ type: 'post', url: host + '/api/v1/articles/' + article.id + '/vote', data: { value: $(this).data('vote-value'), private_token: private_token, captchaResponse: grecaptcha.getResponse(captcha) }, }).done(function( /*data*/ ) { ProposalApp.addVotedProposal(article.id); contextMain.loadRandomProposal(topic_id, private_token); }); 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(); }); }); }, 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=' + 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: 'Anterior', nextText: 'Próximo', 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) { logged_in = loggedIn; $('.login .message').text(''); if(logged_in) { if(token){ private_token = token; } loginButton.siblings('.save-article-form').show(); loginButton.siblings('.save-article-form .message').show(); loginButton.siblings('.login-container').hide(); $.cookie('_dialoga_session', private_token); } else { loginButton.siblings('.save-article-form').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(); }, display_category_tab: function(){ $('#proposal-group').hide(); $('#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(); $('#proposal-group').show(); $('#nav-proposal-group a').addClass('active'); $('#nav-proposal-categories a').removeClass('active'); $('#content').show(); $('nav').show(); }, display_proposal: function(proposal_id){ $('#proposal-categories').hide(); $('#proposal-group').hide(); $('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').slick(); var topic_id = proposal_id.split('-').pop(); this.loadRandomProposal(topic_id, private_token); }, 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=' + 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-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 = '' + '