eve 1.0.2 → 2.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (50) hide show
  1. data/.gitignore +43 -0
  2. data/Gemfile +17 -0
  3. data/Gemfile.lock +109 -0
  4. data/LICENSE.txt +20 -0
  5. data/README.rdoc +24 -3
  6. data/Rakefile +26 -117
  7. data/eve.gemspec +35 -0
  8. data/lib/eve.rb +5 -10
  9. data/lib/eve/api.rb +3 -1
  10. data/lib/eve/api/response/inspection.rb +1 -1
  11. data/lib/eve/api/response/rowsets.rb +1 -1
  12. data/lib/eve/dependencies.rb +42 -12
  13. data/lib/eve/deprecation.rb +3 -0
  14. data/lib/eve/javascript_helper.rb +196 -0
  15. data/lib/eve/trust.rb +1 -2
  16. data/lib/eve/trust/controller_helpers.rb +62 -66
  17. data/lib/eve/trust/igb_interface.rb +14 -10
  18. data/lib/eve/version.rb +8 -0
  19. data/spec/controllers/controller_helpers_spec.rb +91 -0
  20. data/spec/{lib/eve/helpers → helpers}/javascript_helper_spec.rb +2 -2
  21. data/spec/helpers/view_helper_spec.rb +7 -0
  22. data/spec/lib/eve/api/calls/eve/character_id_spec.rb +8 -8
  23. data/spec/lib/eve/api/calls/server_status_spec.rb +4 -0
  24. data/spec/lib/eve/api/request_spec.rb +1 -0
  25. data/spec/lib/eve/trust/igb_interface_spec.rb +5 -5
  26. data/spec/spec_helper.rb +42 -1
  27. data/spec/support/controllers/trust_controller.rb +18 -1
  28. data/spec/support/mock_api_helpers.rb +6 -1
  29. data/spec/support/views/trust/html_and_igb.html.erb +1 -0
  30. data/spec/support/views/trust/html_and_igb.igb.erb +1 -0
  31. data/spec/support/views/trust/html_only.html.erb +1 -0
  32. data/spec/support/views/trust/igb_only.igb.erb +1 -0
  33. metadata +226 -169
  34. data/Manifest.txt +0 -174
  35. data/PostInstall.txt +0 -6
  36. data/features/support/env.rb +0 -1
  37. data/lib/eve/core_extensions.rb +0 -3
  38. data/lib/eve/core_extensions/hash.rb +0 -51
  39. data/lib/eve/core_extensions/string.rb +0 -11
  40. data/lib/eve/helpers.rb +0 -12
  41. data/lib/eve/helpers/javascript_helper.rb +0 -198
  42. data/lib/eve/helpers/view_helper.rb +0 -13
  43. data/script/console +0 -10
  44. data/script/console.cmd +0 -1
  45. data/script/destroy +0 -14
  46. data/script/destroy.cmd +0 -1
  47. data/script/generate +0 -14
  48. data/script/generate.cmd +0 -1
  49. data/spec/lib/eve/helpers/view_helper_spec.rb +0 -12
  50. data/spec/lib/eve/trust/controller_helpers_spec.rb +0 -70
