class PersonalJournalsController < ApplicationController def index params = OrbitHelper.params journal_papers = JournalPaper.where(:is_hidden=>false).sort_for_frontend.page(OrbitHelper.params[:page_no]).per(OrbitHelper.page_data_count) page = Page.where(:page_id => params[:page_id]).first rescue nil if page.custom_string_field == "table" fields_to_show = page.custom_array_field rescue [] fields_to_show = [ "paper_title", "journal_title", "authors", "year", "issue_no", "vol_no", "level_type" ] if fields_to_show.blank? else fields_to_show = [ "year", "paper_title" ] end journal_paper_list = [] journal_papers.each do |journal_paper| t = [] fields_to_show.each do |fs| case fs when "paper_title" if page.custom_string_field == "table" t << {"value" => "#{journal_paper.paper_title}"} else t << {"value" => "#{journal_paper.create_link}"} end when "level_type" t << {"value" => ( !journal_paper.journal_levels.blank? ? "(#{journal_paper.journal_levels.collect{|x| x.title}.join(', ')})" : nil)} when "publication_date" t << {"value" => (journal_paper.send(fs).strftime("%Y/%m") rescue "")} when "author_type" t << {"value" => (journal_paper.journal_paper_author_types.collect{|jat| jat.title}.join(", ") rescue "")} else t << {"value" => journal_paper.send(fs)} end end journal_paper_list << {"jps" => t} end headers = [] choice_show = [] fields_to_show.each do |fs| col = 2 col = 3 if fs == "paper_title" headers << { "head-title" => t("personal_journal.#{fs}"), "col" => col } choice_show << t("personal_journal.#{fs}") end choice_value = fields_to_show choice_value.unshift("paper_title") choice_default = OrbitHelper.params[:locale]!='en' ? "——選取分類——" : "——select class——" choice_show.unshift(choice_default) { "journal_papers" => journal_paper_list, "headers" => headers, "extras" => {"widget-title" => t("module_name.journal_paper")}, "total_pages" => journal_papers.total_pages, "choice" => {"choice_value" => choice_value ,"choice_show" => choice_show}, "url" => "/"+OrbitHelper.params[:locale]+OrbitHelper.params[:url], "all" => journal_papers.all.take(journal_papers.all.count) } end def show params = OrbitHelper.params plugin = JournalPaper.where(:is_hidden=>false).find_by(uid: params[:uid]) fields_to_show = [ "year", "authors", "author_type", "paper_title", "journal_title", "vol_no", "issue_no", "form_to_start", "form_to_end", "level_type", "paper_type", "total_pages", "publication_date", "isbn", "abstract", "language", "url", "associated_project", "file" ] {"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", "authors", "author_type", "paper_title", "journal_title", "vol_no", "issue_no", "form_to_start", "form_to_end", "level_type", "paper_type", "total_pages", "publication_date", "isbn", "abstract", "language", "url" ] @fields_to_show = @fields_to_show.map{|fs| [t("personal_journal.#{fs}"), fs]} @default_fields_to_show = [ "paper_title", "journal_title", "authors", "year", "issue_no", "vol_no", "level_type" ] 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