root/app/controllers/admin/reports_controller.rb

Download in other formats: Raw | Text
Revisions
Dimitrij Denissenko
Dimitrij Denissenko
May 10 2009 * 12:07
(over 1 year ago)

Revision dea7701400cf521b5d6e7f5af6f4dc46cc7355f4

Added XML-API for projects / Simplified code/specs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
#--
# Copyright (C) 2008 Dimitrij Denissenko
# Please read LICENSE document for more information.
#++
class Admin::ReportsController < AdminAreaController
  verify :xhr => true, :only => :sort

  before_filter :find_project
  before_filter :new, :only => [:create]
  before_filter :edit, :only => [:update]

  def index
    @ticket_reports = @project.ticket_reports
  end

  def new
    @ticket_report = @project.ticket_reports.new(params[:ticket_report])    
  end
  
  def create
    if @ticket_report.save
      flash[:notice] = _('Report was successfully created.')
      redirect_to admin_project_reports_path(@project)
    else
      render :action => 'new'
    end    
  end

  def edit
    @ticket_report = @project.ticket_reports.find(params[:id])
  end

  def update
    if @ticket_report.update_attributes(params[:ticket_report])
      flash[:notice] = _('Report was successfully updated.')
      redirect_to admin_project_reports_path(@project)
    else 
      render :action => 'edit'
    end    
  end
  
  def destroy
    if @project.ticket_reports.destroy(params[:id])
      flash[:notice] = _('Report was successfully deleted.')
    end
    redirect_to admin_project_reports_path(@project)
  end

  def sort
    params[:ticket_reports].each_with_index do |id, rank|      
      TicketReport.update_all ['rank = ?', rank], ['id = ? AND project_id = ?', id.to_i, @project.id]
    end if params[:ticket_reports].is_a?(Enumerable)
    render :nothing => true
  end

  private
  
    def find_project
      @project = Project.find_by_short_name! params[:project_id], 
        :include => [:ticket_reports],
        :order => 'ticket_reports.rank'
    end

end