muck-users 3.1.12 → 3.1.13

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc CHANGED
@@ -114,6 +114,11 @@ By default when a user logs out they are sent to the login page. You can add a
114
114
 
115
115
  muck-users sends out emails that need to be able to generate links. Be sure to set a value for MuckEngine.configuration.application_url.
116
116
 
117
+ muck-users will let you require an access code to sign up. If you enable this option your sign up form will add a link for a beta code.
118
+ To make it a popup add this to your application.js
119
+
120
+ jQuery('a.fancy-access-request').fancybox({'hideOnContentClick':false, 'overlayShow':true, 'width':375, 'height':300 });
121
+
117
122
  === Assets
118
123
 
119
124
  Calling rake muck:sync:users will pull in images, javascript and other assets.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 3.1.12
1
+ 3.1.13
@@ -1,7 +1,13 @@
1
1
  class Admin::Muck::AccessCodeRequestsController < Admin::Muck::BaseController
2
2
 
3
3
  def index
4
- @unfullfilled_requests = AccessCodeRequest.unfullfilled.by_newest.paginate(:page => @page, :per_page => @per_page)
4
+ if params[:fullfilled]
5
+ @title = translate('muck.users.fullfilled_access_code_requests')
6
+ @access_code_requests = AccessCodeRequest.fullfilled.by_newest.paginate(:page => @page, :per_page => @per_page)
7
+ else
8
+ @title = translate('muck.users.unfullfilled_access_code_requests')
9
+ @access_code_requests = AccessCodeRequest.unfullfilled.by_newest.paginate(:page => @page, :per_page => @per_page)
10
+ end
5
11
  render :template => 'admin/access_code_requests/index'
6
12
  end
7
13
 
@@ -24,8 +24,7 @@ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
24
24
  end
25
25
 
26
26
  def bulk
27
- @access_code = AccessCode.new
28
- @access_code.code = AccessCode.random_code
27
+ @access_code = AccessCode.new(:expires_at => 1.year.since)
29
28
  @access_code_requests_count = AccessCodeRequest.unfullfilled.count
30
29
  render :template => 'admin/access_codes/bulk'
31
30
  end
@@ -48,6 +47,7 @@ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
48
47
  @access_code.use_limit = 1
49
48
  @access_code.uses = 0
50
49
  @access_code.code = AccessCode.random_code
50
+ @access_code.sent_to = email
51
51
  @access_code.save!
52
52
  end
53
53
  UserMailer.access_code(email, @access_code.subject, @access_code.message, @access_code.code).deliver
@@ -34,7 +34,11 @@ class Muck::UsersController < ApplicationController
34
34
 
35
35
  def new
36
36
  @page_title = t('muck.users.register_account', :application_name => MuckEngine.configuration.application_name)
37
- @user = User.new
37
+ @user = User.new(:access_code_code => params[:access_code])
38
+ if(params[:access_code])
39
+ @access_code = AccessCode.find_by_code(params[:access_code])
40
+ @user.email = @access_code.sent_to
41
+ end
38
42
  standard_response('new', true)
39
43
  end
40
44
 
@@ -198,6 +202,7 @@ class Muck::UsersController < ApplicationController
198
202
  def check_access_code
199
203
  if MuckUsers.configuration.require_access_code
200
204
  access_code, valid_code = AccessCode.valid_code?(params[:user][:access_code_code])
205
+ debugger
201
206
  if valid_code
202
207
  @user.access_code = access_code
203
208
  else
@@ -1,4 +1,6 @@
1
- <h2><%=translate('muck.users.unfullfilled_access_code_requests') %></h2>
1
+ <h2><%=translate('muck.users.access_code_requests') %></h2>
2
+ <%= render :partial => 'admin/access_codes/access_code_nav' %>
3
+ <h3><%= @title %></h3>
2
4
  <table class="adminTable" cellspacing="0" cellpadding="0">
3
5
  <thead>
