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



47
48
49
50
51
52
53
54
55
56
57
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
# File 'app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb', line 47

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]])

  model = DesktopApplication.find_by_internal_identifier('knitkit')
  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 Exception=>ex
          Rails.logger.error ex.message
          Rails.logger.error ex.backtrace.join("\n")
          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
# 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|{:name => image.name, :shortName => image.name[0..15], :url => image.data.url}}
end

#upload_fileObject



12
13
14
15
16
17
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
# File 'app/controllers/knitkit/erp_app/desktop/image_assets_controller.rb', line 12

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

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

      begin
        upload_path == 'root_node' ? @assets_model.add_file(data, File.join(base_path,name)) : @assets_model.add_file(data, File.join(@file_support.root,upload_path,name))
        result = {:success => true}
      rescue Exception=>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