Changesets can be listed by changeset number.
The Git repository is here.
- Revision:
- 15
- Log:
Attempt to update Typo to a Typo SVN HEAD release from around the
time the prototype installation was set up on the RISC OS Open Limited
web site. Timestamps place this at 04-Jul so a revision from 05-Jul or
earlier was pulled and copied over the 2.6.0 tarball stable code.
- Author:
- adh
- Date:
- Sat Jul 22 23:27:35 +0100 2006
- Size:
- 4955 Bytes
1 | class SerializeBlogAttributes < ActiveRecord::Migration |
2 | class BareSetting < ActiveRecord::Base |
3 | include BareMigration |
4 | belongs_to :blog, :class_name => "SerializeBlogAttributes::BareBlog" |
5 | end |
6 | |
7 | class BareBlog < ActiveRecord::Base |
8 | include BareMigration |
9 | serialize :settings |
10 | |
11 | class SettingSpec |
12 | attr_accessor :key, :type, :default |
13 | |
14 | def initialize(key, type, default) |
15 | self.key = key |
16 | self.type = type |
17 | self.default = default |
18 | end |
19 | |
20 | def normalize_value(line) |
21 | if !line || line.value.nil? |
22 | return default |
23 | end |
24 | value = line.value |
25 | case type |
26 | when :boolean |
27 | ! value.match(/^(?:f(?:alse)?|0|)$/) |
28 | when :integer |
29 | value.to_i |
30 | when :string |
31 | value |
32 | else |
33 | YAML::load(value) |
34 | end |
35 | end |
36 | |
37 | def stringify_value(value) |
38 | case type |
39 | when :boolean |
40 | value.to_s |
41 | when :integer |
42 | value.to_s |
43 | when :string |
44 | value |
45 | else |
46 | value.to_yaml |
47 | end |
48 | end |
49 | end |
50 | |
51 | def self.fields(key = nil) |
52 | @@fields ||= { } |
53 | key ? @@fields[key.to_sym] : @@fields |
54 | end |
55 | |
56 | def self.setting(key, type, default) |
57 | fields[key.to_sym] = SettingSpec.new(key.to_sym, type, default) |
58 | end |
59 | |
60 | # Description |
61 | setting :blog_name, :string, 'My Shiny Weblog!' |
62 | setting :blog_subtitle, :string, '' |
63 | setting :geourl_location, :string, '' |
64 | |
65 | # Spam |
66 | setting :sp_global, :boolean, false |
67 | setting :sp_article_auto_close, :integer, 0 |
68 | setting :sp_allow_non_ajax_comments, :boolean, true |
69 | setting :sp_url_limit, :integer, 0 |
70 | |
71 | # Podcasting |
72 | setting :itunes_explicit, :boolean, false |
73 | setting :itunes_author, :string, '' |
74 | setting :itunes_subtitle, :string, '' |
75 | setting :itunes_summary, :string, '' |
76 | setting :itunes_owner, :string, '' |
77 | setting :itunes_email, :string, '' |
78 | setting :itunes_name, :string, '' |
79 | setting :itunes_copyright, :string, '' |
80 | |
81 | # Mostly Behaviour |
82 | setting :text_filter, :string, '' |
83 | setting :comment_text_filter, :string, '' |
84 | setting :limit_article_display, :integer, 10 |
85 | setting :limit_rss_display, :integer, 10 |
86 | setting :default_allow_pings, :boolean, false |
87 | setting :default_allow_comments, :boolean, true |
88 | setting :link_to_author, :boolean, false |
89 | setting :show_extended_on_rss, :boolean, true |
90 | setting :theme, :string, 'azure' |
91 | setting :use_gravatar, :boolean, false |
92 | setting :ping_urls, :string, "http://rpc.technorati.com/rpc/ping\nhttp://ping.blo.gs/\nhttp://rpc.weblogs.com/RPC2" |
93 | setting :send_outbound_pings, :boolean, true |
94 | setting :email_from, :string, 'scott@sigkill.org' |
95 | |
96 | # Jabber config |
97 | setting :jabber_address, :string, '' |
98 | setting :jabber_password, :string, '' |
99 | end |
100 | |
101 | |
102 | def self.up |
103 | add_column :blogs, :settings, :text |
104 | unless $schema_generator |
105 | begin |
106 | BareSetting.transaction do |
107 | BareBlog.find(:all).each do |blog| |
108 | blog.settings = { } |
109 | BareSetting.with_scope(:find => { :conditions => "blog_id = #{blog.id}"}) do |
110 | BareBlog.fields.each do |key, spec| |
111 | next unless setting = BareSetting.find_by_name(key.to_s, :limit => 1) |
112 | blog.settings[key.to_s] = |
113 | spec.normalize_value(setting) |
114 | BareSetting.delete(setting.id) |
115 | end |
116 | end |
117 | blog.save |
118 | end |
119 | end |
120 | rescue Exception => e |
121 | remove_column :blogs, :settings rescue nil |
122 | raise e |
123 | end |
124 | end |
125 | drop_table :settings |
126 | end |
127 | |
128 | def self.down |
129 | begin |
130 | create_settings |
131 | unless $schema_generator |
132 | BareSetting.transaction do |
133 | BareBlog.find(:all).each do |blog| |
134 | blog.settings ||= { } |
135 | BareSetting.with_scope(:create => { :blog_id => blog.id }) do |
136 | BareBlog.fields.each do |key, spec| |
137 | next unless blog.settings.has_key?(key.to_s) |
138 | BareSetting.create!(:name => key.to_s, |
139 | :value => spec.stringify_value(blog.settings[key.to_s])) |
140 | end |
141 | end |
142 | end |
143 | end |
144 | end |
145 | remove_column :blogs, :settings rescue nil |
146 | rescue Exception => e |
147 | drop_table :settings rescue nil |
148 | raise e |
149 | end |
150 | end |
151 | |
152 | def self.create_settings |
153 | create_table :settings do |t| |
154 | t.column :name, :string, :limit => 255 |
155 | t.column :value, :string, :limit => 255 |
156 | t.column :position, :integer |
157 | t.column :blog_id, :integer |
158 | end |
159 | end |
160 | end |