]> git.openstreetmap.org Git - rails.git/blobdiff - app/controllers/user_blocks_controller.rb
Record revokers when deactivating blocks by editing
[rails.git] / app / controllers / user_blocks_controller.rb
index 664ac56815d6e541de2de2e839b04aa188867f38..ae6e3c1cd5f4f3b7fc26646cd8ae346ebdb75cb1 100644 (file)
@@ -67,15 +67,24 @@ class UserBlocksController < ApplicationController
          current_user != @user_block.revoker
         flash[:error] = t(@user_block.revoker ? ".only_creator_or_revoker_can_edit" : ".only_creator_can_edit")
         redirect_to :action => "edit"
-      elsif @user_block.update(
-        :ends_at => Time.now.utc + @block_period.hours,
-        :reason => params[:user_block][:reason],
-        :needs_view => params[:user_block][:needs_view]
-      )
-        flash[:notice] = t(".success")
-        redirect_to(@user_block)
       else
-        render :action => "edit"
+        user_block_was_active = @user_block.active?
+        @user_block.reason = params[:user_block][:reason]
+        @user_block.needs_view = params[:user_block][:needs_view]
+        @user_block.ends_at = Time.now.utc + @block_period.hours
+        @user_block.revoker = current_user if user_block_was_active && !@user_block.active?
+        if !user_block_was_active && @user_block.active?
+          flash.now[:error] = t(".inactive_block_cannot_be_reactivated")
+          render :action => "edit"
+        else
+          @user_block.ends_at = @user_block.ends_at_was unless user_block_was_active
+          if @user_block.save
+            flash[:notice] = t(".success")
+            redirect_to @user_block
+          else
+            render :action => "edit"
+          end
+        end
       end
     else
       redirect_to edit_user_block_path(:id => params[:id])