4
6
  <tr>
@@ -11,7 +13,7 @@
11
13
  </tr>
12
14
  </thead>
13
15
  <tbody id="current-access-code-requests">
14
- <%= render :partial => 'admin/access_code_requests/access_code_request', :collection => @unfullfilled_requests %>
16
+ <%= render :partial => 'admin/access_code_requests/access_code_request', :collection => @access_code_requests %>
15
17
  </tbody>
16
18
  </table>
17
- <%= will_paginate @unfullfilled_requests %>
19
+ <%= will_paginate @access_code_requests %>
@@ -3,6 +3,7 @@
3
3
  <td><%= access_code.uses %></td>
4
4
  <td><%= access_code.use_limit %></td>
5
5
  <td><%= access_code.unlimited %></td>
6
+ <td><%= access_code.sent_to %></td>
6
7
  <td><%= format_date(access_code.expires_at) %></td>
7
8
  <td><%= format_date(access_code.created_at) %></td>
8
9
  <td><%= link_to(translate('muck.users.edit'), edit_admin_access_code_path(access_code.id), { :class => 'dialog-pop', :title => translate('muck.users.edit_access_code_title') }) %></td>
@@ -0,0 +1,7 @@
1
+ <p>
2
+ <%= link_to translate('muck.users.list_access_codes'), admin_access_codes_path %> |
3
+ <%= link_to translate('muck.users.access_code_new'), new_admin_access_code_path, { :class => 'dialog-pop', :title => translate('muck.users.add_access_code_title') } %> |
4
+ <%= link_to translate('muck.users.bulk_access_codes'), bulk_admin_access_codes_path %> |
5
+ <%= link_to translate('muck.users.unfullfilled_access_code_requests'), admin_access_code_requests_path(:unfullfilled => true) %> |
6
+ <%= link_to translate('muck.users.fullfilled_access_code_requests'), admin_access_code_requests_path(:fullfilled => true) %>
7
+ </p>
@@ -1,4 +1,5 @@
1
1
  <h2><%=translate('muck.users.bulk_access_codes_title') %></h2>
2
+ <%= render :partial => 'admin/access_codes/access_code_nav' %>
2
3
  <p><%=translate('muck.users.bulk_access_codes_description') %></p>
3
4
  <%= output_errors(translate('muck.users.bulk_access_code_problem'), {:class => 'help-box'}, @access_code) %>
4
5
  <%= muck_form_for :access_code, :url => bulk_create_admin_access_codes_path, :html => {:class => "standard-form alt"} do |f| -%>
@@ -17,24 +18,36 @@
17
18
  <%= f.text_area :message, { :label => translate('muck.users.bulk_access_code_message') } -%>
18
19
  </div>
19
20
  <div class="span-11 column">
20
- <%= f.text_area :emails, { :label => translate('muck.users.bulk_access_code_emails'),
21
- :tip => translate('muck.users.bulk_access_code_emails_tip') } -%>
22
-
21
+ <div>
22
+ <% if @access_code_requests_count > 0 -%>
23
+ <%= f.check_box :send_requests, { :label => translate('muck.users.access_code_fullfill_invites'),
24
+ :tip => translate('muck.users.access_code_fullfill_invites_tip') } -%>
25
+ <p><%=translate('muck.users.access_code_request_count', :access_code_requests_count => @access_code_requests_count) %></p>
26
+ <%= f.text_field :send_request_limit, { :label => translate('muck.users.access_code_fullfill_invites_limit'),
27
+ :tip => translate('muck.users.access_code_fullfill_invites_limit_tip') } -%>
28
+ <% end -%>
29
+ </div>
23
30
  <% if @access_code_requests_count > 0 -%>
