diff --git a/Gemfile b/Gemfile index 2f0575e93ca..17dc216379e 100644 --- a/Gemfile +++ b/Gemfile @@ -105,6 +105,8 @@ group :assets do gem "coffee-rails", "~> 3.2.2" gem "uglifier", "~> 1.3.0" gem "therubyracer" + gem 'turbolinks' + gem 'jquery-turbolinks' gem 'chosen-rails', "0.9.8" gem 'select2-rails' diff --git a/Gemfile.lock b/Gemfile.lock index 64d351a1f98..bd52995e617 100644 --- a/Gemfile.lock +++ b/Gemfile.lock @@ -232,6 +232,9 @@ GEM jquery-rails (2.1.3) railties (>= 3.1.0, < 5.0) thor (~> 0.14) + jquery-turbolinks (1.0.0) + railties (>= 3.1.0) + turbolinks jquery-ui-rails (2.0.2) jquery-rails railties (>= 3.1.0) @@ -461,6 +464,8 @@ GEM treetop (1.4.12) polyglot polyglot (>= 0.3.1) + turbolinks (1.1.1) + coffee-rails tzinfo (0.3.37) uglifier (1.3.0) execjs (>= 0.3.0) @@ -521,6 +526,7 @@ DEPENDENCIES httparty jquery-atwho-rails (= 0.1.7) jquery-rails (= 2.1.3) + jquery-turbolinks jquery-ui-rails (= 2.0.2) kaminari (~> 0.14.1) launchy @@ -564,5 +570,6 @@ DEPENDENCIES test_after_commit therubyracer thin + turbolinks uglifier (~> 1.3.0) webmock diff --git a/app/assets/javascripts/application.js b/app/assets/javascripts/application.js index adb4009fbc2..bbec12ad08c 100644 --- a/app/assets/javascripts/application.js +++ b/app/assets/javascripts/application.js @@ -14,6 +14,8 @@ //= require jquery.waitforimages //= require jquery.atwho //= require jquery.scrollto +//= require turbolinks +//= require jquery.turbolinks //= require bootstrap //= require modernizr //= require chosen-jquery diff --git a/app/assets/javascripts/main.js.coffee b/app/assets/javascripts/main.js.coffee index 39ec86e623f..fb51d379ebd 100644 --- a/app/assets/javascripts/main.js.coffee +++ b/app/assets/javascripts/main.js.coffee @@ -41,6 +41,14 @@ window.linkify = (str) -> exp = /(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig return str.replace(exp,"$1") +window.startSpinner = -> + $('.turbolink-spinner').fadeIn() + +window.stopSpinner = -> + $('.turbolink-spinner').fadeOut() + +document.addEventListener("page:fetch", startSpinner) +document.addEventListener("page:receive", stopSpinner) $ -> # Click a .one_click_select field, select the contents diff --git a/app/views/layouts/_head_panel.html.haml b/app/views/layouts/_head_panel.html.haml index 8f6873e1dfc..0092d8cd5b3 100644 --- a/app/views/layouts/_head_panel.html.haml +++ b/app/views/layouts/_head_panel.html.haml @@ -8,6 +8,10 @@ %span.separator %h1.project_name= title %ul.nav + %li + %a + %div.hide.turbolink-spinner + %i.icon-refresh.icon-spin %li = render "layouts/search" %li