Ticket #923: Added Reinier's patch for removing dependencies from successor block.

Conflicts:

	app/helpers/todos_helper.rb
This commit is contained in:
Eric Allen 2009-11-10 22:15:16 -05:00
parent 54dc1ad047
commit 0276dce8e2
6 changed files with 56 additions and 24 deletions

View file

@ -64,7 +64,7 @@ module TodosHelper
:complete => todo_stop_waiting_js(todo))
end
end
def todo_start_waiting_js(todo)
return "$('#ul#{dom_id(todo)}').css('visibility', 'hidden'); $('##{dom_id(todo)}').block({message: null})"
end

View file

@ -115,6 +115,12 @@ class Todo < ActiveRecord::Base
end
end
def remove_predecessor(predecessor)
# remove predecessor and activate myself
predecessors.delete(predecessor)
self.activate!
end
# Returns true if t is equal to self or a successor of self
def is_successor?(t)
if self == t

View file

@ -10,11 +10,15 @@ parameters += "&_tag_name=#{@tag_name}" if @source_view == 'tag'
<div id="<%= dom_id(successor, 'successor_line') %>">
<div class="description<%= staleness_class( successor ) %>" style="margin-left: 20px">
<span class="todo.descr"><%= h sanitize(successor.description) %></span>
<a class="remove_successor" style="background: transparent;"
href="#"
title="remove the successor '<%= successor.description %>'"><%= image_tag( "blank.png",
:title => "Remove the successor",
:class=>"delete_item") %></a>
<%= link_to_remote(
image_tag("delete_off.png", :mouseover => "delete_on.png", :alt => "Remove the dependency", :align => "absmiddle"),
:url => {:controller => 'todos', :action => 'remove_predecessor', :id => successor.id},
:method => 'delete',
:with => "'#{parameters}&predecessor=#{predecessor.id}'",
:before => todo_start_waiting_js(dom_id(successor, 'successor')),
:complete => todo_stop_waiting_js) %>
<%= render(:partial => "todos/toggle_successors", :locals => { :item => successor, :suppress_button => true }) unless successor.pending_successors.empty? %>
</div>
</div>

View file

@ -8,7 +8,8 @@ suppress_button ||= false
:collection => item.pending_successors,
:locals => { :todo => item,
:parent_container_type => parent_container_type,
:suppress_dependencies => true }
:suppress_dependencies => true,
:predecessor => item }
%>
</div>

View file

@ -3,24 +3,24 @@ if @saved
status_message = "Added #{@predecessor.description} as dependency."
unless @original_state == 'pending'
status_message += " #{@todo.description} set to pending"
# remove successor from page
page[@todo].remove
# regenerate predecessor to add arrow
page[@predecessor].replace_html :partial => 'todos/todo', :locals => { :todo => @predecessor, :parent_container_type => parent_container_type }
# show in tickler box in project view
if source_view_is_one_of :project, :tag
page['tickler-empty-nd'].hide
page.replace "tickler", :partial => 'todos/deferred', :locals => { :deferred => @todo.project.deferred_todos,
:collapsible => false,
:append_descriptor => "in this project",
:parent_container_type => 'project',
:pending => @todo.project.pending_todos }
end
page << "TodoBehavior.enableToggleNotes();"
page << "TodoBehavior.enableToggleSuccessors();"
end
# remove successor from page
page[@todo].remove
# regenerate predecessor to add arrow
page[@predecessor].replace_html :partial => 'todos/todo', :locals => { :todo => @predecessor, :parent_container_type => parent_container_type }
# show in tickler box in project view
if source_view_is_one_of :project, :tag
page['tickler-empty-nd'].hide
page.replace "tickler", :partial => 'todos/deferred', :locals => { :deferred => @todo.project.deferred_todos,
:collapsible => false,
:append_descriptor => "in this project",
:parent_container_type => 'project',
:pending => @todo.project.pending_todos }
end
page << "TodoBehavior.enableToggleNotes();"
page << "TodoBehavior.enableToggleSuccessors();"
page.notify :notice, status_message, 5.0
else
page.replace_html "status", content_tag("div", content_tag("h2", "Unable to add dependency"), "id" => "errorExplanation", "class" => "errorExplanation")

View file

@ -0,0 +1,21 @@
if @removed
status_message = "Removed #{@successor.description} as dependency from #{@predecessor.description}."
page.notify :notice, status_message, 5.0
# replace old predecessor with one without the successor
page.replace dom_id(@predecessor), :partial => 'todos/todo', :locals => {
:todo => @predecessor, :parent_container_type => parent_container_type }
# if possible, remove successor from pending block
# TODO: do not remove when multiple dependencies
page[@successor].remove unless source_view_is :context
# if possible, add successor
container = "c#{@successor.context_id}items"
container = "p#{@successor.project_id}items" if source_view_is :project
page.insert_html :bottom, container, :partial => 'todos/todo', :locals => {
:todo => @successor, :parent_container_type => parent_container_type }
page << "TodoBehavior.enableToggleSuccessors()"
else
page.notify :error, "There was an error removing the dependency", 8.0
end