sugoi-mail 0.1.0 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (156) hide show
  1. data/INSTALL +94 -0
  2. data/app/apis/mailservice_api.rb +32 -22
  3. data/app/controllers/account_controller.rb +38 -22
  4. data/app/controllers/address_controller.rb +2 -0
  5. data/app/controllers/application.rb +12 -1
  6. data/app/controllers/base_user_controller.rb +29 -0
  7. data/app/controllers/domain_controller.rb +7 -8
  8. data/app/controllers/mail_admin_controller.rb +275 -0
  9. data/app/controllers/mailinglist_controller.rb +68 -14
  10. data/app/controllers/mailservice_controller.rb +116 -94
  11. data/app/controllers/navigation_controller.rb +3 -0
  12. data/app/controllers/root_admin_controller.rb +346 -0
  13. data/app/controllers/sugoi_admin_controller.rb +16 -13
  14. data/app/helpers/base_user_helper.rb +2 -0
  15. data/app/helpers/mail_admin_helper.rb +7 -0
  16. data/app/helpers/navigation_helper.rb +2 -0
  17. data/app/helpers/root_admin_helper.rb +2 -0
  18. data/app/models/address.rb +3 -4
  19. data/app/models/domain.rb +1 -1
  20. data/app/models/mail_admin.rb +2 -0
  21. data/app/models/mailinglist.rb +41 -19
  22. data/app/models/mailinglist_class.rb +1 -0
  23. data/app/models/message.rb +18 -36
  24. data/app/models/proxy_link.rb +14 -6
  25. data/app/views/account/login.rhtml +14 -12
  26. data/app/views/account/logout.rhtml +4 -8
  27. data/app/views/account/welcome.rhtml +3 -13
  28. data/app/views/base_user/add_address.rhtml +3 -0
  29. data/app/views/base_user/edit_address.rhtml +3 -0
  30. data/app/views/base_user/edit_user_list.rhtml +21 -0
  31. data/app/views/base_user/list_mailinglists.rhtml +3 -0
  32. data/app/views/base_user/remove_address.rhtml +3 -0
  33. data/app/views/base_user/unsubscribe_self.rhtml +3 -0
  34. data/app/views/layouts/application.rhtml +47 -0
  35. data/app/views/layouts/login.rhtml +34 -0
  36. data/app/views/layouts/sugoi_admin.rhtml +1 -0
  37. data/app/views/mail_admin/_form.rhtml +11 -0
  38. data/app/views/mail_admin/edit_admin_message.rhtml +12 -0
  39. data/app/views/mail_admin/list_admin_messages.rhtml +20 -0
  40. data/app/views/mail_admin/new_admin_message.rhtml +0 -0
  41. data/app/views/mailinglist/_address_form.rhtml +23 -0
  42. data/app/views/mailinglist/_form.rhtml +10 -14
  43. data/app/views/mailinglist/_new_class_form.rhtml +16 -0
  44. data/app/views/mailinglist/_new_form.rhtml +30 -0
  45. data/app/views/mailinglist/edit.rhtml +11 -5
  46. data/app/views/mailinglist/list.rhtml +15 -15
  47. data/app/views/mailinglist/list_mailinglist_classes.rhtml +18 -0
  48. data/app/views/mailinglist/new.rhtml +5 -5
  49. data/app/views/mailinglist/new_address.rhtml +10 -0
  50. data/app/views/mailinglist/new_mailinglist_class.rhtml +8 -0
  51. data/app/views/mailinglist/show.rhtml +15 -13
  52. data/app/views/navigation/_base_add_address_module.rhtml +2 -0
  53. data/app/views/navigation/_base_edit_address_module.rhtml +2 -0
  54. data/app/views/navigation/_base_edit_user_list_module.rhtml +5 -0
  55. data/app/views/navigation/_base_index_module.rhtml +2 -0
  56. data/app/views/navigation/_base_list_mailinglists_module.rhtml +3 -0
  57. data/app/views/navigation/_base_remove_address_module.rhtml +2 -0
  58. data/app/views/navigation/_base_unsubscribe_self_module.rhtml +2 -0
  59. data/app/views/navigation/_base_welcome_module.rhtml +3 -0
  60. data/app/views/navigation/_nav_module.rhtml +77 -0
  61. data/app/views/navigation/_root_add_address_module.rhtml +3 -0
  62. data/app/views/navigation/_root_add_mailinglist_module.rhtml +3 -0
  63. data/app/views/navigation/_root_add_user_module.rhtml +3 -0
  64. data/app/views/navigation/_root_change_user_password_module.rhtml +3 -0
  65. data/app/views/navigation/_root_edit_address_module.rhtml +13 -0
  66. data/app/views/navigation/_root_edit_mailinglist_module.rhtml +12 -0
  67. data/app/views/navigation/_root_edit_user_list_module.rhtml +3 -0
  68. data/app/views/navigation/_root_edit_user_module.rhtml +10 -0
  69. data/app/views/navigation/_root_index_module.rhtml +4 -0
  70. data/app/views/navigation/_root_list_addresses_module.rhtml +11 -0
  71. data/app/views/navigation/_root_list_mailinglists_module.rhtml +11 -0
  72. data/app/views/navigation/_root_list_users_module.rhtml +12 -0
  73. data/app/views/navigation/_root_remove_address_module.rhtml +12 -0
  74. data/app/views/navigation/_root_remove_mailinglist_module.rhtml +12 -0
  75. data/app/views/navigation/_root_remove_user_module.rhtml +12 -0
  76. data/app/views/navigation/_root_show_user_module.rhtml +10 -0
  77. data/app/views/navigation/_root_welcome_module.rhtml +3 -0
  78. data/app/views/navigation/chooseNav.rhtml +0 -0
  79. data/app/views/navigation/logout.rhtml +8 -0
  80. data/app/views/root_admin/_form.rhtml +21 -0
  81. data/app/views/root_admin/add_address.rhtml +3 -0
  82. data/app/views/root_admin/add_mailinglist.rhtml +3 -0
  83. data/app/views/root_admin/admin_user_list.rhtml +29 -0
  84. data/app/views/root_admin/admin_user_new.rhtml +8 -0
  85. data/app/views/root_admin/change_user_password.rhtml +3 -0
  86. data/app/views/root_admin/edit_address.rhtml +3 -0
  87. data/app/views/root_admin/edit_mailinglist.rhtml +3 -0
  88. data/app/views/root_admin/edit_user_list.rhtml +3 -0
  89. data/app/views/root_admin/list_addresses.rhtml +3 -0
  90. data/app/views/root_admin/list_mailinglists.rhtml +3 -0
  91. data/app/views/root_admin/list_users.rhtml +32 -0
  92. data/app/views/root_admin/remove_address.rhtml +3 -0
  93. data/app/views/root_admin/remove_mailinglist.rhtml +3 -0
  94. data/app/views/root_admin/remove_user.rhtml +3 -0
  95. data/app/views/root_admin/show_user.rhtml +3 -0
  96. data/app/views/sugoi_admin/_command_description.rhtml +1 -1
  97. data/app/views/sugoi_admin/_command_list.rhtml +1 -1
  98. data/app/views/sugoi_admin/create_domain.rhtml +1 -1
  99. data/app/views/sugoi_admin/create_list.rhtml +1 -1
  100. data/app/views/sugoi_admin/create_user.rhtml +1 -1
  101. data/app/views/sugoi_admin/help.rhtml +1 -1
  102. data/app/views/sugoi_admin/init.rhtml +1 -1
  103. data/app/views/sugoi_admin/list_addresses.rhtml +1 -1
  104. data/app/views/sugoi_admin/list_domains.rhtml +1 -1
  105. data/app/views/sugoi_admin/list_mailinglist_classes.rhtml +1 -1
  106. data/app/views/sugoi_admin/list_mailinglists.rhtml +1 -1
  107. data/app/views/sugoi_admin/list_users.rhtml +1 -1
  108. data/app/views/sugoi_admin/set_config.rhtml +4 -1
  109. data/app/views/sugoi_admin/show_config.rhtml +1 -1
  110. data/app/views/sugoi_admin/subscribe.rhtml +1 -1
  111. data/app/views/sugoi_admin/unsubscribe.rhtml +1 -1
  112. data/bin/maild +1 -1
  113. data/bin/sugoi-mail +1 -1
  114. data/config/environment.rb +2 -2
  115. data/config/routes.rb +4 -2
  116. data/db/migrate/028_add_sessions.rb +15 -0
  117. data/db/schema.rb +56 -48
  118. data/lib/login_system.rb +6 -6
  119. data/lib/tasks/release.rake +2 -2
  120. data/public/404.html +27 -5
  121. data/public/500.html +27 -5
  122. data/public/images/celltop1.jpg +0 -0
  123. data/public/images/title11.jpg +0 -0
  124. data/public/{index.html → index_default.html} +0 -0
  125. data/public/javascripts/dragdrop.js +1 -1
  126. data/public/javascripts/effects.js +1 -1
  127. data/public/javascripts/prototype.js +1 -1
  128. data/public/stylesheets/global.css +201 -0
  129. data/public/stylesheets/scaffold.css +176 -11
  130. data/public/stylesheets/trestle.css +176 -11
  131. data/script/cover +6 -0
  132. data/script/process/inspector +3 -0
  133. data/test/all.rb +2 -0
  134. data/test/fixtures/helps.yml +1 -1
  135. data/test/fixtures/mailinglist_classes.yml +4 -4
  136. data/test/fixtures/messages.yml +22 -2
  137. data/test/functional/base_user_controller_test.rb +18 -0
  138. data/test/functional/mail_admin_controller_test.rb +18 -0
  139. data/test/functional/mailservice_controller_test.rb +164 -19
  140. data/test/functional/navigation_controller_test.rb +18 -0
  141. data/test/functional/root_admin_controller_test.rb +18 -0
  142. data/test/functional/sugoi_admin_controller_test.rb +68 -10
  143. data/test/functionals.rb +2 -1
  144. data/test/integration/test_soap.rb +3 -1
  145. data/test/unit/address_test.rb +16 -1
  146. data/test/unit/domain_test.rb +5 -12
  147. data/test/unit/mailinglist_class_test.rb +2 -2
  148. data/test/unit/mailinglist_test.rb +138 -3
  149. data/test/unit/message_test.rb +256 -1
  150. data/test/unit/proxy_link_test.rb +37 -0
  151. data/test/unit/sys_config_test.rb +6 -0
  152. data/test/unit/user_test.rb +20 -0
  153. data/test/units.rb +2 -1
  154. metadata +94 -8
  155. data/app/views/layouts/address.rhtml +0 -13
  156. data/app/views/layouts/scaffold.rhtml +0 -13
