Class: Knitkit::ErpApp::Desktop::ImageAssetsController

Inherits:
FileAssetsController
  • Object
show all
Defined in:
app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb

Instance Method Summary collapse

Methods inherited from FileAssetsController

#base_path, #create_file, #create_folder, #expand_directory, #rename_file, #save_move, #update_security

Instance Method Details

#delete_fileObject



58
59
60
61
62
63
64
65
66
67
68
69
70
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
# File 'app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb', line 58

def delete_file
  messages = []

  if @context == Website
    capability_type = "view"
    capability_resource = "SiteImageAsset"
  else
    capability_type = "delete"
    capability_resource = "GlobalImageAsset"
  end

  nodes_to_delete = (params[:selected_nodes] ? JSON(params[:selected_nodes]) : [params[:node]])

  begin
    result = false
    nodes_to_delete.each do |path|
      current_user.with_capability(capability_type, capability_resource) do
        path = "#{path}/" if params[:leaf] == 'false' and path.match(/\/$/).nil?
        begin
          name = File.basename(path)
          result, message, is_folder = @file_support.delete_file(File.join(@file_support.root, path))
          if result and !is_folder
            file = @assets_model.files.find(:first, :conditions => ['name = ? and directory = ?', ::File.basename(path), ::File.dirname(path)])
            file.destroy
          end
          messages << message
        rescue StandardError => ex
          Rails.logger.error ex.message
          Rails.logger.error ex.backtrace.join("\n")

          ExceptionNotifier.notify_exception(ex) if defined? ExceptionNotifier

          render :json => {:success => false, :error => "Error deleting #{name}"} and return
        end
      end # end current_user.with_capability

    end # end nodes_to_delete.each

    if result
      render :json => {:success => true, :message => messages.join(',')}
    else
      render :json => {:success => false, :error => messages.join(',')}
    end
  rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
    render :json => {:success => false, :message => ex.message}
  end
end

#get_imagesObject



6
7
8
9
10
11
12
13
14
15
16
# File 'app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb', line 6

def get_images
  directory = (params[:directory] == 'root_node' or params[:directory].blank?) ? base_path : params[:directory]
  # this @assets_model.images.select should be refactored into a query

  render :json => @assets_model.images.select { |image| image.directory == directory.sub(@file_support.root, '') }.collect { |image| {:id => image.id,
                                                                                                                                      :name => image.name,
                                                                                                                                      :shortName => image.name[0..15],
                                                                                                                                      :url => image.data.url,
                                                                                                                                      :height => image.height,
                                                                                                                                      :width => image.width,
                                                                                                                                      :downloadPath => image.data.path} }
end

#upload_fileObject



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
# File 'app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb', line 18

def upload_file
  #Website level assets if allowed to be viewed can also be uploaded and deleted so this is only checking for the view capability

  if @context == Website
    capability_type = "view"
    capability_resource = "SiteImageAsset"
  else
    capability_type = "upload"
    capability_resource = "GlobalImageAsset"
  end

  begin
    current_user.with_capability(capability_type, capability_resource) do
      result = {}
      upload_path = params[:directory]
      name = params[:name]
      data = request.raw_post

      if params[:is_drag_drop]
        data = Base64.decode64(data.split(',').last)
      end

      begin
        path = (upload_path == 'root_node') ? File.join(base_path, name) : File.join(@file_support.root, upload_path, name)
        @assets_model.add_file(data, path)

        result = {:success => true, :node => @file_support.find_node(path, :file_asset_holder => @assets_model)}
      rescue => ex
        logger.error ex.message
        logger.error ex.backtrace.join("\n")
        result = {:success => false, :error => "Error uploading file."}
      end

      #the awesome uploader widget whats this to mime type text, leave it render :inline

      render :inline => result.to_json
    end
  rescue ErpTechSvcs::Utils::CompassAccessNegotiator::Errors::UserDoesNotHaveCapability => ex
    render :json => {:success => false, :message => ex.message}
  end
end