muck-users 0.3.2 → 0.3.3

Sign up to get free protection for your applications and to get access to all the features.
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.3.3
@@ -12,16 +12,15 @@ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
12
12
  end
13
13
 
14
14
  def new
15
- render :template => 'admin/access_codes/new'
15
+ render :template => 'admin/access_codes/new', :layout => false
16
16
  end
17
17
 
18
18
  def create
19
19
  @access_code = AccessCode.new(params[:access_code])
20
20
  if @access_code.save
21
- flash[:notice] = 'Access Code was successfully added'
22
- redirect_to admin_access_code_path(@access_code)
21
+ ajax_create_access_code
23
22
  else
24
- render :template => 'admin/access_codes/new'
23
+ output_admin_messages(@access_code)
25
24
  end
26
25
  end
27
26
 
@@ -32,47 +31,73 @@ class Admin::Muck::AccessCodesController < Admin::Muck::BaseController
32
31
  end
33
32
 
34
33
  def bulk_create
35
- emails = params[:emails].split(',')
34
+ @access_code = AccessCode.new(params[:access_code])
35
+ @access_code.bulk_valid?
36
+ emails = @access_code.emails.split(',')
37
+ use_random_code = @access_code.code.blank?
36
38
  emails.each do |email|
37
- @access_code = AccessCode.new(params[:access_code])
38
- @access_code.unlimited = false
39
- @access_code.use_limit = 1
40
- @access_code.uses = 0
41
- @access_code.code ||= AccessCode.random_code # If they specified a code then don't change it.
42
- @access_code.save!
43
- UserMailer.deliver_access_code(email, params[:subject], params[:message], @access_code.code)
39
+ if use_random_code
40
+ # need to build a new access code for each email
41
+ @access_code = AccessCode.new(params[:access_code])
42
+ @access_code.unlimited = false
43
+ @access_code.use_limit = 1
44
+ @access_code.uses = 0
45
+ @access_code.code = AccessCode.random_code
46
+ @access_code.save!
47
+ end
48
+ UserMailer.deliver_access_code(email, @access_code.subject, @access_code.message, @access_code.code)
44
49
  end
45
50
  flash[:notice] = translate('muck.users.bulk_access_codes_created', :email_count => emails.count)
46
- redirect_to bulk_create_admin_access_codes_path
51
+ redirect_to bulk_create_admin_access_codes_path
52
+
47
53
  rescue ActiveRecord::RecordInvalid => ex
48
54
  render :template => "admin/access_codes/bulk"
49
55
  end
50
56
 
51
57
  def edit
52
- render :template => "admin/access_codes/edit"
58
+ render :template => "admin/access_codes/edit", :layout => false
53
59
  end
54
60
 
55
61
  def update
56
62
  if @access_code.update_attributes(params[:access_code])
57
- redirect_to(admin_access_code_path(@access_code))
63
+ ajax_update_access_code
58
64
  else
59
- flash[:notice] = 'There was a problem updating the access code.'
60
- render :template => "admin/access_codes/edit"
65
+ output_admin_messages(@access_code)
61
66
  end
62
67
  end
63
68
 
64
69
  def destroy
65
70
  if @access_code.users.length <= 0
66
- @access_code.destroy
67
- flash[:notice] = "Deleted access code."
71
+ success = @access_code.destroy
72
+ flash[:notice] = translate('muck.users.access_code_delete_error') unless success
68
73
  else
69
- flash[:notice] = "Cannot delete access code it has users associated with it."
74
+ flash[:notice] = translate('muck.users.access_code_delete_problem')
75
+ end
76
+ respond_to do |format|
77
+ format.html { redirect_to admin_access_codes_path }
78
+ format.js do
79
+ if success
80
+ render :template => 'admin/access_codes/destroy', :layout => false
81
+ else
82
+ output_admin_messages
83
+ end
84
+ end
70
85
  end
71
- redirect_to admin_access_codes_path
86
+
72
87
  end
73
88
 
74
89
  protected
90
+
75
91
  def setup_access_code