@@ -44,11 +44,11 @@ class Message < ActiveRecord::Base
44
44
  match(/(\<[^>]+\>)/)
45
45
  if referenced then
46
46
  referenced=referenced[1]
47
- else
48
- if mess.headers["References"] then
49
- referenced=mess.headers["References"][0].contents.
50
- split.last
51
- end
47
+ end
48
+ else
49
+ if mess.headers["References"] then
50
+ referenced=mess.headers["References"][0].contents.
51
+ split.last
52
52
  end
53
53
  end
54
54
  Message.find_by_messageid referenced
@@ -79,7 +79,13 @@ class Message < ActiveRecord::Base
79
79
  message.body = mess.body.to_s
80
80
  message.parent = find_parent mess
81
81
  message.envelope_from = mess.from
82
- message.envelope_to = mess.to.map { |t| t.contents }
82
+ message.envelope_to = mess.to.map do |t|
83
+ if Gurgitate::Header === t
84
+ t.contents
85
+ else
86
+ t
87
+ end
88
+ end
83
89
 
84
90
  message.address.save if message.address.new_record?
85
91
 
@@ -92,7 +98,7 @@ class Message < ActiveRecord::Base
92
98
  return message
93
99
 
94
100
  elsif String === mess then
95
- from_message Gurgitate::Mailmessage.new(mess),recipient,sender
101
+ from_message Gurgitate::Mailmessage.new(mess,recipient,sender)
96
102
  end
