Class: GenericFilesController
- Inherits:
-
ApplicationController
- Object
- ApplicationController
- GenericFilesController
- Includes:
- Blacklight::Configurable, Hydra::Controller::ControllerBehavior, Hydra::Controller::UploadBehavior, Sufia::Noid
- Defined in:
- app/controllers/generic_files_controller.rb
Overview
Copyright © 2012 The Pennsylvania State University
Licensed under the Apache License, Version 2.0 (the “License”); you may not use this file except in compliance with the License. You may obtain a copy of the License at
www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an “AS IS” BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Instance Method Summary collapse
-
#audit ⇒ Object
routed to /files/:id/audit (POST).
-
#citation ⇒ Object
routed to /files/:id/citation.
-
#create ⇒ Object
routed to /files (POST).
-
#destroy ⇒ Object
routed to /files/:id (DELETE).
-
#edit ⇒ Object
routed to /files/:id/edit.
-
#index ⇒ Object
routed to /files/:id.
-
#new ⇒ Object
routed to /files/new.
-
#show ⇒ Object
routed to /files/:id.
-
#update ⇒ Object
routed to /files/:id (PUT).
Methods included from Sufia::Noid
namespaceize, #noid, noidify, #normalize_identifier
Instance Method Details
#audit ⇒ Object
routed to /files/:id/audit (POST)
136 137 138 |
# File 'app/controllers/generic_files_controller.rb', line 136 def audit render :json=>@generic_file.audit end |
#citation ⇒ Object
routed to /files/:id/citation
119 120 |
# File 'app/controllers/generic_files_controller.rb', line 119 def citation end |
#create ⇒ Object
routed to /files (POST)
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 |
# File 'app/controllers/generic_files_controller.rb', line 71 def create begin retval = " " # check error condition No files if !params.has_key?(:files) retval = render :json => [{:error => "Error! No file to save"}].to_json # check error condition empty file elsif ((params[:files][0].respond_to?(:tempfile)) && (params[:files][0].tempfile.size == 0)) retval = render :json => [{ :name => params[:files][0].original_filename, :error => "Error! Zero Length File!"}].to_json elsif ((params[:files][0].respond_to?(:size)) && (params[:files][0].size == 0)) retval = render :json => [{ :name => params[:files][0].original_filename, :error => "Error! Zero Length File!"}].to_json elsif (params[:terms_of_service] != '1') retval = render :json => [{ :name => params[:files][0].original_filename, :error => "You must accept the terms of service!"}].to_json # process file else create_and_save_generic_file if @generic_file Sufia.queue.push(ContentDepositEventJob.new(@generic_file.pid, current_user.user_key)) respond_to do |format| format.html { retval = render :json => [@generic_file.to_jq_upload].to_json, :content_type => 'text/html', :layout => false } format.json { retval = render :json => [@generic_file.to_jq_upload].to_json } end else retval = render :json => [{:error => "Error creating generic file."}].to_json end end rescue => error logger.warn "GenericFilesController::create rescued error #{error.backtrace}" retval = render :json => [{:error => "Error occurred while creating generic file."}].to_json ensure # remove the tempfile (only if it is a temp file) params[:files][0].tempfile.delete if params[:files][0].respond_to?(:tempfile) end return retval end |
#destroy ⇒ Object
routed to /files/:id (DELETE)
63 64 65 66 67 68 |
# File 'app/controllers/generic_files_controller.rb', line 63 def destroy pid = @generic_file.noid @generic_file.delete Sufia.queue.push(ContentDeleteEventJob.new(pid, current_user.user_key)) redirect_to sufia.dashboard_index_path, :notice => render_to_string(:partial=>'generic_files/asset_deleted_flash', :locals => { :generic_file => @generic_file }) end |
#edit ⇒ Object
routed to /files/:id/edit
51 52 53 54 |
# File 'app/controllers/generic_files_controller.rb', line 51 def edit @terms = @generic_file.get_terms @groups = current_user.groups end |
#index ⇒ Object
routed to /files/:id
57 58 59 60 |
# File 'app/controllers/generic_files_controller.rb', line 57 def index @generic_files = GenericFile.find(:all, :rows => GenericFile.count) render :json => @generic_files.map(&:to_jq_upload).to_json end |
#new ⇒ Object
routed to /files/new
45 46 47 48 |
# File 'app/controllers/generic_files_controller.rb', line 45 def new @generic_file = GenericFile.new @batch_noid = Sufia::Noid.noidify(Sufia::IdService.mint) end |
#show ⇒ Object
routed to /files/:id
123 124 125 126 127 128 129 130 131 132 133 |
# File 'app/controllers/generic_files_controller.rb', line 123 def show perms = (@generic_file.pid) @can_read = can? :read, perms @can_edit = can? :edit, perms @events = @generic_file.events(100) respond_to do |format| format.html format.endnote { render :text => @generic_file.export_as_endnote } end end |
#update ⇒ Object
routed to /files/:id (PUT)
141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'app/controllers/generic_files_controller.rb', line 141 def update version_event = false if params.has_key?(:revision) and params[:revision] != @generic_file.content.latest_version.versionID revision = @generic_file.content.get_version(params[:revision]) @generic_file.add_file_datastream(revision.content, :dsid => 'content') version_event = true Sufia.queue.push(ContentRestoredVersionEventJob.new(@generic_file.pid, current_user.user_key, params[:revision])) end if params.has_key?(:filedata) return unless virus_check(params[:filedata]) == 0 add_posted_blob_to_asset(@generic_file, params[:filedata]) version_event = true Sufia.queue.push(ContentNewVersionEventJob.new(@generic_file.pid, current_user.user_key)) end @generic_file.attributes = params[:generic_file].reject { |k,v| %w{ Filedata Filename revision part_of date_modified date_uploaded format }.include? k} @generic_file.set_visibility(params[:visibility]) @generic_file.date_modified = Time.now.ctime @generic_file.save! # do not trigger an update event if a version event has already been triggered Sufia.queue.push(ContentUpdateEventJob.new(@generic_file.pid, current_user.user_key)) unless version_event record_version_committer(@generic_file, current_user) redirect_to sufia.edit_generic_file_path(:tab => params[:redirect_tab]), :notice => render_to_string(:partial=>'generic_files/asset_updated_flash', :locals => { :generic_file => @generic_file }) end |