76
92
  @access_code = AccessCode.find(params[:id])
77
93
  end
94
+
95
+ def ajax_update_access_code
96
+ render :template => 'admin/access_codes/ajax_update_access_code'
97
+ end
98
+
99
+ def ajax_create_access_code
100
+ render :template => 'admin/access_codes/ajax_create_access_code'
101
+ end
102
+
78
103
  end
@@ -46,7 +46,7 @@ class Admin::Muck::RolesController < Admin::Muck::BaseController
46
46
  flash[:notice] = translate('muck.users.cant_delete_administrator_role')
47
47
  output_admin_messages
48
48
  else
49
- success = @role.delete
49
+ success = @role.destroy
50
50
  flash[:notice] = translate('muck.users.role_not_deleted') if !success
51
51
 
52
52
  respond_to do |format|
@@ -57,7 +57,7 @@ class Admin::Muck::RolesController < Admin::Muck::BaseController
57
57
  format.xml { head :ok }
58
58
  format.js do
59
59
  if success
60
- render :js => 'admin/roles/destroy'
60
+ render :template => 'admin/roles/destroy', :layout => false
61
61
  else
62
62
  output_admin_messages
63
63
  end
@@ -89,7 +89,7 @@ class Admin::Muck::UsersController < Admin::Muck::BaseController
89
89
  else
90
90
  params[:user][:role_ids] ||= []
91
91
  if @user.update_attributes(params[:user])
92
- return update_permissions(@user, translate('muck.users.updated_permissions'))
92
+ return update_permissions #(translate('muck.users.updated_permissions'))
93
93
  end
94
94
  end
95
95
  flash[:notice] = message
@@ -125,7 +125,7 @@ class Admin::Muck::UsersController < Admin::Muck::BaseController
125
125
  redirect_to admin_users_path
126
126
  end
127
127
  format.xml { head :ok }
128
- format.js { render :js => "#{}jQuery('##{@user.dom_id('row')}').fadeOut();" }
128
+ format.js { render :js => "jQuery('##{@user.dom_id('row')}').fadeOut();" }
129
129
  end
130
130
  end
131
131
 
@@ -135,17 +135,14 @@ class Admin::Muck::UsersController < Admin::Muck::BaseController
135
135
 
136
136
  protected
137
137
 
138
- def update_permissions(user, message)
139
- flash[:notice] = message
138
+ def update_permissions(message = '')
139
+ flash[:notice] = message unless message.blank?
140
140
  render :template => 'admin/users/update_permissions', :layout => false
141
141
  end
142
142
 
143
143
  def update_activate(message)
144
144
  flash[:notice] = message
145
- render :update do |page|
146
- page.replace_html 'admin-messages', output_flash
147
- page.replace_html @user.dom_id('link'), :partial => 'admin/users/activate', :locals => { :user => @user }
148
- end
145
+ render :template => 'admin/users/update_activate', :layout => false
149
146
  end
150
147
 
151
148
  def get_user
@@ -1,8 +1,10 @@
1
- <tr>
1
+ <tr id="<%=access_code.dom_id('row')%>">
2
2
  <td><%= link_to access_code.code, admin_access_code_path(access_code) %></td>
3
3
  <td><%= access_code.uses %></td>
4
4
  <td><%= access_code.use_limit %></td>
5
5
  <td><%= access_code.unlimited %></td>
6
6
  <td><%= format_date(access_code.expires_at) %></td>
7
7
  <td><%= format_date(access_code.created_at) %></td>
8
+ <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>
9
+ <td><%= link_to(translate('muck.users.delete'), admin_access_code_path(access_code.id), :class => 'ajax-delete', :title => translate('muck.users.access_code_delete_confirm')) %></td>
8
10
  </tr>