@@ -1,174 +0,0 @@
1
- History.txt
2
- Manifest.txt
3
- PostInstall.txt
4
- README.rdoc
5
- Rakefile
6
- features/support/env.rb
7
- lib/eve.rb
8
- lib/eve/api.rb
9
- lib/eve/api/connectivity.rb
10
- lib/eve/api/request.rb
11
- lib/eve/api/response.rb
12
- lib/eve/api/response/inspection.rb
13
- lib/eve/api/response/rowset.rb
14
- lib/eve/api/response/rowsets.rb
15
- lib/eve/api/response/wrap_object.rb
16
- lib/eve/api/services.rb
17
- lib/eve/api/services/account.rb
18
- lib/eve/api/services/character.rb
19
- lib/eve/api/services/corporation.rb
20
- lib/eve/api/services/eve.rb
21
- lib/eve/api/services/map.rb
22
- lib/eve/api/services/misc.rb
23
- lib/eve/api/services/server.rb
24
- lib/eve/core_extensions.rb
25
- lib/eve/core_extensions/hash.rb
26
- lib/eve/core_extensions/string.rb
27
- lib/eve/dependencies.rb
28
- lib/eve/errors.rb
29
- lib/eve/errors/authentication_errors.rb
30
- lib/eve/errors/internal_errors.rb
31
- lib/eve/errors/miscellaneous_errors.rb
32
- lib/eve/errors/user_input_errors.rb
33
- lib/eve/helpers.rb
34
- lib/eve/helpers/javascript_helper.rb
35
- lib/eve/helpers/view_helper.rb
36
- lib/eve/trust.rb
37
- lib/eve/trust/controller_helpers.rb
38
- lib/eve/trust/igb_interface.rb
39
- lib/eve/trust/mime_types.rb
40
- script/console
41
- script/console.cmd
42
- script/destroy
43
- script/destroy.cmd
44
- script/generate
45
- script/generate.cmd
46
- spec/lib/eve/api/calls/account/characters_spec.rb
47
- spec/lib/eve/api/calls/character/account_balance_spec.rb
48
- spec/lib/eve/api/calls/character/asset_list_spec.rb
49
- spec/lib/eve/api/calls/character/character_sheet_spec.rb
50
- spec/lib/eve/api/calls/character/fac_war_stats_spec.rb
51
- spec/lib/eve/api/calls/character/industry_jobs_spec.rb
52
- spec/lib/eve/api/calls/character/kill_log_spec.rb
53
- spec/lib/eve/api/calls/character/mail_messages_spec.rb
54
- spec/lib/eve/api/calls/character/mailing_lists_spec.rb
55
- spec/lib/eve/api/calls/character/market_orders_spec.rb
56
- spec/lib/eve/api/calls/character/medals_spec.rb
57
- spec/lib/eve/api/calls/character/research_spec.rb
58
- spec/lib/eve/api/calls/character/skill_in_training_spec.rb
59
- spec/lib/eve/api/calls/character/skill_queue_spec.rb
60
- spec/lib/eve/api/calls/character/standings_spec.rb
61
- spec/lib/eve/api/calls/character/wallet_journal_spec.rb
62
- spec/lib/eve/api/calls/character/wallet_transactions_spec.rb
63
- spec/lib/eve/api/calls/character_portrait_spec.rb
64
- spec/lib/eve/api/calls/corporation/account_balances_spec.rb
65
- spec/lib/eve/api/calls/corporation/asset_list_spec.rb
66
- spec/lib/eve/api/calls/corporation/container_log_spec.rb
67
- spec/lib/eve/api/calls/corporation/corporation_sheet_spec.rb
68
- spec/lib/eve/api/calls/corporation/fac_war_stats_spec.rb
69
- spec/lib/eve/api/calls/corporation/industry_jobs_spec.rb
70
- spec/lib/eve/api/calls/corporation/kill_log_spec.rb
71
- spec/lib/eve/api/calls/corporation/market_orders_spec.rb
72
- spec/lib/eve/api/calls/corporation/medals_spec.rb
73
- spec/lib/eve/api/calls/corporation/member_medals_spec.rb
74
- spec/lib/eve/api/calls/corporation/member_security_log_spec.rb
75
- spec/lib/eve/api/calls/corporation/member_security_spec.rb
76
- spec/lib/eve/api/calls/corporation/member_tracking_spec.rb
77
- spec/lib/eve/api/calls/corporation/shareholders_spec.rb
78
- spec/lib/eve/api/calls/corporation/standings_spec.rb
79
- spec/lib/eve/api/calls/corporation/starbase_detail_spec.rb
80
- spec/lib/eve/api/calls/corporation/starbase_list_spec.rb
81
- spec/lib/eve/api/calls/corporation/titles_spec.rb
82
- spec/lib/eve/api/calls/corporation/wallet_journal_spec.rb
83
- spec/lib/eve/api/calls/corporation/wallet_transactions_spec.rb
84
- spec/lib/eve/api/calls/empty_call_spec.rb
85
- spec/lib/eve/api/calls/eve/alliance_list_spec.rb
86
- spec/lib/eve/api/calls/eve/certificate_tree_spec.rb
87
- spec/lib/eve/api/calls/eve/character_id_spec.rb
88
- spec/lib/eve/api/calls/eve/conquerable_station_list_spec.rb
89
- spec/lib/eve/api/calls/eve/error_list_spec.rb
90
- spec/lib/eve/api/calls/eve/fac_war_stats_spec.rb
91
- spec/lib/eve/api/calls/eve/fac_war_top_stats_spec.rb
92
- spec/lib/eve/api/calls/eve/ref_types_spec.rb
93
- spec/lib/eve/api/calls/eve/skill_tree_spec.rb
94
- spec/lib/eve/api/calls/map/fac_war_systems_spec.rb
95
- spec/lib/eve/api/calls/map/jumps_spec.rb
96
- spec/lib/eve/api/calls/map/kills_spec.rb
97
- spec/lib/eve/api/calls/map/sovereignty_spec.rb
98
- spec/lib/eve/api/calls/server_status_spec.rb
99
- spec/lib/eve/api/request_spec.rb
100
- spec/lib/eve/api/response/error_spec.rb
101
- spec/lib/eve/api/response/rowset_spec.rb
102
- spec/lib/eve/api/response_spec.rb
103
- spec/lib/eve/api_spec.rb
104
- spec/lib/eve/core_extensions/hash_spec.rb
105
- spec/lib/eve/core_extensions/string_spec.rb
106
- spec/lib/eve/helpers/javascript_helper_spec.rb
107
- spec/lib/eve/helpers/view_helper_spec.rb
108
- spec/lib/eve/trust/controller_helpers_spec.rb
109
- spec/lib/eve/trust/igb_interface_spec.rb
110
- spec/rcov.opts
111
- spec/readme_spec.rb
112
- spec/sample_api_key.yml
113
- spec/spec.opts
114
- spec/spec_helper.rb
115
- spec/support/behaves_like_rowset.rb
116
- spec/support/controllers/trust_controller.rb
117
- spec/support/jpg/mock_portrait.jpg
118
- spec/support/mock_api_helpers.rb
119
- spec/support/xml/account/characters.xml
120
- spec/support/xml/character/account_balance.xml
121
- spec/support/xml/character/asset_list.xml
122
- spec/support/xml/character/character_sheet.xml
123
- spec/support/xml/character/fac_war_stats.xml
124
- spec/support/xml/character/industry_jobs.xml
125
- spec/support/xml/character/kill_log.xml
126
- spec/support/xml/character/mail_messages.xml
127
- spec/support/xml/character/mailing_lists.xml
128
- spec/support/xml/character/market_orders.xml
129
- spec/support/xml/character/medals.xml
130
- spec/support/xml/character/research.xml
131
- spec/support/xml/character/skill_in_training.xml
132
- spec/support/xml/character/skill_not_in_training.xml
133
- spec/support/xml/character/skill_queue.xml
134
- spec/support/xml/character/standings.xml
135
- spec/support/xml/character/wallet_journal.xml
136
- spec/support/xml/character/wallet_transactions.xml
137
- spec/support/xml/corporation/account_balance.xml
138
- spec/support/xml/corporation/asset_list.xml
139
- spec/support/xml/corporation/container_log.xml
140
- spec/support/xml/corporation/fac_war_stats.xml
141
- spec/support/xml/corporation/industry_jobs.xml
142
- spec/support/xml/corporation/kill_log.xml
143
- spec/support/xml/corporation/market_orders.xml
144
- spec/support/xml/corporation/medals.xml
145
- spec/support/xml/corporation/member_corporation_sheet.xml
146
- spec/support/xml/corporation/member_medals.xml
147
- spec/support/xml/corporation/member_security.xml
148
- spec/support/xml/corporation/member_security_log.xml
149
- spec/support/xml/corporation/member_tracking.xml
150
- spec/support/xml/corporation/non_member_corporation_sheet.xml
151
- spec/support/xml/corporation/shareholders.xml
152
- spec/support/xml/corporation/standings.xml
153
- spec/support/xml/corporation/starbase_detail.xml
154
- spec/support/xml/corporation/starbase_list.xml
155
- spec/support/xml/corporation/titles.xml
156
- spec/support/xml/corporation/wallet_journal.xml
157
- spec/support/xml/corporation/wallet_transactions.xml
158
- spec/support/xml/errors/106.xml
159
- spec/support/xml/errors/516.xml
160
- spec/support/xml/eve/alliance_list.xml
161
- spec/support/xml/eve/certificate_tree.xml
162
- spec/support/xml/eve/character_id.xml
163
- spec/support/xml/eve/conquerable_station_list.xml
164
- spec/support/xml/eve/error_list.xml
165
- spec/support/xml/eve/fac_war_stats.xml
166
- spec/support/xml/eve/fac_war_top_stats.xml
167
- spec/support/xml/eve/ref_types.xml
168
- spec/support/xml/eve/skill_tree.xml
169
- spec/support/xml/map/fac_war_systems.xml
170
- spec/support/xml/map/jumps.xml
171
- spec/support/xml/map/kills.xml
172
- spec/support/xml/map/sovereignty.xml
173
- spec/support/xml/rowset_with_mismatched_attributes.xml
174
- spec/support/xml/server/server_status.xml
@@ -1,6 +0,0 @@
1
-
2
- For more information on eve, see http://github.com/sinisterchipmunk/eve.git
3
-
4
-
5
-
6
-
@@ -1 +0,0 @@
1
- require 'eve'
@@ -1,3 +0,0 @@
1
- Dir[File.join(File.dirname(__FILE__), "core_extensions/**/*.rb")].each do |fi|
2
- require fi
3
- end
@@ -1,51 +0,0 @@
1
- class Hash
2
- def without(*keys)
3
- keys.flatten!
4
- inject({}) do |hash, (key, value)|
5
- hash[key] = value unless keys.include?(key)
6
- hash
7
- end
8
- end
9
-
10
- def without_values(*values)
11
- values.flatten!
12
- inject({}) do |hash, (key, value)|
13
- hash[key] = value unless values.include?(value)
14
- hash
15
- end
16
- end
17
-
18
- # Returns a hash that is a copy of this one, except that all nil values have been removed, making them
19
- # essentially "optional" keys.
20
- def optionalize
21
- without_values(nil)
22
- end
23
-
24
- alias without_nil_values optionalize
25
-
26
- def camelize_keys
27
- stringify_keys.rename(inject({}) do |renamed, (key, value)|
28
- renamed[key.to_s] = key.to_s.camelize
29
- renamed
30
- end)
31
- end
32
-
33
- # Takes a hash whose keys must match keys in this hash. Those keys will be renamed to match the
34
- # corresponding value in the specified hash.
35
- #
36
- # Keys not found are ignored.
37
- #
38
- # Returns self.
39
- #
40
- # Example:
41
- # { :a => 1 }.rename(:a => :b)
42
- # => {:b => 1}
43
- #
44
- def rename(to)
45
- merge!(inject({}) do |hash, (old_key, value)|
46
- hash[to[old_key] || old_key] = value
47
- delete(old_key)
48
- hash
49
- end)
50
- end
51
- end
@@ -1,11 +0,0 @@
1
- class String
2
- # The inverse of +ActiveSupport::Inflection#humanize+: Lowercases the first letter, and turns spaces into underscores.
3
- # This is meant to assist in creating method names. A camelCase method name can be created using #dehumanize:
4
- # "say_hello_to_the_world".camelize.dehumanize # => "sayHelloToTheWorld"
5
- #
6
- # This can also be used for creating permalinks:
7
- # "Say hello to the world".dehumanize # => "say_hello_to_the_world"
8
- def dehumanize
9
- self.camelize.gsub(/^([A-Z])/) { |x| x.downcase }.gsub(/ /, '_')
10
- end
11
- end
@@ -1,12 +0,0 @@
1
- require 'eve/helpers/view_helper'
2
- require 'eve/helpers/javascript_helper'
3
-
4
- module Eve
5
- module Helpers
6
- if defined?(ActionView::Base)
7
- ActionView::Base.send(:include, Eve::Helpers::ViewHelper)
8
- ActionView::Base.send(:include, Eve::Helpers::JavascriptHelper)
9
- end
10
- end
11
- end
12
-
@@ -1,198 +0,0 @@
1
- module Eve
2
- module Helpers
3
- # In addition to the helpers listed below, this library also exposes the "igb" method as described in
4
- # Eve::Trust.
5
- module JavascriptHelper
6
- # Returns the numeric type ID for a string, so you don't have to manage "magic numbers" in your application.
7
- # The argument can be a string or a symbol, and is case insensitive. Underscores will be converted to spaces.
8
- #
9
- # Examples:
10
- # type_id('alliance') # => 16159
11
- # type_id('character') # => 1377
12
- # type_id('corporation') # => 2
13
- # type_id('constellation') # => 4
14
- # type_id('region') # => 3
15
- # type_id('Solar System') # => 5
16
- # type_id(:solar_system) # => 5
17
- # type_id(:station) # => 3867
18
- #
19
- def type_id(which)
20
- which = which.to_s.humanize unless which.kind_of?(String)
21
- which.downcase!
22
- case which
23
- when 'alliance' then 16159
24
- when 'character' then 1377
25
- when 'corporation' then 2
26
- when 'constellation' then 4
27
- when 'region' then 3
28
- when 'solar system', 'solarsystem' then 5
29
- when 'station' then 3867
30
- else raise ArgumentError, "Unknown type: #{which}"
31
- end
32
- end
33
-
34
- # Creates a hyperlink that results in opening the client's EVE mail inbox.
35
- def link_to_evemail(text, *args)
36
- link_to_function(text, "CCPEVE.openEveMail()", *args)
37
- end
38
-
39
- # Creates a hyperlink that results in the "show info" dialog being displayed on the client's screen.
40
- # If item_id is given, the show info window will open for that item.
41
- #
42
- # type_id (Number)
43
- # Type ID of item to show info on.
44
- # item_id (Number)
45
- # Optional item ID of specific item of type type_id to show info on. This is required for specific types of
46
- # items, such as solar systems, stations, regions, and constellations.
47
- #
48
- def link_to_info(text, type_id, item_id = nil, *args)
49
- function = "CCPEVE.showInfo(#{type_id.inspect}"
50
- function.concat ", #{item_id.inspect}" if item_id
51
- function.concat ")"
52
- link_to_function text, function, *args
53
- end
54
-
55
- # Creates a hyperlink that results in opening the preview window for type_id.
56
- #
57
- # type_id (Number)
58
- # Type ID of item to preview.
59
- #
60
- def link_to_preview(text, type_id, *args)
61
- link_to_function text, "CCPEVE.showPreview(#{type_id.inspect})", *args
62
- end
63
-
64
- # Creates a hyperlink that results in showing the route to the destination_id from the source_id.
65
- # If source_id is not given, the source system is taken to be the system the user is currently in.
66
- #
67
- def link_to_route(text, destination_id, source_id = nil, *args)
68
- function = "CCPEVE.showRouteTo(#{destination_id.inspect}"
69
- function.concat ", #{source_id.inspect}" if source_id
70
- function.concat ")"
71
- link_to_function text, function, *args
72
- end
73
-
74
- # Creates a hyperlink that results in opening the map. If system_id is given, the map will focus on that system.
75
- #
76
- # system_id (Number)
77
- # Optional ID of solar system to focus map on.
78
- #
79
- def link_to_map(text, system_id = nil, *args)
80
- link_to_function text, "CCPEVE.showMap(#{system_id ? system_id.inspect : ''})", *args
81
- end
82
-
83
- # Creates a hyperlink that results in opening the fitting window and displays the fitting represented by fitting.
84
- #
85
- # fitting (String)
86
- # A Ship DNA string.
87
- #
88
- # See http://wiki.eveonline.com/en/wiki/Ship_DNA for details
89
- def link_to_fitting(text, ship_dna_string, *args)
90
- link_to_function text, "CCPEVE.showFitting(#{ship_dna_string.inspect})", *args
91
- end
92
-
93
- # Creatse a hyperlink that results in opening the contract window and displaying the contract represented by the
94
- # contract_id argument. Contracts are, however, assigned per-solar-system, and so a solar_system_id must also be
95
- # provided.
96
- #
97
- # solar_system_id (Number)
98
- # The ID number of the solar system in which the contract is located.
99
- # contract_id (Number)
100
- # The ID number of the contract to display.
101
- def link_to_contract(text, solar_system_id, contract_id, *args)
102
- link_to_function text, "CCPEVE.showContract(#{solar_system_id.inspect}, #{contract_id.inspect})", *args
103
- end
104
-
105
- # Creates a hyperlink which results in opening the market details window and displays the information about the
106
- # item represented by type_id.
107
- #
108
- # typeID (Number)
109
- # Type ID to display market details about
110
- #
111
- def link_to_market_details(text, type_id, *args)
112
- link_to_function text, "CCPEVE.showMarketDetails(#{type_id.inspect})", *args
113
- end
114
-
115
- # Produces a hyperlink that will result in a pop-up a trust prompt in the client, allowing the user to either
116
- # grant the trust request, ignore it, or always ignore trust requests from your site.
117
- #
118
- # trust_url (String)
119
- # This is a fully-qualified domain name and path (e.g. http://wiki.eveonline.com/w/) to which your site would
120
- # like the user to grant trust.
121
- #
122
- # The page will not be automatically refreshed if the user grants the trust request. Trust will take effect the
123
- # next time the user refreshes the page, or navigates within the site.
124
- #
125
- # Note that trust_url is processed and only the protocol, domain and path will be used from it. If you supply a
126
- # query string or anchor, they will be discarded. It is recommended that you primarily pass in only
127
- # fully-qualified domain names without paths (e.g. http://wiki.eveonline.com instead of
128
- # http://wiki.eveonline.com/w/index.php), as this avoids pestering the user for trust on every page.
129
- #
130
- def link_to_trust_request(text, trust_url = "http://#{request.host}/", *args)
131
- trust_url = url_for(trust_url.merge(:only_path => false)) if trust_url.kind_of?(Hash)
132
- link_to_function text, "CCPEVE.requestTrust(#{trust_url.inspect})", *args
133
- end
134
-
135
- # This will generate a method call that produces a pop-up a trust prompt in the client, allowing the user to
136
- # either grant the trust request, ignore it, or always ignore trust requests from your site.
137
- #
138
- # trust_url (String)
139
- # This is a fully-qualified domain name and path (e.g. http://wiki.eveonline.com/w/) to which your site would
140
- # like the user to grant trust.
141
- #
142
- # The page will not be automatically refreshed if the user grants the trust request. Trust will take effect the
143
- # next time the user refreshes the page, or navigates within the site.
144
- #
145
- # Note that trust_url is processed and only the protocol, domain and path will be used from it. If you supply a
146
- # query string or anchor, they will be discarded. It is recommended that you primarily pass in only
147
- # fully-qualified domain names without paths (e.g. http://wiki.eveonline.com instead of
148
- # http://wiki.eveonline.com/w/index.php), as this avoids pestering the user for trust on every page.
149
- #
150
- def request_trust(trust_url = "http://#{request.host}/", *args)
151
- trust_url = url_for(trust_url.merge(:only_path => false)) if trust_url.kind_of?(Hash)
152
- javascript_tag "CCPEVE.requestTrust(#{trust_url.inspect});", *args
153
- end
154
-
155
- # Sets the client's autopilot destination to the specified solar system.
156
- #
157
- # solar_system_id (Number)
158
- # The numerical identifier of the solar system to which you wish to set the client's autopilot destination.
159
- #
160
- # This method requires that the user grant Trust to the calling site.
161
- def link_to_destination(text, solar_system_id, *args)
162
- link_to_function text, "CCPEVE.setDestination(#{solar_system_id.inspect})", *args
163
- end
164
-
165
- # Adds the specified solar system to the end of the client's autopilot route. If the solar system is already in
166
- # the route, no changes are made and the method fails silently.
167
- #
168
- # solar_system_id (Number)
169
- # The numerical identifier of the solar system which you wish to append to the client's autopilot route.
170
- #
171
- # This method requires that the user grant Trust to the calling site.
172
- def link_to_waypoint(text, solar_system_id, *args)
173
- link_to_function text, "CCPEVE.addWaypoint(#{solar_system_id.inspect})", *args
174
- end
175
-
176
- # Causes the user to attempt to join the named channel. Normal channel access control rules apply. If the user is
177
- # unable to join the channel, the method fails silently.
178
- #
179
- # channel_name (String)
180
- # The name of the channel which the user will join.
181
- #
182
- # This method requires that the user grant Trust to the calling site.
183
- def link_to_channel(text, channel_name, *args)
184
- link_to_function text, "CCPEVE.joinChannel(#{channel_name.inspect})", *args
185
- end
186
-
187
- # Causes the user to subscribe to the named mailing list.
188
- #
189
- # mailing_list_name (String)
190
- # The name of the mailing list which the user will join.
191
- #
192
- # This method requires that the user grant Trust to the calling site.
193
- def link_to_mailing_list(text, mailing_list_name, *args)
194
- link_to_function text, "CCPEVE.joinMailingList(#{mailing_list_name.inspect})", *args
195
- end
196
- end
197
- end
198
- end