OSDN Git Service

top page moved
[pettanr/pettanr.git] / app / controllers / panels_controller.rb
1 class PanelsController < ApplicationController
2   layout 'test' if MagicNumber['test_layout']
3   if MagicNumber['run_mode'] == 0
4     before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy]
5     before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy]
6   else
7     before_filter :authenticate_reader, :only => [:index, :show]
8     before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy]
9     before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy]
10   end
11   before_filter :authenticate_admin!, :only => [:list, :browse]
12
13   public
14   
15   def index
16     @page = Panel.page params[:page]
17     @page_size = Panel.page_size params[:page_size]
18     @panels = Panel.list(@page, @page_size)
19
20     respond_to do |format|
21       format.html # index.html.erb
22       format.json { render text: Panel.list_as_json_text(@panels) }
23       format.atom 
24       format.rss { render :layout => false }
25     end
26   end
27
28   def show
29     @panel = Panel.show(params[:id], [@user, @admin])
30
31     respond_to do |format|
32       format.html {
33         if @author
34           @new_comics = Comic.mylist(@author, 0, 5)
35           @fresh_comics = Story.mylist(@author, 0, 5).map {|s| s.comic}
36         end
37       }
38       format.json { render json: @panel.panel_elements_as_json }
39       format.jsonp {
40         render :json => "callback(" + @panel.panel_elements_as_json + ");"
41       }
42     end
43   end
44
45   def count
46     @panel = {:count => Panel.visible_count}
47     respond_to do |format|
48       format.json { render json: @panel.to_json }
49     end
50   end
51   
52   def list
53     @panels = Panel.all :order => 'updated_at'
54
55     respond_to do |format|
56       format.html { render layout: 'system' }
57       format.json { render json: @panels }
58     end
59   end
60
61   def browse
62     @panel = Panel.find(params[:id])
63
64     respond_to do |format|
65       format.html { render layout: 'system' }
66     end
67   end
68
69   def new
70     @panel = Panel.new
71     @panel.supply_default
72
73     respond_to do |format|
74       format.html
75       format.js
76       format.json { render json: @panel.panel_elements_as_json }
77     end
78   end
79
80   def edit
81     @panel = Panel.edit(params[:id], @author)
82     respond_to do |format|
83       format.html
84       format.js
85     end
86   end
87
88   def create
89     @panel = Panel.new
90     @panel.supply_default
91     jsn = nil
92     if params[:json]
93       jsn = JSON.parse_no_except(params[:json])
94     end
95     @prm = params[:panel] || jsn
96     respond_to do |format|
97       if @panel.store @prm, @author
98         flash[:notice] = I18n.t('flash.notice.created', :model => Panel.model_name.human)
99         format.html { redirect_to @panel }
100         format.json { render json: @panel.panel_elements_as_json, status: :created, location: @panel }
101       else
102         format.html { render action: "new" }
103         format.json { render json: @panel.errors, status: :unprocessable_entity }
104       end
105     end
106   end
107
108   def update
109     @panel = Panel.edit(params[:id], @author)
110     jsn = nil
111     if params[:json]
112       jsn = JSON.parse(params[:json])
113     end
114     @prm = params[:panel] || jsn
115     respond_to do |format|
116       if @panel.store @prm, @author
117         flash[:notice] = I18n.t('flash.notice.updated', :model => Panel.model_name.human)
118         format.html { redirect_to @panel }
119         format.json { head :ok }
120       else
121         format.html { render action: "edit" }
122         format.json { render json: @panel.errors, status: :unprocessable_entity }
123       end
124     end
125   end
126
127   def destroy
128     @panel = Panel.edit(params[:id], @author)
129     respond_to do |format|
130       Panel.transaction do
131         if @panel.destroy_with_elements
132           flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human)
133           format.html { redirect_to '/home/panel' }
134           format.json { head :ok }
135         else
136           flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human)
137           format.html { redirect_to @panel }
138           format.json { render json: @panel.errors, status: :unprocessable_entity }
139         end
140       end
141     end
142   end
143   
144 end