@@ -0,0 +1,2 @@
1
+ jQuery('#current-access-codes').prepend('<%=escape_javascript(render(:partial => 'admin/access_codes/access_code', :locals => { :access_code => @access_code } ))%>');
2
+ jQuery('.dialog').dialog('close');
@@ -0,0 +1,2 @@
1
+ jQuery('#<%=@access_code.dom_id('row')%>').replaceWith('<%=escape_javascript(render(:partial => 'admin/access_codes/access_code', :locals => { :access_code => @access_code } ))%>');
2
+ jQuery('.dialog').dialog('close');
@@ -1,12 +1,25 @@
1
1
  <h2><%=translate('muck.users.bulk_access_codes_title') %></h2>
2
2
  <p><%=translate('muck.users.bulk_access_codes_description') %></p>
3
-
4
3
  <%= output_errors(translate('muck.users.bulk_access_code_problem'), {:class => 'help-box'}, @access_code) %>
5
-
6
4
  <% custom_form_for :access_code, :url => bulk_create_admin_access_codes_path, :html => {:class => "standard-form alt"} do |f| -%>
7
- <%= render :partial => 'admin/access_codes/form', :locals => {:f => f} %>
8
- <%= text_field_tag :subject, params[:subject], :label => {:text => "Subject"} %>
9
- <%= text_area_tag :message, params[:message], :label => {:text => "Message"} %>
10
- <%= text_area_tag :emails, params[:emails], :label => {:text =>"Emails"}, :tip => translate('muck.users.bulk_access_code_emails_tip') %>
5
+ <%= f.text_field :code, { :label => translate('muck.users.access_code'),
6
+ :tip => translate('muck.users.bulk_access_code_tip'),
7
+ :hide_required => true } -%>
8
+ <%= f.text_field :use_limit, { :label => translate('muck.users.use_limit'),
9
+ :tip => translate('muck.users.use_limit_tip') } -%>
10
+ <%= f.check_box :unlimited, { :label => translate('muck.users.unlimited'),
11
+ :tip => translate('muck.users.unlimited_tip') } -%>
12
+ <%= f.text_field :expires_at, { :label => translate('muck.users.expiration_date'),
13
+ :tip => translate('muck.users.expiration_date_tip'),
14
+ :class => 'date_pick' } -%>
15
+ <%= f.text_field :subject, { :label => translate('muck.users.bulk_access_code_subject') } -%>
16
+ <%= f.text_area :message, { :label => translate('muck.users.bulk_access_code_message') } -%>
17
+ <%= f.text_area :emails, { :label => translate('muck.users.bulk_access_code_emails'),
18
+ :tip => translate('muck.users.bulk_access_code_emails_tip') } -%>
11
19
  <%= f.submit translate('muck.users.save') %>
12
- <% end -%>
20
+ <% end -%>
21
+ <script type="text/javascript" language="JavaScript">
22
+ jQuery(document).ready(function(){
23
+ jQuery('.date_pick').datepicker();
24
+ });
25
+ </script>
@@ -0,0 +1,2 @@
1
+ jQuery('#<%=@access_code.dom_id('row')%>').fadeOut();
2
+ <%= hide_admin_messages %>
@@ -1,6 +1,6 @@
1
1
  <h3><%=translate('muck.users.edit_access_code') %></h3>
2
2
  <%= output_errors(translate('muck.users.access_code_edit_problem'), {:class => 'help-box'}, @access_code) %>
3
- <% custom_form_for @access_code, :url => admin_access_code_path(@access_code), :html => { :method => :put } do |f| -%>
3
+ <% custom_form_for @access_code, :url => admin_access_code_path(@access_code), :html => { :method => :put, :class => 'ajax' } do |f| -%>
4
4
  <%= render :partial => 'admin/access_codes/form', :locals => { :f => f } %>
5
5
  <%= f.submit translate('muck.users.save') %>
6
6
  <% end -%>
@@ -1,7 +1,8 @@
1
1
  <h2><%=translate('muck.users.access_codes') %></h2>
2
- <div>
3
- <%= link_to translate('muck.users.access_code_new'), new_admin_access_code_path %>
4
- </div>
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>
5
6
  <table class="adminTable" cellspacing="0" cellpadding="0">
6
7
  <thead>
7
8
  <tr>
@@ -11,8 +12,12 @@
11
12
  <th><%=translate('muck.users.access_code_unlimited') %></th>
