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@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@1388: # renders _authorship_fields.html.erb
luis@468: render(association.to_s.singularize + "_fields", :f => builder)
luis@1068: end
luis@1388:
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@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@1407: luis@1407: luis@1407: def render_authorship_link(link_class, link_id) luis@1407: luis@1407: # Renders a link for an author used when adding authors for a publication luis@1407: # link_class can be either User or Author luis@1407: # link_id will be the id of the Author/User we wish to link luis@1407: luis@1407: s= "" luis@1407: luis@1407: if link_class == "Author" luis@1416: url = {:controller => 'authors', :action => 'show', :id => link_id} luis@1416: s << link_to(h(Author.find(link_id).name), url) luis@1407: else luis@1416: url = {:controller => 'users', :action => 'show', :id => link_id} luis@1416: s << link_to(h(User.find(link_id).name), url) luis@1407: end luis@1407: luis@1407: s.html_safe luis@1407: end luis@1407: