module QueueDispatcher::ActsAsTaskController::InstanceMethods

Public Instance Methods

expand_event() click to toggle source
# File lib/queue_dispatcher/acts_as_task_controller.rb, line 78
def expand_event
  @task = eval(self.class.acts_as_task_controller_config.task_class_name.camelize).find(params[:id])
  @expanded_events = session[:acts_as_task_controller_expanded_events] || []
  if @expanded_events.include? @task.id
    @expanded_events -= [@task.id]
  else
    @expanded_events |= [@task.id]
  end
  session[:acts_as_task_controller_expanded_events] = @expanded_events

  respond_to do |format|
    format.js { render 'queue_dispatcher_views/expand_event' }
  end
end
my_events() click to toggle source
# File lib/queue_dispatcher/acts_as_task_controller.rb, line 34
def my_events
  # Remember the selected page, if the AJAX-Request wants to update the current page
  page = session[:my_events_page] = params[:page] if params[:page] || ! request.xhr?
  page = session[:my_events_page] if page.nil? && request.xhr?
  @tasks = current_user.send(self.class.acts_as_task_controller_config.task_class_name.pluralize).order('id DESC').page(page)

  # Check for updated tasks
  session[:task_updates] ||= {}
  task_updates = {}
  @new_tasks = []
  @updated_tasks = []
  @deleted_task_ids = []

  if @tasks
    @tasks.page(1).each do |task|
      task_updates[task.id] = task.updated_at
      @new_tasks << task unless session[:task_updates][task.id]
      @updated_tasks << task if session[:task_updates][task.id] && session[:task_updates][task.id] != task.updated_at
    end
    session[:task_updates].each{ |id, updated_at| @deleted_task_ids << id unless eval(self.class.acts_as_task_controller_config.task_class_name.camelize).find_by_id(id) }
    session[:task_updates] = task_updates
  end

  if request.xhr?
    # Load expanded_events from session if this is a AJAX-request
    @expanded_events = session[:acts_as_task_controller_expanded_events] || []
  else
    # Reset expanded_events if this is a regular request
    @expanded_events = session[:acts_as_task_controller_expanded_events] = []
  end

  respond_to do |format|
    format.html { render 'queue_dispatcher_views/my_events' }
    format.js do
      if params[:page]
        render
      else
        render 'queue_dispatcher_views/update_events'
      end
    end
  end
end