X-Git-Url: https://git.openstreetmap.org/rails.git/blobdiff_plain/5317d9481c515f1f393853009be949c8f1e2688d..71cb2c50fcaf29e2b933fc981e40a00223d94d34:/app/controllers/changesets_controller.rb diff --git a/app/controllers/changesets_controller.rb b/app/controllers/changesets_controller.rb index fef4d85eb..5eb14629a 100644 --- a/app/controllers/changesets_controller.rb +++ b/app/controllers/changesets_controller.rb @@ -9,6 +9,7 @@ class ChangesetsController < ApplicationController before_action :authorize_web before_action :set_locale before_action -> { check_database_readable(:need_api => true) }, :only => [:index, :feed] + before_action :check_database_writable, :only => [:subscribe, :unsubscribe] authorize_resource @@ -74,6 +75,34 @@ class ChangesetsController < ApplicationController index end + ## + # subscribe to a changeset + def subscribe + @changeset = Changeset.find(params[:id]) + + if request.post? + @changeset.subscribe(current_user) unless @changeset.subscribed?(current_user) + + redirect_to changeset_path(@changeset) + end + rescue ActiveRecord::RecordNotFound + render :action => "no_such_entry", :status => :not_found + end + + ## + # unsubscribe from a changeset + def unsubscribe + @changeset = Changeset.find(params[:id]) + + if request.post? + @changeset.unsubscribe(current_user) + + redirect_to changeset_path(@changeset) + end + rescue ActiveRecord::RecordNotFound + render :action => "no_such_entry", :status => :not_found + end + private #------------------------------------------------------------ @@ -83,7 +112,6 @@ class ChangesetsController < ApplicationController ## # if a bounding box was specified do some sanity checks. # restrict changesets to those enclosed by a bounding box - # we need to return both the changesets and the bounding box def conditions_bbox(changesets, bbox) if bbox bbox.check_boundaries