OSDN Git Service

refactoring + remove unnecessary feature
authorgitlabhq <m@gitlabhq.com>
Fri, 14 Oct 2011 16:30:31 +0000 (19:30 +0300)
committergitlabhq <m@gitlabhq.com>
Fri, 14 Oct 2011 16:30:31 +0000 (19:30 +0300)
app/controllers/application_controller.rb
app/controllers/commits_controller.rb
app/controllers/projects_controller.rb
app/helpers/projects_helper.rb
app/views/commits/index.html.haml
app/views/projects/_tree.html.haml
app/views/projects/_tree_item.html.haml

index 8d30876..f8eb238 100644 (file)
@@ -42,15 +42,23 @@ class ApplicationController < ActionController::Base
     end
   end
 
-  def refs_from_cookie
-    if @project && session[:ui] && 
-      session[:ui][@project.id]
-      project_session = session[:ui][@project.id]
-      project_session[:branch] = nil if params[:tag]
-      params[:branch] ||= project_session[:branch]
-      params[:tag] ||= project_session[:tag]
-    end
-  rescue 
-    session[:ui] = nil
+  def load_refs
+    @branch = unless params[:branch].blank?
+                params[:branch]
+              else
+                nil
+              end
+
+    @tag = unless params[:tag].blank?
+             params[:tag]
+           else 
+             nil
+           end
+
+    @ref = @branch || @tag || "master"
+  end
+
+  def render_404
+    render :file => File.join(Rails.root, "public", "404"), :layout => false, :status => "404"
   end
 end
index 61a1a54..fe46ddc 100644 (file)
@@ -8,20 +8,14 @@ class CommitsController < ApplicationController
   before_filter :authorize_read_project!
 
   def index
-    refs_from_cookie
+    load_refs # load @branch, @tag & @ref
+
     @repo = project.repo
-    @branch = if !params[:branch].blank?
-                params[:branch]
-              elsif !params[:tag].blank?
-                params[:tag]
-              else
-                "master"
-              end
 
     if params[:path]
-      @commits = @repo.log(@branch, params[:path], :max_count => params[:limit] || 100, :skip => params[:offset] || 0)
+      @commits = @repo.log(@ref, params[:path], :max_count => params[:limit] || 100, :skip => params[:offset] || 0)
     else
-      @commits = @repo.commits(@branch, params[:limit] || 100, params[:offset] || 0)
+      @commits = @repo.commits(@ref, params[:limit] || 100, params[:offset] || 0)
     end
 
     respond_to do |format|
index f9f4226..0985680 100644 (file)
@@ -16,7 +16,6 @@ class ProjectsController < ApplicationController
   end
 
   def show
-    refs_from_cookie
     @repo = project.repo
     @commit = @repo.commits.first
     @tree = @commit.tree
@@ -33,34 +32,30 @@ class ProjectsController < ApplicationController
   end
 
   def tree
-    refs_from_cookie
+    load_refs # load @branch, @tag & @ref
+
     @repo = project.repo
-    @branch = if !params[:branch].blank?
-                params[:branch]
-              elsif !params[:tag].blank?
-                params[:tag]
-              else
-                "master"
-              end
 
     if params[:commit_id]
       @commit = @repo.commits(params[:commit_id]).first
     else 
-      @commit = @repo.commits(@branch || "master").first
+      @commit = @repo.commits(@ref || "master").first
     end
+
     @tree = @commit.tree
     @tree = @tree / params[:path] if params[:path]
 
     respond_to do |format|
       format.html # show.html.erb
       format.js do 
-        # temp solution
+        # diasbale cache to allow back button works
         response.headers["Cache-Control"] = "no-cache, no-store, max-age=0, must-revalidate"
         response.headers["Pragma"] = "no-cache"
         response.headers["Expires"] = "Fri, 01 Jan 1990 00:00:00 GMT"
       end
-      format.json { render json: project }
     end
+  rescue
+    return render_404
   end
 
   def blob
