sugoi-mail 0.0.0

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.
Files changed (182) hide show
  1. data/README +35 -0
  2. data/Rakefile +10 -0
  3. data/app/apis/mailservice_api.rb +178 -0
  4. data/app/controllers/.sugoi_admin_controller.rb.swp +0 -0
  5. data/app/controllers/account_controller.rb +39 -0
  6. data/app/controllers/address_controller.rb +49 -0
  7. data/app/controllers/application.rb +4 -0
  8. data/app/controllers/commandline_controller.rb +15 -0
  9. data/app/controllers/domain_controller.rb +37 -0
  10. data/app/controllers/mailinglist_controller.rb +51 -0
  11. data/app/controllers/mailservice_controller.rb +497 -0
  12. data/app/controllers/sugoi_admin_controller.rb +93 -0
  13. data/app/helpers/account_helper.rb +2 -0
  14. data/app/helpers/address_helper.rb +2 -0
  15. data/app/helpers/application_helper.rb +3 -0
  16. data/app/helpers/domain_helper.rb +2 -0
  17. data/app/helpers/mailservice_helper.rb +2 -0
  18. data/app/helpers/sugoi_admin_helper.rb +2 -0
  19. data/app/models/address.rb +110 -0
  20. data/app/models/admin_message.rb +45 -0
  21. data/app/models/confirmationcode.rb +59 -0
  22. data/app/models/domain.rb +76 -0
  23. data/app/models/mailinglist.rb +336 -0
  24. data/app/models/mailinglist_class.rb +39 -0
  25. data/app/models/message.rb +293 -0
  26. data/app/models/proxy_link.rb +25 -0
  27. data/app/models/user.rb +150 -0
  28. data/app/views/account/login.rhtml +22 -0
  29. data/app/views/account/logout.rhtml +10 -0
  30. data/app/views/account/signup.rhtml +17 -0
  31. data/app/views/account/welcome.rhtml +13 -0
  32. data/app/views/address/_form.rhtml +7 -0
  33. data/app/views/address/edit.rhtml +10 -0
  34. data/app/views/address/list.rhtml +27 -0
  35. data/app/views/address/new.rhtml +8 -0
  36. data/app/views/address/show.rhtml +8 -0
  37. data/app/views/domain/login.rhtml +22 -0
  38. data/app/views/domain/logout.rhtml +10 -0
  39. data/app/views/domain/signup.rhtml +17 -0
  40. data/app/views/domain/welcome.rhtml +13 -0
  41. data/app/views/layouts/address.rhtml +13 -0
  42. data/app/views/layouts/scaffold.rhtml +13 -0
  43. data/app/views/mailinglist/_form.rhtml +28 -0
  44. data/app/views/mailinglist/edit.rhtml +10 -0
  45. data/app/views/mailinglist/list.rhtml +27 -0
  46. data/app/views/mailinglist/new.rhtml +8 -0
  47. data/app/views/mailinglist/show.rhtml +16 -0
  48. data/app/views/sugoi_admin/create_domain.rhtml +1 -0
  49. data/app/views/sugoi_admin/list_addresses.rhtml +1 -0
  50. data/app/views/sugoi_admin/list_domains.rhtml +2 -0
  51. data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -0
  52. data/bin/mailc +32 -0
  53. data/bin/maild +133 -0
  54. data/bin/sugoi-admin +21 -0
  55. data/bin/sugoi-mail +20 -0
  56. data/config/boot.rb +44 -0
  57. data/config/environment.rb +54 -0
  58. data/config/environments/bench.rb +21 -0
  59. data/config/environments/coverage.rb +21 -0
  60. data/config/environments/development.rb +21 -0
  61. data/config/environments/production.rb +18 -0
  62. data/config/environments/test.rb +19 -0
  63. data/config/lighttpd.conf +46 -0
  64. data/config/routes.rb +29 -0
  65. data/db/migrate/001_mailproxy.rb +7 -0
  66. data/db/migrate/002_create_users.rb +13 -0
  67. data/db/migrate/003_create_mailinglists.rb +13 -0
  68. data/db/migrate/004_create_addresses.rb +12 -0
  69. data/db/migrate/005_create_addresses_mailinglists.rb +13 -0
  70. data/db/migrate/006_alter_mailinglists.rb +9 -0
  71. data/db/migrate/007_create_messages.rb +25 -0
  72. data/db/migrate/008_add_mailinglistid_to_users.rb +14 -0
  73. data/db/migrate/009_add_domainadmin_to_users.rb +9 -0
  74. data/db/migrate/010_add_domain_to_users.rb +16 -0
  75. data/db/migrate/011_add_active_to_addresses.rb +14 -0
  76. data/db/migrate/012_create_confirmationcodes.rb +14 -0
  77. data/db/migrate/013_add_description_to_mailinglists.rb +9 -0
  78. data/db/migrate/014_create_admin_messages.rb +69 -0
  79. data/db/migrate/015_add_messages_to_mailinglists.rb +26 -0
  80. data/db/migrate/016_add_mailinglist_admin_to_users.rb +9 -0
  81. data/db/migrate/017_add_mailinglist_types.rb +94 -0
  82. data/db/migrate/018_add_bounciness_to_addresses.rb +20 -0
  83. data/db/migrate/019_add_archived_to_mailinglist_classes.rb +25 -0
  84. data/db/migrate/020_add_envelope_data_to_messages.rb +11 -0
  85. data/db/migrate/021_add_addresses_users.rb +14 -0
  86. data/db/migrate/022_add_virtual_to_users.rb +14 -0
  87. data/db/migrate/023_drop_openposting_from_mailinglists.rb +9 -0
  88. data/db/migrate/024_add_proxy_links.rb +21 -0
  89. data/db/migrate/025_add_proxify_to_mailinglist_classes.rb +25 -0
  90. data/db/schema.mysql.sql +104 -0
  91. data/db/schema.postgresql.sql +104 -0
  92. data/db/schema.rb +85 -0
  93. data/db/schema.sqlite.sql +104 -0
  94. data/db/schema.sqlserver.sql +113 -0
  95. data/db/schema_version +1 -0
  96. data/doc/README_FOR_APP +179 -0
  97. data/doc/mailinglist_classes description.txt +28 -0
  98. data/installer/rails_installer_defaults.yml +5 -0
  99. data/lib/daemonize.rb +56 -0
  100. data/lib/domain_system.rb +87 -0
  101. data/lib/gurgitate-rules.rb +69 -0
  102. data/lib/limitedfork.rb +66 -0
  103. data/lib/login_system.rb +87 -0
  104. data/public/.htaccess +40 -0
  105. data/public/404.html +8 -0
  106. data/public/500.html +8 -0
  107. data/public/dispatch.cgi +10 -0
  108. data/public/dispatch.fcgi +24 -0
  109. data/public/dispatch.rb +10 -0
  110. data/public/favicon.ico +0 -0
  111. data/public/images/rails.png +0 -0
  112. data/public/javascripts/application.js +2 -0
  113. data/public/javascripts/controls.js +815 -0
  114. data/public/javascripts/dragdrop.js +913 -0
  115. data/public/javascripts/effects.js +958 -0
  116. data/public/javascripts/prototype.js +2006 -0
  117. data/public/robots.txt +1 -0
  118. data/public/stylesheets/scaffold.css +74 -0
  119. data/public/stylesheets/trestle.css +74 -0
  120. data/script/about +3 -0
  121. data/script/breakpointer +3 -0
  122. data/script/console +3 -0
  123. data/script/destroy +3 -0
  124. data/script/fakedeliver +19 -0
  125. data/script/generate +3 -0
  126. data/script/performance/benchmarker +3 -0
  127. data/script/performance/profiler +3 -0
  128. data/script/plugin +3 -0
  129. data/script/process/reaper +3 -0
  130. data/script/process/spawner +3 -0
  131. data/script/runner +3 -0
  132. data/script/server +3 -0
  133. data/sugoi-mail.gemspec +36 -0
  134. data/test/fixtures/addresses.yml +70 -0
  135. data/test/fixtures/addresses_mailinglists.yml +20 -0
  136. data/test/fixtures/admin_messages.yml +65 -0
  137. data/test/fixtures/confirmationcodes.yml +13 -0
  138. data/test/fixtures/domains.yml +9 -0
  139. data/test/fixtures/mailinglist_classes.yml +45 -0
  140. data/test/fixtures/mailinglists.yml +80 -0
  141. data/test/fixtures/messages.yml +154 -0
  142. data/test/fixtures/proxy_links.yml +5 -0
  143. data/test/fixtures/users.yml +50 -0
  144. data/test/functional/domain_controller_test.rb +74 -0
  145. data/test/functional/mailservice_controller_test.rb +546 -0
  146. data/test/integration/test_soap.rb +413 -0
  147. data/test/integration/test_xmlrpc.rb +198 -0
  148. data/test/mocks/test/net-smtp-stub.rb +24 -0
  149. data/test/test_helper.rb +28 -0
  150. data/test/unit/address_test.rb +44 -0
  151. data/test/unit/admin_message_test.rb +41 -0
  152. data/test/unit/confirmationcode_test.rb +64 -0
  153. data/test/unit/domain_test.rb +128 -0
  154. data/test/unit/mailinglist_class_test.rb +82 -0
  155. data/test/unit/mailinglist_test.rb +145 -0
  156. data/test/unit/message_test.rb +151 -0
  157. data/test/unit/user_test.rb +126 -0
  158. data/test/units.rb +4 -0
  159. data/vendor/plugins/active_command/init.rb +1 -0
  160. data/vendor/plugins/active_command/lib/active_command/request.rb +137 -0
  161. data/vendor/plugins/active_command/lib/active_command/response.rb +132 -0
  162. data/vendor/plugins/active_command/lib/active_command.rb +2 -0
  163. data/vendor/plugins/ar_fixtures/CHANGELOG +10 -0
  164. data/vendor/plugins/ar_fixtures/MIT-LICENSE +20 -0
  165. data/vendor/plugins/ar_fixtures/README +19 -0
  166. data/vendor/plugins/ar_fixtures/Rakefile +54 -0
  167. data/vendor/plugins/ar_fixtures/about.yml +7 -0
  168. data/vendor/plugins/ar_fixtures/init.rb +1 -0
  169. data/vendor/plugins/ar_fixtures/lib/ar_fixtures.rb +102 -0
  170. data/vendor/plugins/ar_fixtures/tasks/ar_fixtures.rake +39 -0
  171. data/vendor/plugins/ar_fixtures/test/ar_fixtures_test.rb +53 -0
  172. data/vendor/plugins/ar_fixtures/test/database.yml +18 -0
  173. data/vendor/plugins/ar_fixtures/test/fixtures/beer.rb +5 -0
  174. data/vendor/plugins/ar_fixtures/test/fixtures/beers.yml +9 -0
  175. data/vendor/plugins/ar_fixtures/test/fixtures/beers_drunkards.yml +8 -0
  176. data/vendor/plugins/ar_fixtures/test/fixtures/drunkard.rb +6 -0
  177. data/vendor/plugins/ar_fixtures/test/fixtures/drunkards.yml +8 -0
  178. data/vendor/plugins/ar_fixtures/test/fixtures/glass.rb +2 -0
  179. data/vendor/plugins/ar_fixtures/test/fixtures/glasses.yml +9 -0
  180. data/vendor/plugins/ar_fixtures/test/schema.rb +21 -0
  181. data/vendor/plugins/ar_fixtures/test/test_helper.rb +37 -0
  182. metadata +320 -0