24
- <p><%=translate('muck.users.access_code_request_count', :access_code_requests_count => @access_code_requests_count) %></p>
25
- <%= f.check_box :send_requests, { :label => translate('muck.users.access_code_fullfill_invites'),
26
- :tip => translate('muck.users.access_code_fullfill_invites_tip') } -%>
27
-
28
- <%= f.text_field :send_request_limit, { :label => translate('muck.users.access_code_fullfill_invites_limit'),
29
- :tip => translate('muck.users.access_code_fullfill_invites_limit_tip') } -%>
31
+ <p style="text-align:center;font-weight:bold;font-size:24px;margin:15px;0"><%=translate('muck.users.bulk_access_codes_or') %></p>
30
32
  <% end -%>
33
+ <div id="email-list">
34
+ <%= f.text_area :emails, { :label => translate('muck.users.bulk_access_code_emails'),
35
+ :tip => translate('muck.users.bulk_access_code_emails_tip') } -%>
36
+ </div>
37
+ <div id="email-list-not-included-message" style="display:none;">
38
+ <p>Fulfilling requests prevents you from sending out invites to a list of emails.</p>
39
+ </div>
31
40
  </div>
32
41
  <div class="span-24 column center">
33
- <%= f.submit translate('muck.users.save') %>
42
+ <%= f.submit translate('muck.users.send_access_codes') %>
34
43
  </div>
35
44
  <% end -%>
36
45
  <script type="text/javascript" language="JavaScript">
37
46
  jQuery(document).ready(function(){
38
47
  jQuery('.date_pick').datepicker();
39
48
  });
49
+ jQuery("#access_code_send_requests").click(function(){
50
+ jQuery('#email-list').toggle();
51
+ jQuery('#email-list-not-included-message').toggle();
52
+ });
40
53
  </script>
@@ -1,15 +1,13 @@
1
1
  <h2><%=translate('muck.users.access_codes') %></h2>
2
- <p>
3
- <%= link_to translate('muck.users.access_code_new'), new_admin_access_code_path, { :class => 'dialog-pop', :title => translate('muck.users.add_access_code_title') } %>
4
- <%= link_to translate('muck.users.bulk_access_codes'), bulk_admin_access_codes_path %>
5
- </p>
2
+ <%= render :partial => 'admin/access_codes/access_code_nav' %>
6
3
  <table class="adminTable" cellspacing="0" cellpadding="0">
7
4
  <thead>
8
5
  <tr>
9
6
  <th><%=translate('muck.users.access_code') %></th>
10
7
  <th><%=translate('muck.users.access_code_uses') %></th>
11
8
  <th><%=translate('muck.users.access_code_use_limit') %></th>
12
- <th><%=translate('muck.users.access_code_unlimited') %></th>
9
+ <th><%=translate('muck.users.access_code_unlimited') %></th>
10
+ <th><%=translate('muck.users.access_code_sent_to') %></th>
13
11
  <th><%=translate('muck.users.access_code_expires') %></th>
14
12
  <th><%=translate('muck.users.access_code_created') %></th>
15
13
  <th></th>
@@ -1,7 +1,5 @@
1
1
  <h2><%=translate('muck.users.access_code') %></h2>
2
- <%= link_to(translate('muck.users.access_code_edit_link'), edit_admin_access_code_path(@access_code.id)) %>
3
- <%= link_to(translate('muck.users.access_code_delete_link'), admin_access_code_path(@access_code.id), :class => 'ajax-delete', :title => translate('muck.users.access_code_delete_confirm')) %>
4
-
2
+ <%= render :partial => 'admin/access_codes/access_code_nav' %>
5
3
  <table class="adminTable" cellspacing="0" cellpadding="0">
6
4
  <thead>
7
5
  <tr>
@@ -11,6 +9,8 @@
11
9
  <th><%=translate('muck.users.access_code_unlimited') %></th>
12
10
  <th><%=translate('muck.users.access_code_expires') %></th>
13
11
  <th><%=translate('muck.users.access_code_created') %></th>
12
+ <th></th>
13
+ <th></th>
14
14
  </tr>
15
15
  </thead>
