sugoi-mail 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -19,6 +19,7 @@ class SugoiAdminController < CommandlineController
19
19
  def error(error_text)
20
20
  callername = caller[0].gsub(/.*\`(\w+)\'.*/, '\1')
21
21
  @error = "#{callername}: #{error_text}"
22
+ nil
22
23
  end
23
24
 
24
25
  def message(message_text)
@@ -99,6 +100,8 @@ class SugoiAdminController < CommandlineController
99
100
  user.password = password
100
101
  user.password_confirmation = password_confirmation
101
102
  user.description = description
103
+ user.domainadmin = false
104
+
102
105
  if user.save then
103
106
  message "User \"#{username}@#{domain_name}\" created successfully"
104
107
  if email_address then
@@ -139,35 +142,37 @@ class SugoiAdminController < CommandlineController
139
142
 
140
143
  alias help_list_mlclasses help_list_mailinglist_classes
141
144
 
142
- def create_mailing_list mailinglist_class_id, mailinglist_name,
143
- domain_name, user_name, description = nil
145
+ def create_list mailinglist_name,
146
+ domain_name, user_name, description = nil, mailinglist_class_id = 2
144
147
 
145
148
  mlclass = begin
146
149
  MailinglistClass.find mailinglist_class_id.to_i
147
150
  rescue ActiveRecord::RecordNotFound
148
151
  nil
149
152
  end
150
- if mlclass then
151
- domain = Domain.find_by_name domain_name
152
- if domain then
153
- user = User.find_by_login_and_domain_id user_name, domain.id
154
- if user then
155
- ml=Mailinglist.new
156
- ml.user = user
157
- ml.description = description
158
- ml.mailinglist_class = mlclass
159
- ml.name = mailinglist_name
160
- if ml.save then
161
- message "Mailing list \"#{ml.address}\" created successfully."
162
- end
163
- else
164
- error "User \"#{user_name}\" not found in domain \"#{domain_name}\"."
165
- end
166
- else
167
- error "Domain \"#{domain_name}\" not found."
168
- end
169
- else
170
- error "Invalid mailing list class: #{mailinglist_class_id}"
153
+ unless mlclass
154
+ return error("Invalid mailing list class: #{mailinglist_class_id}")
155
+ end
156
+
157
+ domain = Domain.find_by_name domain_name
158
+ unless domain
159
+ return error("Domain \"#{domain_name}\" not found.")
160
+ end
161
+
162
+ user = User.find_by_login_and_domain_id user_name, domain.id
163
+ unless user
164
+ return error("User \"#{user_name}\" not found "+
165
+ "in domain \"#{domain_name}\".")
166
+ end
167
+
168
+ ml=Mailinglist.new
169
+ ml.user = user
170
+ ml.description = description
171
+ ml.mailinglist_class = mlclass
172
+ ml.name = mailinglist_name
173
+
174
+ if ml.save then
175
+ message "Mailing list \"#{ml.address}\" created successfully."
171
176
  end
172
177
  end
173
178
 
@@ -175,8 +180,7 @@ class SugoiAdminController < CommandlineController
175
180
  address=Address.find_or_create_by_address new_address
176
181
  ml=Mailinglist.find_by_address(mailinglist_address)
177
182
  unless ml
178
- error "Mailing list \"#{mailinglist_address}\" does not exist!"
179
- return
183
+ return error("Mailing list \"#{mailinglist_address}\" not found.")
180
184
  end
181
185
  ml=ml[0]
182
186
  ml.addresses << address
@@ -195,21 +199,19 @@ class SugoiAdminController < CommandlineController
195
199
  def unsubscribe(mailinglist_address, address_to_remove)
196
200
  address = Address.find_by_address address_to_remove
197
201
  unless address
198
- error "Address \"#{address_to_remove}\" unknown."
199
- return
202
+ return error("Address \"#{address_to_remove}\" unknown.")
200
203
  end
201
204
 
202
205
  mailinglist = Mailinglist.find_by_address mailinglist_address
203
206
  unless mailinglist
204
- error "Mailing list \"#{mailinglist_address}\" does not exist."
205
- return
207
+ return error("Mailing list \"#{mailinglist_address}\" unknown.")
206
208
  end
207
209
 
208
210
  @mailinglist = mailinglist[0]
209
211
 
210
212
  unless @mailinglist.addresses.member? address
211
- error "Address \"#{address}\" not in mailing list \"#{mailinglist_address}\""
212
- return
213
+ return error("Address \"#{address}\" not in " + "
214
+ mailing list \"#{mailinglist_address}\"")
213
215
  end
214
216
 
215
217
  @removed_addresses=@mailinglist.remove_addresses address
@@ -86,9 +86,15 @@ class Mailinglist < ActiveRecord::Base
86
86
  end
87
87
 
88
88
  def before_save
89
- welcome_admin_message ||= AdminMessage.find 1
90
- confirmed_admin_message ||= AdminMessage.find 2
91
- sayonara_admin_message ||= AdminMessage.find 3
89
+ welcome_admin_message ||=
90
+ AdminMessage.find SysConfig.default_welcome_admin_message_id
91
+ confirmed_admin_message ||=
92
+ AdminMessage.find SysConfig.default_confirmed_admin_message_id
93
+ sayonara_admin_message ||=
94
+ AdminMessage.find SysConfig.default_farewell_admin_message_id
95
+ # welcome_admin_message ||= AdminMessage.find 1 # XXX MAGIC CONSTANT
96
+ # confirmed_admin_message ||= AdminMessage.find 2 # XXX MAGIC CONSTANT
97
+ # sayonara_admin_message ||= AdminMessage.find 3 # XXX MAGIC CONSTANT
92
98
  end
93
99
 
94
100
  #------------------------------------------------------------------------
@@ -106,9 +112,22 @@ class Mailinglist < ActiveRecord::Base
106
112
  # rumble's mailing-list class).
107
113
  #------------------------------------------------------------------------
108
114
 
109
- def address; "#{name}@#{user.domain.name}"; end
110
- def bounceaddress; "#{name}-bounce@#{user.domain.name}"; end
111
- def requestaddress; "#{name}-request@#{user.domain.name}"; end
115
+ def address
116
+ name + "@" + user.domain.name
117
+ # "#{name}@#{user.domain.name}"
118
+ end
119
+
120
+ def bounceaddress
121
+ name + SysConfig.address_separator + SysConfig.bounce_suffix + "@" +
122
+ user.domain.name
123
+ # "#{name}-bounce@#{user.domain.name}" # XXX MAGIC CONSTANT XXX
124
+ end
125
+
126
+ def requestaddress
127
+ name + SysConfig.address_separator + SysConfig.request_suffix + "@" +
128
+ user.domain.name
129
+ # "#{name}-request@#{user.domain.name}" # XXX MAGIC CONSTANT XXX
130
+ end
112
131
 
113
132
  def self.find_by_address addr
114
133
  if ml = find_by_basic_address(addr) then
@@ -134,7 +153,7 @@ class Mailinglist < ActiveRecord::Base
134
153
  end
135
154
 
136
155
  def self.find_by_proxy_address addr
137
- if matchdata=addr.match(/-([0-9]+)\@/) then
156
+ if matchdata=addr.match(/#{Regexp.escape(SysConfig.address_separator)}([0-9]+)\@/) then
138
157
  proxy_id=matchdata[1].to_i
139
158
  if ml=find_by_basic_address(addr.sub(/-[0-9]+\@/,"@")) then
140
159
  begin
@@ -261,8 +261,13 @@ class Message < ActiveRecord::Base
261
261
  # else. Fix later.
262
262
  #
263
263
  # (This should actually be in the database somewhere, I'm thinking.)
264
- smtpserver = "localhost"
265
- smtpport = 25
264
+ smtpserver = SysConfig.smtpserver
265
+ smtpport = SysConfig.smtpport
266
+ mysmtpname = SysConfig.mysmtpname
267
+
268
+ # smtpserver = "localhost" # XXX MAGIC CONSTANT XXX
269
+ # smtpport = 25 # XXX MAGIC CONSTANT XXX
270
+ # mysmtpname = "localhost" # XXX MAGIC CONSTNAT XXX
266
271
 
267
272
  if smtpdetails.has_key? :smtpserver then
268
273
  smtpserver = smtpdetails[:smtpserver]
@@ -271,8 +276,11 @@ class Message < ActiveRecord::Base
271
276
  smtpport = smtpdetails[:smtpport] || 25
272
277
  end
273
278
 
274
- fromaddress = "#{mailinglist.name}-bounces@#{mailinglist.user.domain.name}"
275
- Net::SMTP.start(smtpserver, smtpport, "localhost") do |smtp|
279
+ fromaddress = mailinglist.name + SysConfig.address_separator +
280
+ SysConfig.bounce_suffix + "@" + mailinglist.user.domain.name
281
+ # XXX MAGIC CONSTANT XXX
282
+ # fromaddress = "#{mailinglist.name}-bounces@#{mailinglist.user.domain.name}"
283
+ Net::SMTP.start(smtpserver, smtpport, mysmtpname) do |smtp|
276
284
  # puts "Will send email to #{addresses.inspect}"
277
285
  # puts "Message id is #{id}"
278
286
  smtp.send_message messagetext, fromaddress, addresses
@@ -0,0 +1,51 @@
1
+ # The sys_config table stores the system configuration for a Sugoi-Mail
2
+ # This includes things like the mail server and the default mailing list
3
+ # class for new users.
4
+ #
5
+ # sys_config has the following data members, although you probably won't
6
+ # need to know them due to the fact that you access configuration parameters
7
+ # directly rather than by searching for them:
8
+ # +name+:: The name of the configuration parameter.
9
+ # +value+:: The value of the configuration parameter. This is
10
+ # serialized as YAML for the moment, until the YAML
11
+ # storage format starts presenting problems.
12
+ #
13
+ # To use this library, simply refer to SysConfig.parameter_name. For example,
14
+ # if the SMTP host were stored in the parameter "smtphost", you'd retrieve
15
+ # it with a simple
16
+ #
17
+ # SysConfig.smtphost
18
+ #
19
+ # and you'd set it with:
20
+ #
21
+ # SysConfig.smtphost = "localhost"
22
+
23
+ class SysConfig < ActiveRecord::Base
24
+ serialize :value
25
+
26
+ def self.method_missing meth, *args
27
+ begin
28
+ super(meth, *args)
29
+ rescue NoMethodError
30
+ config_param = meth.to_s
31
+ if config_param =~ /\=$/ then
32
+ if args.length > 1 then
33
+ raise ArgumentError, "How did you manage that?"
34
+ end
35
+ config_param.sub! /\=$/,''
36
+ conf = self.find_or_create_by_name config_param
37
+ conf.value = args[0]
38
+ if conf.save
39
+ return conf
40
+ end
41
+ else
42
+ conf = self.find_by_name config_param
43
+ unless conf
44
+ raise ActiveRecord::RecordNotFound,
45
+ "config param #{config_param} does not exist"
46
+ end
47
+ conf.value
48
+ end
49
+ end
50
+ end
51
+ end
@@ -82,7 +82,7 @@ class User < ActiveRecord::Base
82
82
  # @user = User.authenticate('bob', 'bobpass')
83
83
  #
84
84
  def self.authenticate(login, pass)
85
- find_first(["login = ? AND password = ?", login, sha1(pass)])
85
+ find_by_login_and_password login, sha1(pass)
86
86
  end
87
87
 
88
88
 
@@ -109,7 +109,7 @@ class User < ActiveRecord::Base
109
109
  ml=Mailinglist.new
110
110
  ml.name=self.login
111
111
  ml.user_id=self.id
112
- ml.mailinglist_class=MailinglistClass.find 1
112
+ ml.mailinglist_class=MailinglistClass.find 1 # XXX MAGIC CONSTANT XXX
113
113
  if @description then
114
114
  ml.description = @description
115
115
  end
@@ -6,6 +6,11 @@ class AppInstaller < RailsInstaller
6
6
  application_name 'sugoi-mail'
7
7
  support_location 'http://invio.co.jp/'
8
8
  rails_version '1.1.6'
9
+
10
+ def post_install_hook
11
+ system("rake db:fixtures:load FIXTURES=mailinglist_classes,admin_messages,sys_configs RAILS_ENV=production")
12
+ system("rake db:fixtures:load FIXTURES=mailinglist_classes,admin_messages,sys_configs RAILS_ENV=development") # for the hackers
13
+ end
9
14
  end
10
15
 
11
16
  # Installer program
@@ -0,0 +1,14 @@
1
+ class CreateSysConfigs < ActiveRecord::Migration
2
+ def self.up
3
+ create_table :sys_configs do |t|
4
+ t.column :name, :string
5
+ t.column :value, :string
6
+ t.column :description, :string
7
+ t.column :priority, :integer
8
+ end
9
+ end
10
+
11
+ def self.down
12
+ drop_table :sys_configs
13
+ end
14
+ end
@@ -2,7 +2,7 @@
2
2
  # migrations feature of ActiveRecord to incrementally modify your database, and
3
3
  # then regenerate this schema definition.
4
4
 
5
- ActiveRecord::Schema.define(:version => 25) do
5
+ ActiveRecord::Schema.define(:version => 26) do
6
6
 
7
7
  create_table "addresses", :force => true do |t|
8
8
  t.column "address", :text
@@ -72,6 +72,13 @@ ActiveRecord::Schema.define(:version => 25) do
72
72
  t.column "address_id", :integer, :null => false
73
73
  end
74
74
 
75
+ create_table "sys_configs", :force => true do |t|
76
+ t.column "name", :string
77
+ t.column "value", :string
78
+ t.column "description", :string
79
+ t.column "priority", :integer
80
+ end
81
+
75
82
  create_table "users", :force => true do |t|
76
83
  t.column "login", :text, :null => false
77
84
  t.column "password", :text, :null => false
@@ -0,0 +1,61 @@
1
+ # Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html
2
+ smtpserver:
3
+ id: 1
4
+ name: smtpserver
5
+ value: localhost
6
+ description: The SMTP server to deliver mail through.
7
+ priority: 1
8
+ smtpport:
9
+ id: 2
10
+ name: smtpport
11
+ value: 25
12
+ description: The port to connect to on the SMTP server.
13
+ priority: 1
14
+ mysmtpname:
15
+ id: 3
16
+ name: mysmtpname
17
+ value: localhost
18
+ description: The value to give to the SMTP server upon connecting (with the SMTP HELO command)
19
+ priority: 2
20
+ default_welcome_admin_message_id:
21
+ id: 4
22
+ name: default_welcome_admin_message_id
23
+ value: 1
24
+ description: The ID of the default message to use to welcome a new subscriber to the mailing list.
25
+ priority: 3
26
+ default_confirmed_admin_message_id:
27
+ id: 5
28
+ name: default_confirmed_admin_message_id
29
+ value: 2
30
+ description: The ID of the default message to use to let a new subscriber know that his subscription has been confirmed.
31
+ priority: 3
32
+ default_farewell_admin_message_id:
33
+ id: 6
34
+ name: default_farewell_admin_message_id
35
+ value: 3
36
+ description: The ID of the default message to use to say farewell to a departing subscriber.
37
+ priority: 3
38
+ address_separator:
39
+ id: 7
40
+ name: address_separator
41
+ value: "-"
42
+ description: The character used to separate the bounces and request suffix from the list email address.
43
+ priority: 5
44
+ bounce_suffix:
45
+ id: 8
46
+ name: bounce_suffix
47
+ value: "bounces"
48
+ description: What suffix to append to a mailing list address to catch bounces with
49
+ priority: 4
50
+ request_suffix:
51
+ id: 9
52
+ name: request_suffix
53
+ value: "request"
54
+ description: The suffix to append to a mailing list address to send messages to with subscription and unsubscription requests
55
+ priority: 4
56
+ new_user_mailinglist_class:
57
+ id: 10
58
+ name: new_user_mailinglist_class
59
+ value: 1
60
+ description: The mailing list class of the "forwarded mail" mailing list created when a new user is created.
61
+ priority: 3
@@ -8,7 +8,7 @@ class MailserviceController; def rescue_action(e) raise e end; end
8
8
  class MailserviceControllerTest < Test::Unit::TestCase
9
9
  fixtures :domains, :users, :mailinglists, :admin_messages,
10
10
  :mailinglist_classes, :confirmationcodes, :addresses,
11
- :addresses_mailinglists
11
+ :addresses_mailinglists, :sys_configs
12
12
 
13
13
  def setup
14
14
  @controller = MailserviceController.new
@@ -22,6 +22,10 @@ def stuff_ask(*responses)
22
22
  end
23
23
 
24
24
  class SugoiAdminControllerTest < Test::Unit::TestCase
25
+ fixtures :domains, :users, :mailinglists, :admin_messages,
26
+ :mailinglist_classes, :confirmationcodes, :addresses,
27
+ :addresses_mailinglists, :sys_configs
28
+
25
29
  def setup
26
30
  @controller = SugoiAdminController.new
27
31
  # @request = ActionController::TestRequest.new
@@ -81,8 +85,8 @@ class SugoiAdminControllerTest < Test::Unit::TestCase
81
85
 
82
86
  def test_create_user_normally
83
87
  assert_nothing_raised do
84
- invoke "create_user", "test.domain", "newuser", "newuser@foo.test",
85
- "New User"
88
+ invoke "create_user", "test.domain", "newuser",
89
+ "newuser@foo.test", "New User"
86
90
  end
87
91
  assert_equal [ "create_user: User \"newuser@test.domain\" created successfully" ],
88
92
  assigns["messages"]
@@ -186,48 +190,48 @@ class SugoiAdminControllerTest < Test::Unit::TestCase
186
190
  assert assigns["mailinglist_classes"]
187
191
  end
188
192
 
189
- def test_create_mailing_list_wrong_class
193
+ def test_create_list_wrong_class
190
194
  assert_nothing_raised do
191
- invoke "create_mailing_list", 100, "newmailinglist", "test.domain",
192
- "testuser", "New Mailing List"
195
+ invoke "create_list", "newmailinglist", "test.domain",
196
+ "testuser", "New Mailing List", 100
193
197
  end
194
198
  assert assigns["error"]
195
- assert_equal "create_mailing_list: Invalid mailing list class: 100",
199
+ assert_equal "create_list: Invalid mailing list class: 100",
196
200
  assigns["error"]
197
201
  assert_nil Mailinglist.find_by_address("newmailinglist@test.domain")
198
202
  end
199
203
 
200
- def test_create_mailing_list_wrong_domain
204
+ def test_create_list_wrong_domain
201
205
  assert_nothing_raised do
202
- invoke "create_mailing_list", 2, "newmailinglist",
206
+ invoke "create_list", "newmailinglist",
203
207
  "nonexistent.domain", "testuser", "New Mailing List"
204
208
  end
205
209
  assert assigns["error"]
206
- assert_equal "create_mailing_list: Domain \"nonexistent.domain\" not found.",
210
+ assert_equal "create_list: Domain \"nonexistent.domain\" not found.",
207
211
  assigns["error"]
208
212
  assert_nil Mailinglist.find_by_address("newmailinglist@test.domain")
209
213
  end
210
214
 
211
215
  def test_create_Mailing_list_wrong_user
212
216
  assert_nothing_raised do
213
- invoke "create_mailing_list", 2, "newmailinglist",
217
+ invoke "create_list", "newmailinglist",
214
218
  "test.domain", "nonexistentuser", "New Mailing List"
215
219
  end
216
220
 
217
221
  assert assigns["error"]
218
- assert_equal "create_mailing_list: User \"nonexistentuser\" not found in domain \"test.domain\".",
222
+ assert_equal "create_list: User \"nonexistentuser\" not found in domain \"test.domain\".",
219
223
  assigns["error"]
220
224
  assert_nil Mailinglist.find_by_address("newmailinglist@test.domain")
221
225
  end
222
226
 
223
- def test_create_mailing_list_normal
227
+ def test_create_list_normal
224
228
  assert_nothing_raised do
225
- invoke "create_mailing_list", 2, "newmailinglist", "test.domain",
229
+ invoke "create_list", "newmailinglist", "test.domain",
226
230
  "testuser"
227
231
  end
228
232
 
229
233
  assert assigns["messages"]
230
- assert_equal ["create_mailing_list: Mailing list \"newmailinglist@test.domain\" created successfully."],
234
+ assert_equal ["create_list: Mailing list \"newmailinglist@test.domain\" created successfully."],
231
235
  assigns["messages"]
232
236
  assert Mailinglist.find_by_address("newmailinglist@test.domain")
233
237
  end
@@ -253,7 +257,7 @@ class SugoiAdminControllerTest < Test::Unit::TestCase
253
257
  end
254
258
  assert_nil assigns["messages"]
255
259
  assert assigns["error"]
256
- assert_equal "subscribe: Mailing list \"nonexistent@test.domain\" does not exist!", assigns["error"]
260
+ assert_equal "subscribe: Mailing list \"nonexistent@test.domain\" not found.", assigns["error"]
257
261
  end
258
262
 
259
263
  def test_unsubscribe_address_from_mailing_list
@@ -2,7 +2,7 @@ require File.dirname(__FILE__) + '/../test_helper'
2
2
 
3
3
  class AddressTest < Test::Unit::TestCase
4
4
  fixtures :mailinglists, :users, :addresses_mailinglists, :addresses,
5
- :domains
5
+ :domains, :sys_configs
6
6
 
7
7
  def test_parse_1
8
8
  assert_equal [ 'address1@foo.test', 'Address One'],
@@ -4,7 +4,8 @@ require 'net-smtp-stub'
4
4
 
5
5
  class MailinglistTest < Test::Unit::TestCase
6
6
  fixtures :mailinglists, :addresses_mailinglists, :addresses,
7
- :confirmationcodes, :users, :admin_messages, :domains, :messages
7
+ :confirmationcodes, :users, :admin_messages, :domains, :messages,
8
+ :proxy_links
8
9
 
9
10
  def setup
10
11
  @ml=Mailinglist.find 1
@@ -0,0 +1,41 @@
1
+ require File.dirname(__FILE__) + '/../test_helper'
2
+
3
+ class SysConfigTest < Test::Unit::TestCase
4
+ fixtures :sys_configs
5
+
6
+ def setup
7
+ @testconfig = @loaded_fixtures["sys_configs"]
8
+ end
9
+
10
+ # Replace this with your real tests.
11
+ def test_truth
12
+ assert true
13
+ end
14
+
15
+ def test_param_not_found
16
+ assert_raises ActiveRecord::RecordNotFound do
17
+ SysConfig.nosuchparam
18
+ end
19
+ end
20
+
21
+ def test_fixture_retrieval
22
+ assert_equal @testconfig["smtpserver"]["value"], SysConfig.smtpserver
23
+ assert_equal @testconfig["smtpport"]["value"],
24
+ SysConfig.smtpport
25
+ end
26
+
27
+ def test_set_new_simple_param
28
+ assert_equal 42, SysConfig.test1=42
29
+ assert_equal 42, SysConfig.test1
30
+
31
+ assert_equal "test", SysConfig.test2="test"
32
+ assert_equal "test", SysConfig.test2
33
+ end
34
+
35
+ def test_old_activerecord_functionality
36
+ assert_nothing_raised do
37
+ param = SysConfig.find_by_name "smtpserver"
38
+ assert_equal @testconfig["smtpserver"]["value"], param.value
39
+ end
40
+ end
41
+ end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.0
3
3
  specification_version: 1
4
4
  name: sugoi-mail
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.0.1
7
- date: 2006-12-28 00:00:00 +09:00
6
+ version: 0.0.2
7
+ date: 2007-01-04 00:00:00 +09:00
8
8
  summary: Powerful mailing list manager.
9
9
  require_paths:
10
10
  - .
@@ -99,6 +99,7 @@ files:
99
99
  - app/controllers/address_controller.rb
100
100
  - app/controllers/application.rb
101
101
  - app/controllers/domain_controller.rb
102
+ - app/models/sys_config.rb
102
103
  - app/models/mailinglist_class.rb
103
104
  - app/models/domain.rb
104
105
  - app/models/message.rb
@@ -126,13 +127,13 @@ files:
126
127
  - app/views/sugoi_admin/subscribe.rhtml
127
128
  - app/views/sugoi_admin/list_addresses.rhtml
128
129
  - app/views/sugoi_admin/list_domains.rhtml
129
- - app/views/sugoi_admin/create_mailing_list.rhtml
130
130
  - app/views/sugoi_admin/unsubscribe.rhtml
131
131
  - app/views/sugoi_admin/list_mailinglist_classes.rhtml
132
132
  - app/views/sugoi_admin/list_mailinglists.rhtml
133
133
  - app/views/sugoi_admin/list_users.rhtml
134
134
  - app/views/sugoi_admin/create_user.rhtml
135
135
  - app/views/sugoi_admin/create_domain.rhtml
136
+ - app/views/sugoi_admin/create_list.rhtml
136
137
  - app/views/layouts/scaffold.rhtml
137
138
  - app/views/layouts/address.rhtml
138
139
  - app/views/address/new.rhtml
@@ -190,6 +191,7 @@ files:
190
191
  - db/migrate/015_add_messages_to_mailinglists.rb
191
192
  - db/migrate/014_create_admin_messages.rb
192
193
  - db/migrate/010_add_domain_to_users.rb
194
+ - db/migrate/026_create_sys_configs.rb
193
195
  - db/migrate/022_add_virtual_to_users.rb
194
196
  - db/migrate/007_create_messages.rb
195
197
  - db/migrate/013_add_description_to_mailinglists.rb
@@ -216,9 +218,11 @@ files:
216
218
  - test/unit/mailinglist_class_test.rb
217
219
  - test/unit/mailinglist_test.rb
218
220
  - test/unit/message_test.rb
221
+ - test/unit/sys_config_test.rb
219
222
  - test/unit/address_test.rb
220
223
  - test/unit/confirmationcode_test.rb
221
224
  - test/unit/domain_test.rb
225
+ - test/fixtures/sys_configs.yml
222
226
  - test/fixtures/confirmationcodes.yml
223
227
  - test/fixtures/addresses_mailinglists.yml
224
228
  - test/fixtures/messages.yml