forked from saurabh/orbit4-5
update member import,frontend,structure
member frontend order is hard-coded
This commit is contained in:
parent
58bcf69940
commit
4de07afb2a
|
@ -302,6 +302,51 @@ class Admin::ImportController < OrbitAdminController
|
|||
@@import_stats["current_status"] = 0
|
||||
@@import_stats["success"] = true
|
||||
write_to_file
|
||||
|
||||
rss2_roles = data["attributes"]
|
||||
rss2_roles.each do |key,rss2_role|
|
||||
role = Role.find_by(key: rss2_role["name"]["en"]) rescue nil
|
||||
if role.nil?
|
||||
role = Role.new(key: rss2_role["name"]["en"], title_translations: {"en"=>rss2_role["name"]["en"],"zh_tw"=>rss2_role["name"]["zh-tw"]})
|
||||
role.save
|
||||
end
|
||||
next if rss2_role["classes"].blank?
|
||||
rss2_role["classes"].each do |class_name, rss2_class_list|
|
||||
if class_name.include? "class1"
|
||||
rss2_class_list['data'].each do |rss2_option|
|
||||
status_key = rss2_option["name"]["en"].split(' ').join('_').underscore rescue nil
|
||||
status = RoleStatus.find_by(key: status_key, role_id: role.id) rescue nil
|
||||
if status.nil?
|
||||
status = role.role_statuses.build(key: status_key, title_translations: {"en"=>rss2_option["name"]["en"],"zh_tw"=>rss2_option["name"]["zh-tw"]})
|
||||
end
|
||||
status.save
|
||||
end
|
||||
else
|
||||
key = rss2_class_list["name"]["en"].gsub("/"," ").split(' ').join('_').underscore
|
||||
field = AttributeField.find_by(key: key, :role=>role) rescue nil
|
||||
if field.nil?
|
||||
field = AttributeField.new(key: key, title_translations: {"en"=>rss2_class_list["name"]["en"],"zh_tw"=>rss2_class_list["name"]["zh-tw"]})
|
||||
field["markup"] = "select"
|
||||
field.typeB["option_list"] = {}
|
||||
field.option_list = {}
|
||||
role.attribute_fields << field
|
||||
field.save
|
||||
field = AttributeField.find_by(key: key, :role=>role)
|
||||
end
|
||||
|
||||
index = 0
|
||||
rss2_class_list['data'].each do |rss2_option|
|
||||
option = {"en"=>rss2_option["name"]["en"],"zh_tw"=>rss2_option["name"]["zh-tw"]}
|
||||
field.typeB["option_list"]["#{index}"] = option
|
||||
field.option_list["#{index}"] = option
|
||||
index = index+1
|
||||
end
|
||||
field.save
|
||||
end
|
||||
|
||||
end
|
||||
end
|
||||
|
||||
members = data["users"]
|
||||
data_to_send = []
|
||||
members.each do |member|
|
||||
|
|
|
@ -239,7 +239,7 @@ class Admin::MembersController < OrbitMemberController
|
|||
end
|
||||
|
||||
def edit_order_list
|
||||
@members = MemberProfile.order('created_at DESC')
|
||||
@members = MemberProfile.order(:position=>'asc',:created_at=>'desc')
|
||||
@type = 'list'
|
||||
render 'edit_order'
|
||||
end
|
||||
|
@ -262,27 +262,35 @@ class Admin::MembersController < OrbitMemberController
|
|||
end
|
||||
|
||||
def update_order_list
|
||||
@error = []
|
||||
if params[:users].present?
|
||||
params[:users].values.sort.each do |pair|
|
||||
to_go = pair[0].to_i
|
||||
|
||||
if to_go > 0
|
||||
member_at_position = MemberProfile.where(position: to_go).first
|
||||
member = MemberProfile.find(pair[1])
|
||||
if member_at_position && !(member_at_position == member)
|
||||
if member.position > member_at_position.position
|
||||
member.move_above(member_at_position)
|
||||
else
|
||||
member.move_below(member_at_position)
|
||||
end
|
||||
elsif to_go > MemberProfile.count
|
||||
member.move_to_bottom
|
||||
end
|
||||
end
|
||||
if params[:position].present?
|
||||
params[:position].each do |id, position|
|
||||
profile = MemberProfile.find(id)
|
||||
profile.position = position.to_i
|
||||
profile.save(:validate => false)
|
||||
end
|
||||
end
|
||||
@members = MemberProfile.asc(:position)
|
||||
# @error = []
|
||||
# if params[:users].present?
|
||||
# params[:users].values.sort.each do |pair|
|
||||
# to_go = pair[0].to_i
|
||||
|
||||
# if to_go > 0
|
||||
# member_at_position = MemberProfile.where(position: to_go).first
|
||||
# member = MemberProfile.find(pair[1])
|
||||
# if member_at_position && !(member_at_position == member)
|
||||
# if member.position > member_at_position.position
|
||||
# member.move_above(member_at_position)
|
||||
# else
|
||||
# member.move_below(member_at_position)
|
||||
# end
|
||||
# elsif to_go > MemberProfile.count
|
||||
# member.move_to_bottom
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# end
|
||||
# @members = MemberProfile.asc(:position)
|
||||
render :nothing=>true
|
||||
end
|
||||
|
||||
def setting_account
|
||||
|
@ -296,6 +304,12 @@ class Admin::MembersController < OrbitMemberController
|
|||
end
|
||||
end
|
||||
|
||||
def get_role_fields
|
||||
role = Role.find(params[:id])
|
||||
statuses = role.role_statuses.map{|status| {'key'=>status.key, 'title'=>status.title}}.select{|s| s['key']='part_time'}
|
||||
render :json=>{"statuses"=>statuses}
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
# Use callbacks to share common setup or constraints between actions.
|
||||
|
|
|
@ -22,14 +22,15 @@ class MembersController < ApplicationController
|
|||
if !role['status'].blank?
|
||||
role['status'].each do |status|
|
||||
member_profiles = get_members_by_status(status, role['id'])
|
||||
status_list << { "status-title" => status.title, "members" => member_profiles }
|
||||
status_list << { "status-title" => status.title, "members" => member_profiles } if !member_profiles.blank?
|
||||
end
|
||||
else
|
||||
# Members with status
|
||||
role_status = RoleStatus.order_by(:title=>"desc").where(:role_id=>role['id'])
|
||||
role_status = RoleStatus.order_by(:id=>"asc").where(:role_id=>role['id'])
|
||||
role_status_ids = role_status.collect{|status| status.id.to_s}
|
||||
role_status.each do |status|
|
||||
member_profiles = get_members_by_status(status, role['id'])
|
||||
next if member_profiles.blank?
|
||||
status_list << { "status-title" => status.title, "members" => member_profiles }
|
||||
end
|
||||
# Members without status
|
||||
|
@ -37,7 +38,8 @@ class MembersController < ApplicationController
|
|||
MemberProfile.not_in(:role_status_ids.in=>role_status_ids).where(:role_ids.in=>[role['id']]).collect do |profile|
|
||||
member_profiles << get_member_data(profile, role['id'])
|
||||
end
|
||||
status_list << { "status-title" => "", "members" => member_profiles }
|
||||
member_profiles = member_profiles.sort_by{|a|[a["job-title-value"],a["name"]] }
|
||||
status_list << { "status-title" => role['title'], "members" => member_profiles } if !member_profiles.blank?
|
||||
end
|
||||
role_list << { "role-title" => role['title'], "status-list" => status_list }
|
||||
end
|
||||
|
@ -52,10 +54,10 @@ class MembersController < ApplicationController
|
|||
|
||||
def get_members_by_status(status, role_id)
|
||||
member_profiles = []
|
||||
status.member_profiles.sort{|a,b|a.position<=>b.position}.each do |profile|
|
||||
status.member_profiles.each do |profile|
|
||||
member_profiles<<get_member_data(profile, role_id)
|
||||
end
|
||||
return member_profiles
|
||||
return member_profiles.sort_by{|a|[a['job-title-value'],a["name"]] }
|
||||
end
|
||||
|
||||
def get_member_data(profile, role_id)
|
||||
|
@ -79,15 +81,17 @@ class MembersController < ApplicationController
|
|||
job_title_value = profile.attribute_values.where(:key=>'job_title', :attribute_field_id.in=>Role.find(role_id).attribute_field_ids).first
|
||||
job_title = job_title_value.attribute_field.option_list[job_title_value.value.to_s][I18n.locale.to_s] rescue ""
|
||||
|
||||
discipline = profile.attribute_values.where(:key=>'discipline', :attribute_field_id.in=>Role.find(role_id).attribute_field_ids).first.value[I18n.locale]
|
||||
discipline = profile.attribute_values.where(:key=>'discipline', :attribute_field_id.in=>Role.find(role_id).attribute_field_ids).first.value[I18n.locale][0..16]+'...' rescue ""
|
||||
phone_office = profile.attributes.select{|k,v| v if (k.eql?("office_tel") && v.present?)}
|
||||
{
|
||||
"name"=>profile.name,
|
||||
"email" => profile.email,
|
||||
"job-title" => job_title,
|
||||
"job-title-value" => (job_title_value.value.to_s rescue ""),
|
||||
"discipline" => discipline,
|
||||
"phone-office" => phone_office['office_tel'],
|
||||
"phone-office" => (phone_office['office_tel'] rescue ""),
|
||||
"image" => profile.avatar.present? ? profile.avatar.thumb.url : "http://placehold.it/100x100",
|
||||
"position" => profile.position,
|
||||
"link_to_show" => OrbitHelper.url_to_show(profile.to_param)
|
||||
}
|
||||
end
|
||||
|
@ -99,7 +103,9 @@ class MembersController < ApplicationController
|
|||
"name"=>profile.name,
|
||||
"email" => profile.email,
|
||||
"job-title" => job_title,
|
||||
"job-title-value" => (job_title_value.value.to_s rescue ""),
|
||||
"image" => profile.avatar.present? ? profile.avatar.thumb.url : "http://placehold.it/100x100",
|
||||
"position" => profile.position,
|
||||
"link_to_show" => OrbitHelper.url_to_show(profile.to_param)
|
||||
}
|
||||
end
|
||||
|
|
|
@ -143,7 +143,7 @@ class PagesController < ApplicationController
|
|||
def get_categories
|
||||
module_app = ModuleApp.find_by_key(params[:module]);
|
||||
if module_app.key.eql?("member")
|
||||
roles = Role.all.collect do |role|
|
||||
roles = Role.order_by(:_id=>'ASC').all.collect do |role|
|
||||
{
|
||||
"title" => role.title,
|
||||
"id" => role.id.to_s,
|
||||
|
@ -164,7 +164,7 @@ class PagesController < ApplicationController
|
|||
end
|
||||
end
|
||||
|
||||
roles = roles.nil? ? [] : roles.sort_by{|status| status['title']}
|
||||
roles = roles.nil? ? [] : roles
|
||||
categories = categories.nil? ? [] : categories
|
||||
|
||||
if module_app.data_count.nil?
|
||||
|
@ -195,14 +195,13 @@ class PagesController < ApplicationController
|
|||
@categories = @module_app.categories rescue []
|
||||
@tags = @module_app.tags rescue []
|
||||
if @module_app.key.eql?("member")
|
||||
@roles = Role.all.collect do |role|
|
||||
@roles = Role.order_by(:_id=>'ASC').all.collect do |role|
|
||||
{
|
||||
"title" => role.title,
|
||||
"id" => role.id.to_s,
|
||||
"status" => RoleStatus.where(:role=>role)
|
||||
}
|
||||
end
|
||||
@roles = @roles.sort_by{|status| status['title']}
|
||||
else
|
||||
@roles = []
|
||||
end
|
||||
|
|
|
@ -9,14 +9,14 @@
|
|||
|
||||
<div class="index-member-list row" data-level="2" data-list="members">
|
||||
<div class="index-member-item clearfix col-sm-6">
|
||||
<table class="table-condensed">
|
||||
<table class="table-condensed" height="165">
|
||||
<tr>
|
||||
<td rowspan="5" height="120">
|
||||
<img src="{{image}}" alt="{{name}}" height="120">
|
||||
<td rowspan="5" valign="top">
|
||||
<img src="{{image}}" alt="{{name}}" height="160" height="auto">
|
||||
</td>
|
||||
<td><a href="{{link_to_show}}">{{name}}</a></td>
|
||||
<td>{{job-title}}</td>
|
||||
</tr>
|
||||
<tr><td>{{job-title}}</td></tr>
|
||||
<tr><td><a href="{{link_to_show}}">{{name}}</a></td></tr>
|
||||
<tr><td>{{discipline}}</td></tr>
|
||||
<tr><td>{{phone-office}}</td></tr>
|
||||
<tr><td><a href="mailto:{{email}}">{{email}}</a></td></tr>
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
<div id="list-view">
|
||||
<table id="member-list" class="table main-list">
|
||||
<table id="member-list" class="table main-list table-striped table-hover" style="width: inherit; margin: 0 auto;">
|
||||
<thead>
|
||||
<tr class="sort-header">
|
||||
<th class="gender"></th>
|
||||
<th class="span2"><a href="#"><%= t(:position) %></a></th>
|
||||
<th class="span4"><a href="#"><%= t(:name) %></a></th>
|
||||
<th><a href="#"><%= t(:email) %></a></th>
|
||||
<th class="span1"><a href="#"><%= t(:position) %></a></th>
|
||||
<th class="span2"><a href="#"><%= t(:name) %></a></th>
|
||||
<th class="span2"><a href="#"><%= t(:role) %></a></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tbody class="sortable">
|
||||
<% @members.each do |member| %>
|
||||
<%
|
||||
case member.sex
|
||||
|
@ -20,25 +20,56 @@
|
|||
member_sex = 'gender-none'
|
||||
end
|
||||
%>
|
||||
<tr id="<%= dom_id member %>">
|
||||
<tr id="<%= dom_id member %>" class="sortable-member">
|
||||
<td class="<%= member_sex %>"></td>
|
||||
<td><%= link_to (member.position + 1), '#', class: 'edit_position', 'data-user-id' => member.id %></td>
|
||||
<td><%= link_to member.name, admin_member_path(member) %></td>
|
||||
<td><%= member.email %></td>
|
||||
<td class="member-position" data-value="<%= member.id %>"><%= member.position+1 %></td>
|
||||
<td><%= member.name %></td>
|
||||
<td>
|
||||
<% member.roles.each do |role| %>
|
||||
<span class="label label-info"><%= role.title %></span>
|
||||
<% end %>
|
||||
</td>
|
||||
</tr>
|
||||
<% end %>
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
<div class="bottomnav clearfix">
|
||||
<div class="action pull-right">
|
||||
<%= link_to t(:update_), '#', class: "btn btn-primary pull-right" %>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<style type="text/css">
|
||||
.sortable-placeholder{
|
||||
}
|
||||
.sortable-member{
|
||||
cursor: pointer;
|
||||
}
|
||||
</style>
|
||||
<script>
|
||||
var position_data = {};
|
||||
|
||||
$(function() {
|
||||
typeMode();
|
||||
reOrderMembers();
|
||||
|
||||
$( ".sortable" ).sortable({
|
||||
axis: "y",
|
||||
revert: true,
|
||||
placeholder: "sortable-placeholder",
|
||||
stop: function(){
|
||||
reOrderMembers();
|
||||
$.post("/admin/members/update_order_list",$.param({position:position_data}),function(data){
|
||||
console.log(data);
|
||||
});
|
||||
}
|
||||
});
|
||||
$('.sortable').disableSelection();
|
||||
});
|
||||
|
||||
var reOrderMembers = function(){
|
||||
var position = 1;
|
||||
$.each($(".member-position"),function(){
|
||||
if($(this).text()!=position){
|
||||
position_data[$(this).attr("data-value")] = position-1;
|
||||
}
|
||||
$(this).text(position);
|
||||
position++;
|
||||
});
|
||||
}
|
||||
</script>
|
|
@ -12,7 +12,7 @@
|
|||
<div class="control-group">
|
||||
<%= label_tag t(:status), nil, {:func=>"field_label", :for=>"1", :class=>"control-label muted"} %>
|
||||
<div class="controls">
|
||||
<% role.role_statuses.where(disable: false).each_with_index do |rrs, i| %>
|
||||
<% role.role_statuses.where(disable: false).order_by(:id=>'asc').each_with_index do |rrs, i| %>
|
||||
<label class="checkbox inline">
|
||||
<%= check_box_tag 'member_profile[role_status_ids][]', rrs.id, @member.role_statuses.include?(rrs) ? true: false, class: "check" %> <%= rrs.title %>
|
||||
</label>
|
||||
|
|
|
@ -86,6 +86,7 @@ Orbit::Application.routes.draw do
|
|||
end
|
||||
end
|
||||
|
||||
get "members/get_role_fields/:id" => "members#get_role_fields", :as => :get_role_fields
|
||||
get "members/unapproved_members" => "members#unapproved_members"
|
||||
resources :members do
|
||||
collection do
|
||||
|
|
Loading…
Reference in New Issue