12
13
  <th><%=translate('muck.users.access_code_expires') %></th>
13
14
  <th><%=translate('muck.users.access_code_created') %></th>
15
+ <th></th>
16
+ <th></th>
14
17
  </tr>
15
18
  </thead>
16
- <%= render :partial => 'admin/access_codes/access_code', :collection => @codes %>
19
+ <tbody id="current-access-codes">
20
+ <%= render :partial => 'admin/access_codes/access_code', :collection => @codes %>
21
+ </tbody>
17
22
  </table>
18
23
  <%= will_paginate @codes %>
@@ -1,6 +1,6 @@
1
1
  <h3><%=translate('muck.users.add_access_code') %></h3>
2
2
  <%= output_errors(translate('muck.users.access_code_add_problem'), {:class => 'help-box'}, @access_code) %>
3
- <% custom_form_for :access_code, :url => admin_access_codes_path do |f| -%>
3
+ <% custom_form_for :access_code, :url => admin_access_codes_path, :html => { :class => 'ajax' } do |f| -%>
4
4
  <%= render :partial => 'admin/access_codes/form', :locals => {:f => f} %>
5
5
  <%= f.submit translate('muck.users.save') %>
6
6
  <% end -%>
@@ -1,6 +1,6 @@
1
1
  <h2><%=translate('muck.users.access_code') %></h2>
2
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), :method => :delete, :confirm => translate('muck.users.access_code_delete_confirm')) %>
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
4
 
5
5
  <table class="adminTable" cellspacing="0" cellpadding="0">
6
6
  <thead>
@@ -1,5 +1,5 @@
1
1
  <tr id="<%=role.dom_id%>">
2
2
  <td><%= link_to(role.rolename, admin_role_path(role)) %></td>
3
3
  <td><%= link_to(translate('muck.users.edit'), edit_admin_role_path(role), { :class => 'dialog-pop', :title => translate('muck.users.edit_role_dialog_title') } ) %></td>
4
- <td><%= link_to(translate('muck.users.delete'), admin_role_path(role), { :class => 'ajax-delete', :confirm => translate('muck.users.role_delete_confirm') } ) %></td>
4
+ <td><%= link_to(translate('muck.users.delete'), admin_role_path(role), { :class => 'ajax-delete', :title => translate('muck.users.role_delete_confirm') } ) %></td>
5
5
  </tr>
@@ -1,2 +1,2 @@
1
- <%= hide_admin_messages %>
2
- jQuery('#<%=@role.dom_id%>').fadeOut();"
1
+ jQuery('#<%=@role.dom_id%>').fadeOut();
2
+ <%= hide_admin_messages %>
@@ -1,7 +1,5 @@
1
1
  <h2><%=translate('muck.users.roles') %></h2>
2
- <p>
3
- <%= link_to translate('muck.users.add_role'), new_admin_role_path, { :class => 'dialog-pop', :title => translate('muck.users.add_role_dialog_title') } %>
4
- </p>
2
+ <p><%= link_to translate('muck.users.add_role'), new_admin_role_path, { :class => 'dialog-pop', :title => translate('muck.users.add_role_dialog_title') } %></p>
5
3
  <table class="adminTable">
6
4
  <thead>
7
5
  <tr>
@@ -1,3 +1,2 @@
1
- <h2><%= @role.rolename %></h2>
2
- <h3><%=translate('muck.users.users_in_role') %></h3>
1
+ <h3><%=translate('muck.users.users_in_role', :role => @role.rolename) %></h3>
3
2
  <%= render :partial => 'admin/users/table' -%>
@@ -1,5 +1,5 @@
1
1
  <% custom_form_for @user, :url => admin_user_path(@user), :html => { :class => 'ajax', :method => :put } do |f| %>
2
- <ul class="checkbox-list">
2
+ <ul class="admin-list checkbox-list">
3
3
  <% Role.all.each do |role| -%>
4
4
  <li><%= check_box_tag "user[role_ids][]", role.id, @user.has_role?(role.rolename) -%> <%= role.rolename -%></li>
