approve users and role status in sign up added

This commit is contained in:
Harry Bomrah 2014-05-28 18:47:19 +08:00
parent e5e7a18bd8
commit 4cbf7f5015
16 changed files with 145 additions and 12 deletions

View File

@ -134,6 +134,28 @@ class Admin::MembersController < OrbitMemberController
render action: "index"
end
def unapproved_members
@member_query = params[:member_query]
page_num = params[:page] || 1
if !@member_query.blank?
members = MemberProfile.all.any_of({:user_id => /#{@member_query}/i}, {:first_name => /#{@member_query}/i}, {:last_name => /#{@member_query}/i}, {:email => /#{@member_query}/i}).page(page_num).per(12)
@members = members.collect do |member|
if !member.user.approved
member.user
end
end
else
@members = User.unapproved.page(page_num).per(12)
end
end
def accept_member
user = User.find(params[:member_id])
user.approved = true
user.save
redirect_to admin_members_unapproved_members_path
end
def edit_passwd
@member = MemberProfile.find(params[:member_id])
@user = @member.user

View File

@ -66,6 +66,8 @@ class UsersController < ApplicationController
def role_page
@roles = Role.where(:disabled => false)
@user_id = params[:user_id]
@member_profile = User.find(@user_id).member_profile
end
def role_update
@ -79,6 +81,12 @@ class UsersController < ApplicationController
end
end
def get_role_statuses
@role = Role.find(params[:roleId])
@statuses = @role.role_statuses
render :layout => false
end
def check_availability
response = {}
case params[:type]

View File

@ -13,6 +13,7 @@ class User
has_many :user_actions, :dependent => :destroy
index({ confirmation_token: 1}, { unique: true })
scope :unapproved, ->{ where(approved: false) }
has_secure_password

View File

@ -1,11 +1,13 @@
<div class="bottomnav clearfix">
<div class="action pull-right">
<% if params[:action] != "unapproved_members" %>
<% if current_user.is_admin? %>
<%= link_to t(:edit_order),new_admin_member_path ,:class => "btn btn-primary" %>
<%= link_to(new_admin_member_path,:class=> "btn btn-primary") do %>
<i class="icon-plus"></i><%= t(:add) %>
<% end -%>
<% end -%>
<% end %>
</div>
<div class="pagination pagination-centered">
<%= paginate @members, :params => {:inner => false} %>

View File

@ -52,7 +52,7 @@
</div>
<div class="btn-group" data-toggle="buttons-radio">
<% current_site.in_use_locales.each_with_index do |locale, i| %>
<a class="btn <%= ( i == 0 ) ? "active" : '' %>" href="#first_name_<%= locale %>" data-toggle="tab"><%= I18nVariable.from_locale(locale) %></a>
<a class="btn <%= ( i == 0 ) ? "active" : '' %>" href="#first_name_<%= locale %>" data-toggle="tab"><%= t(locale.to_s) %></a>
<% end %>
<a href="#" class="btn remove-input"><i class="icon-trash"></i></a>
</div>
@ -78,7 +78,7 @@
</div>
<div class="btn-group" data-toggle="buttons-radio">
<% current_site.in_use_locales.each_with_index do |locale, i| %>
<a class="btn <%= ( i == 0 ) ? "active" : '' %>" href="#last_name_<%= locale %>" data-toggle="tab"><%= I18nVariable.from_locale(locale) %></a>
<a class="btn <%= ( i == 0 ) ? "active" : '' %>" href="#last_name_<%= locale %>" data-toggle="tab"><%= t(locale) %></a>
<% end %>
<a href="#" class="btn remove-input"><i class="icon-trash"></i></a>
</div>

View File

@ -29,7 +29,8 @@
<%= content_tag :li, link_to((content_tag(:span, t(:all_member))), admin_members_path), :class => active_for_action('members', 'index') %>
<%= content_tag :li, link_to((content_tag(:span, t(:add_member))), new_admin_member_path), :class => active_for_action('members', 'new') if (current_user.is_admin? rescue nil) %>
<%= content_tag :li, link_to((content_tag(:span, t(:member_role))),admin_roles_path ), :class => active_for_action('roles', 'index') if (current_user.is_admin? rescue nil) %>
<%= content_tag :li, link_to((content_tag(:span, t(:member_info))), admin_member_infos_path), :class => active_for_action('members', 'index') if (current_user.is_admin? rescue nil) %>
<%= content_tag :li, link_to((content_tag(:span, t(:member_info))), admin_member_infos_path), :class => active_for_action('member_infos', 'index') if (current_user.is_admin? rescue nil) %>
<%= content_tag :li, link_to((content_tag(:span, t(:unapproved_members) + " (" + User.unapproved.count.to_s + ")")), admin_members_unapproved_members_path), :class => active_for_action('members', 'unapproved_members') if (current_user.is_admin? rescue nil) %>
<% end -%>
</div>
<div class="sub-nav-block" data-icons="&#xe070;">

View File

@ -0,0 +1,32 @@
<% if unapproved_members_list.present?%>
<%
if unapproved_members_list.member_profile.sex == 'male'
@member_gender = 'gender-man'
elsif unapproved_members_list.member_profile.sex == 'female'
@member_gender = 'gender-woman'
elsif unapproved_members_list.member_profile.sex.nil?
@member_gender = 'gender-none'
end
%>
<tr id="<%= dom_id unapproved_members_list.member_profile %>">
<td class="<%= @member_gender %>"></td>
<td>
<% unapproved_members_list.member_profile.roles.each do |rf| %>
<% @roledata = Role.find(rf.id) %>
<span class="label label-info"><%= @roledata.title %></span>
<% end %>
</td>
<td>
<%= link_to (unapproved_members_list.member_profile.name && unapproved_members_list.member_profile.name != (unapproved_members_list.member_profile.email if unapproved_members_list.member_profile.user.present?) ? unapproved_members_list.member_profile.name : unapproved_members_list.member_profile.user.id),admin_member_path(unapproved_members_list.member_profile) %>
<div class="quick-edit">
<ul class="nav nav-pills">
<%= content_tag(:li, link_to(t(:edit),edit_admin_member_path(unapproved_members_list.member_profile))) if current_user.is_admin? %>
<%= content_tag(:li, link_to(t("users.accept_member"),admin_member_accept_member_path(unapproved_members_list))) %>
<%= content_tag(:li, link_to(t(:delete_),admin_member_path(unapproved_members_list.member_profile, :at=>params[:at]), :confirm => t(:sure?), :method => :delete, :class=>"text-error", :remote => true)) if current_user.is_admin? %>
</ul>
</div>
</td>
<td><%= unapproved_members_list.member_profile.email %></td>
</tr>
<% end %>

View File

@ -14,7 +14,7 @@
<dd><%= @member.office_tel %></dd>
<% end %>
<dt><%= t('users.sex')%></dt>
<dd><%= t("users.#{@member.sex}") %></dd>
<dd><%= t("users.#{(@member.sex.nil? ? 'unknown' : @member.sex)}") %></dd>
</dl>
</div>

View File

@ -0,0 +1,28 @@
<% content_for :side_bar do %>
<%= render :partial => 'admin/members/side_bar' %>
<% end %>
<% content_for :right_nav do %>
<div class="searchClear pull-left" style="clear: left;">
<form action="" method="get">
<%= text_field_tag 'member_query',( params[:member_query] ? params[:member_query] : '' ), {:id=>'filter-input', :class => "search-query input-medium", :placeholder => 'Search'} %>
</form>
</div>
<% end %>
<div id="list-view">
<table id="member-list" class="table main-list">
<thead>
<tr class="sort-header">
<th class="gender"></th>
<th class="span3"><a href="#"><%= t('roles') %></a></th>
<th class="span4"><a href="#"><%= t('name') %></a></th>
<th><a href="#"><%= t('email') %></a></th>
</tr>
</thead>
<tbody>
<%= render :partial => "unapproved_members_list",:collection=> @members%>
</tbody>
</table>
</div>
<%= render :partial=> "index_paginator" if @member_query.blank? %>

View File

@ -3,7 +3,7 @@
<%= f.fields_for :title_translations do |f| %>
<% @site_in_use_locales.each do |locale| %>
<%= label_tag "name-#{locale}", "#{t(:name)} (#{I18nVariable.from_locale(locale)})" %>
<%= label_tag "name-#{locale}", "#{t(:name)} (#{t(locale.to_s)})" %>
<%= f.text_field locale, :class => 'input-large', :value => (@role_status.title_translations[locale] rescue ''), placeholder: t(:name) %>
<% end %>
<% end %>

View File

@ -3,7 +3,7 @@
<tr class="sort-header">
<th class="span3 active"><a href="#">Key<b class="icons-arrow-down-4"></b></a></th>
<% @site_in_use_locales.each do |locale| %>
<th><%= I18nVariable.from_locale(locale) %></th>
<th><%= t(locale.to_s) %></th>
<% end %>
<th class="span1"></th>
</tr>

View File

@ -3,7 +3,7 @@
<%= f.fields_for :title_translations do |f| %>
<% current_site.in_use_locales.each do |locale| %>
<%= label_tag "name-#{locale}", "#{t(:name)} (#{I18nVariable.from_locale(locale)})" %>
<%= label_tag "name-#{locale}", "#{t(:name)} (#{t(locale.to_s)})" %>
<%= f.text_field locale, :class => 'input-large', :value => (@role.title_translations[locale] rescue ''), placeholder: t(:name) %>
<% end %>
<% end %>

View File

@ -0,0 +1,11 @@
<div for="<%= @role.id.to_s %>">
<label>Role status for <%= @role.title %></label>
<div class="control-group clear">
<% @statuses.each do |status| %>
<input type="radio" name="member_profile[role_status_ids][]" value="<%= status.id.to_s %>" />
<label class="role-label">
<%= status.title %>
</label>
<% end %>
</div>
</div>

View File

@ -4,23 +4,44 @@
<h3 class="login-logo">Please select a role</h3>
<div class="form-block">
<div class="form-list clearfix option-block">
<form action="<%= users_role_update_path %>" method="post">
<%= form_for @member_profile, :url => users_role_update_path, :html => { :multipart => true , :class=>"form-horizontal main-forms"} do |f| %>
<label>Roles</label>
<div class="control-group clear">
<% @roles.each do |role| %>
<input type="checkbox" name="member_profile[role_ids][]" value="<%= role.id.to_s %>" />
<input type="checkbox" class="get_status" name="member_profile[role_ids][]" value="<%= role.id.to_s %>" />
<label class="role-label">
<%= role.title %>
</label>
<% end %>
<input type="hidden" name="id" value="<%= @user_id %>" />
</div>
<div id="role_statuses">
</div>
<h3 class="line"></h3>
<input type="submit" value="Finish" class="btn btn-primary pull-right" />
</form>
<% end %>
</div>
</div>
</div>
</div>
</section>
</section>
<script type="text/javascript">
var statuse_area = $("#role_statuses");
$(".get_status").on("change",function(){
if($(this).is(":checked")){
$.ajax({
url : "/users/get_role_statuses",
type : "get",
dataType : "html",
data : {"roleId" : $(this).val()}
}).done(function(html){
statuse_area.append(html);
})
}else{
statuse_area.find("div[for="+ $(this).val() +"]").remove();
}
})
</script>

View File

@ -320,6 +320,7 @@ en:
member_: Member
member_authorization: Authorizations
member_info: Member Attributes
unapproved_members: Unapproved Members
member_registration: Registration Approval
member_role: Member Roles
menu_enabled_for: Menu enabled for
@ -625,6 +626,7 @@ en:
avatar: Profile Picture
change_passwd: Password
setting_privilege: Privilege
accept_member: Approve Member
email: Email
first_name: First Name
last_name: Last Name

View File

@ -44,7 +44,8 @@ Orbit::Application.routes.draw do
get 'users/role_page' => "users#role_page"
get 'users/check_availability' => "users#check_availability"
get 'users/confirmation' => "users#confirmation"
post 'users/role_update' => "users#role_update"
get 'users/get_role_statuses' => "users#get_role_statuses"
patch 'users/role_update' => "users#role_update"
patch 'users/basic_info_update' => "users#basic_info_update"
resources :users do
@ -80,10 +81,14 @@ Orbit::Application.routes.draw do
get 'get_month_traffic'
end
end
get "members/unapproved_members" => "members#unapproved_members"
resources :members do
match "edit_passwd" => "members#edit_passwd" ,:as => :edit_passwd, via: [:get, :post]
match "accept_member" => "members#accept_member" ,:as => :accept_member, via: [:get, :post]
match "edit_privilege" => "members#edit_privilege" ,:as => :edit_privilege, via: [:get, :post]
end
resources :roles do
get 'role_field'
post 'toggle'