data/README ADDED
@@ -0,0 +1,35 @@
1
+ ABOUT SUGOI MAIL
2
+
3
+ Sugoi Mail is a mailing list manager, with a difference!
4
+
5
+ Sure, you can use it just to run your normal mailing lists. Indeed, it
6
+ does that very well! You can have thousands of mailing lists at your
7
+ site with sugoi-mail.
8
+
9
+ But it's much more than that. It takes the concept of the mailing list,
10
+ and stretches it in every direction it can think of. Personal
11
+ distribution lists? Why, that's just another kind of mailing list. Closed
12
+ announcement lists? Sure thing. Personal mail forwarding addresses?
13
+ Absolutely.
14
+
15
+ And built using the combined forces of Ruby on Rails and Gurgitate-Mail,
16
+ you can combine the two in ways never thought of before. Want to build a
17
+ simple webmail system? Sure! Want to integrate mail-forwarding as an
18
+ extra for users of your bulletin board system? Don't want to do that
19
+ stuff yourself? Just call us and we'll be glad to help you out.
20
+
21
+ Sugoi Mail: Building mailing lists out of webs and toffee.
22
+
23
+ And because my boss told me to put this here: Sugoi-Mail is an open
24
+ source project proudly sponsored by Invio, the makers of the Ichinichi
25
+ Ichimon line of educational software.
26
+
27
+ NOTE FOR FOLKS GOING TO INSTALL IT: Right now, this is in a state that
28
+ I'd call PRE-ALPHA.
29
+
30
+ That is to say, parts of it have been in service for weeks, but there's
31
+ still no real interface, the SOAP interface is underdocumented and
32
+ probably incorrect at this point anyway, and everythings
33
+ overcomplicated. In other words: FOR ADVENTUROUS PEOPLE ONLY. That
34
+ said, if you do decide to install it, I greet you! I'll be writing an
35
+ installer presently.
data/Rakefile ADDED
@@ -0,0 +1,10 @@
1
+ # Add your own tasks in files placed in lib/tasks ending in .rake,
2
+ # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
+
4
+ require(File.join(File.dirname(__FILE__), 'config', 'boot'))
5
+
6
+ require 'rake'
7
+ require 'rake/testtask'
8
+ require 'rake/rdoctask'
9
+
10
+ require 'tasks/rails'
@@ -0,0 +1,178 @@
1
+ class MailserviceApi < ActionWebService::API::Base
2
+ #------------------------------------------------------------------------
3
+ # Server methods
4
+ #------------------------------------------------------------------------
5
+
6
+ api_method :ping, :returns => [ :bool ],
7
+ :expects => [ ]
8
+
9
+ #------------------------------------------------------------------------
10
+ # domain methods
11
+ #------------------------------------------------------------------------
12
+ api_method :domain_login, :returns => [ :bool ],
13
+ :expects => [ { :domainname => :string },
14
+ { :password => :string } ]
15
+
16
+ api_method :domain_logout, :returns => [ :bool ],
17
+ :expects => []
18
+
19
+ api_method :domain_logged_in, :returns => [ :bool ],
20
+ :expects => []
21
+
22
+ api_method :domain_name, :returns => [ :string ],
23
+ :expects => []
24
+ #------------------------------------------------------------------------
25
+ # admin methods
26
+ #------------------------------------------------------------------------
27
+
28
+ api_method :is_admin, :returns => [ :bool ],
29
+ :expects => [ ]
30
+
31
+ api_method :admin_user_signup, :returns => [ :bool ],
32
+ :expects => [ { :login => :string },
33
+ { :password => :string },
34
+ { :password_confirmation => :string } ]
35
+
36
+ api_method :admin_user_list, :returns => [ [ [:string, :string] ] ],
37
+ :expects => [ ]
38
+
39
+ api_method :admin_user_reset_password, :returns => [ :bool ],
40
+ :expects => [
41
+ { :login => :string },
42
+ { :password => :string },
43
+ { :password_confirmation => :string }
44
+ ]
45
+
46
+ api_method :admin_user_delete, :returns => [ :bool ],
47
+ :expects => [ { :login => :string },
48
+ { :login_confirmation => :string } ]
49
+
50
+ api_method :admin_get_confirmation_code, :returns => [ :string ],
51
+ :expects => [ { :mailinglist_name => :string },
52
+ { :address => :string } ]
53
+
54
+ #------------------------------------------------------------------------
55
+ # user methods
56
+ #------------------------------------------------------------------------
57
+
58
+ api_method :user_login, :returns => [ :bool ],
59
+ :expects => [ { :username => :string },
60
+ { :password => :string } ]
61
+
62
+ api_method :user_logout, :returns => [ :bool ], :expects => []
63
+
64
+ api_method :user_logged_in, :returns => [ :bool ], :expects => []
65
+ api_method :user_name, :returns => [ :string ], :expects => []
66
+
67
+ api_method :user_mailinglists, :returns => [ [ :integer ] ],
68
+ :expects => []
69
+
70
+ api_method :user_email_address, :returns => [ :string ], :expects => []
71
+
72
+ api_method :user_email_addresses, :returns => [ [ :string ] ],
73
+ :expects => [ ]
74
+ api_method :user_email_addresses_confirmed, :returns => [ [ :string ] ],
75
+ :expects => [ ]
76
+ api_method :user_email_addresses_unconfirmed, :returns => [ [ :string ] ],
77
+ :expects => [ ]
78
+
79
+ api_method :user_email_address_confirm, :returns => [ :bool ],
80
+ :expects => [
81
+ { :address => :string },
82
+ { :code => :string }
83
+ ]
84
+
85
+ api_method :user_change_password, :returns => [ :bool ],
86
+ :expects => [
87
+ { :old_password => :string },
88
+ { :password => :string },
89
+ { :password_confirmation => :string }
90
+ ]
91
+
92
+ api_method :user_real_name, :returns => [ :string ],
93
+ :expects => [ ]
94
+
95
+ api_method :user_change_real_name, :returns => [ :string ],
96
+ :expects => [
97
+ { :password => :string },
98
+ { :new_name => :string }
99
+ ]
100
+
101
+ api_method :user_email_addresses_add, :returns => [ [ :string ] ],
102
+ :expects => [ { :addr => :string } ]
103
+
104
+ api_method :user_email_addresses_remove, :returns => [ :string ],
105
+ :expects => [ { :addr => :string } ]
106
+
107
+ #------------------------------------------------------------------------
108
+ # mailing list methods
109
+ #------------------------------------------------------------------------
110
+
111
+ api_method :mailinglist_create, :returns => [ :string ],
112
+ :expects => [ { :name => :string },
113
+ { :mailinglist_class => :string } ]
114
+
115
+ api_method :mailinglist_classes, :returns => [ [ :string ] ],
116
+ :expects => [ ]
117
+
118
+ api_method :mailinglist_class_get_attributes,
119
+ :returns => [ MailinglistClass],
120
+ :expects => [ { :mlclass => :string } ]
121
+
122
+ api_method :mailinglist_name, :returns => [ :string ],
123
+ :expects => [ { :id => :integer } ]
124
+
125
+ api_method :mailinglist_address, :returns => [ :string ],
126
+ :expects => [ { :id => :integer } ]
127
+
128
+ api_method :mailinglist_find_by_name, :returns => [ :integer ],
129
+ :expects => [ { :name => :string } ]
130
+
131
+ api_method :mailinglist_delete, :returns => [ :bool ],
132
+ :expects => [ { :mailinglist_id => :integer } ]
133
+
134
+ api_method :mailinglist_subscribers, :returns => [ [ :string ] ],
135
+ :expects => [ { :mailinglist_id => :integer } ]
136
+
137
+ api_method :mailinglist_pending, :returns => [ [ :string ] ],
138
+ :expects => [ { :mailinglist_id => :integer } ]
139
+
140
+ api_method :mailinglist_subscribe, :returns => [ :bool ],
141
+ :expects => [
142
+ { :mailinglist_id => :integer },
143
+ { :address => :string }
144
+ ]
145
+
146
+ api_method :mailinglist_confirm, :returns => [ :bool ],
147
+ :expects => [
148
+ { :mailinglist_name => :string },
149
+ { :address => :string },
150
+ { :code => :string }
151
+ ]
152
+
153
+ api_method :mailinglist_unsubscribe, :returns => [ :bool ],
154
+ :expects => [
155
+ { :mailinglist_id => :integer },
156
+ { :address => :string }
157
+ ]
158
+
159
+ api_method :mailinglist_messages, :returns => [ [ :integer ] ],
160
+ :expects => [
161
+ { :mailinglist_id => :integer }
162
+ ]
163
+
164
+ api_method :message, :returns => [ Message ],
165
+ :expects => [
166
+ { :message_id => :integer }
167
+ ]
168
+
169
+ api_method :message_parent, :returns => [ :integer ],
170
+ :expects => [
171
+ { :message_id => :integer }
172
+ ]
173
+
174
+ api_method :message_responses, :returns => [ [ :integer ] ],
175
+ :expects => [
176
+ { :message_id => :integer }
177
+ ]
178
+ end
@@ -0,0 +1,39 @@
1
+ class AccountController < ApplicationController
2
+ layout 'scaffold'
3
+
4
+ include LoginSystem
5
+
6
+ def login
7
+ case @request.method
8
+ when :post
9
+ if @session[:user] = User.authenticate(@params[:user_login], @params[:user_password])
10
+
11
+ flash['notice'] = "Login successful"
12
+ redirect_back_or_default :action => "welcome"
13
+ else
14
+ flash.now['notice'] = "Login unsuccessful"
15
+
16
+ @login = @params[:user_login]
17
+ end
18
+ end
19
+ end
20
+
21
+ def signup
22
+ if @request.post?
23
+ @user = User.new(@params[:user])
24
+ if @user.save
25
+ @session[:user] = User.authenticate(@user.login, @params[:user][:password])
26
+ flash['notice'] = "Signup successful"
27
+ redirect_back_or_default :action => "welcome"
28
+ end
29
+ end
30
+ end
31
+
32
+ def logout
33
+ @session[:user] = nil
34
+ end
35
+
36
+ def welcome
37
+ end
38
+
39
+ end
@@ -0,0 +1,49 @@
1
+ class AddressController < ApplicationController
2
+ verify :only => [ 'show', 'edit', 'destroy' ],
3
+ :params => :id,
4
+ :add_flash => { :notice => 'Missing address ID.' },
5
+ :redirect_to => { :action => 'list' }
6
+
7
+ def destroy
8
+ if request.post?
9
+ Address.find(params[:id]).destroy
10
+ flash[:notice] = 'The address was successfully destroyed.'
11
+ redirect_to :action => 'list'
12
+ else
13
+ flash[:notice] = 'Click Destroy to destroy the address.'
14
+ redirect_to :action => 'edit', :id => params[:id]
15
+ end
16
+ end
17
+
18
+ def edit
19
+ if request.post?
20
+ @address = Address.find(params[:id])
21
+ if @address.update_attributes(params[:address])
22
+ flash[:notice] = 'The address was successfully edited.'
23
+ redirect_to :action => 'show', :id => @address
24
+ end
25
+ else
26
+ @address = Address.find(params[:id])
27
+ end
28
+ end
29
+
30
+ def list
31
+ @address_pages, @addresses = paginate(:addresses)
32
+ end
33
+
34
+ def new
35
+ if request.post?
36
+ @address = Address.new(params[:address])
37
+ if @address.save
38
+ flash[:notice] = 'A new address was successfully added.'
39
+ redirect_to :action => 'list'
40
+ end
41
+ else
42
+ @address = Address.new
43
+ end
44
+ end
45
+
46
+ def show
47
+ @address = Address.find(params[:id])
48
+ end
49
+ end
@@ -0,0 +1,4 @@
1
+ # Filters added to this controller will be run for all controllers in the application.
2
+ # Likewise, all the methods added will be available for all controllers.
3
+ class ApplicationController < ActionController::Base
4
+ end
@@ -0,0 +1,15 @@
1
+ require 'highline/import'
2
+
3
+ # Controller for command line thingies
4
+ class CommandlineController < ApplicationController
5
+ def perform_action
6
+ if self.class.action_methods.include?(action_name.to_s) || self.class.action_methods.include?('method_missing')
7
+ send(action_name,*params["args"])
8
+ render unless performed?
9
+ elsif template_exists? && template_public?
10
+ render
11
+ else
12
+ raise UnknownAction, "No action responded to #{action_name}", caller
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,37 @@
1
+ class DomainController < ApplicationController
2
+ include DomainSystem
3
+ layout 'scaffold'
4
+
5
+ def login
6
+ case @request.method
7
+ when :post
8
+ if @session[:domain] = Domain.authenticate(@params[:domain_name], @params[:domain_password])
9
+
10
+ flash['notice'] = "Login successful"
11
+ redirect_back_or_default :action => "welcome"
12
+ else
13
+ flash.now['notice'] = "Login unsuccessful"
14
+
15
+ @login = @params[:domain_login]
16
+ end
17
+ end
18
+ end
19
+
20
+ def signup
21
+ @domain = Domain.new(@params[:domain])
22
+
23
+ if @request.post? and @domain.save
24
+ @session[:domain] = Domain.authenticate(@domain.name, @params[:domain][:password])
25
+ flash['notice'] = "Signup successful"
26
+ redirect_back_or_default :action => "welcome"
27
+ end
28
+ end
29
+
30
+ def logout
31
+ @session[:domain] = nil
32
+ end
33
+
34
+ def welcome
35
+ end
36
+
37
+ end
@@ -0,0 +1,51 @@
1
+ class MailinglistController < ApplicationController
2
+ verify :only => [ 'show', 'edit', 'destroy' ],
3
+ :params => :id,
4
+ :add_flash => { :notice => 'Missing mailinglist ID.' },
5
+ :redirect_to => { :action => 'list' }
6
+
7
+ def destroy
8
+ if request.post?
9
+ Mailinglist.find(params[:id]).destroy
10
+ flash[:notice] = 'The mailinglist was successfully destroyed.'
11
+ redirect_to :action => 'list'
12
+ else
13
+ flash[:notice] = 'Click Destroy to destroy the mailinglist.'
14
+ redirect_to :action => 'edit', :id => params[:id]
15
+ end
16
+ end
17
+
18
+ def edit
19
+ if request.post?
20
+ @mailinglist = Mailinglist.find(params[:id])
21
+ if @mailinglist.update_attributes(params[:mailinglist])
22
+ if @mailinglist.save
23
+ flash[:notice] = 'The mailinglist was successfully edited.'
24
+ redirect_to :action => 'show', :id => @mailinglist
25
+ end
26
+ end
27
+ else
28
+ @mailinglist = Mailinglist.find(params[:id])
29
+ end
30
+ end
31
+
32
+ def list
33
+ @mailinglist_pages, @mailinglists = paginate(:mailinglists)
34
+ end
35
+
36
+ def new
37
+ if request.post?
38
+ @mailinglist = Mailinglist.new(params[:mailinglist])
39
+ if @mailinglist.save
40
+ flash[:notice] = 'A new mailinglist was successfully added.'
41
+ redirect_to :action => 'list'
42
+ end
43
+ else
44
+ @mailinglist = Mailinglist.new
45
+ end
46
+ end
47
+
48
+ def show
49
+ @mailinglist = Mailinglist.find(params[:id])
50
+ end
51
+ end