97
103
  end
98
104
 
@@ -208,29 +214,18 @@ class Message < ActiveRecord::Base
208
214
  # "deliver" message. This might have headers rewritten to reflect
209
215
  # mail aliases.
210
216
  def messagetext(smtpdetails={})
211
- if smtpdetails.length == 1 and smtpdetails[0].has_key? :custom_message
212
- smtpdetails[0][:custom_message]
217
+ if smtpdetails.has_key? :custom_message
218
+ return smtpdetails[:custom_message]
213
219
  end
214
220
 
215
- if mailinglist.canonical_address? or mailinglist.closed? then
221
+ if mailinglist and
222
+ ( mailinglist.canonical_address? or mailinglist.closed? ) then
216
223
  proxify_addresses
217
224
  else
218
225
  to_s
219
226
  end
220
227
  end
221
228
 
222
- def proxy_deliver(from_address, to_address)
223
- text = proxify_addresses
224
-
225
- smtpserver = "localhost"
226
- smtpport = 25
227
-
228
- Net::SMTP.start(smtpserver, smtpport, "localhost") do |smtp|
229
- smtp.send_message text, from_address, to_address
230
- end
231
- end
232
-
233
-
234
229
  # Delivers a message with the optional parameter hash +smtpdetails+.
235
230
  #
