OSDN Git Service

t#32472:add select on profiles
[pettanr/pettanr.git] / app / controllers / sheets_controller.rb
1 class SheetsController < ApplicationController
2   layout 'test' if MagicNumber['test_layout']
3   if MagicNumber['run_mode'] == 0
4     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
5     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
6   else
7     before_filter :authenticate_reader, :only => [:index, :show, :play]
8     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
9     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
10   end
11   before_filter :authenticate_admin!, :only => [:list, :browse]
12
13   def index
14     @page = Sheet.page params[:page]
15     @page_size = Sheet.page_size params[:page_size]
16     @sheets = Sheet.list(@page, @page_size)
17     respond_to do |format|
18       format.html {
19         @paginate = Sheet.list_paginate(@page, @page_size)
20         render :template => 'system/filer', :locals => {
21           :items => @sheets, :model => Sheet, 
22           :roles => [@user, @admin], :pager => @paginate
23         }
24       }
25       format.json { render json: @sheets.to_json(Sheet.list_json_opt) }
26       format.atom 
27       format.rss
28     end
29   end
30
31   def show
32     @item = Sheet.show(params[:id], [@user, @admin])
33
34     respond_to do |format|
35       format.html {
36         @sheet = @item
37         if @author
38           @new_panels = Panel.mylist(@author, 1, 5)
39           @new_stories = Story.mylist(@author, 1, 5)
40           @fresh_stories = StorySheet.mylist(@author, 1, 5).map {|ss| ss.story}
41         end
42       }
43       format_prof format
44       format.json { render json: @item.to_json(Sheet.show_json_opt) }
45       format.atom 
46       format.rss 
47     end
48   end
49
50   def play
51     @sheet = Sheet.show(params[:id], [@user, @admin])
52     respond_to do |format|
53       format.html {
54         if @author
55           @new_panels = Panel.mylist(@author, 1, 5)
56         end
57       }
58       format.json {render json: @sheet.to_json(Sheet.show_json_opt)}
59       format.jsonp {
60         render :json => "callback(" + @sheet_panels.to_json_list + ");"
61       }
62     end
63   end
64   
65   def count
66     @sheet = {:count => Sheet.visible_count}
67     respond_to do |format|
68       format.json { render json: @sheet.to_json }
69     end
70   end
71   
72   def list
73     @sheets = Sheet.all
74
75     respond_to do |format|
76       format.html { render layout: 'system' }# index.html.erb
77       format.json { render json: @sheets }
78     end
79   end
80
81   def browse
82     @sheet = Sheet.find(params[:id])
83
84     respond_to do |format|
85       format.html { render layout: 'system' } # show.html.erb
86       format.json { render json: @sheet }
87     end
88   end
89   
90   def new
91     @sheet = Sheet.new
92     @sheet.supply_default
93     respond_to do |format|
94       format.html # new.html.erb
95       format.js
96       format.json { render json: @sheet.to_json(Sheet.show_json_opt) }
97     end
98   end
99
100   def edit
101     @sheet = Sheet.edit(params[:id], @author)
102     respond_to do |format|
103       format.html 
104       format.js
105     end
106   end
107
108   def create
109     @sheet = Sheet.new
110     @sheet.supply_default 
111     jsn = nil
112     if params[:json]
113       jsn = JSON.parse_no_except(params[:json])
114     end
115     @prm = params[:sheet] || jsn
116
117     respond_to do |format|
118       if @sheet.store @prm, @author
119         flash[:notice] = I18n.t('flash.notice.created', :model => Sheet.model_name.human)
120         format.html { redirect_to @sheet }
121         format.json { render json: @sheet.to_json(Sheet.show_json_opt), status: :created, location: @sheet }
122       else
123         flash[:notice] = I18n.t('flash.notice.not_created', :model => Sheet.model_name.human)
124         format.html { render action: "new" }
125         format.json { render json: @sheet.errors, status: :unprocessable_entity }
126       end
127     end
128   end
129
130   def update
131     @sheet = Sheet.edit(params[:id], @author)
132     jsn = nil
133     if params[:json]
134       jsn = JSON.parse(params[:json])
135     end
136     @prm = params[:sheet] || jsn
137     respond_to do |format|
138       if @sheet.store @prm, @author
139         flash[:notice] = I18n.t('flash.notice.updated', :model => Sheet.model_name.human)
140         format.html { redirect_to @sheet }
141         format.json { head :ok }
142       else
143         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Sheet.model_name.human)
144         format.html { render action: "edit" }
145         format.json { render json: @sheet.errors, status: :unprocessable_entity }
146       end
147     end
148   end
149
150   def destroy
151     @sheet = Sheet.edit(params[:id], @author)
152     respond_to do |format|
153       if @sheet.destroy_with_sheet_panel
154         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Sheet.model_name.human)
155         format.html { redirect_to '/home/sheets' }
156         format.json { head :ok }
157       else
158         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Sheet.model_name.human)
159         format.html { redirect_to @sheet }
160         format.json { render json: @sheet.errors, status: :unprocessable_entity }
161       end
162     end
163   end
164 end