5
5
  <% end -%>
@@ -0,0 +1,2 @@
1
+ <%= output_admin_messages %>
2
+ jQuery('#<%= @user.dom_id('link') %>').html('<%= escape_javascript(render(:partial => 'admin/users/activate', :locals => { :user => @user })) %>');
@@ -1,2 +1,3 @@
1
1
  jQuery('.dialog').dialog('close');
2
- jQuery('#<%= user.dom_id('permissions') %>').html('<%= escape_javascript(render(:partial => 'admin/permissions/permission', :collection => user.permissions, :locals => { :user => user })) %>');
2
+ jQuery('#<%= @user.dom_id('permissions') %>').html('<%= escape_javascript(render(:partial => 'admin/permissions/permission', :collection => @user.permissions, :locals => { :user => @user })) %>');
3
+ <%= output_admin_messages(@user) %>
@@ -18,6 +18,9 @@ module ActiveRecord
18
18
  named_scope :by_alpha, :order => 'access_codes.code ASC'
19
19
  named_scope :active, :conditions => 'access_codes.expires_at > Now() AND access_codes.uses <= use_limit'
20
20
 
21
+ # Used to make bulk access code easier to deal with
22
+ attr_accessor :emails, :subject, :message
23
+
21
24
  include ActiveRecord::Acts::MuckAccessCode::InstanceMethods
22
25
  extend ActiveRecord::Acts::MuckAccessCode::SingletonMethods
23
26
 
@@ -53,6 +56,13 @@ module ActiveRecord
53
56
 
54
57
  module InstanceMethods
55
58
 
59
+ def bulk_valid?
60
+ errors.add(:emails, I18n.translate('muck.users.validation_are_required')) if self.emails.blank?
61
+ errors.add(:subject, I18n.translate('muck.users.validation_is_required')) if self.subject.blank?
62
+ errors.add(:message, I18n.translate('muck.users.validation_is_required')) if self.message.blank?
63
+ raise RecordInvalid.new(self) if !errors.empty?
64
+ end
65
+
56
66
  def use_code
57
67
  self.update_attribute(:uses, self.uses + 1)
58
68
  end
data/locales/en.yml CHANGED
@@ -21,6 +21,7 @@ en:
21
21
  login_success: Login successful!
22
22
  change_password: Change Password
23
23
  add_user_to_role: Add User to Role
24
+ add_access_code_title: Add Access Code
24
25
  terms_and_service: By clicking 'Sign-up Now' you agree to comply with the {{tos_link_anchor}}Terms and Conditions{{link_end}}.
25
26
  password_reset_link_sent: Instructions to reset your password have been emailed to you. Please check your email.
26
27
  deleting_user: deleting user...
@@ -29,28 +30,35 @@ en:
29
30
  login_requred: You must be logged in to access this feature.
30
31
  recover_password: Recover Password
31
32
  confirm_delete_account: Are you sure you want to delete your account?\nThis can not be undone.
33
+ access_code_deleted: Deleted access code.
32
34
  password_updated: Password successfully updated.
33
35
  username_sent: Your username has been sent emailed to you. Please check your Email.
34
36
  add_permission: (Add Permission)
37
+ access_code_delete_error: An error occured while trying to delete the access code
35
38
  access_code_unlimited: Unlimited
36
39
  welcome: Welcome
37
40
  bulk_access_codes_created: Bulk access codes created and emailed to {{email_count}} emails.
38
- users_in_role: "Users in this role:"
41
+ users_in_role: "Users in role: {{role}}"
39
42
  current_password: Current Password
40
43
  problem_creating_account: "There was a problem creating your account. Please correct the following errors:"
41
44
  password_confirmation_help: To ensure that your password is correct please enter it again here.
45
+ edit_access_code_title: Edit Access Code
42
46
  thanks_sign_up_login: Thanks for signing up! You may login now
43
47
  already_activated: Your account has already been activated. You can log in below.
44
48
  password: Password
45
49
  account_not_activated: Your {{application_name}} account has not yet been activated.
