Class: TopContainersController

Inherits:
ApplicationController show all
Includes:
ApplicationHelper
Defined in:
frontend/app/controllers/top_containers_controller.rb

Defined Under Namespace

Classes: MissingFilterException

Instance Method Summary (collapse)

Methods included from ApplicationHelper

#add_new_event_url, #button_confirm_action, #button_delete_action, #button_delete_multiple_action, #button_edit_multiple_action, #clean_mixed_content, #current_repo, #current_user, #display_audit_info, #has_permission_for_controller?, #include_controller_js, #include_theme_css, #inline?, #link_to_help, #proxy_localhost?, #render_aspace_partial, #render_token, #set_title, #setup_context, #show_external_ids?, #wrap_with_tooltip

Methods inherited from ApplicationController

can_access?, permission_mappings, set_access_control

Instance Method Details

- (Object) batch_delete



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# File 'frontend/app/controllers/top_containers_controller.rb', line 72

def batch_delete
  response = JSONModel::HTTP.post_form("/batch_delete",
                                       {
                              "record_uris[]" => Array(params[:record_uris])
                                       })

  if response.code === "200"
    flash[:success] = I18n.t("top_container.batch_delete.success")
    deleted_uri_param = params[:record_uris].map{|uri| "deleted_uri[]=#{uri}"}.join("&")
    redirect_to "#{request.referrer}?#{deleted_uri_param}"
  else
    flash[:error] = "#{I18n.t("top_container.batch_delete.error")}<br/> #{ASUtils.json_parse(response.body)["error"]["failures"].map{|err| "#{err["response"]} [#{err["uri"]}]"}.join("<br/>")}".html_safe
    redirect_to request.referrer
  end
end

- (Object) bulk_operation_search



102
103
104
105
106
107
108
109
110
# File 'frontend/app/controllers/top_containers_controller.rb', line 102

def bulk_operation_search
  begin
    results = perform_search
  rescue MissingFilterException
    return render :text => I18n.t("top_container._frontend.messages.filter_required"), :status => 500
  end

  render_aspace_partial :partial => "top_containers/bulk_operations/results", :locals => {:results => results}
end

- (Object) bulk_operation_update



124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
# File 'frontend/app/controllers/top_containers_controller.rb', line 124

def bulk_operation_update
  post_params = {'ids[]' => params['update_uris'].map {|uri| JSONModel(:top_container).id_for(uri)}}
  post_uri = "/repositories/#{session[:repo_id]}/top_containers/batch/"

  if params['ils_holding_id']
    post_params['ils_holding_id'] = params['ils_holding_id']
    post_uri += 'ils_holding_id'
  elsif params['container_profile_uri']
    post_params['container_profile_uri'] = params['container_profile'] ? params['container_profile']['ref'] : ""
    post_uri += 'container_profile'
  elsif params['location_uri']
    post_params['location_uri'] = params['location'] ? params['location']['ref'] : ""
    post_uri += 'location'
  else
    render :text => "You must provide a field to update.", :status => 500
  end
    
  response = JSONModel::HTTP::post_form(post_uri, post_params)
  result = ASUtils.json_parse(response.body)

  if result.has_key?('records_updated')
    render_aspace_partial :partial => "top_containers/bulk_operations/bulk_action_success", :locals => {:result => result}
  else
    render :text => "There seems to have been a problem with the update: #{result['error']}", :status => 500
  end
end

- (Object) bulk_operations_browse



113
114
115
116
117
118
119
120
121
# File 'frontend/app/controllers/top_containers_controller.rb', line 113

def bulk_operations_browse
  begin
    results = perform_search if params.has_key?("q")
  rescue MissingFilterException
    flash[:error] = I18n.t("top_container._frontend.messages.filter_required")
  end

  render_aspace_partial :partial => "top_containers/bulk_operations/browse", :locals => {:results => results}
end

- (Object) create



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'frontend/app/controllers/top_containers_controller.rb', line 22

def create
  handle_crud(:instance => :top_container,
              :model => JSONModel(:top_container),
              :on_invalid => ->(){
                return render_aspace_partial :partial => "top_containers/new" if inline?
                return render :action => :new
              },
              :on_valid => ->(id){
                if inline?
                  @top_container.refetch
                  render :json => @top_container.to_hash if inline?
                else
                  flash[:success] = I18n.t("top_container._frontend.messages.created")
                  redirect_to :controller => :top_containers, :action => :show, :id => id
                end
              })
end

- (Object) delete



65
66
67
68
69
70
# File 'frontend/app/controllers/top_containers_controller.rb', line 65

def delete
  top_container = JSONModel(:top_container).find(params[:id])
  top_container.delete

  redirect_to(:controller => :top_containers, :action => :index, :deleted_uri => top_container.uri)
end

- (Object) edit



46
47
48
# File 'frontend/app/controllers/top_containers_controller.rb', line 46

def edit
  @top_container = JSONModel(:top_container).find(params[:id], find_opts)
end

- (Object) index



11
12
# File 'frontend/app/controllers/top_containers_controller.rb', line 11

def index
end

- (Object) new



15
16
17
18
19
# File 'frontend/app/controllers/top_containers_controller.rb', line 15

def new
  @top_container = JSONModel(:top_container).new._always_valid!

  render_aspace_partial :partial => "top_containers/new" if inline?
end

- (Object) show



41
42
43
# File 'frontend/app/controllers/top_containers_controller.rb', line 41

def show
  @top_container = JSONModel(:top_container).find(params[:id], find_opts)
end

- (Object) typeahead



89
90
91
92
93
94
95
96
# File 'frontend/app/controllers/top_containers_controller.rb', line 89

def typeahead
  search_params = params_for_backend_search

  search_params = search_params.merge(search_filter_for(params[:uri]))
  search_params = search_params.merge("sort" => "typeahead_sort_key_u_sort asc")

  render :json => Search.all(session[:repo_id], search_params)
end

- (Object) update



51
52
53
54
55
56
57
58
59
60
61
62
# File 'frontend/app/controllers/top_containers_controller.rb', line 51

def update
  handle_crud(:instance => :top_container,
              :model => JSONModel(:top_container),
              :obj => JSONModel(:top_container).find(params[:id], find_opts),
              :on_invalid => ->(){
                return render action: "edit"
              },
              :on_valid => ->(id){
                flash[:success] = I18n.t("top_container._frontend.messages.updated")
                redirect_to :controller => :top_containers, :action => :show, :id => id
              })
end

- (Object) update_barcodes



152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
# File 'frontend/app/controllers/top_containers_controller.rb', line 152

def update_barcodes
  update_uris = params[:update_uris]
  barcode_data = {}
  update_uris.map{|uri| barcode_data[uri] = params[uri].blank? ? nil : params[uri]}

  post_uri = "#{JSONModel::HTTP.backend_url}/repositories/#{session[:repo_id]}/top_containers/bulk/barcodes"

  response = JSONModel::HTTP::post_json(URI(post_uri), barcode_data.to_json)
  result = ASUtils.json_parse(response.body)

  if response.code =~ /^4/
    return render_aspace_partial :partial => 'top_containers/bulk_operations/error_messages', :locals => {:exceptions => result, :jsonmodel => "top_container"}, :status => 500
  end

  render_aspace_partial :partial => "top_containers/bulk_operations/bulk_action_success", :locals => {:result => result}
end