16
16
  <%= render :partial => 'admin/access_codes/access_code', :object => @access_code %>
@@ -77,6 +77,7 @@ en:
77
77
  problem_editing_account: There was a problem updating your information.
78
78
  edit: Edit
79
79
  access_code_subject: Subject
80
+ bulk_access_codes_or: OR
80
81
  thanks_sign_up: Thanks for signing up!
81
82
  access_code_request_send_problem: There was a problem sending the code
82
83
  sign_in: Sign In
@@ -89,11 +90,12 @@ en:
89
90
  all_users: All Users
90
91
  search_users: Search Users
91
92
  access_code_uses: Uses
93
+ access_code_sent_to: Sent To
92
94
  select_new_password: Select a New Password
93
95
  login: Login
94
96
  access_code_requests_code_sent_on: Code Sent on
95
- email_address: Email Address
96
97
  access_code_help: If you received a access code from us, please enter it in the box above. You may also %{access_request_anchor}request a access code%{access_request_anchor_end}.
98
+ email_address: Email Address
97
99
  delete: Delete
98
100
  bulk_access_codes_created: Bulk access codes created and emailed to %{email_count} emails.
99
101
  access_required_warning: Site access is currently restricted. You need a valid access code to sign up.
@@ -107,8 +109,8 @@ en:
107
109
  problem_creating_account: "There was a problem creating your account. Please correct the following errors:"
108
110
  welcome_message: Welcome to muck. This system provides the basic components to help you build your website.
109
111
  what_is_the_email: What is the email address used to create your account?
110
- delete_my_account: Delete my user account and all my data.
111
112
  change_permissions: Change Roles
113
+ delete_my_account: Delete my user account and all my data.
112
114
  access_code_requests_email: Email
113
115
  password_reset_link_sent: Instructions to reset your password have been emailed to you. Please check your email.
114
116
  access_code_add_problem: Problem adding access code
@@ -135,6 +137,7 @@ en:
135
137
  access_code_request_thank_you: Thank you for your request. We'll be in touch as soon as possible.
136
138
  sign_up: Sign up
137
139
  access_code_requests_signed_up_on: Signed up on
140
+ list_access_codes: List Access Codes
138
141
  access_code_new: New Access Code
139
142
  access_code_requests_name: Name
140
143
  first_name: First Name
@@ -154,6 +157,7 @@ en:
154
157
  delete_this_user: Delete this user.
155
158
  use_limit: Number of Uses
156
159
  user_successfully_deleted: User %{login} was successfully deleted.
160
+ access_code_requests: Access Code Requests
157
161
  new_password_doesnt_match: New password does not match the password confirmation.
158
162
  password_confirmation_help: To ensure that your password is correct please enter it again here.
159
163
  add_permission: (Add Permission)
@@ -162,11 +166,11 @@ en:
162
166
  update_user: Update your user information
163
167
  sorry_invalid_reset_code: We're sorry, but we could not locate your account. If you are having issues try copying and pasting the URL from your email into your browser or restarting the reset password process.
164
168
  activation_not_found: Activation code not found. Please try creating a new account.
165
- signin_wait: Signing you in. Please wait.
166
169
  bulk_access_codes: Bulk Access Codes
167
170
  access_code_request_edit_problem: Problem editing access code request
168
171
  admin_requred: You must be an administrator to access this feature.
169
172
  expiration_date_tip: Enter the date upon which the access code will become invalid
173
+ signin_wait: Signing you in. Please wait.
170
174
  remember_me: Remember me
171
175
  add_user_to_role_title: Add user to a new role.
172
176
  access_code_edit_link: Edit Access Code
@@ -179,6 +183,7 @@ en:
179
183
  join_application_name: Join and get it done
180
184
  bulk_access_code_tip: Optional. If a code is specified then that code will be sent to all users. Leave this field empty to send a unique code to each user.
181
185
  bulk_access_code_emails_tip: Separate emails with a comma
