diff --git a/tracks/app/views/todo/update.rjs b/tracks/app/views/todo/update.rjs index 0f1cddd7..ebf006ff 100644 --- a/tracks/app/views/todo/update.rjs +++ b/tracks/app/views/todo/update.rjs @@ -1,19 +1,27 @@ page.hide "info" if @saved item_container_id = "item-#{@item.id}-container" - if @item.context_id == @original_item_context_id - page.replace item_container_id, :partial => 'todo/item', :locals => { :parent_container_type => "context" } + if source_view_is_one_of [:todo, :context] + if @item.context_id == @original_item_context_id + page.replace item_container_id, :partial => 'todo/item', :locals => { :parent_container_type => "context" } + page.visual_effect :highlight, item_container_id, :duration => 3 + else + page[item_container_id].remove + page.call "todoItems.expandNextActionListingByContext", "c#{@item.context_id}items", true + page.insert_html :bottom, "c#{@item.context_id}items", :partial => 'todo/item', :locals => { :parent_container_type => "context" } + page.delay(0.5) do + page.call "todoItems.ensureContainerHeight", "c#{@original_item_context_id}items" + page.call "todoItems.ensureContainerHeight", "c#{@item.context_id}items" + page.visual_effect :highlight, item_container_id, :duration => 3 + end + end + elsif source_view_is :project + page.replace item_container_id, :partial => 'todo/item', :locals => { :parent_container_type => "project" } page.visual_effect :highlight, item_container_id, :duration => 3 else - page[item_container_id].remove - page.call "todoItems.expandNextActionListingByContext", "c#{@item.context_id}items", true - page.insert_html :bottom, "c#{@item.context_id}items", :partial => 'todo/item', :locals => { :parent_container_type => "context" } - page.delay(0.5) do - page.call "todoItems.ensureContainerHeight", "c#{@original_item_context_id}items" - page.call "todoItems.ensureContainerHeight", "c#{@item.context_id}items" - page.visual_effect :highlight, item_container_id, :duration => 3 - end + logger.error "unexpected source_view '#{params[:_source_view]}'" end + else page.replace_html "info", content_tag("div", content_tag("div", "#{pluralize(@item.errors.count, "error")} prohibited this record from being saved", "id" => "warning", "class" => "warning") + content_tag("p", "There were problems with the following fields:") + content_tag("ul", @item.errors.each_full { |msg| content_tag("li", msg) })) page.visual_effect :appear, 'info', :duration => 0.5 diff --git a/tracks/lib/source_view.rb b/tracks/lib/source_view.rb index aa0f6acd..cdda7be0 100644 --- a/tracks/lib/source_view.rb +++ b/tracks/lib/source_view.rb @@ -30,7 +30,7 @@ module Tracks responder = Tracks::SourceViewSwitching::Responder.new(params[:_source_view]) block_given? ? yield(responder) : responder end - + end module Helper @@ -38,6 +38,14 @@ module Tracks def source_view_tag(name) hidden_field_tag :_source_view, name.underscore.gsub(/\s+/,'_') end + + def source_view_is( s ) + s == params[:_source_view].to_sym + end + + def source_view_is_one_of( s=[] ) + s.include?(params[:_source_view].to_sym) + end end