diff --git a/app/controllers/admin/import_controller.rb b/app/controllers/admin/import_controller.rb index 8b705cb..c30cb5c 100644 --- a/app/controllers/admin/import_controller.rb +++ b/app/controllers/admin/import_controller.rb @@ -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| diff --git a/app/controllers/admin/members_controller.rb b/app/controllers/admin/members_controller.rb index c02065b..11fdc2a 100644 --- a/app/controllers/admin/members_controller.rb +++ b/app/controllers/admin/members_controller.rb @@ -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. diff --git a/app/controllers/members_controller.rb b/app/controllers/members_controller.rb index fd7b66c..4ce0fb1 100644 --- a/app/controllers/members_controller.rb +++ b/app/controllers/members_controller.rb @@ -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<'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 diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index 27e8c46..1665cd6 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -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 diff --git a/app/templates/orbit_bootstrap/modules/member/index_teacher.html.erb b/app/templates/orbit_bootstrap/modules/member/index_teacher.html.erb index 21ec0c2..d70e011 100644 --- a/app/templates/orbit_bootstrap/modules/member/index_teacher.html.erb +++ b/app/templates/orbit_bootstrap/modules/member/index_teacher.html.erb @@ -9,14 +9,14 @@
- +
- - + - + diff --git a/app/views/admin/members/_edit_order_list.html.erb b/app/views/admin/members/_edit_order_list.html.erb index 27a4f4d..0fe3d01 100644 --- a/app/views/admin/members/_edit_order_list.html.erb +++ b/app/views/admin/members/_edit_order_list.html.erb @@ -1,14 +1,14 @@
-
- {{name}} + + {{name}} {{name}}{{job-title}}
{{job-title}}
{{name}}
{{discipline}}
{{phone-office}}
{{email}}
+
- - - + + + - + <% @members.each do |member| %> <% case member.sex @@ -20,25 +20,56 @@ member_sex = 'gender-none' end %> - + - - - + + + <% end %>
<%= t(:position) %><%= t(:name) %><%= t(:email) %><%= t(:position) %><%= t(:name) %><%= t(:role) %>
<%= link_to (member.position + 1), '#', class: 'edit_position', 'data-user-id' => member.id %><%= link_to member.name, admin_member_path(member) %><%= member.email %><%= member.position+1 %><%= member.name %> + <% member.roles.each do |role| %> + <%= role.title %> + <% end %> +
-
-
- <%= link_to t(:update_), '#', class: "btn btn-primary pull-right" %> -
-
- + \ No newline at end of file diff --git a/app/views/admin/members/_role.html.erb b/app/views/admin/members/_role.html.erb index cd493a2..085a53f 100644 --- a/app/views/admin/members/_role.html.erb +++ b/app/views/admin/members/_role.html.erb @@ -12,7 +12,7 @@
<%= label_tag t(:status), nil, {:func=>"field_label", :for=>"1", :class=>"control-label muted"} %>
- <% 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| %> diff --git a/config/routes.rb b/config/routes.rb index 445106b..1a86910 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -85,7 +85,8 @@ Orbit::Application.routes.draw do get 'get_month_traffic' 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