Commit cda5e66d authored by Robert Speicher's avatar Robert Speicher

Use History.js for better Tree browsing

Closes #1578
parent 679d0d6d
...@@ -10,6 +10,7 @@ ...@@ -10,6 +10,7 @@
//= require jquery.cookie //= require jquery.cookie
//= require jquery.endless-scroll //= require jquery.endless-scroll
//= require jquery.highlight //= require jquery.highlight
//= require jquery.history
//= require jquery.waitforimages //= require jquery.waitforimages
//= require jquery.atwho //= require jquery.atwho
//= require bootstrap //= require bootstrap
......
...@@ -8,9 +8,6 @@ $ -> ...@@ -8,9 +8,6 @@ $ ->
$('#tree-slider .tree-item-file-name a, .breadcrumb li > a').live "click", -> $('#tree-slider .tree-item-file-name a, .breadcrumb li > a').live "click", ->
$("#tree-content-holder").hide("slide", { direction: "left" }, 150) $("#tree-content-holder").hide("slide", { direction: "left" }, 150)
$('.project-refs-form').live
"ajax:beforeSend": -> $("#tree-content-holder").hide("slide", { direction: "left" }, 150)
# Make the entire tree-item row clickable, but not if clicking another link (like a commit message) # Make the entire tree-item row clickable, but not if clicking another link (like a commit message)
$("#tree-slider .tree-item").live 'click', (e) -> $("#tree-slider .tree-item").live 'click', (e) ->
$('.tree-item-file-name a', this).trigger('click') if (e.target.nodeName != "A") $('.tree-item-file-name a', this).trigger('click') if (e.target.nodeName != "A")
...@@ -19,3 +16,24 @@ $ -> ...@@ -19,3 +16,24 @@ $ ->
$('#tree-slider .tree-item-file-name a, .breadcrumb a, .project-refs-form').live $('#tree-slider .tree-item-file-name a, .breadcrumb a, .project-refs-form').live
"ajax:beforeSend": -> $('.tree_progress').addClass("loading") "ajax:beforeSend": -> $('.tree_progress').addClass("loading")
"ajax:complete": -> $('.tree_progress').removeClass("loading") "ajax:complete": -> $('.tree_progress').removeClass("loading")
# Maintain forward/back history while browsing the file tree
((window) ->
History = window.History
$ = window.jQuery
document = window.document
# Check to see if History.js is enabled for our Browser
unless History.enabled
return false
$ ->
$('#tree-slider .tree-item-file-name a, .breadcrumb li > a').live 'click', (e) ->
History.pushState(null, null, $(@).attr('href'))
return false
History.Adapter.bind window, 'statechange', ->
state = History.getState()
window.ajaxGet(state.url)
)(window)
%ul.breadcrumb %ul.breadcrumb
%li %li
%span.arrow %span.arrow
= link_to project_tree_path(@project, @ref), remote: true do = link_to project_tree_path(@project, @ref) do
= @project.name = @project.name
- tree.breadcrumbs(6) do |link| - tree.breadcrumbs(6) do |link|
\/ \/
...@@ -26,7 +26,7 @@ ...@@ -26,7 +26,7 @@
%tr.tree-item %tr.tree-item
%td.tree-item-file-name %td.tree-item-file-name
= image_tag "file_empty.png", size: '16x16' = image_tag "file_empty.png", size: '16x16'
= link_to "..", tree.up_dir_path, remote: true = link_to "..", tree.up_dir_path
%td %td
%td %td
...@@ -44,22 +44,9 @@ ...@@ -44,22 +44,9 @@
- else - else
= raw GitHub::Markup.render(content.name, content.data) = raw GitHub::Markup.render(content.name, content.data)
:javascript
$(function(){
history.pushState({ path: this.path }, '', "#{@history_path}");
});
- unless tree.is_blob? - unless tree.is_blob?
:javascript :javascript
// Load last commit log for each file in tree // Load last commit log for each file in tree
$(window).load(function(){ $(window).load(function(){
ajaxGet('#{@logs_path}'); ajaxGet('#{@logs_path}');
}); });
- if @path.present? && request.xhr?
:javascript
$(window).unbind('popstate');
$(window).bind('popstate', function() {
if(location.pathname.search("tree") != -1) {
$.ajax({type: "GET", url: location.pathname, dataType: "script"})}
else { location.href = location.pathname;}});
%tr{ class: "tree-item #{tree_hex_class(tree_item)}" } %tr{ class: "tree-item #{tree_hex_class(tree_item)}" }
%td.tree-item-file-name %td.tree-item-file-name
= tree_icon(type) = tree_icon(type)
%strong= link_to truncate(tree_item.name, length: 40), project_tree_path(@project, tree_join(@id || @commit.id, tree_item.name)), remote: true %strong= link_to truncate(tree_item.name, length: 40), project_tree_path(@project, tree_join(@id || @commit.id, tree_item.name))
%td.tree_time_ago.cgray %td.tree_time_ago.cgray
%span.log_loading.hide %span.log_loading.hide
Loading commit data... Loading commit data...
......
This diff is collapsed.
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment