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 => [
7       :index, :show, :by_scroll, :by_sheet, :by_author, :by_speech_balloon_template, :count, :count_by_scroll, :count_by_sheet, :count_by_author, :count_by_speech_balloon_template
8     ]
9     before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy, :catch]
10     before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy, :catch]
11   end
12   
13   def self.model
14     Panel
15   end
16   
17   def index
18     filer_list
19   end
20   
21   def by_scroll
22     filer_list
23   end
24   
25   def by_sheet
26     filer_list
27   end
28   
29   def by_author
30     filer_list
31   end
32   
33   def by_speech_balloon_template
34     filer_list
35   end
36   
37   def show_html_format format
38     format.html {
39       @panel = @item
40       if @operators.author
41         @new_scroll_items = assist_items('scroll', 'private')
42         #@new_scroll_filer = assist_filer 'scroll', @new_scroll_items
43         @fresh_scroll_items = assist_items('scroll_panel', 'private').map {|sp| sp.scroll}
44         #@fresh_scroll_filer = assist_filer 'scroll', @fresh_scroll_items
45         
46         @new_sheet_items = assist_items('sheet', 'private')
47         #@new_sheet_filer = assist_filer 'sheet', @new_sheet_items
48         @fresh_sheet_items = assist_items('sheet_panel', 'private').map {|sp| sp.sheet}
49         #@fresh_sheet_filer = assist_filer 'sheet', @fresh_sheet_items
50       end
51     }
52   end
53   
54   def show
55     set_show
56     respond_to do |format|
57       show_html_format format
58       show_prof_format format
59       show_json_format format
60     end
61   end
62
63   def count
64     list_count
65   end
66   
67   def count_by_scroll
68     list_count
69   end
70   
71   def count_by_sheet
72     list_count
73   end
74   
75   def count_by_author
76     list_count
77   end
78   
79   def count_by_speech_balloon_template
80     list_count
81   end
82   
83   def new
84     @panel = Panel.new
85     @panel.boosts 'post'
86     @panel.supply_default
87     respond_to do |format|
88       format.html {
89         @editor = Editor::PanelEditor.new @panel, @operators
90         render :template => @editor.template_name, :locals => {
91           :editor => @editor
92         }
93       }
94       format.js
95       format.json { render json: @panel.panel_elements_as_json }
96     end
97   end
98
99   def edit
100     @panel = Panel.edit(params[:id], @operators)
101     respond_to do |format|
102       format.html {
103         @editor = Editor::PanelEditor.new @panel, @operators
104         render :template => @editor.template_name, :locals => {
105           :editor => @editor
106         }
107       }
108       format.js
109     end
110   end
111
112   def create
113     @panel = Panel.new
114 #    @panel.boosts 'post'
115     jsn = nil
116     if params[:json]
117       jsn = JSON.parse_no_except(params[:json])
118     end
119     @prm = if params[:panel] == nil or params[:panel].empty?
120        jsn
121     else
122        params[:panel]
123     end
124     @panel.class.fold_extend_settings @prm
125     #@panel.refresh
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 {
133           @editor = Editor::PanelEditor.new @panel, @operators
134           render :template => @editor.template_name, :locals => {
135             :editor => @editor
136           }
137         }
138         format.json { render json: @panel.errors, status: :unprocessable_entity }
139       end
140     end
141   end
142
143   def update
144     @panel = Panel.edit(params[:id], @operators)
145     @panel.boost
146     jsn = nil
147     if params[:json]
148       jsn = JSON.parse(params[:json])
149     end
150     @prm = params[:panel] || jsn
151     self.model.fold_extend_settings @prm
152     @panel.attributes = @prm
153     @panel.refresh
154     respond_to do |format|
155       if @panel.store @panel.packed_attributes, @operators
156         flash[:notice] = I18n.t('flash.notice.updated', :model => Panel.model_name.human)
157         format.html { redirect_to @panel }
158         format.json { head :ok }
159       else
160         format.html { render action: "edit" }
161         format.json { render json: @panel.errors, status: :unprocessable_entity }
162       end
163     end
164   end
165
166   def destroy
167     @panel = Panel.edit(params[:id], @operators)
168     respond_to do |format|
169       Panel.transaction do
170         if @panel.destroy_with_elements
171           flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human)
172           format.html { redirect_to '/home/panels' }
173           format.json { head :ok }
174         else
175           flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human)
176           format.html { redirect_to @panel }
177           format.json { render json: @panel.errors, status: :unprocessable_entity }
178         end
179       end
180     end
181   end
182   
183   def catch
184     @panel = Panel.edit(params[:id], @operators)
185
186     respond_to do |format|
187       @operators.author.working_panel_id = @panel.id
188       if @operators.author.save
189         format.html { redirect_to @panel }
190       else
191       end
192     end
193   end
194
195 end