Commit a100c578 authored by Dmitriy Zaporozhets's avatar Dmitriy Zaporozhets

Merge pull request #1665 from tsigo/history_js

Fix forward/back while browsing Tree hierarchy
parents 679d0d6d 702133c0
......@@ -10,6 +10,7 @@
//= require jquery.cookie
//= require jquery.endless-scroll
//= require jquery.highlight
//= require jquery.history
//= require jquery.waitforimages
//= require jquery.atwho
//= require bootstrap
......
......@@ -8,9 +8,6 @@ $ ->
$('#tree-slider .tree-item-file-name a, .breadcrumb li > a').live "click", ->
$("#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)
$("#tree-slider .tree-item").live 'click', (e) ->
$('.tree-item-file-name a', this).trigger('click') if (e.target.nodeName != "A")
......@@ -19,3 +16,24 @@ $ ->
$('#tree-slider .tree-item-file-name a, .breadcrumb a, .project-refs-form').live
"ajax:beforeSend": -> $('.tree_progress').addClass("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)
......@@ -54,10 +54,8 @@ class RefsController < ProjectResourceController
@hex_path = Digest::SHA1.hexdigest(params[:path] || "")
if params[:path]
@history_path = project_tree_path(@project, File.join(@ref, params[:path]))
@logs_path = logs_file_project_ref_path(@project, @ref, params[:path])
else
@history_path = project_tree_path(@project, @ref)
@logs_path = logs_tree_project_ref_path(@project, @ref)
end
rescue
......
......@@ -10,10 +10,8 @@ class TreeController < ProjectResourceController
before_filter :assign_ref_vars
def show
@hex_path = Digest::SHA1.hexdigest(@path)
@history_path = project_tree_path(@project, @id)
@logs_path = logs_file_project_ref_path(@project, @ref, @path)
@hex_path = Digest::SHA1.hexdigest(@path)
@logs_path = logs_file_project_ref_path(@project, @ref, @path)
respond_to do |format|
format.html
......
%ul.breadcrumb
%li
%span.arrow
= link_to project_tree_path(@project, @ref), remote: true do
= link_to project_tree_path(@project, @ref) do
= @project.name
- tree.breadcrumbs(6) do |link|
\/
......@@ -26,7 +26,7 @@
%tr.tree-item
%td.tree-item-file-name
= image_tag "file_empty.png", size: '16x16'
= link_to "..", tree.up_dir_path, remote: true
= link_to "..", tree.up_dir_path
%td
%td
......@@ -44,22 +44,9 @@
- else
= raw GitHub::Markup.render(content.name, content.data)
:javascript
$(function(){
history.pushState({ path: this.path }, '', "#{@history_path}");
});
- unless tree.is_blob?
:javascript
// Load last commit log for each file in tree
$(window).load(function(){
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)}" }
%td.tree-item-file-name
= 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
%span.log_loading.hide
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