design.rb
1.57 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
require 'design/controller_methods'
require 'design/fixed_design_holder'
require 'design/proxy_design_holder'
require 'design/helper'
require 'design/editor'
module Design
# gets the Design object for this controller
def design
@design_plugin_data ||= Hash.new
data = @design_plugin_data
return data[:design] if data.has_key?(:design)
config = self.class.design_plugin_config
if config.has_key?(:holder)
holder_variable_name = config[:holder]
data[:design] = Design::ProxyDesignHolder.new(self.instance_variable_get("@#{holder_variable_name}"))
else
options = (config[:fixed].kind_of? Hash) ? config[:fixed] : {}
data[:design] = Design::FixedDesignHolder.new(options)
end
data[:design] # redundant, but makes more clear the return value
end
protected :design
# returns the path to the designs directory, relative to the +public+
# directory of your application.
#
# Defaults to #{RAILS_ROOT}/public/designs
def Design.design_root
Design.instance_variable_get('@design_root') || 'designs'
end
# sets the path to the designs directory.
#
# Passing nil resets +design_root+ to its default value.
def Design.design_root=(dir)
Design.instance_variable_set('@design_root', dir)
end
# used for testing
def Design.public_filesystem_root # :nodoc:
Design.instance_variable_get('@public_filesystem_root') || File.join(RAILS_ROOT, 'public')
end
# used for testing
def Design.public_filesystem_root=(value) # :nodoc:
Design.instance_variable_set('@public_filesystem_root', value)
end
end