Revision 1375:c28ce1a71a22 plugins/redmine_bibliography/app

View differences:

plugins/redmine_bibliography/app/controllers/authorships_controller.rb
1 1
class AuthorshipsController < ApplicationController
2
  
3
  def index
4
    
5
  end
6
  
7 2

  
8
  def update
9
  end
3
    def sort
4
        @authorships = Authorship.find(params['authorship'])
5

  
6
        @authorships.each do |authorship|
7

  
8
            # note: auth_order is usually called position (default column name in the acts_as_list plugin )
9
            authorship.auth_order = params['authorship'].index(authorship.id.to_s) + 1
10
            authorship.save
11
        end
12

  
13
        render :nothing => true, :status => 200
14
    end
10 15
end
plugins/redmine_bibliography/app/models/authorship.rb
10 10
  validates_presence_of :name_on_paper
11 11

  
12 12
  attr_accessor :search_author_class, :search_author_id, :search_name, :search_results, :identify_author
13
  before_save :associate_author_user
14 13

  
15
  acts_as_list
14
  before_create :associate_author_user
15
  before_update :delete_publication_cache
16

  
17
  # tod: review scope of ordering
18
  acts_as_list :column => 'auth_order'
16 19

  
17 20
  # todo: review usage of scope --lf.20130108
18 21
  scope :like_unique, lambda {|q|
......
44 47
  end
45 48

  
46 49
  protected
50

  
51
  def delete_publication_cache
52
    publication = Publication.find(self.publication_id)
53
    Rails.cache.delete "publication-#{publication.id}-ieee"
54
    Rails.cache.delete "publication-#{publication.id}-bibtex"
55
  end
56

  
47 57
  def associate_author_user
48 58
    case self.search_author_class
49
      when "User"
50
        author = Author.new
51
        author.save
52
        self.author_id = author.id
59
    when ""
60
      logger.debug { "Unknown Author to be added..." }
61
    when "User"
62
      author = Author.new
63
      author.save
64
      self.author_id = author.id
65

  
66
    when "Author"
67
      selected = self.search_results
68
      selected_classname = Kernel.const_get(self.search_author_class)
69
      selected_id = self.search_author_id
70
      object = selected_classname.find(selected_id)
71

  
72
      if object.respond_to? :name_on_paper
73
        # Authorship
74
        self.author_id = object.author.id
53 75
      else
54
        selected = self.search_results
55
        selected_classname = Kernel.const_get(self.search_author_class)
56
        selected_id = self.search_author_id
57
        object = selected_classname.find(selected_id)
58

  
59
        if object.respond_to? :name_on_paper
60
          # Authorship
76
        # User
77
        unless object.author.nil?
61 78
          self.author_id = object.author.id
62 79
        else
63
          # User
64
          unless object.author.nil?
65
            self.author_id = object.author.id
66
          else
67
            author = Author.new
68
            object.author = author
69
            object.save
70
            self.author_id = object.author.id
71
          end
80
          author = Author.new
81
          object.author = author
82
          object.save
83
          self.author_id = object.author.id
72 84
        end
85
      end
73 86
    end
74 87
  end
75 88
end
plugins/redmine_bibliography/app/views/publications/show.html.erb
1
<%= javascript_include_tag 'order_authorships', :plugin => 'redmine_bibliography' %>
2

  
1 3
<h2><%=l(:label_publication_show)%></h2>
2 4

  
3 5
<div class="box">

Also available in: Unified diff