236
231
  #
@@ -256,19 +251,10 @@ class Message < ActiveRecord::Base
256
251
  addresses = mailinglist.expand_addresses.map { |a| a.address }
257
252
  end
258
253
 
259
-
260
- # Hm, not sure why this is *here* instead of somewhere
261
- # else. Fix later.
262
- #
263
- # (This should actually be in the database somewhere, I'm thinking.)
264
254
  smtpserver = SysConfig.smtpserver
265
255
  smtpport = SysConfig.smtpport
266
256
  mysmtpname = SysConfig.mysmtpname
267
257
 
268
- # smtpserver = "localhost" # XXX MAGIC CONSTANT XXX
269
- # smtpport = 25 # XXX MAGIC CONSTANT XXX
270
- # mysmtpname = "localhost" # XXX MAGIC CONSTNAT XXX
271
-
272
258
  if smtpdetails.has_key? :smtpserver then
273
259
  smtpserver = smtpdetails[:smtpserver]
274
260
  end
@@ -278,12 +264,8 @@ class Message < ActiveRecord::Base
278
264
 
279
265
  fromaddress = mailinglist.name + SysConfig.address_separator +
280
266
  SysConfig.bounce_suffix + "@" + mailinglist.user.domain.name
281
- # XXX MAGIC CONSTANT XXX
282
- # fromaddress = "#{mailinglist.name}-bounces@#{mailinglist.user.domain.name}"
283
267
  Net::SMTP.start(smtpserver, smtpport, mysmtpname) do |smtp|
284
- # puts "Will send email to #{addresses.inspect}"
285
- # puts "Message id is #{id}"
286
- smtp.send_message messagetext, fromaddress, addresses
268
+ smtp.send_message messagetext(smtpdetails), fromaddress, addresses
287
269
  end
288
270
  end
289
271
 
@@ -13,12 +13,20 @@ class ProxyLink < ActiveRecord::Base
13
13
  if matches
14
14
  mlname, proxyid, domainname = matches[1..3]
15
15
  domain=Domain.find_by_name domainname
16
- ml=Mailinglist.find_all_by_name(mlname).find do |m|
17
- m.domain == domain
18
- end
19
- pl=self.find(proxyid.to_i)
20
- if pl.mailinglist_id == ml.id then
21
- return pl.address.address
16
+ if domain
17
+ ml=Mailinglist.find_all_by_name(mlname).find do |m|
18
+ m.domain.id == domain.id
19
+ end
20
+ if ml
21
+ # find_by_id instead of find so that it returns
22
+ # nil if not found rather than raising an exception
23
+ pl=self.find_by_id proxyid.to_i
24
+ if pl
25
+ if pl.mailinglist_id == ml.id then
26
+ return pl.address.address
27
+ end
28
+ end
29
+ end
22
30
  end
23
31
  end
24
32
  end
@@ -1,21 +1,23 @@
1
- <%= start_form_tag :action=> "login" %>
2
1
 
3
- <div title="Account login" id="loginform" class="form">
4
- <h3>Please login</h3>
5
-
6
- <% if @flash['notice'] %>
7
- <div id="message"><%= @flash['notice'] %></div>
8
- <% end %>
2
+ <h3>Please login</h3>
9
3
 
10
- <label for="user_login">Login:</label><br/>
11
- <input type="text" name="user_login" id="user_login" size="30" value=""/><br/>
12
4
 
13
- <label for="user_password">Password:</label><br/>
5
+ <%= start_form_tag :action=> "login" %>
6
+ <div title="Account login" id="loginform" class="form">
7
+ <br/>
8
+ <br/>
9
+ <label for="user_login">Login:</label>
10
+ <input type="text" name="user_login" id="user_login" class="loginInput" size="30" value=""/><br/>
11
+ <br/>
12
+ <label for="user_password">Password:</label>
14
13
  <input type="password" name="user_password" id="user_password" size="30"/>
15
14
 
16
- <br/>
15
+ <br/><br/><br/>
17
16
  <input type="submit" name="login" value="Login &#187;" class="primary" />
18
-
17
+ <br/><br/><br/>
18
+ <% if @flash['notice'] %>
19
+ <div id="message"><%= @flash['notice'] %></div>
20
+ <% end %>
19
21
  </div>
20
22
 
21
23
  <%= end_form_tag %>
@@ -1,10 +1,6 @@
1
1
 
