sugoi-mail 0.1.0 → 0.1.5

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 (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 %>