app/controllers/hyrax/batch_edits_controller.rb in hyrax-1.1.1 vs app/controllers/hyrax/batch_edits_controller.rb in hyrax-2.0.0.beta1

- old
+ new

@@ -1,7 +1,104 @@ module Hyrax class BatchEditsController < ApplicationController - include Hydra::BatchEditBehavior include FileSetHelper - include BatchEditsControllerBehavior + include Hyrax::Breadcrumbs + include Hyrax::Collections::AcceptsBatches + + before_action :build_breadcrumbs, only: :edit + before_action :filter_docs_with_access!, only: [:edit, :update, :destroy_collection] + before_action :check_for_empty!, only: [:edit, :update, :destroy_collection] + + # provides the help_text view method + helper PermissionsHelper + + def edit + work = form_class.model_class.new + work.depositor = current_user.user_key + @form = form_class.new(work, current_user, batch) + end + + def after_update + respond_to do |format| + format.json { head :no_content } + format.html { redirect_to_return_controller } + end + end + + def after_destroy_collection + redirect_to_return_controller unless request.xhr? + end + + def check_for_empty! + return unless check_for_empty_batch? + redirect_back fallback_location: hyrax.batch_edits_path + false + end + + def destroy_collection + batch.each do |doc_id| + obj = ActiveFedora::Base.find(doc_id, cast: true) + obj.destroy + end + flash[:notice] = "Batch delete complete" + after_destroy_collection + end + + def update_document(obj) + obj.attributes = work_params + obj.date_modified = Time.current.ctime + obj.visibility = params[:visibility] + obj.save + end + + def update + case params["update_type"] + when "update" + batch.each do |doc_id| + update_document(ActiveFedora::Base.find(doc_id)) + end + flash[:notice] = "Batch update complete" + after_update + when "delete_all" + destroy_batch + end + end + + private + + def add_breadcrumb_for_controller + add_breadcrumb I18n.t('hyrax.dashboard.my.works'), hyrax.my_works_path + end + + def _prefixes + # This allows us to use the templates in hyrax/base, while prefering + # our local paths. Thus we are unable to just override `self.local_prefixes` + @_prefixes ||= super + ['hyrax/base'] + end + + def destroy_batch + batch.each { |id| ActiveFedora::Base.find(id).destroy } + after_update + end + + def form_class + Forms::BatchEditForm + end + + def terms + form_class.terms + end + + def work_params + work_params = params[form_class.model_name.param_key] || ActionController::Parameters.new + form_class.model_attributes(work_params) + end + + def redirect_to_return_controller + if params[:return_controller] + redirect_to hyrax.url_for(controller: params[:return_controller], only_path: true) + else + redirect_to hyrax.dashboard_path + end + end end end