diff --git a/issue_relations/app/models/issue_relation.rb b/issue_relations/app/models/issue_relation.rb new file mode 100644 index 000000000..f0c760278 --- /dev/null +++ b/issue_relations/app/models/issue_relation.rb @@ -0,0 +1,19 @@ +class IssueRelation < ActiveRecord::Base + belongs_to :issue + belongs_to :issue_to, :class_name => 'Issue', :foreign_key => 'issue_to_id' + + TYPES = { "ES" => { :name => :label_rel_end_to_start, :order => 1 }, + "EE" => { :name => :label_rel_end_to_end, :order => 2 }, + "SS" => { :name => :label_rel_start_to_start, :order => 3 }, + "SE" => { :name => :label_rel_start_to_end, :order => 4 } + }.freeze + + validates_presence_of :issue, :issue_to, :relation_type, :delay + validates_inclusion_of :relation_type, :in => TYPES.keys + validates_numericality_of :delay, :allow_nil => true + + def validate + errors.add :issue_to_id, :activerecord_error_invalid if issue_id == issue_to_id + end + +end diff --git a/issue_relations/app/views/issues/relations.rhtml b/issue_relations/app/views/issues/relations.rhtml new file mode 100644 index 000000000..5e96a9d3b --- /dev/null +++ b/issue_relations/app/views/issues/relations.rhtml @@ -0,0 +1,49 @@ +

<%= @issue.tracker.name %> #<%= @issue.id %> - <%=h @issue.subject %>

+ + + + + + + + + + + + +<% @issue.relations_from.each do |relation| %> + + + + + + + + +<% end %> + +<% @issue.relations_to.each do |relation| %> + + + + + + + + +<% end %> + +
TaskDebutFinTypeRetard
Predecesseurs
<%= image_tag 'relation_from.png' %><%= relation.issue_id %>: <%= relation.issue.subject %><%= format_date(relation.issue.start_date) %><%= format_date(relation.issue.due_date) %><%= l(IssueRelation::TYPES[relation.relation_type][:name]) %><%= relation.delay %> jours
Successeurs
<%= image_tag 'relation_to.png' %><%= relation.issue_to_id %>: <%= relation.issue_to.subject %><%= format_date(relation.issue_to.start_date) %><%= format_date(relation.issue_to.due_date) %><%= l(IssueRelation::TYPES[relation.relation_type][:name]) %><%= relation.delay %> jours
+
+ +

Nouveau predecesseur

+ +<% form_for :relation, @relation, :url => { :action => 'add_predecessor', :id => @issue } do |f| %> +<%= error_messages_for 'relation' %> +

+<%= f.text_field :issue_id, :required => true %> +<%= f.select :relation_type, relation_types_for_select, :required => true %> +<%= f.text_field :delay, :required => true, :size => 3 %> jours +<%= submit_tag l(:button_add) %> +

+<% end %> \ No newline at end of file diff --git a/issue_relations/db/migrate/017_create_issue_relations.rb b/issue_relations/db/migrate/017_create_issue_relations.rb new file mode 100644 index 000000000..a0dea293f --- /dev/null +++ b/issue_relations/db/migrate/017_create_issue_relations.rb @@ -0,0 +1,11 @@ +class CreateIssueRelations < ActiveRecord::Migration + def self.up + create_table :issue_relations do |t| + # t.column :name, :string + end + end + + def self.down + drop_table :issue_relations + end +end diff --git a/issue_relations/public/images/relation_from.png b/issue_relations/public/images/relation_from.png new file mode 100644 index 000000000..5b09f4fd8 Binary files /dev/null and b/issue_relations/public/images/relation_from.png differ diff --git a/issue_relations/public/images/relation_to.png b/issue_relations/public/images/relation_to.png new file mode 100644 index 000000000..863ee547b Binary files /dev/null and b/issue_relations/public/images/relation_to.png differ diff --git a/issue_relations/test/fixtures/issue_relations.yml b/issue_relations/test/fixtures/issue_relations.yml new file mode 100644 index 000000000..8794d28ae --- /dev/null +++ b/issue_relations/test/fixtures/issue_relations.yml @@ -0,0 +1,5 @@ +# Read about fixtures at http://ar.rubyonrails.org/classes/Fixtures.html +first: + id: 1 +another: + id: 2 diff --git a/issue_relations/test/unit/issue_relation_test.rb b/issue_relations/test/unit/issue_relation_test.rb new file mode 100644 index 000000000..cf3fc93de --- /dev/null +++ b/issue_relations/test/unit/issue_relation_test.rb @@ -0,0 +1,10 @@ +require File.dirname(__FILE__) + '/../test_helper' + +class IssueRelationTest < Test::Unit::TestCase + fixtures :issue_relations + + # Replace this with your real tests. + def test_truth + assert true + end +end