Module: Hyrax::WorksControllerBehavior

Extended by:
ActiveSupport::Concern
Includes:
Blacklight::AccessControls::Catalog, Blacklight::Base
Included in:
BatchUploadsController, CitationsController
Defined in:
app/controllers/concerns/hyrax/works_controller_behavior.rb

Instance Method Summary collapse

Instance Method Details

#createObject



65
66
67
68
69
70
71
72
73
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 65

def create
  case curation_concern
  when ActiveFedora::Base
    original_input_params_for_form = params[hash_key_for_curation_concern].deep_dup
    actor.create(actor_environment) ? after_create_response : after_create_error(curation_concern.errors, original_input_params_for_form)
  else
    create_valkyrie_work
  end
end

#destroyObject



108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 108

def destroy
  case curation_concern
  when ActiveFedora::Base
    title = curation_concern.to_s
    env = Actors::Environment.new(curation_concern, current_ability, {})
    return unless actor.destroy(env)
    Hyrax.config.callback.run(:after_destroy, curation_concern.id, current_user, warn: false)
  else
    transactions['work_resource.destroy']
      .with_step_args('work_resource.delete' => { user: current_user },
                      'work_resource.delete_all_file_sets' => { user: current_user })
      .call(curation_concern).value!

    title = Array(curation_concern.title).first
  end

  after_destroy_response(title)
end

#editObject

rubocop:enable Metrics/AbcSize



94
95
96
97
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 94

def edit
  @admin_set_options = available_admin_sets
  build_form
end

#file_managerObject



127
128
129
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 127

def file_manager
  @form = presenter
end

#inspect_workObject

Raises:

  • (Hydra::AccessDenied)


131
132
133
134
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 131

def inspect_work
  raise Hydra::AccessDenied unless current_ability.admin?
  presenter
end

#manifestObject



136
137
138
139
140
141
142
143
144
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 136

def manifest
  headers['Access-Control-Allow-Origin'] = '*'

  json = iiif_manifest_builder.manifest_for(presenter: iiif_manifest_presenter)

  respond_to do |wants|
    wants.any { render json: json }
  end
end

#newObject



57
58
59
60
61
62
63
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 57

def new
  @admin_set_options = available_admin_sets
  # TODO: move these lines to the work form builder in Hyrax
  curation_concern.depositor = current_user.user_key
  curation_concern.admin_set_id = admin_set_id_for_new
  build_form
end

#showObject

Finds a solr document matching the id and sets @presenter rubocop:disable Metrics/AbcSize

Raises:

  • CanCan::AccessDenied if the document is not found or the user doesn’t have access to it.



78
79
80
81
82
83
84
85
86
87
88
89
90
91
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 78

def show
  @user_collections = user_collections

  respond_to do |wants|
    wants.html { presenter && parent_presenter }
    wants.json do
      # load @curation_concern manually because it's skipped for html
      @curation_concern = load_curation_concern
      curation_concern # This is here for authorization checks (we could add authorize! but let's use the same method for CanCanCan)
      render :show, status: :ok
    end
    additional_response_formats(wants)
  end
end

#updateObject



99
100
101
102
103
104
105
106
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 99

def update
  case curation_concern
  when ActiveFedora::Base
    actor.update(actor_environment) ? after_update_response : after_update_error(curation_concern.errors)
  else
    update_valkyrie_work
  end
end