]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/traces_controller.rb
Rename traces#view to traces#show
[rails.git] / app / controllers / traces_controller.rb
index ab4c8f3b80849408be5259afa1555d20784b8193..b6982894d2812c00d519f05932444c0de6e18b90 100644 (file)
@@ -12,7 +12,7 @@ class TracesController < ApplicationController
   before_action :check_api_writable, :only => [:api_create, :api_update, :api_delete]
   before_action :require_allow_read_gpx, :only => [:api_read, :api_data]
   before_action :require_allow_write_gpx, :only => [:api_create, :api_update, :api_delete]
-  before_action :offline_warning, :only => [:mine, :view]
+  before_action :offline_warning, :only => [:mine, :show]
   before_action :offline_redirect, :only => [:new, :create, :edit, :delete, :data, :api_create, :api_delete, :api_data]
   around_action :api_call_handle_error, :only => [:api_create, :api_read, :api_update, :api_delete, :api_data]
 
@@ -89,7 +89,7 @@ class TracesController < ApplicationController
     redirect_to :action => :list, :display_name => current_user.display_name
   end
 
-  def view
+  def show
     @trace = Trace.find(params[:id])
 
     if @trace && @trace.visible? &&
@@ -175,13 +175,24 @@ class TracesController < ApplicationController
       head :forbidden
     else
       @title = t ".title", :name => @trace.name
+    end
+  rescue ActiveRecord::RecordNotFound
+    head :not_found
+  end
 
-      if request.post? && params[:trace]
-        @trace.description = params[:trace][:description]
-        @trace.tagstring = params[:trace][:tagstring]
-        @trace.visibility = params[:trace][:visibility]
-        redirect_to :action => "view", :display_name => current_user.display_name if @trace.save
-      end
+  def update
+    @trace = Trace.find(params[:id])
+
+    if !@trace.visible?
+      head :not_found
+    elsif current_user.nil? || @trace.user != current_user
+      head :forbidden
+    elsif @trace.update(trace_params)
+      flash[:notice] = t ".updated"
+      redirect_to :action => "show", :display_name => current_user.display_name
+    else
+      @title = t ".title", :name => @trace.name
+      render :action => "edit"
     end
   rescue ActiveRecord::RecordNotFound
     head :not_found
@@ -413,4 +424,8 @@ class TracesController < ApplicationController
       "public"
     end
   end
+
+  def trace_params
+    params.require(:trace).permit(:description, :tagstring, :visibility)
+  end
 end