public
Description: Radiant extension for managing assets and images with the Paperclip plugin
Homepage:
Clone URL: git://github.com/kbingman/paperclipped.git
kbingman (author)
Tue Oct 06 00:52:28 -0700 2009
commit  6e6048d90ff2c65b763372b397a0cc7d10f93ceb
tree    3e731d36cbaea32096f4fe2b90c4537ec48304db
parent  fbc7ca165388379c6a00f4434dc2cf1afd114904
paperclipped / paperclipped_extension.rb
100644 63 lines (48 sloc) 2.553 kb
1
2
3
4
5
6
7
8
9
10
11
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# require_dependency 'application_controller'
require File.dirname(__FILE__) + '/lib/url_additions'
include UrlAdditions
 
class PaperclippedExtension < Radiant::Extension
  version "0.8.0"
  description "Assets extension based on the lightweight Paperclip plugin."
  url "http://github.com/kbingman/paperclipped"
  
  define_routes do |map|
    
    # Main RESTful routes for Assets
    map.namespace :admin, :member => { :remove => :get }, :collection => { :refresh => :post } do |admin|
      admin.resources :assets
    end
    
    # Bucket routes
    map.with_options(:controller => 'admin/assets') do |asset|
      asset.add_bucket "/admin/assets/:id/add", :action => 'add_bucket'
      # asset.refresh_assets "/admin/assets/:id/refresh", :action => 'regenerate_thumbnails'
      
      asset.clear_bucket "/admin/assets/clear_bucket", :action => 'clear_bucket'
      asset.reorder_assets '/admin/assets/reorder/:id', :action => 'reorder'
      asset.attach_page_asset '/admin/assets/attach/:asset/page/:page', :action => 'attach_asset'
      asset.remove_page_asset '/admin/assets/remove/:asset/page/:page', :action => 'remove_asset'
    end
  end
  
  def activate
    
    Radiant::AdminUI.send :include, AssetsAdminUI unless defined? admin.asset # UI is a singleton and already loaded
    admin.asset = Radiant::AdminUI.load_default_asset_regions
 
    %w{page}.each do |view|
      admin.send(view).edit.add :main, "/admin/assets/show_bucket_link", :before => "edit_header"
      admin.send(view).edit.add :main, "/admin/assets/assets_bucket", :after => "edit_buttons"
      admin.send(view).edit.asset_tabs.concat %w{attachment_tab upload_tab bucket_tab search_tab}
      admin.send(view).edit.bucket_pane.concat %w{bucket_notes bucket bucket_bottom}
      admin.send(view).edit.asset_panes.concat %w{page_attachments upload search}
    end
    
    Page.class_eval {
      include PageAssetAssociations
      include AssetTags
    }
 
    # connect UserActionObserver with my models
    UserActionObserver.instance.send :add_observer!, Asset
    
    # This is just needed for testing if you are using mod_rails
    if Radiant::Config.table_exists? && Radiant::Config["assets.image_magick_path"]
      Paperclip.options[:image_magick_path] = Radiant::Config["assets.image_magick_path"]
    end
    
    admin.tabs.add "Assets", "/admin/assets", :after => "Snippets", :visibility => [:all]
  end
  
  def deactivate
    # admin.tabs.remove "Assets"
  end
  
end