186
+ send_access_codes: Send Codes
182
187
  password_updated: Password successfully updated.
183
188
  register_for_account: Register for an account
184
189
  recover_password_prompt: (If you forgot your password recover it here)
@@ -202,6 +207,7 @@ en:
202
207
  complete_profile: Complete Your Profile
203
208
  forgot_your_password: Forgot your password?
204
209
  request_access_code_instruction: Please provide the following information and we'll provide you with an access code as soon as possible.
210
+ fullfilled_access_code_requests: Fulfilled Access Code Requests
205
211
  update_profile: Update your profile
206
212
  username_help: You can use between 6 and 20 characters. If the name you want isn't available try adding numbers or punctuation.
207
213
  user_update_sucess: User was successfully updated
@@ -226,8 +232,8 @@ en:
226
232
  user_enable_problem: There was a problem enabling this user.
227
233
  access_code_delete_error: An error occured while trying to delete the access code
228
234
  email: Email
229
- cant_delete_administrator_role: You can't delete the administrator role.
230
235
  reset_your_password: Reset Your Password
236
+ cant_delete_administrator_role: You can't delete the administrator role.
231
237
  access_code_edit_problem: Problem editing access code
232
238
  access_codes: Access Codes
233
239
  click_to_sign_up_now: Click here to sign up now.
@@ -0,0 +1,9 @@
1
+ class AddSentToToAccessCodes < ActiveRecord::Migration
2
+ def self.up
3
+ add_column :access_codes, :sent_to, :string
4
+ end
5
+
6
+ def self.down
7
+ remove_column :access_codes, :sent_to
8
+ end
9
+ end
@@ -22,7 +22,6 @@ module MuckUsers
22
22
  MuckEngine.configuration.add_muck_admin_nav_item(I18n.translate('muck.engine.admin_users'), '/admin/users')
23
23
  MuckEngine.configuration.add_muck_admin_nav_item(I18n.translate('muck.engine.admin_roles'), '/admin/roles')
24
24
  MuckEngine.configuration.add_muck_admin_nav_item(I18n.translate('muck.engine.admin_access_codes'), '/admin/access_codes')
25
- MuckEngine.configuration.add_muck_admin_nav_item(I18n.translate('muck.engine.admin_access_code_requests'), '/admin/access_code_requests')
26
25
  end
27
26
 
28
27
  initializer 'muck-users.controllers' do
@@ -16,7 +16,7 @@ module MuckUsers
16
16
  scope :active, where('access_codes.expires_at > Now() AND access_codes.uses <= use_limit')
17
17
 
18
18
  # Used to make bulk access code easier to deal with
19
- attr_accessor :emails, :subject, :message, :send_requests, :send_request_limit
19
+ attr_accessor :emails, :subject, :message, :send_request_limit
20
20
 
21
21
  end
22
22
 
@@ -68,7 +68,17 @@ module MuckUsers
68
68
  def expired?
69
69
  self.expires_at? && self.expires_at < Time.now
70
70
  end
71
-
72
- end
71
+
72
+ def send_requests=(sr)
73
+ @send_request = sr
74
+ end
75
+
76
+ def send_requests
77
+ return false if @send_request == '0'
78
+ return false if @send_request == 'false'
79
+ return @send_request
80
+ end
81
+
82
+ end
73
83
  end
74
84
  end
@@ -6,9 +6,9 @@ module MuckUsers
6
6
 
7
7
  included do
8
8
  validates_presence_of :email
9
- validates_uniqueness_of :email
10
9
 
11
10
  scope :unfullfilled, where('access_code_requests.code_sent_at IS NULL')
11
+ scope :fullfilled, where('access_code_requests.code_sent_at IS NOT NULL')
12
12
  scope :by_newest, order("created_at DESC")
13
13
  scope :by_oldest, order("created_at ASC")
14
14
  end
