diff --git a/app/controllers/personal_honors_controller.rb b/app/controllers/personal_honors_controller.rb index 0729892..c452b27 100644 --- a/app/controllers/personal_honors_controller.rb +++ b/app/controllers/personal_honors_controller.rb @@ -1,25 +1,52 @@ class PersonalHonorsController < ApplicationController def index + params = OrbitHelper.params honors = Honor.where(:is_hidden=>false).order_by(:year=>'desc').page(OrbitHelper.params[:page_no]).per(OrbitHelper.page_data_count) - honor_list = honors.collect do |honor| - { - "year" => honor.year, - "award_name" => honor.award_name, - "awarding_unit" => (honor.awarding_unit rescue ""), - "award_winner" => (honor.member_profile.name rescue ""), - "link_to_show" => OrbitHelper.url_to_show(honor.to_param) + fields_to_show = Page.where(:page_id => params[:page_id]).first.custom_array_field rescue [] + + if fields_to_show.blank? + fields_to_show = [ + "honor_type", + "year", + "award_name", + "authors", + "awarding_unit" + ] + end + + honor_list = [] + honors.each do |honor| + t = [] + fields_to_show.each do |fs| + case fs + when "award_name" + t << {"value" => "" + (honor.send(fs) rescue "") + ""} + when "honor_type" + t << {"value" => (honor.send("honor_type").title rescue "")} + when "authors" + t << {"value" => (honor.send(:member_profile).name rescue "")} + else + t << {"value" => (honor.send(fs) rescue "")} + end + end + honor_list << {"personal_honors" => t} + end + + headers = [] + fields_to_show.each do |fs| + col = 2 + col = 3 if fs == "award_name" + header = fs == "authors" ? t("users.name") : t("personal_honor.#{fs}") + headers << { + "head-title" => header, + "col" => col } end + { "honors" => honor_list, - "extras" => { - "widget-title" => t("module_name.personal_honor"), - "th_year" => t('personal_honor.year'), - "th_award_name" => t('personal_honor.award_name'), - "th_awarding_unit" => t('personal_honor.awarding_unit'), - "th_award_winner" => t('personal_honor.award_winner'), - "th_detail" => t('detail') - }, + "extras" => {"widget-title" => t("module_name.personal_honor")}, + "headers" => headers, "total_pages" => honors.total_pages } end @@ -40,4 +67,35 @@ class PersonalHonorsController < ApplicationController {"plugin_datas"=>plugin.get_plugin_data(fields_to_show)} end + + def get_fields_for_index + @page = Page.find(params[:page_id]) rescue nil + @fields_to_show = [ + "year", + "award_name", + "awarding_unit", + "honor_type", + "keywords", + "url", + "note", + "authors", + "award_winner" + ] + @fields_to_show = @fields_to_show.map{|fs| [(fs == "authors" ? t("users.name") : t("personal_honor.#{fs}")), fs]} + @default_fields_to_show = [ + "honor_type", + "year", + "award_name", + "authors", + "awarding_unit" + ] + render :layout => false + end + + def save_index_fields + page = Page.find(params[:page_id]) rescue nil + page.custom_array_field = params[:keys] + page.save + render :json => {"success" => true}.to_json + end end \ No newline at end of file diff --git a/app/models/honor.rb b/app/models/honor.rb index e8d8312..20a39d1 100644 --- a/app/models/honor.rb +++ b/app/models/honor.rb @@ -39,13 +39,18 @@ class Honor end def self.get_plugin_datas_to_member(datas) - - fields_to_show = [ - "honor_type", - "year", - "award_name", - "awarding_unit" - ] + page = Page.where(:module => "personal_honor").first rescue nil + + if !page.nil? && !page.custom_array_field.blank? + fields_to_show = page.custom_array_field + else + fields_to_show = [ + "honor_type", + "year", + "award_name", + "awarding_unit" + ] + end fields_to_remove = [] diff --git a/app/views/personal_honors/get_fields_for_index.html.erb b/app/views/personal_honors/get_fields_for_index.html.erb new file mode 100644 index 0000000..03afedc --- /dev/null +++ b/app/views/personal_honors/get_fields_for_index.html.erb @@ -0,0 +1,48 @@ +<% if !@page.nil? %> +
+ +<% else %> +