OSDN Git Service

Error page if forking fails
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Mon, 10 Jun 2013 18:40:23 +0000 (21:40 +0300)
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>
Mon, 10 Jun 2013 18:40:23 +0000 (21:40 +0300)
CHANGELOG
app/controllers/projects_controller.rb
app/views/projects/fork.html.haml [new file with mode: 0644]
app/views/projects/show.html.haml

index e65391f..f26466f 100644 (file)
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -23,6 +23,7 @@ v 5.3.0
   - Fix dashboard event filter when navigate via turbolinks
   - init.d: Ensure socket is removed before starting service
   - Admin area: Style teams:index, group:show pages
+  - Own page for failed forking
 
 v 5.2.0
   - Turbolinks
index f2dbc51..fad681e 100644 (file)
@@ -7,7 +7,7 @@ class ProjectsController < ProjectResourceController
   before_filter :authorize_admin_project!, only: [:edit, :update, :destroy, :transfer]
   before_filter :require_non_empty_project, only: [:blob, :tree, :graph]
 
-  layout 'navless', only: [:new, :create]
+  layout 'navless', only: [:new, :create, :fork]
   before_filter :set_title, only: [:new, :create]
 
   def new
@@ -81,14 +81,15 @@ class ProjectsController < ProjectResourceController
   end
 
   def fork
-    @project = ::Projects::ForkContext.new(project, current_user).execute
+    @forked_project = ::Projects::ForkContext.new(project, current_user).execute
 
     respond_to do |format|
       format.html do
-        if @project.saved? && @project.forked?
-          redirect_to(@project, notice: 'Project was successfully forked.')
+        if @forked_project.saved? && @forked_project.forked?
+          redirect_to(@forked_project, notice: 'Project was successfully forked.')
         else
-          render action: "new"
+          @title = 'Fork project'
+          render action: "fork"
         end
       end
       format.js
diff --git a/app/views/projects/fork.html.haml b/app/views/projects/fork.html.haml
new file mode 100644 (file)
index 0000000..a1c109e
--- /dev/null
@@ -0,0 +1,19 @@
+.alert.alert-error.alert-block
+  %h4
+    %i.icon-code-fork
+    Fork Error!
+  %p
+    You are trying to fork
+    = link_to_project @project
+    but it fails due to next reason:
+
+
+  - if @forked_project && @forked_project.errors.any?
+    %p
+      &ndash;
+      = @forked_project.errors.full_messages.first
+
+  %p
+    = link_to fork_project_path(@project), title: "Fork", class: "btn", method: "POST" do
+      %i.icon-code-fork
+      Try to Fork again
index f72ef0a..7d708ce 100644 (file)
@@ -42,6 +42,7 @@
       %p Owner: #{link_to @project.owner_name, @project.owner}
       - if @project.forked_from_project
         %p
+          %i.icon-code-fork
           Forked from:
           = link_to @project.forked_from_project.name_with_namespace, project_path(@project.forked_from_project)