2
- <div class="memo">
3
- <h3>Logoff</h3>
4
-
5
- <p>You are now logged out of the system...</p>
6
-
7
- <%= link_to "&#171; login", :action=>"login"%>
8
-
9
- </div>
2
+ <p>You are now logged out of the system...</p>
3
+
4
+ <%= render :partial => 'navigation/nav_module' %>
5
+
10
6
 
@@ -1,13 +1,3 @@
1
-
2
- <div class="memo">
3
- <h3>Welcome</h3>
4
-
5
- <p>You are now logged into the system...</p>
6
- <p>
7
- Since you are here it's safe to assume the application never called store_location, otherwise
8
- you would have been redirected somewhere else after a successful login.
9
- </p>
10
-
11
- <%= link_to "&#171; logout", :action=>"logout"%>
12
-
13
- </div>
1
+ <%= render :file => "mailinglist/list", :use_full_path => true %>
2
+ <%= render :file => "root_admin/list_users", :use_full_path => true %>
3
+ <%= render :file => "mailinglist/list_mailinglist_classes", :use_full_path => true %>
@@ -0,0 +1,3 @@
1
+ Adding an address to the user's forwardin glist.
2
+
3
+ <%= render :partial => 'navigation/nav_module' %>
@@ -0,0 +1,3 @@
1
+ Where the user edits an address he/she has already added.
2
+
3
+ <%= render :partial => 'navigation/nav_module' %>
@@ -0,0 +1,21 @@
1
+ This is where the base user would change their forwarding addresses.
2
+ <br>
3
+ <table>
4
+ <tr>
5
+ <% for column in Mailinglist.content_columns %>
6
+ <th><%= column.human_name %></th>
7
+ <% end %>
8
+ </tr>
9
+
10
+ <% for mailinglist in @mailinglists %>
11
+ <tr>
12
+ <% for column in Mailinglist.content_columns %>
13
+ <td><%=h mailinglist.send(column.name) %></td>
14
+ <% end %>
15
+ <br>
16
+ <% end %>
17
+ </tr>
18
+ </table>
19
+ <%= link_to 'Destroy', { :action => 'destroy', :id => mailinglist }, :post => true, :confirm => 'Are you sure you want to destroy this mailinglist?' %>
20
+ <%= link_to 'Edit', :controller => 'mailinglist', :action => 'edit', :id => mailinglist %>
21
+ <%= render :partial => 'navigation/nav_module' %>
@@ -0,0 +1,3 @@
1
+ This is where the base user would see a list of all the mailing lists they are subscribed to, and have the option to unsubscribe by sending an email to the list moderator/owner.
2
+
3
+ <%= render :partial => 'navigation/nav_module' %>
@@ -0,0 +1,3 @@
1
+ This should never show, just a popup saying "Are you sure?"
2
+
3
+ <%= render :partial => 'navigation/nav_module' %>
@@ -0,0 +1,3 @@
1
+ This page should never actually show, except maybe to let the user add a personal message to the email to the list owner. I doubt that, though.
2
+
3
+ <%= render :partial => 'navigation/nav_module' %>
@@ -0,0 +1,47 @@
1
+ <?xml version="1.0" encoding="iso-8859-1"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4
+ <html>
5
+ <head>
6
+ <title>Sugoi Mail</title>
7
+ <%= stylesheet_link_tag 'global' %>
8
+ </head>
9
+ <body>
10
+ <div id="windowCenter" align="center">
11
+
12
+ <div id="windowConstrain" align="center">
13
+
14
+ <!-- Title bar -->
15
+
16
+ <div id="titlebar">
17
+ <!-- <h1 class="sugoiTitle">SUGOI-MAIL</h1> -->
18
+ </div>
19
+
20
+ <!-- End Title Bar -->
21
+
22
+ <!-- Main Content Panel -->
23
+
24
+ <div id="content">
25
+ <%= flash[:notice] %>
26
+ <%= @content_for_layout %>
27
+ </div>
28
+
29
+ <!-- End Main Content Panel -->
30
+
31
+ <!-- Navigation Panel -->
32
+
33
+ <%= render :partial => 'navigation/nav_module' %>
34
+ <%= yield :navbar %>
35
+
36
+ <!-- End Navigation Panel -->
37
+
38
+ <!-- Signature -->
39
+
40
+ <!-- <div id="signature">
41
+ Copyright &copy; 2007 Invio Corporation
42
+ </div> -->
43
+ <!-- End Signature -->
44
+ </div>
45
+ </div>
46
+ </body>
47
+ </html>
@@ -0,0 +1,34 @@
1
+ <html>
2
+ <head>
3
+ <title>Sugoi Mail</title>
4
+ <%= stylesheet_link_tag 'global' %>
5
+ </head>
6
+ <body>
7
+ <div id="windowCenter" align="center">
8
+
9
+ <div id="windowConstrain" align="center">
10
+
11
+ <!-- Title bar -->
12
+
13
+ <div id="titlebar">
14
+ <!-- <h1 class="sugoiTitle">SUGOI-MAIL</h1> -->
15
+ </div>
16
+
17
+ <!-- End Title Bar -->
18
+
19
+ <!-- Content here -->
20
+
21
+ <%= @content_for_layout %>
22
+
23
+ <!-- End Content -->
24
+
25
+ <!-- Signature -->
26
+
27
+ <!-- <div id="signature">
28
+ Copyright &copy; 2007 Invio Corporation
29
+ </div> -->
30
+ <!-- End Signature -->
31
+ </div>
32
+ </div>
33
+ </body>
34
+ </html>
@@ -0,0 +1 @@
1
+ <%= @content_for_layout -%>
@@ -0,0 +1,11 @@
1
+ <%= error_messages_for 'adminmessage' %>
2
+
3
+ <!--[form:admin_message]-->
4
+ <p>
5
+ <label for="_name">Message:</label>
6
+
7
+ <%= text_area 'adminmessage', 'message' %>
8
+ </p>
9
+
10
+
11
+ <!--[eoform:mailinglist]-->
@@ -0,0 +1,12 @@
1
+ <h1>Editing Admin Message: <%= @adminmessage.id %></h1>
2
+
3
+ <%= start_form_tag :action => 'edit_admin_message', :id => @adminmessage %>
4
+ <%= render :partial => 'form' %>
5
+ <br/>
6
+ <%= submit_tag 'Save Changes' %>
7
+ <%= end_form_tag %>
8
+
9
+ <br/><br/>
10
+ <%= button_to 'Delete This Admin Message', { :action => 'remove_admin_message', :id => @adminmessage }, :confirm => 'Are you sure you want to remove this admin message? It will cause problems!' %>
11
+
12
+ <br>
@@ -0,0 +1,20 @@
1
+
2
+ <h3>Admin Messages</h3>
3
+ These are the messages sent out upon (un)subscription, and confirmation.
4
+ <table class="mainTable" cellspacing="0" cellpadding="4">
5
+ <tr>
6
+ <th>Message</th>
7
+ </tr>
8
+
9
+ <% for adminmessage in @adminmessages %> <!--set @adminmessages!-->
10
+ <tr>
11
+ <% for column in AdminMessage.content_columns %>
12
+ <% if column.human_name == "Message" %>
13
+ <td><%= adminmessage.send(column.name) %></td>
14
+ <% end %>
15
+ <td><%= link_to 'Edit', :controller => "mail_admin", :action => 'edit_admin_message', :id => {@mailinglist, adminmessage} %></td>
16
+ <td><%= link_to_image "remove.gif", { :controller => "mail_admin", :action => 'remove_admin_message', :id => adminmessage }, :post => true, :confirm => 'Are you sure you want to remove this message? It could cause serious problems.' %>
17
+ </tr>
18
+ <% end %>
19
+ <% end %>
20
+ </table>
File without changes
@@ -0,0 +1,23 @@
1
+ <%= error_messages_for 'mailinglist' %>
2
+ <p>
3
+ <% if @mailinglist.addresses != nil %>
4
+ <b><%= "Addresses" %>:</b>
5
+ <ul>
6
+ <% @mailinglist.addresses.each do |address| %>
7
+ <li>
8
+ <% if false %><%= check_box "mailinglist_address", address.id, {}, "T", "F" %><% end %>
9
+ <%= address.address %>
10
+ </li>
11
+ <% end %>
12
+ </ul>
13
+ <% end %>
14
+ </p>
15
+
16
+ <!--[form:mailinglist]-->
17
+ <p>
18
+ <label for="mailinglist_address">Add Address</label>
19
+ <br/>
20
+ <%= text_field 'address', 'address' %>
21
+ </p>
22
+
23
+ <!--[eoform:mailinglist]-->
@@ -2,27 +2,23 @@
2
2
 
