OSDN Git Service

fix Manifest
[pettanr/pettanr.git] / app / controllers / panels_controller.rb
1 class PanelsController < ApplicationController
2   if Manifest.manifest.magic_numbers['run_mode'] == 0
3     before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy, :catch]
4     before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy, :catch]
5   else
6     before_filter :authenticate_reader, :only => [:index, :show, :scroll_panels, :scrolls, :sheet_panels, :sheets, :panel_pictures, :speech_balloons, :ground_pictures, :ground_colors, :by_scroll, :by_sheet, :by_author]
7     before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy, :catch]
8     before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy, :catch]
9   end
10   
11   def self.model
12     Panel
13   end
14   
15   def index
16     public_list
17   end
18   
19   def scroll_panels
20     has_many_list
21   end
22   
23   def scrolls
24     has_many_list
25   end
26   
27   def sheet_panels
28     has_many_list
29   end
30   
31   def sheets
32     has_many_list
33   end
34   
35   def panel_pictures
36     has_many_list
37   end
38   
39   def speech_balloons
40     has_many_list
41   end
42   
43   def ground_pictures
44     has_many_list
45   end
46   
47   def ground_colors
48     has_many_list
49   end
50   
51   def by_scroll
52     filter_list
53   end
54   
55   def by_sheet
56     filter_list
57   end
58   
59   def by_author
60     filter_list
61   end
62   
63   
64   def show
65     @item = Panel.show(params[:id], @operators)
66
67     respond_to do |format|
68       format.html {
69         @panel = @item
70         if @operators.author
71           @new_scroll_items = assist_items('scroll', 'private_list')
72           @new_scroll_filer = assist_filer 'scroll', @new_scroll_items
73           @fresh_scroll_items = assist_items('scroll_panel', 'private_list').map {|sp| sp.scroll}
74           @fresh_scroll_filer = assist_filer 'scroll', @fresh_scroll_items
75           
76           @new_sheet_items = assist_items('sheet', 'private_list')
77           @new_sheet_filer = assist_filer 'sheet', @new_sheet_items
78           @fresh_sheet_items = assist_items('sheet_panel', 'private_list').map {|sp| sp.sheet}
79           @fresh_sheet_filer = assist_filer 'sheet', @fresh_sheet_items
80         end
81       }
82       format_prof format
83       format.json { render json: @item.panel_elements_as_json }
84     end
85   end
86
87   def count
88     @panel = {:count => Panel.visible_count}
89     respond_to do |format|
90       format.json { render json: @panel.to_json }
91     end
92   end
93   
94   def new
95     @panel = Panel.new
96     @panel.supply_default
97     respond_to do |format|
98       format.html {
99         @editor = Editor::Editor.new @panel, @operators
100         render :template => 'templates/r/editor/editor', :locals => {
101           :editor => @editor
102         }
103       }
104       format.js
105       format.json { render json: @panel.panel_elements_as_json }
106     end
107   end
108
109   def edit
110     @panel = Panel.edit(params[:id], @operators)
111     respond_to do |format|
112       format.html {
113       }
114       format.js
115     end
116   end
117
118   def create
119     @panel = Panel.new
120     @panel.supply_default
121     jsn = nil
122     if params[:json]
123       jsn = JSON.parse_no_except(params[:json])
124     end
125     @prm = params[:panel] || jsn
126     respond_to do |format|
127       if @panel.store @prm, @operators
128         flash[:notice] = I18n.t('flash.notice.created', :model => Panel.model_name.human)
129         format.html { redirect_to @panel }
130         format.json { render json: @panel.panel_elements_as_json, status: :created, location: @panel }
131       else
132         format.html { render action: "new" }
133         format.json { render json: @panel.errors, status: :unprocessable_entity }
134       end
135     end
136   end
137
138   def update
139     @panel = Panel.edit(params[:id], @operators)
140     jsn = nil
141     if params[:json]
142       jsn = JSON.parse(params[:json])
143     end
144     @prm = params[:panel] || jsn
145     respond_to do |format|
146       if @panel.store @prm, @operators
147         flash[:notice] = I18n.t('flash.notice.updated', :model => Panel.model_name.human)
148         format.html { redirect_to @panel }
149         format.json { head :ok }
150       else
151         format.html { render action: "edit" }
152         format.json { render json: @panel.errors, status: :unprocessable_entity }
153       end
154     end
155   end
156
157   def destroy
158     @panel = Panel.edit(params[:id], @operators)
159     respond_to do |format|
160       Panel.transaction do
161         if @panel.destroy_with_elements
162           flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human)
163           format.html { redirect_to '/home/panels' }
164           format.json { head :ok }
165         else
166           flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human)
167           format.html { redirect_to @panel }
168           format.json { render json: @panel.errors, status: :unprocessable_entity }
169         end
170       end
171     end
172   end
173   
174   def catch
175     @panel = Panel.edit(params[:id], @operators)
176
177     respond_to do |format|
178       @operators.author.working_panel_id = @panel.id
179       if @operators.author.save
180         format.html { redirect_to @panel }
181       else
182       end
183     end
184   end
185
186 end