defupdate@widget=Widget.load_widget_from_memcache(params[:widget_memcache_id])redirect_to:action=>'list'andreturnunless@widgetredirect_to:action=>'list'andreturnunless@widget.editable_by?(current_user)
handle_attached_picture @widget@widget.attributes = params[:widget]@widget.save_widget_to_memcache current_user
if params['Publish.x'.to_sym]Widget.transaction do
if@widget.save
total_widget_performers =@widget.widget_performers.map{|widget_performer|WidgetPerformer.find_or_create :widget_id=>@widget.id,:performer_id=> widget_performer.performer_id}
widget_performer_ids = total_widget_performers.map(&:id)WidgetPerformer.delete_all(['widget_id = ? AND id NOT IN (?)',@widget.id, widget_performer_ids.empty? ?[0]: widget_performer_ids])# Clear out any performers that had been removed from this widget
total_widget_venues =@widget.widget_venues.map{|widget_venue|WidgetVenue.find_or_create :widget_id=>@widget.id,:venue_location_id=> widget_venue.venue_location_id}
widget_venue_ids = total_widget_venues.map(&:id)WidgetVenue.delete_all(['widget_id = ? AND id NOT IN (?)',@widget.id, widget_venue_ids.empty? ?[0]: widget_venue_ids])# Clear out any venue_locations that had been removed from this widget
redirect_to:action=>'edit',:id=>@widget,:published=>trueelse
field_error_message =@widget.errors.full_messages[0]
flash.now[:notice]= field_error_message
render:action=>'edit'endendelseredirect_to:action=>'edit',:widget_memcache_id=>@widget.widget_memcache_id
endend