46
50
  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.
47
51
  problem_changing_password: There was a problem changing your password. {{errors}}
52
+ access_code_delete_problem: Cannot delete access code it has users associated with it.
48
53
  user_enable_problem: There was a problem enabling this user.
49
54
  access_code_tip: Enter a access code.
50
55
  email_empty: Please enter an email address
51
56
  select_new_password: Select a New Password
57
+ bulk_access_code_emails: Emails
58
+ bulk_access_code_subject: Subject
52
59
  access_code_delete_link: Delete Access Code
53
60
  request_access_code: Request Access Code
61
+ validation_is_required: is required.
54
62
  first_name: First Name
55
63
  forgot_username: Forgot Username
56
64
  updated_permissions: Updated Permissions
@@ -83,6 +91,7 @@ en:
83
91
  click_to_sign_up_now: Click here to sign up now.
84
92
  forgot_password: Forgot Password
85
93
  login: Login
94
+ validation_are_required: are required.
86
95
  user_not_activated_error: Could not activate user
87
96
  password_not_reset: Password not reset.
88
97
  save: Save
@@ -98,6 +107,7 @@ en:
98
107
  edit: Edit
99
108
  activation_instructions: Activation Instructions
100
109
  access_code_created: Created
110
+ access_code_added: Access Code was successfully added
101
111
  change_permissions: Change Roles
102
112
  what_is_the_email: What is the email address used to create your account?
103
113
  activation_complete: Activation Complete
@@ -112,12 +122,11 @@ en:
112
122
  access_code_request_tip: Enter your email and we'll send you an access code as soon as one is available. Thank you!
113
123
  password_mismatch: Password mismatch.
114
124
  add_role_dialog_title: Add Role
125
+ user_account_deleted: You have successfully deleted your account.
115
126
  new_password_doesnt_match: New password does not match the password confirmation.
116
127
  add_permission_to_user: Add Permission to user {{user}}
117
- user_account_deleted: You have successfully deleted your account.
118
128
  sign_in: Sign In
119
129
  role_deleted: Role Deleted
120
- role_not_deleted: Role could not be deleted
121
130
  complete_profile: Complete Your Profile
122
131
  access_codes: Access Codes
123
132
  access_code_delete_confirm: Are you sure you want to cancel this access code?
@@ -129,6 +138,7 @@ en:
129
138
  search_users: Search Users
130
139
  user_marked_inactive: User has been marked as inactive
131
140
  access_code_request_thank_you: Thank you for your request. We'll be in touch as soon as possible.
141
+ 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.
132
142
  role: Role
133
143
  bulk_access_codes_title: Bulk Access Codes
134
144
  users_admin: Users
@@ -136,6 +146,7 @@ en:
136
146
  access_code_expires: Expires
137
147
  user_successfully_deleted: User {{login}} was successfully deleted.
138
148
  application_base_url_not_set: Please set application_base_url in global_config.yml
149
+ access_code_update_problem: There was a problem updating the access code.
139
150
  user_not_deactivated_error: Could not deactivate user
140
151
  total_users: "Total Users: {{total}}"
141
152
  password_cannot_be_blank: Password field cannot be blank.
@@ -146,6 +157,7 @@ en:
146
157
  confirm_password: Confirm Password
147
158
  add_user_to_role_title: Add user to a new role.
148
159
  expiration_date: Expiration Date
160
+ role_not_deleted: Role could not be deleted
149
161
  roles: Roles
150
162
  access_code_related_users: Users who signed up with this code
151
163
  login_empty: Please enter a login
@@ -163,7 +175,7 @@ en:
163
175
  change_your_password: Change Your Password
164
176
  forgot_your_password: Forgot your password?
165
177
  role_delete_confirm: Are you sure you want to delete this role? All associated permissions will also be deleted!
166
- unlimited: Unlimited
178
+ unlimited: Unlimited Uses
167
179
  remember_me: Remember me
168
180
  reset_your_password: Reset Your Password
169
181
  access_code_use_limit: Use Limit