3
3
  <!--[form:mailinglist]-->
4
4
  <p>
5
- <label for="mailinglist_name">Mailinglist</label>
5
+ <label for="mailinglist_name">Name:</label>
6
6
  <br/>
7
7
  <%= text_field 'mailinglist', 'name' %>
8
8
  </p>
9
9
  <p>
10
+ <label for="mailinglist_class_id">Class:</label><br />
11
+ <select name="mailinglist_class_id" style="width:250px;">
12
+ <% if @mailinglist_classes %>
13
+ <%= options_from_collection_for_select(@mailinglist_classes, "id", "name", selected_value=@mailinglist.mailinglist_class_id) %>
14
+ <% end %>
15
+ </select>
16
+ </p>
17
+ <!-- <p>
10
18
  <label for="mailinglist_openposting">Open to the public?</label>
11
19
  <br/>
12
20
  <%= check_box "mailinglist", 'openposting', {}, "T", "F" %>
13
- </p>
14
- <p>
15
- <b><%= "Addresses" %>:</b>
16
- <ul>
17
- <% @mailinglist.addresses.each do |address| %>
18
- <li>
19
- <%= check_box "mailinglist_address", address.id, {}, "T", "F" %>
20
- <%= address.address %>
21
- </li>
22
- <% end %>
23
- </ul>
24
- </p>
25
-
21
+ </p>-->
26
22
 
27
23
 
28
24
  <!--[eoform:mailinglist]-->
@@ -0,0 +1,16 @@
1
+ <%= error_messages_for 'mailinglist_class' %>
2
+
3
+ <!--[form:mailinglist]-->
4
+ <p>
5
+ <label for="mailinglist_class_name">Mailinglist Class Name</label>
6
+ <br/>
7
+ <%= text_field 'mailinglist_class', 'name' %>
8
+ </p>
9
+
10
+ <label for="mailinglist_class_description">Description:</label>
11
+ <br />
12
+ <%= text_field 'mailinglist_class', 'description' %>
13
+ </p>
14
+ <br/>
15
+ <br/>
16
+ <!--[eoform:mailinglist]-->
@@ -0,0 +1,30 @@
1
+ <%= error_messages_for 'mailinglist' %>
2
+
3
+ <!--[form:mailinglist]-->
4
+ <p>
5
+ <label for="mailinglist_name">Mailinglist Name</label>
6
+ <br/>
7
+ <%= text_field 'mailinglist', 'name' %>
8
+ </p>
9
+ <p>
10
+ <label for="mailinglist_user">Select User:</label><br />
11
+ <select name="user" style="width:250px;">
12
+ <% if @users %>
13
+ <%= options_from_collection_for_select(@users, "login", "login", @selected) %>
14
+ <% end %>
15
+ </select>
16
+ </p>
17
+ <p>
18
+ <label for="mailinglist_mailinglist_class_id">Class:</label><br />
19
+ <select name="mailinglist_class_id" style="width:250px;">
20
+ <% if @mailinglist_classes %>
21
+ <%= options_from_collection_for_select(@mailinglist_classes, "id", "name", @selected) %>
22
+ <% end %>
23
+ </select>
24
+ </p>
25
+ <p>
26
+ <label for="mailinglist_description">Description:</label<br />
27
+ <%= text_field 'mailinglist', 'description' %>
28
+ </p>
29
+
30
+ <!--[eoform:mailinglist]-->
@@ -1,10 +1,16 @@
1
- <h1>Editing mailinglist</h1>
1
+ <h1>Editing Mailing List: <%= @mailinglist.name %></h1>
2
2
 
3
3
  <%= start_form_tag :action => 'edit', :id => @mailinglist %>
4
4
  <%= render :partial => 'form' %>
5
- <%= submit_tag 'Save' %>
5
+ <br/>
6
+ <%= submit_tag 'Save Changes' %>
6
7
  <%= end_form_tag %>
7
- <%= button_to 'Destroy', { :action => 'destroy', :id => @mailinglist }, :confirm => 'Are you sure you want to destroy this mailinglist?' %>
8
8
 
9
- <%= link_to 'Show', :action => 'show', :id => @mailinglist %> |
10
- <%= link_to 'Back to list', :action => 'list' %>
9
+ <%= start_form_tag :action => 'add_address', :id => @mailinglist %>
10
+ <%= render :partial => 'address_form' %>
11
+ <%= submit_tag 'Add' %>
12
+ <%= end_form_tag %>
13
+ <br/><br/>
14
+ <%= button_to 'Delete This Mailing List', { :action => 'remove', :id => @mailinglist }, :confirm => 'Are you sure you want to destroy this mailinglist?' %>
15
+
16
+ <br>
@@ -1,27 +1,27 @@
1
- <h1>Listing mailinglists</h1>
2
1
 
