chris@615: # -*- coding: utf-8 -*-
luis@407: require 'bibtex'
luis@407:
luis@328: module PublicationsHelper
chris@702: include AuthorshipsHelper
luis@616:
luis@616: def link_to_publication(publication, options={}, html_options = nil)
luis@616: url = {:controller => 'publications', :action => 'show', :id => publication}.merge(options)
luis@616: link_to(h(publication.title), url, html_options)
luis@616: end
luis@616:
luis@462: def projects_check_box_tags(name, projects)
luis@462: s = ''
luis@462: projects.sort.each do |project|
luis@1068: if User.current.allowed_to?(:edit_publication, project)
luis@713: s << "\n"
luis@713: s << '
'
luis@713: end
luis@462: end
luis@712:
luis@1324: s.html_safe
luis@462: end
luis@1068:
luis@1068:
luis@1068:
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@1068:
luis@705: def link_to_add_author_fields(name, f, association, action)
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@1068: end
luis@1278: link_to_function(name, "add_author_fields(this, '#{association}', '#{escape_javascript(fields)}', '#{action}')", { :class => 'icon icon-add', :id => "add_another_author" })
luis@1068: 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@1068:
luis@595: def form_tag_name(object_name, method_name)
luis@595: str = "#{object_name.to_s}[#{sanitized_method_name(method_name.to_s)}]"
luis@1068: str.to_sym
luis@595: end
luis@1068:
luis@1068: 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@1068:
luis@596: def form_object_id(object_name)
luis@596: str = object_name.split("\[").last().gsub("\]","")
luis@596: str.to_sym
luis@596: end
luis@693:
luis@1284: #######
luis@1284: ### DELETE ME
luis@1284:
luis@1284: def choose_author_link(object_name, items)
luis@1284: # called by autocomplete_for_author (publications' action/view)
luis@1284: # creates the select list based on the results array
luis@1284: # results is an array with both Users and Authorships objects
luis@1284:
luis@1284: @author_options = []
luis@1284: @results.each do |result|
luis@1284: email_bit = result.mail.partition('@')[2]
luis@1284: if email_bit != ""
luis@1284: email_bit = "(@#{email_bit})"
luis@1284: end
luis@1284: @author_options << ["#{result.name} #{email_bit}", "#{result.class.to_s}_#{result.id.to_s}"]
luis@1284: end
luis@1284:
luis@1284: if @results.size > 0
luis@1284: s = select_tag( form_tag_name(object_name, :author_search_results), options_for_select(@author_options), { :id => form_tag_id(object_name, :author_search_results), :size => 3} )
luis@1284: else
luis@1284: s = "No Authors found that match your search… sorry!"
luis@1284: end
luis@1284: end
luis@1284:
luis@1284:
luis@1284:
luis@1068: def render_authorships_list(publication)
luis@693: s = '
'
luis@1068:
luis@693: publication.authorships.each do |authorship|
chris@702: s << link_to_authorship(authorship)
luis@693: s << "
#{authorship.institution}
" chris@615: if key == "entry_type" chris@615: s << bibtex_entry.entry_type_label chris@615: else chris@615: s << value luis@544: end chris@615: s << "
" luis@544: end luis@544: s luis@1068: end luis@328: end luis@481: