diff --git a/app/controllers/admin/patents_controller.rb b/app/controllers/admin/patents_controller.rb index eb3b7f8..42d7ea2 100644 --- a/app/controllers/admin/patents_controller.rb +++ b/app/controllers/admin/patents_controller.rb @@ -9,12 +9,51 @@ class Admin::PatentsController < OrbitMemberController before_action :need_access_right before_action :allow_admin_only, :only => [:index, :setting] + def merge_process + params['patent_id'].each do |patent_id| + patent_ids = patent_id.split('/') + patents = Patent.find(patent_ids) + member_ids = patents.collect(&:member_profile_id).uniq + patents.each_with_index do |patent,index1| + if index1== 0 + patent.member_profile_id = member_ids + patent.save! + else + patent.delete + end + end + end + redirect_to :action=> 'index' + end + def merge + @patents=Patent.order_by(:year=>'desc').map{|value| value}.group_by{|v| [v[:patent_title],v[:patent_no]]} + @patents.each do |key,value| + if value.length<=1 + @patents.delete key + end + end + if params['mode']!='simple' + @patents.each do |key,value| + @patents[key] = value.group_by{|v| [get_year(v),get_patent_organization(v),get_patent_category(v),get_patent_country(v)]} + @patents[key].each do |key1,value1| + if value1.length<=1 + @patents[key].delete key1 + end + end + if @patents[key].length==0 + @patents.delete key + end + end + + end + end + def index @patents = Patent.order_by(:year=>'desc').page(params[:page]).per(10) end def new - @member = MemberProfile.find_by(:uid=>params['uid']) rescue nil + @member = Array(MemberProfile.find_by(:uid=>params['uid'])) rescue nil @patent = Patent.new if params[:desktop] @@ -60,9 +99,9 @@ class Admin::PatentsController < OrbitMemberController elsif !params[:author_members].blank? - params[:author_members].each do |author_member| + #params[:author_members].each do |author_member| - patent_params['member_profile_id'] = author_member + patent_params['member_profile_id'] = params[:author_members] @patent = Patent.new(patent_params) @patent.save @@ -70,7 +109,7 @@ class Admin::PatentsController < OrbitMemberController render json: {"data" => get_paper_list}.to_json end - end + #end redirect_to params['referer_url'] @@ -92,14 +131,15 @@ class Admin::PatentsController < OrbitMemberController end def edit - @member = @patent.member_profile rescue nil + @member = get_member(@patent) if params[:desktop] render :layout => false end end def update - @member = @patent.member_profile rescue nil + @member = get_member(@patent) + patent_params['member_profile_id'] = params[:author_members] @patent.update_attributes(patent_params) @patent.save if params[:desktop] == "true" diff --git a/app/controllers/personal_patents_controller.rb b/app/controllers/personal_patents_controller.rb index 7f9a3bc..984b618 100644 --- a/app/controllers/personal_patents_controller.rb +++ b/app/controllers/personal_patents_controller.rb @@ -1,4 +1,5 @@ class PersonalPatentsController < ApplicationController + include Admin::PersonalPatentsHelper def index params = OrbitHelper.params page_data_count = OrbitHelper.page_data_count @@ -26,6 +27,12 @@ class PersonalPatentsController < ApplicationController patents_show = patents_temp.select { |value| search_all_words(value.patent_author_types.collect(&:title).join(', '), params[:keywords]) } when 'language' patents_show = patents_temp.select { |value| search_all_words((!value.language.nil? ? t(value.language.to_s) : ''), params[:keywords]) } + when 'authors' + patents_show = patents_temp.select { |value| search_all_words(get_authors_text(value), params[:keywords]) } + when 'keywords' + patents_show = patents_temp.select { |value| search_all_words(Nokogiri::HTML(value.keywords).text, params[:keywords]) } + when 'note' + patents_show = patents_temp.select { |value| search_all_words(Nokogiri::HTML(value.note).text, params[:keywords]) } else patents_show = patents_temp.select { |value| search_all_words((value.send(params[:selectbox]).to_s rescue ''), params[:keywords]) } end @@ -54,6 +61,10 @@ class PersonalPatentsController < ApplicationController t << { 'value' => (patent.patent_author_types.collect(&:title).join(', ') rescue '') } when 'language' t << { 'value' => (!patent.language.nil? ? t(patent.language.to_s) : '') } + when 'url' + t << { 'value' => patent.url.to_s.blank? ? "" : "#{patent.url}"} + when 'authors' + t << { 'value' => get_authors_show(patent) } else t << { 'value' => patent.send(fs) } end @@ -65,7 +76,7 @@ class PersonalPatentsController < ApplicationController fields_to_show.each do |fs| col = 2 col = 3 if fs == 'patent_title' - header = fs == 'authors' ? t('users.name') : t("personal_patent.#{fs}") + header = t("personal_patent.#{fs}") headers << { 'head-title' => header, 'col' => col @@ -144,7 +155,7 @@ class PersonalPatentsController < ApplicationController keywords note ] - @fields_to_show = @fields_to_show.map { |fs| [(fs == 'authors' ? t('users.name') : t("personal_patent.#{fs}")), fs] } + @fields_to_show = @fields_to_show.map { |fs| t("personal_patent.#{fs}") } @default_fields_to_show = %w[ publish_date patent_title diff --git a/app/helpers/admin/personal_patents_helper.rb b/app/helpers/admin/personal_patents_helper.rb index e0af44f..7eafe8d 100644 --- a/app/helpers/admin/personal_patents_helper.rb +++ b/app/helpers/admin/personal_patents_helper.rb @@ -1,7 +1,30 @@ module Admin::PersonalPatentsHelper - + def get_authors_text(patent) + (patent.authors.to_s.blank? ? get_member(patent).collect(&:name).join('/') : Nokogiri::HTML(patent.authors.to_s).text rescue '') + end + def get_authors_show(patent) + (patent.authors.to_s.blank? ? get_type_authors_show(patent) : patent.authors.to_s rescue '') + end + def get_type_authors_show(patent) + get_member(patent).collect{|member| "#{member.name}"}.join('/') + end + def get_member(patent) + Array(MemberProfile.find(Array(patent).collect(&:member_profile_id))) + end + def get_year(patent) + patent.year + end + def get_patent_organization(patent) + patent[:patent_organization].collect{|key,value| value.to_s.blank? ? t('personal_patent.no_input') : value}.join('/') rescue '' + end + def get_patent_category(patent) + patent.patent_types.collect(&:title).join(', ') rescue '' + end + def get_patent_country(patent) + patent[:patent_country].collect{|key,value| value.to_s.blank? ? t('personal_patent.no_input') : value}.join('/') rescue '' + end def get_paper_list - user = current_user.nil? ? OrbitHelper.current_user : current_user + user = current_user.nil? ? OrbitHelper.current_user : current_user user_profile = user.member_profile patents = Patent.where(:member_profile_id => user_profile.id) patents = patents.collect do |p| diff --git a/app/models/patent.rb b/app/models/patent.rb index dc807ef..1da5648 100644 --- a/app/models/patent.rb +++ b/app/models/patent.rb @@ -3,7 +3,7 @@ class Patent include Mongoid::Timestamps include OrbitModel::Status include Slug - + include Admin::PersonalPatentsHelper has_and_belongs_to_many :patent_types has_and_belongs_to_many :patent_author_types belongs_to :member_profile @@ -136,6 +136,8 @@ class Patent files << (url.nil? ? "" : "