Merge pull request #65 from finnlabs/feature/bugfix-contextmenu

Feature/bugfix contextmenu
pull/6827/head
sschu 11 years ago
commit e7f3949d87
  1. 2
      CHANGELOG.md
  2. 4
      app/models/cost_object.rb
  3. 21
      app/views/hooks/costs/_view_work_packages_context_menu_end.html.erb
  4. 9
      lib/open_project/costs/patches/work_packages_controller_patch.rb
  5. 24
      spec/controllers/work_packages_bulk_controller_spec.rb

@ -1,5 +1,7 @@
# Changelog
* `#2591` Fix: Costs prevents work package context menu
## 5.0.1.pre9
* Added missing translations

@ -119,4 +119,8 @@ class CostObject < ActiveRecord::Base
self.update_all ['author_id = ?', substitute.id], ['author_id = ?', user.id]
end
def to_s
subject
end
end

@ -6,19 +6,22 @@
work_package.project.cost_objects & intersect
end
%>
<% unless possible_cost_objects.empty? -%>
<%= context_menu_entry title: l(:label_cost_object),
back_url: back,
updated_object_ids: issues.collect(&:id),
collection: possible_cost_objects,
attribute: 'cost_object',
selected: lambda { |cost_object| @work_package && cost_object == @work_package.cost_object },
disabled: lambda { |cost_object| !can[:edit] } %>
<% else -%>
<li class="folder">
<a href="#" class="submenu"><%= l(:label_cost_object) %></a>
<ul>
<% unless possible_cost_objects.empty? -%>
<% possible_cost_objects.each do |co| -%>
<li>
<%= context_menu_link co.subject, {:controller => '/issues', :action => 'bulk_edit', :ids => issues.collect(&:id), 'cost_object_id' => co, :back_url => back}, :method => :post,
:selected => (issue && co == issue.cost_object), :disabled => !can[:edit] %>
</li>
<% end -%>
<% else -%>
<li><%= l(cost_objects_any ? :notice_cost_object_conflict : :notice_no_cost_objects_available)%></li>
<% end -%>
</ul>
</li>
<% end -%>
<% end %>

@ -1,16 +1,12 @@
require_dependency 'work_packages_controller'
module OpenProject::Costs::Patches::WorkPackagesControllerPatch
def self.included(base) # :nodoc:
base.send(:include, InstanceMethods)
extend ActiveSupport::Concern
base.class_eval do
included do
alias_method_chain :show, :entries
end
end
module InstanceMethods
# Authorize the user for the requested action
def show_with_entries
@cost_entries = work_package.cost_entries.visible(User.current, work_package.project)
@ -31,7 +27,6 @@ module OpenProject::Costs::Patches::WorkPackagesControllerPatch
show_without_entries
end
end
end
WorkPackagesController.send(:include, OpenProject::Costs::Patches::WorkPackagesControllerPatch)

@ -0,0 +1,24 @@
require 'spec_helper'
describe WorkPackages::BulkController do
let(:project) { FactoryGirl.create(:project_with_types) }
let(:controller_role) { FactoryGirl.build(:role, :permissions => [:view_work_packages, :edit_work_packages]) }
let(:user) { FactoryGirl.create :user, member_in_project: project, member_through_role: controller_role }
let(:cost_object) { FactoryGirl.create :cost_object, project: project }
let(:work_package) { FactoryGirl.create(:work_package, project: project) }
before do
User.stub(:current).and_return user
end
describe :update do
context 'when a cost report is assigned' do
before { put :update, ids: [work_package.id], work_package: {cost_object_id: cost_object.id} }
subject { work_package.reload.cost_object.try :id }
it { should == cost_object.id }
end
end
end
Loading…
Cancel
Save