sugoi-mail 0.0.1 → 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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