luis@407: require 'bibtex'
luis@407:
luis@328: module PublicationsHelper
luis@462: def projects_check_box_tags(name, projects)
luis@462: s = ''
luis@462: projects.sort.each do |project|
luis@462: s << "\n"
luis@462: end
luis@462: s
luis@462: end
luis@468:
luis@482: def identify_author(author)
luis@552: if author.class == User
luis@563:
luis@563: Rails.logger.debug { "Identify Author: USER" }
luis@563:
luis@483: author_info = {
luis@483: :name_on_paper => author.name,
luis@552: :email => author.mail,
luis@552: :user_id => author.id,
luis@563: :institution => "",
luis@563: :is_user => "1"
luis@483: }
luis@552:
luis@552: unless author.ssamr_user_detail.nil?
luis@552: author_info[:institution] = author.ssamr_user_detail.institution_name
luis@552: end
luis@482:
luis@483: else
luis@483: if author.class == Author
luis@563: Rails.logger.debug { "Identify Author: AUTHOR" }
luis@563:
luis@563: author_info = {
luis@563: :name_on_paper => author.name,
luis@563: :user_id => author.user_id,
luis@563: :id => author.id,
luis@563: :is_user => "0"
luis@563: }
luis@483: end
luis@482: end
luis@482:
luis@482: link_to_function(author.name, "update_author_info(this," + author_info.to_json + ")")
luis@478: end
luis@478:
luis@519: def choose_author_link(name, authors_users)
luis@478: s = ''
luis@519: authors_users.sort.each do |author_user|
luis@519: s << "#{identify_author author_user}\n"
luis@478: end
luis@478: s
luis@478: end
luis@478:
luis@469: def link_to_remove_fields(name, f)
chris@573: f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)", :class => 'icon icon-del')
luis@469: end
luis@477:
luis@468: def link_to_add_fields(name, f, association)
luis@468: new_object = f.object.class.reflect_on_association(association).klass.new
luis@468: fields = f.fields_for(association, new_object, :child_index => "new_#{association}") do |builder|
luis@468: render(association.to_s.singularize + "_fields", :f => builder)
luis@477: end
luis@472: link_to_function(name, h("add_fields(this, '#{association}', '#{escape_javascript(fields)}')"), { :class => 'icon icon-add', :id => "add_another_author" })
luis@468: end
luis@481:
luis@481: def sanitized_object_name(object_name)
luis@481: object_name.gsub(/\]\[|[^-a-zA-Z0-9:.]/,"_").sub(/_$/,"")
luis@481: end
luis@481:
luis@481: def sanitized_method_name(method_name)
luis@481: method_name.sub(/\?$/, "")
luis@481: end
luis@481:
luis@481: def form_tag_id(object_name, method_name)
luis@481: str = "#{sanitized_object_name(object_name.to_s)}_#{sanitized_method_name(method_name.to_s)}"
luis@481: str.to_sym
luis@481: end
luis@541:
luis@541: def render_projects_list(publication)
luis@579: logger.error { "PROJECT NAME #{@project.name unless @project.nil?}" }
luis@579:
luis@541: s = ""
luis@574:
luis@541: publication.projects.each do |proj|
luis@579: if @project == proj
luis@579: confirm_msg = "Are you sure you want to remove the current project from this publication's projects list?"
luis@579: else
luis@579: confirm_msg = false
luis@579: end
luis@579:
luis@579: s << link_to_project(proj) + link_to_remote(l(:button_delete), { :url => { :controller => 'publications', :action => 'remove_project', :id => publication, :remove_project_id => proj, :project_id => @project }, :method => :post, :confirm => confirm_msg }, :class => 'icon icon-del') + "
"
luis@541: end
luis@541:
luis@554: s
luis@541: end
luis@541:
luis@544: def show_bibtex_fields(bibtex_entry)
luis@544: s = ""
luis@481:
luis@544: bibtex_entry.attributes.each do |field|
luis@544: if field[1] != nil
luis@544: s << "