data/muck-users.gemspec CHANGED
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{muck-users}
8
- s.version = "3.1.12"
8
+ s.version = "3.1.13"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Justin Ball", "Joel Duffin"]
12
- s.date = %q{2011-03-02}
12
+ s.date = %q{2011-03-03}
13
13
  s.description = %q{Easily add user signup, login and other features to your application}
14
14
  s.email = %q{justin@tatemae.com}
15
15
  s.extra_rdoc_files = [
@@ -42,8 +42,9 @@ Gem::Specification.new do |s|
42
42
  "app/views/admin/access_code_requests/destroy.js.erb",
43
43
  "app/views/admin/access_code_requests/edit.html.erb",
44
44
  "app/views/admin/access_code_requests/index.html.erb",
45
- "app/views/admin/access_code_requests/send_code.html.erb",
45
+ "app/views/admin/access_code_requests/send_code.erb",
46
46
  "app/views/admin/access_codes/_access_code.html.erb",
47
+ "app/views/admin/access_codes/_access_code_nav.html.erb",
47
48
  "app/views/admin/access_codes/_form.html.erb",
48
49
  "app/views/admin/access_codes/_user.html.erb",
49
50
  "app/views/admin/access_codes/ajax_create_access_code.js.erb",
@@ -460,6 +461,7 @@ Gem::Specification.new do |s|
460
461
  "db/migrate/20100123035450_create_access_codes.rb",
461
462
  "db/migrate/20100123233654_create_access_code_requests.rb",
462
463
  "db/migrate/20101117172951_add_name_to_access_code_requests.rb",
464
+ "db/migrate/20110303183433_add_sent_to_to_access_codes.rb",
463
465
  "lib/muck-users.rb",
464
466
  "lib/muck-users/config.rb",
465
467
  "lib/muck-users/controllers/authentic_application.rb",
@@ -21,5 +21,4 @@ jQuery(document).ready(function() {
21
21
  autoFill: true,
22
22
  mustMatch: false
23
23
  });
24
- jQuery('a.fancy-access-request').fancybox({'hideOnContentClick':false, 'overlayShow':true, 'width':375, 'height':300 });
25
24
  });
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muck-users
3
3
  version: !ruby/object:Gem::Version
4
- hash: 27
4
+ hash: 25
5
5
  prerelease:
6
6
  segments:
7
7
  - 3
8
8
  - 1
9
- - 12
10
- version: 3.1.12
9
+ - 13
10
+ version: 3.1.13
11
11
  platform: ruby
12
12
  authors:
13
13
  - Justin Ball
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-03-02 00:00:00 -07:00
19
+ date: 2011-03-03 00:00:00 -07:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -112,8 +112,9 @@ files:
112
112
  - app/views/admin/access_code_requests/destroy.js.erb
113
113
  - app/views/admin/access_code_requests/edit.html.erb
114
114
  - app/views/admin/access_code_requests/index.html.erb
115
- - app/views/admin/access_code_requests/send_code.html.erb
115
+ - app/views/admin/access_code_requests/send_code.erb
116
116
  - app/views/admin/access_codes/_access_code.html.erb
117
+ - app/views/admin/access_codes/_access_code_nav.html.erb
117
118
  - app/views/admin/access_codes/_form.html.erb
118
119
  - app/views/admin/access_codes/_user.html.erb
119
120
  - app/views/admin/access_codes/ajax_create_access_code.js.erb
@@ -530,6 +531,7 @@ files:
530
531
  - db/migrate/20100123035450_create_access_codes.rb
531
532
  - db/migrate/20100123233654_create_access_code_requests.rb
532
533
  - db/migrate/20101117172951_add_name_to_access_code_requests.rb
534
+ - db/migrate/20110303183433_add_sent_to_to_access_codes.rb
533
535
  - lib/muck-users.rb
534
536
  - lib/muck-users/config.rb
535
537
  - lib/muck-users/controllers/authentic_application.rb