3
- <table>
2
+ <h3>Mailing Lists</h3>
3
+
4
+ <table class="mainTable" cellspacing="0" cellpadding="4">
4
5
  <tr>
6
+
5
7
  <% for column in Mailinglist.content_columns %>
6
8
  <th><%= column.human_name %></th>
7
9
  <% end %>
10
+ <th>Class</th>
8
11
  </tr>
9
12
 
10
13
  <% for mailinglist in @mailinglists %>
11
14
  <tr>
12
15
  <% for column in Mailinglist.content_columns %>
13
- <td><%=h mailinglist.send(column.name) %></td>
14
- <% end %>
15
- <td><%= link_to 'Show', :action => 'show', :id => mailinglist %></td>
16
- <td><%= link_to 'Edit', :action => 'edit', :id => mailinglist %></td>
17
- <td><%= link_to 'Destroy', { :action => 'destroy', :id => mailinglist }, :post => true, :confirm => 'Are you sure you want to destroy this mailinglist?' %>
16
+ <% if column.human_name == "Name" %>
17
+ <td><%= link_to mailinglist.send(column.name), :controller => "mailinglist", :action => 'show', :id => mailinglist %></td>
18
+ <% else %>
19
+ <td><%=h mailinglist.send(column.name) %></td>
20
+ <% end %>
21
+ <% end %>
22
+ <td><%= mailinglist.mailinglist_class.name %></td>
23
+ <td><%= link_to 'Edit', :controller => "mailinglist", :action => 'edit', :id => mailinglist %></td>
24
+ <td><%= link_to_image "remove.gif", { :controller => "mailinglist", :action => 'remove', :id => mailinglist }, :post => true, :confirm => 'Are you sure you want to remove this mailinglist?' %>
18
25
  </tr>
19
26
  <% end %>
20
- </table>
21
-
22
- <%= link_to 'Previous page', { :page => @mailinglist_pages.current.previous } if @mailinglist_pages.current.previous %>
23
- <%= link_to 'Next page', { :page => @mailinglist_pages.current.next } if @mailinglist_pages.current.next %>
24
-
25
- <br />
26
-
27
- <%= link_to 'New mailinglist', :action => 'new' %>
27
+ </table>
@@ -0,0 +1,18 @@
1
+
2
+ <h3>Mailing List Classes</h3>
3
+
4
+ <table class="mainTable" cellspacing="0" cellpadding="4">
5
+ <tr>
6
+ <th>Name</th>
7
+ <th>Description</th>
8
+ </tr>
9
+
10
+ <% for mailinglist_class in @mailinglist_classes %>
11
+ <tr>
12
+ <td><%= link_to mailinglist_class.name, :controller => "mailinglist", :action => 'show', :id => mailinglist_class %></td>
13
+ <td><%=h mailinglist_class.description %></td>
14
+ <td><%= link_to 'Edit', :controller => "mailinglist", :action => 'edit', :id => mailinglist_class %></td>
15
+ <td><%= link_to_image "remove.gif", { :controller => "mailinglist", :action => 'remove', :id => mailinglist_class }, :post => true, :confirm => 'Are you sure you want to remove this mailinglist?' %>
16
+ </tr>
17
+ <% end %>
18
+ </table>
@@ -1,8 +1,8 @@
1
- <h1>New mailing list</h1>
1
+ <h3>New mailing list</h3>
2
2
 
3
3
  <%= start_form_tag :action => 'new' %>
4
- <%= render :partial => 'form' %>
5
- <%= submit_tag 'Save' %>
6
- <%= end_form_tag %>
7
4
 
8
- <%= link_to 'Back to list', :action => 'list' %>
5
+ <%= render :partial => 'new_form' %>
6
+
7
+ <%= submit_tag 'Save' %>
8
+ <%= end_form_tag %>
@@ -0,0 +1,10 @@
1
+ <h3>Add Address to Mailing List</h3>
2
+
3
+ <%= start_form_tag :action => 'add_address' %>
4
+
5
+ <%= render :partial => 'address_form' %>
6
+
7
+ <%= submit_tag 'Save' %>
8
+ <%= end_form_tag %>
9
+
10
+ <%= render :partial => 'navigation/nav_module' %>
@@ -0,0 +1,8 @@
1
+ <h3>New Mailing List Class</h3>
2
+
3
+ <%= start_form_tag :action => 'new_class' %>
4
+
5
+ <%= render :partial => 'new_class_form' %>
6
+
7
+ <%= submit_tag 'Save' %>
8
+ <%= end_form_tag %>