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@519: if author.class == User luis@483: author_info = { luis@483: :name_on_paper => author.name, luis@483: :user_id => author.id luis@483: } luis@482: luis@483: else luis@483: if author.class == Author luis@482: author_info = { luis@482: :name_on_paper => author.name, luis@482: :user_id => author.user_id, luis@482: :id => author.id luis@482: } 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) luis@469: f.hidden_field(:_destroy) + link_to_function(name, "remove_fields(this)") 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@541: s = "" luis@541: projs = [] luis@541: luis@541: publication.projects.each do |proj| luis@541: projs << link_to_project(proj) luis@541: end luis@541: luis@541: if projs.size < 3 luis@541: s << '' << projs.join(', ') << '' luis@541: else luis@541: s << projs.join(', ') luis@541: end luis@541: 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 << "

" + field[0].titleize + "

" luis@544: luis@544: if field[0] == "entry_type" luis@544: s << bibtex_entry.entry_type_name.capitalize luis@544: else luis@544: s << bibtex_entry.attributes[field[0]].to_s luis@544: end luis@544: end luis@544: end luis@544: s luis@544: end luis@328: end luis@481: