Module: Hyrax::WorksControllerBehavior

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

Instance Method Summary collapse

Instance Method Details

#createObject



69
70
71
72
73
74
75
76
77
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 69

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



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 112

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



98
99
100
101
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 98

def edit
  @admin_set_options = available_admin_sets
  build_form
end

#file_managerObject



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

def file_manager
  @form = presenter
end

#inspect_workObject

Raises:

  • (Hydra::AccessDenied)


135
136
137
138
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 135

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

#manifestObject



140
141
142
143
144
145
146
147
148
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 140

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



60
61
62
63
64
65
66
67
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 60

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 = params[:admin_set_id] || admin_set_id_for_new
  curation_concern.contexts = Hyrax.query_service.find_by(id: curation_concern.admin_set_id)&.contexts if curation_concern.flexible?
  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.



82
83
84
85
86
87
88
89
90
91
92
93
94
95
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 82

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



103
104
105
106
107
108
109
110
# File 'app/controllers/concerns/hyrax/works_controller_behavior.rb', line 103

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