public
Description: Radiant is a no-fluff, open source content management system designed for small teams.
Homepage: http://radiantcms.org/
Clone URL: git://github.com/radiant/radiant.git
radiant / app / models / radiant / config.rb
100644 69 lines (63 sloc) 1.991 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
64
65
66
67
68
69
module Radiant
  #
  # The Radiant::Config object emulates a hash with simple bracket methods
  # which allow you to get and set values in the configuration table:
  #
  # Radiant::Config['setting.name'] = 'value'
  # Radiant::Config['setting.name'] #=> "value"
  #
  # Currently, there is not a way to edit configuration through the admin
  # system so it must be done manually. The console script is probably the
  # easiest way to this:
  #
  # % script/console production
  # Loading production environment.
  # >> Radiant::Config['setting.name'] = 'value'
  # => "value"
  # >>
  #
  # Radiant currently uses the following settings:
  #
  # admin.title :: the title of the admin system
  # admin.subtitle :: the subtitle of the admin system
  # defaults.page.parts :: a comma separated list of default page parts
  # defaults.page.status :: a string representation of the default page status
  # dev.host :: the hostname where draft pages are viewable
  # local.timezone :: the timezone offset (using a String or integer
  # from http://api.rubyonrails.org/classes/TimeZone.html)
  # used to correct displayed times
  class Config < ActiveRecord::Base
    set_table_name "config"
 
    class << self
      def [](key)
        pair = find_by_key(key)
        pair.value unless pair.nil?
      end
 
      def []=(key, value)
        pair = find_by_key(key)
        unless pair
          pair = new
          pair.key, pair.value = key, value
          pair.save
        else
          pair.value = value
          pair.save
        end
        value
      end
 
      def to_hash
        Hash[ *find(:all).map { |pair| [pair.key, pair.value] }.flatten ]
      end
    end
    
    def value=(param)
      self[:value] = param.to_s
    end
    
    def value
      if key.ends_with? "?"
        self[:value] == "true"
      else
        self[:value]
      end
    end
  end
end