@@ -174,6 +186,8 @@ en:
174
186
  request_username_subject: Forgotten username
175
187
  could_not_find_reset_code: Could not find a password reset code. Please try resetting your password again.
176
188
  register_for_account: Register for an account
189
+ bulk_access_code_message: Message
190
+ bulk_access_codes: Email Access Codes
177
191
  add_access_code: Add Access Code
178
192
  user_update: You're user information has been updated.
179
193
  update_profile: Update your profile
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 = "0.3.2"
8
+ s.version = "0.3.3"
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{2010-02-01}
12
+ s.date = %q{2010-02-04}
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 = [
@@ -39,7 +39,10 @@ Gem::Specification.new do |s|
39
39
  "app/views/admin/access_codes/_access_code.html.erb",
40
40
  "app/views/admin/access_codes/_form.html.erb",
41
41
  "app/views/admin/access_codes/_user.html.erb",
42
+ "app/views/admin/access_codes/ajax_create_access_code.js.erb",
43
+ "app/views/admin/access_codes/ajax_update_access_code.js.erb",
42
44
  "app/views/admin/access_codes/bulk.html.erb",
45
+ "app/views/admin/access_codes/destroy.js.erb",
43
46
  "app/views/admin/access_codes/edit.html.erb",
44
47
  "app/views/admin/access_codes/index.html.erb",
45
48
  "app/views/admin/access_codes/new.html.erb",
@@ -65,6 +68,7 @@ Gem::Specification.new do |s|
65
68
  "app/views/admin/users/index.html.erb",
66
69
  "app/views/admin/users/permissions.html.erb",
67
70
  "app/views/admin/users/search.html.erb",
71
+ "app/views/admin/users/update_activate.js.erb",
68
72
  "app/views/admin/users/update_permissions.js.erb",
69
73
  "app/views/password_resets/edit.html.erb",
70
74
  "app/views/password_resets/new.html.erb",
@@ -1,5 +1,5 @@
1
1
  jQuery(document).ready(function() {
2
- jQuery(".tip-field").focus(function() {
2
+ jQuery(".tip-field").live('focus', function() {
3
3
  jQuery(".active").removeClass("active");
4
4
  var tip_key = jQuery('#' + this.id).siblings('.tip-key');
5
5
  var control_id = this.id;
@@ -22,7 +22,7 @@ jQuery(document).ready(function() {
22
22
  jQuery("#" + help_id + "-container").addClass("active");
23
23
  });
24
24
 
25
- jQuery(".tip-field").blur(function() {
25
+ jQuery(".tip-field").live('blur', function() {
26
26
  jQuery('#' + this.id + '-tip').hide(1);
27
27
  });
28
28
  });
@@ -22,9 +22,16 @@ function add_headers(xhr){
22
22
  }
23
23
 
24
24
  jQuery(document).ready(function() {
25
-
25
+
26
26
  jQuery('a.ajax-delete').live('click', function() {
27
- jQuery.post(this.href, { _method: 'delete', format: 'js' }, null, "script");
27
+ var title = jQuery(this).attr('title');
28
+ var do_delete = true;
29
+ if(title.length > 0){
30
+ do_delete = confirm(title);
31
+ }
32
+ if (do_delete){
33
+ jQuery.post(this.href, { _method: 'delete', format: 'js' }, null, "script");
34
+ }
28
35
  return false;
29
36
  });
30
37
 
@@ -33,15 +40,15 @@ jQuery(document).ready(function() {
33
40
  return false;
34
41
  });
35
42
 
36
- jQuery(".submit-form").click(function() {
43
+ jQuery(".submit-form").click(function() {
37
44
  jQuery(this).parent('form').submit();
38
45
  });
39
46
 
40
- apply_ajax_forms();
41
-
42
- jQuery('a.fancy-pop').fancybox({'hideOnContentClick':false, 'overlayShow':true, 'frameWidth':600, 'frameHeight':500 });
43
-
44
- jQuery('a.dialog-pop').live('click', function() {
47
+ apply_ajax_forms();
48
+
49
+ jQuery('a.fancy-pop').fancybox({'hideOnContentClick':false, 'overlayShow':true, 'frameWidth':600, 'frameHeight':500 });
50
+
51
+ jQuery('a.dialog-pop').live('click', function() {
45
52
  var d = jQuery('<div class="dialog"></div>').appendTo("body");
46
53
  d.dialog({ modal: true, autoOpen: false, width: 'auto', title: jQuery(this).attr('title') });
47
54
  d.load(jQuery(this).attr('href'), '', function(){
@@ -1,5 +1,7 @@
1
1
  /* header */
2
2
  a {color:#000;}
3
+ .checkbox-label{display:inline-block;}
4
+ input[type="checkbox"] {margin:0px;}
3
5
  #main-navigation{}
4
6
  #account-navigation {}
5
7
  .navigation ul{padding:2px;margin:0;}
@@ -26,9 +28,10 @@ ul.admin-list li a{font-size:1.2em;}
26
28
  /* errors, message */
27
29
  .notify-box{font-size:1.2em;color:#555;width:100%}
28
30
  .error,.notice,.success {margin:0;}
29
- #errorExplanation{margin:0;padding:.8em;width:97%;border:2px solid #ddd;background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
31
+ #errorExplanation #field-errors{margin:0;padding:0.4em 1.5em;width:96%;border:2px solid #ddd;background:#FBE3E4;color:#8a1f11;border-color:#FBC2C4;}
30
32
  #admin-messages{display:none;}
31
-
33
+ /* ui elements */
34
+ #ui-datepicker-div{z-index:2005;}
32
35
  /* tables */
33
36
  .adminTable{margin:5px 0 0 0;padding:0 0 40px 0px;width:980px;}
34
37
  .adminTable a{color:#000;text-decoration:none;font-weight:bold;}
@@ -37,7 +37,7 @@ ul.icon-list a{display:inline-block;margin:2px 0;padding:2px 0 5px 28px;text-dec
37
37
  .availability{color:#b61e12;position:absolute;}
38
38
  .hidden-tips{display:none;}
39
39
  .required-tip{color:#555555;font-size:1.2em;margin:0pt;font-weight:bolder;height:0px;}
40
- .tip{position:absolute;z-index:100;border:2px solid #CCCCCC;background-color:#fff;width:400px;}
40
+ .tip{position:absolute;z-index:2000;border:2px solid #CCCCCC;background-color:#fff;width:400px;}
41
41
  #tip-title{font-size:1.1em;background-color:#CCCCCC;text-align:left;padding:2px 0px 5px 8px;font-weight:bold;}
42
42
  #tip-main{padding:10px;color:#333333;}
43
43
  #tip-main p,#tip-main ul{font-size:1.3em;}
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: muck-users
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.3.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Justin Ball
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2010-02-01 00:00:00 -07:00
13
+ date: 2010-02-04 00:00:00 -07:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -95,7 +95,10 @@ files:
95
95
  - app/views/admin/access_codes/_access_code.html.erb
96
96
  - app/views/admin/access_codes/_form.html.erb
97
97
  - app/views/admin/access_codes/_user.html.erb
98
+ - app/views/admin/access_codes/ajax_create_access_code.js.erb
99
+ - app/views/admin/access_codes/ajax_update_access_code.js.erb
98
100
  - app/views/admin/access_codes/bulk.html.erb
101
+ - app/views/admin/access_codes/destroy.js.erb
99
102
  - app/views/admin/access_codes/edit.html.erb
100
103
  - app/views/admin/access_codes/index.html.erb
101
104
  - app/views/admin/access_codes/new.html.erb
@@ -121,6 +124,7 @@ files:
121
124
  - app/views/admin/users/index.html.erb
122
125
  - app/views/admin/users/permissions.html.erb
123
126
  - app/views/admin/users/search.html.erb
127
+ - app/views/admin/users/update_activate.js.erb
124
128
  - app/views/admin/users/update_permissions.js.erb
125
129
  - app/views/password_resets/edit.html.erb
126
130
  - app/views/password_resets/new.html.erb