mirror of
https://github.com/TracksApp/tracks.git
synced 2025-12-27 04:18:49 +01:00
Ticket #923: Added Reinier's patch for removing dependencies from successor block.
Conflicts: app/helpers/todos_helper.rb
This commit is contained in:
parent
54dc1ad047
commit
0276dce8e2
6 changed files with 56 additions and 24 deletions
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
||||
|
|
|
|||
|
|
@ -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")
|
||||
|
|
|
|||
21
app/views/todos/remove_predecessor.js.rjs
Normal file
21
app/views/todos/remove_predecessor.js.rjs
Normal 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
|
||||
Loading…
Add table
Add a link
Reference in a new issue