Commit 1ac5135310a32febbe0b83236b2e1adfea13898b
1 parent
13e18eaf
Exists in
jasmine-testing
Refactory Url object and require.js deps to another paths configurations
Showing
4 changed files
with
71 additions
and
61 deletions
Show diff stats
index.html
@@ -14,32 +14,46 @@ | @@ -14,32 +14,46 @@ | ||
14 | */ | 14 | */ |
15 | var Url = (function(){ | 15 | var Url = (function(){ |
16 | 16 | ||
17 | + var _base = ''; | ||
18 | + | ||
17 | return { | 19 | return { |
18 | 20 | ||
19 | initBase: function(){ | 21 | initBase: function(){ |
20 | - var base = window.location.href; | 22 | + _base = window.location.href; |
21 | var host = window.location.host; | 23 | var host = window.location.host; |
22 | var regex = new RegExp(".*" + host + '/', "g"); | 24 | var regex = new RegExp(".*" + host + '/', "g"); |
23 | 25 | ||
24 | if(host){ | 26 | if(host){ |
25 | - base = base.replace(regex,''); | 27 | + _base = _base.replace(regex,''); |
26 | }else{ | 28 | }else{ |
27 | - base = base.replace('index.html',''); | 29 | + _base = _base.replace('index.html',''); |
30 | + } | ||
31 | + return this; | ||
32 | + }, | ||
33 | + getBase: function(){ | ||
34 | + | ||
35 | + if(!_base){ | ||
36 | + this.initBase(); | ||
28 | } | 37 | } |
29 | - return base | 38 | + |
39 | + return _base; | ||
30 | }, | 40 | }, |
31 | removeUrlParameters: function(full_url){ | 41 | removeUrlParameters: function(full_url){ |
42 | + full_url = full_url || _base; | ||
32 | var url_base = full_url.split('#').shift(); | 43 | var url_base = full_url.split('#').shift(); |
33 | return url_base; | 44 | return url_base; |
34 | }, | 45 | }, |
35 | addBaseUrl: function(filename){ | 46 | addBaseUrl: function(filename){ |
36 | - var base = window.location.href; | 47 | + base = window.location.href; |
37 | if(base.match(/file:/) || filename.match(/http:/)){ | 48 | if(base.match(/file:/) || filename.match(/http:/)){ |
38 | base = ''; | 49 | base = ''; |
39 | }else{ | 50 | }else{ |
40 | base = this.removeUrlParameters(base) + '/'; | 51 | base = this.removeUrlParameters(base) + '/'; |
41 | } | 52 | } |
42 | return base + filename; | 53 | return base + filename; |
54 | + }, | ||
55 | + toString: function(){ | ||
56 | + return this.getBase(); | ||
43 | } | 57 | } |
44 | } | 58 | } |
45 | 59 | ||
@@ -75,12 +89,21 @@ | @@ -75,12 +89,21 @@ | ||
75 | function loadJavaScriptAsync(file_path){ | 89 | function loadJavaScriptAsync(file_path){ |
76 | } | 90 | } |
77 | 91 | ||
78 | - function loadRequireJS(){ | 92 | + function loadRequireJS(onLoad){ |
79 | var head = document.getElementsByTagName('head')[0]; | 93 | var head = document.getElementsByTagName('head')[0]; |
80 | var script_element = document.createElement('script'); | 94 | var script_element = document.createElement('script'); |
81 | script_element.type = 'text/javascript'; | 95 | script_element.type = 'text/javascript'; |
82 | script_element.src = makeJSURL('js/require.js'); | 96 | script_element.src = makeJSURL('js/require.js'); |
83 | - script_element.setAttribute('data-main', makeJSURL('js/requirejs-config.js')); | 97 | + // script_element.setAttribute('data-main', makeJSURL('js/requirejs-config.js')); |
98 | + if(onLoad instanceof Function){ | ||
99 | + script_element.onreadystatechange = function(){ | ||
100 | + if (this.readyState == 'complete'){ | ||
101 | + onload(); | ||
102 | + } | ||
103 | + } | ||
104 | + script_element.addEventListener('load', onLoad); | ||
105 | + } | ||
106 | + | ||
84 | head.appendChild(script_element); | 107 | head.appendChild(script_element); |
85 | } | 108 | } |
86 | loadCSSFiles(); | 109 | loadCSSFiles(); |
@@ -197,7 +220,7 @@ | @@ -197,7 +220,7 @@ | ||
197 | <div class="info">Ela se tornará pública em até 24 horas após o envio e poderá ser apoiada por outros participantes.</div> | 220 | <div class="info">Ela se tornará pública em até 24 horas após o envio e poderá ser apoiada por outros participantes.</div> |
198 | <div class="send-proposal-button send-button"><a href="#"><span>Envie Sua Proposta</span></a></div> | 221 | <div class="send-proposal-button send-button"><a href="#"><span>Envie Sua Proposta</span></a></div> |
199 | <div class="login-container hide">Login</div> | 222 | <div class="login-container hide">Login</div> |
200 | - <form class="make-proposal-form save-article-form hide" id="make-proposal-form-{{id}}" action="{{proposal_action ../article . }}" method="post"> | 223 | + <form class="make-proposal-form save-article-form hide" id="make-proposal-form-{{id}}" action="{{proposal_action ../article . }}"> |
201 | <div class="message hide"></div> | 224 | <div class="message hide"></div> |
202 | <div> | 225 | <div> |
203 | <div><label for="article_abstract">Descrição</label></div> | 226 | <div><label for="article_abstract">Descrição</label></div> |
@@ -230,7 +253,7 @@ | @@ -230,7 +253,7 @@ | ||
230 | <p>Esta história pode nos ajudar a melhorar a nossa ação e não será divulgada.</p> | 253 | <p>Esta história pode nos ajudar a melhorar a nossa ação e não será divulgada.</p> |
231 | <div class="send-experience-button send-button"><a href="#"><span>Envie Sua Experiência</span></a></div> | 254 | <div class="send-experience-button send-button"><a href="#"><span>Envie Sua Experiência</span></a></div> |
232 | <div class="login-container hide">Login</div> | 255 | <div class="login-container hide">Login</div> |
233 | - <form class="make-experience-form save-article-form hide" id="make-experience-form-{{id}}" action="/api/v1/articles/{{id}}/children" method="post"> | 256 | + <form class="make-experience-form save-article-form hide" id="make-experience-form-{{id}}" action="/api/v1/articles/{{id}}/children"> |
234 | <div class="message hide"></div> | 257 | <div class="message hide"></div> |
235 | <div> | 258 | <div> |
236 | <div> | 259 | <div> |
@@ -258,7 +281,7 @@ | @@ -258,7 +281,7 @@ | ||
258 | <div class="date"><i class="fa fa-calendar"></i> 17/06/2015</div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | 281 | <div class="date"><i class="fa fa-calendar"></i> 17/06/2015</div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> |
259 | </li> | 282 | </li> |
260 | <li> | 283 | <li> |
261 | - <span>Tereza Campello</span> | 284 | + <span>Teresa Campello</span> |
262 | <span>Desenvolvimento Social</span> | 285 | <span>Desenvolvimento Social</span> |
263 | <div class="date"><i class="fa fa-calendar"></i> 18/06/2015</div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> | 286 | <div class="date"><i class="fa fa-calendar"></i> 18/06/2015</div><div class="time"><i class="fa fa-clock-o"></i> 19:00</div> |
264 | </li> | 287 | </li> |
@@ -333,17 +356,22 @@ | @@ -333,17 +356,22 @@ | ||
333 | </div> | 356 | </div> |
334 | <div class="oauth"> | 357 | <div class="oauth"> |
335 | <div class="label">Acessar com:</div> | 358 | <div class="label">Acessar com:</div> |
336 | - <a href="http://www.participa.br/plugin/oauth_client/facebook?oauth_client_popup=true&id=1" target="_blank" class="facebook oauth-login">Facebook</a> | ||
337 | - <a href="http://www.participa.br/plugin/oauth_client/google_oauth2?oauth_client_popup=true&id=2" target="_blank" class="google oauth-login">Google +</a> | 359 | + <a href="/plugin/oauth_client/facebook?oauth_client_popup=true&id=1" target="_blank" class="facebook">Facebook</a> |
360 | + <a href="/plugin/oauth_client/google_oauth2?oauth_client_popup=true&id=2" target="_blank" class="google">Google +</a> | ||
338 | <a href="http://www.participa.br/account/signup" target="_blank" class="new-user">Cadastrar</a> | 361 | <a href="http://www.participa.br/account/signup" target="_blank" class="new-user">Cadastrar</a> |
339 | </div> | 362 | </div> |
340 | </form> | 363 | </form> |
341 | </script> | 364 | </script> |
342 | 365 | ||
343 | - <script type='text/javascript' > | ||
344 | - loadRequireJS(); | ||
345 | - </script> | 366 | + <script type='text/javascript'> |
367 | + loadRequireJS(function(){ | ||
368 | + | ||
369 | + require([ Url.getBase()+'/js/requirejs-config' ], function(){ | ||
370 | + requirejs(['proposal_app','main']); | ||
371 | + }); | ||
346 | 372 | ||
373 | + }); | ||
374 | + </script> | ||
347 | 375 | ||
348 | </body> | 376 | </body> |
349 | 377 |
js/main.js
1 | -define(['handlebars','handlebars_helpers'], function(Handlebars){ | 1 | +define(['handlebars_helpers','jquery_ui','jquery_slick', 'jquery_maxlength', 'layout'], function(Handlebars){ |
2 | 2 | ||
3 | /* global Handlebars, $ */ | 3 | /* global Handlebars, $ */ |
4 | // The template code | 4 | // The template code |
@@ -43,11 +43,6 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | @@ -43,11 +43,6 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | ||
43 | 43 | ||
44 | Main.navigateTo(window.location.hash); | 44 | Main.navigateTo(window.location.hash); |
45 | 45 | ||
46 | - $('.oauth-login').on('click touchstart', function(e) { | ||
47 | - Main.oauthClientAction($(this).attr('href')); | ||
48 | - e.preventDefault(); | ||
49 | - }); | ||
50 | - | ||
51 | //Actions for links | 46 | //Actions for links |
52 | $( '#nav-proposal-categories a' ).on('click touchstart', function(e){ | 47 | $( '#nav-proposal-categories a' ).on('click touchstart', function(e){ |
53 | e.preventDefault(); | 48 | e.preventDefault(); |
@@ -372,7 +367,6 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | @@ -372,7 +367,6 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | ||
372 | $('.results-container').hide(); | 367 | $('.results-container').hide(); |
373 | $('.experience-proposal-container').hide(); | 368 | $('.experience-proposal-container').hide(); |
374 | $('.talk-proposal-container').hide(); | 369 | $('.talk-proposal-container').hide(); |
375 | - $('#proposal-item-' + proposal_id + '.proposal-detail').show(); | ||
376 | $('#proposal-item-' + proposal_id + ' .body').show(); | 370 | $('#proposal-item-' + proposal_id + ' .body').show(); |
377 | 371 | ||
378 | var url = host + '/api/v1/articles/' + proposal_id + '?private_token=' + private_token + '&fields=id,body&content_type=ProposalsDiscussionPlugin::Topic'; | 372 | var url = host + '/api/v1/articles/' + proposal_id + '?private_token=' + private_token + '&fields=id,body&content_type=ProposalsDiscussionPlugin::Topic'; |
@@ -502,13 +496,17 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | @@ -502,13 +496,17 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | ||
502 | $('html, body').animate({ scrollTop: 0 }, 'fast'); | 496 | $('html, body').animate({ scrollTop: 0 }, 'fast'); |
503 | }, | 497 | }, |
504 | navigateToProposal: function(proposalId){ | 498 | navigateToProposal: function(proposalId){ |
505 | - var regexSubpages = /sobre-o-programa$/; | ||
506 | if(proposalId === undefined){ | 499 | if(proposalId === undefined){ |
507 | this.display_proposals_tab(); | 500 | this.display_proposals_tab(); |
508 | - }else if(regexSubpages.exec(window.location.hash) == null){ | ||
509 | - this.display_proposal('proposal-item-' + proposalId); | ||
510 | }else{ | 501 | }else{ |
511 | - this.display_proposal_detail(proposalId); | 502 | + this.display_proposal('proposal-item-' + proposalId); |
503 | + | ||
504 | + // show sub-page | ||
505 | + var regexSubpages = /sobre-o-programa$/; | ||
506 | + var m; | ||
507 | + if((m = regexSubpages.exec(window.location.hash)) !== null ){ | ||
508 | + this.display_proposal_detail(proposalId); | ||
509 | + } | ||
512 | } | 510 | } |
513 | }, | 511 | }, |
514 | navigateToCategory: function(categoryId){ | 512 | navigateToCategory: function(categoryId){ |
@@ -517,23 +515,6 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | @@ -517,23 +515,6 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | ||
517 | }else{ | 515 | }else{ |
518 | this.display_proposal_by_category('proposal-item-' + categoryId); | 516 | this.display_proposal_by_category('proposal-item-' + categoryId); |
519 | } | 517 | } |
520 | - }, | ||
521 | - oauthClientAction: function(url) { | ||
522 | - var child = window.open(url, "_blank"); | ||
523 | - var interval = setInterval(function() { | ||
524 | - try { | ||
525 | - if(!child.closed) { | ||
526 | - child.postMessage({ message: "requestOauthClientPluginResult" }, "*"); | ||
527 | - } | ||
528 | - } | ||
529 | - catch(e) { | ||
530 | - // we're here when the child window has been navigated away or closed | ||
531 | - if (child.closed) { | ||
532 | - clearInterval(interval); | ||
533 | - return; | ||
534 | - } | ||
535 | - } | ||
536 | - }, 300); | ||
537 | } | 518 | } |
538 | } | 519 | } |
539 | })(); | 520 | })(); |
@@ -569,12 +550,9 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | @@ -569,12 +550,9 @@ define(['handlebars','handlebars_helpers'], function(Handlebars){ | ||
569 | }); | 550 | }); |
570 | }); | 551 | }); |
571 | 552 | ||
572 | - window.addEventListener("message", function(ev) { | ||
573 | - if (ev.data.message === "oauthClientPluginResult") { | ||
574 | - Main.loginCallback(ev.data.logged_in, ev.data.private_token); | ||
575 | - ev.source.close(); | ||
576 | - } | ||
577 | - }); | 553 | + window.oauthPluginHandleLoginResult = function(loggedIn, token) { |
554 | + Main.loginCallback(loggedIn, token); | ||
555 | + } | ||
578 | 556 | ||
579 | if('onhashchange' in window){ | 557 | if('onhashchange' in window){ |
580 | window.onhashchange = function(){ | 558 | window.onhashchange = function(){ |
js/proposal-app.js
js/requirejs-config.js
1 | +var base,test = ''; | ||
2 | + | ||
1 | if(window.Url){ | 3 | if(window.Url){ |
2 | - var base = Url.initBase(); | ||
3 | - base = Url.removeUrlParameters(base) + '/js/'; | 4 | + var base = Url.initBase().removeUrlParameters()+'/js/'; |
4 | }else{ | 5 | }else{ |
5 | base = '../js' | 6 | base = '../js' |
7 | + test = window.location.href.replace(/\/\w*\.html/g,''); | ||
6 | } | 8 | } |
7 | 9 | ||
8 | requirejs.config({ | 10 | requirejs.config({ |
@@ -15,30 +17,35 @@ requirejs.config({ | @@ -15,30 +17,35 @@ requirejs.config({ | ||
15 | handlebars: 'handlebars-v3.0.1', | 17 | handlebars: 'handlebars-v3.0.1', |
16 | handlebars_helpers: 'handlebars-helpers', | 18 | handlebars_helpers: 'handlebars-helpers', |
17 | jquery_maxlength: 'jquery.maxlength.min', | 19 | jquery_maxlength: 'jquery.maxlength.min', |
18 | - slick: 'slick.min', | 20 | + jquery_slick: 'slick.min', |
19 | layout: 'layout', | 21 | layout: 'layout', |
20 | main: 'main', | 22 | main: 'main', |
21 | - proposal_app: 'proposal-app' | 23 | + proposal_app: 'proposal-app', |
24 | + test:test | ||
22 | }, | 25 | }, |
23 | shim: { | 26 | shim: { |
24 | 'handlebars':{ | 27 | 'handlebars':{ |
25 | deps: ['jquery'], | 28 | deps: ['jquery'], |
26 | exports: 'Handlebars' | 29 | exports: 'Handlebars' |
27 | }, | 30 | }, |
31 | + 'handlebars_helpers':{ | ||
32 | + deps: ['handlebars'], | ||
33 | + exports: 'Handlebars' | ||
34 | + }, | ||
28 | 'jquery_ui': { | 35 | 'jquery_ui': { |
29 | deps: ['jquery'] | 36 | deps: ['jquery'] |
30 | }, | 37 | }, |
31 | 'layout': { | 38 | 'layout': { |
32 | deps: ['jquery'] | 39 | deps: ['jquery'] |
33 | }, | 40 | }, |
34 | - 'jquery_maxlength': { | 41 | + 'jquery_maxlength':{ |
35 | deps: ['jquery'] | 42 | deps: ['jquery'] |
36 | }, | 43 | }, |
37 | - 'slick': { | 44 | + 'jquery_cookie':{ |
38 | deps: ['jquery'] | 45 | deps: ['jquery'] |
39 | }, | 46 | }, |
40 | - 'handlebars_helpers':{ | ||
41 | - deps: ['handlebars'] | 47 | + 'jquery_slick': { |
48 | + deps: ['jquery'] | ||
42 | }, | 49 | }, |
43 | 'proposal_app' :{ | 50 | 'proposal_app' :{ |
44 | deps: ['jquery'], | 51 | deps: ['jquery'], |
@@ -46,6 +53,3 @@ requirejs.config({ | @@ -46,6 +53,3 @@ requirejs.config({ | ||
46 | } | 53 | } |
47 | } | 54 | } |
48 | }); | 55 | }); |
49 | - | ||
50 | -requirejs(['jquery', 'proposal_app', 'jquery_ui','handlebars_helpers']); | ||
51 | -requirejs(['slick', 'jquery_maxlength', 'layout','main']); |