@@ -73,6 +68,8 @@ class ProjectsController < ApplicationController
     else 
       head(404)
     end
+  rescue
+    return render_404
   end
 
   def new
index 5dae0c3..d570dff 100644 (file)
@@ -3,12 +3,4 @@ module ProjectsHelper
     cookies["project_view"] ||= "tile"
     cookies["project_view"] == type ? nil : "display:none"
   end
-
-  def remember_refs
-    session[:ui] ||= {}
-    session[:ui][@project.id] = { 
-      :branch => params[:branch],
-      :tag => params[:tag]
-    }
-  end
 end
index 2d18486..452e13f 100644 (file)
@@ -6,12 +6,10 @@
     &nbsp;
     .left.prepend-1
       = form_tag project_commits_path(@project), :method => :get do
-        = select_tag "tag", options_for_select(@project.tags, @branch), :onchange => "this.form.submit();", :class => "", :prompt => "Tags"
+        = select_tag "tag", options_for_select(@project.tags, @tag), :onchange => "this.form.submit();", :class => "", :prompt => "Tags"
     = text_field_tag "ssh", @project.url_to_repo, :class => ["ssh_project_url", "one_click_select"]
     .clear
   - if params[:path]
     %h3{:style => "color:#555"} /#{params[:path]}
   %div{:id => dom_id(@project)}
     = render "commits"
-
-- remember_refs
index 4d7e3d7..d190358 100644 (file)
@@ -5,7 +5,7 @@
   &nbsp;
   .left.prepend-1
     = form_tag tree_project_path(@project), :method => :get do
-      = select_tag "tag", options_for_select(@project.tags, @branch), :onchange => "this.form.submit();", :class => "", :prompt => "Tags"
+      = select_tag "tag", options_for_select(@project.tags, @tag), :onchange => "this.form.submit();", :class => "", :prompt => "Tags"
   = text_field_tag "ssh", @project.url_to_repo, :class => ["ssh_project_url","one_click_select"]
   .clear
 
@@ -18,7 +18,7 @@
       - if part_path.empty?
         - part_path = part
       \/
-      = link_to truncate(part, :length => 40), tree_file_project_path(@project, :path => part_path, :commit_id => @commit.try(:id)), :remote => :true
+      = link_to truncate(part, :length => 40), tree_file_project_path(@project, :path => part_path, :commit_id => @commit.try(:id), :branch => @branch, :tag => @tag), :remote => :true
 #tree-content-holder
   - if tree.is_a?(Grit::Blob)
     = render :partial => "projects/tree_file", :locals => { :name => tree.name, :content => tree.data, :file => tree }
@@ -36,7 +36,7 @@
         %tr{ :class => "tree-item", :url => tree_file_project_path(@project, @commit.id, file) }
           %td.tree-item-file-name
             = image_tag "dir.png"
-            = link_to "..", tree_file_project_path(@project, @commit.id, file), :remote => :true
+            = link_to "..", tree_file_project_path(@project, @commit.id, file, :branch => @branch, :tag => @tag), :remote => :true
           %td 
           %td 
 
@@ -45,9 +45,6 @@
       - contents.select{ |i| i.is_a?(Grit::Blob)}.each do |content|
         = render :partial => "projects/tree_item", :locals => { :content => content }
 
-
-- remember_refs
-
 :javascript
   $(function(){
     $('select#branch').selectmenu({style:'popup', width:200});
index 7179368..533c148 100644 (file)
@@ -7,7 +7,7 @@
       = image_tag "txt.png"
     - else
       = image_tag "dir.png"
-    = link_to truncate(content.name, :length => 40), tree_file_project_path(@project, @commit.id, file), :remote => :true
+    = link_to truncate(content.name, :length => 40), tree_file_project_path(@project, @commit.id, file, :branch => @branch, :tag => @tag), :remote => :true
   %td
     = time_ago_in_words(content_commit.committed_date)
     ago