OSDN Git Service

m
[pettanr/pettanr.git] / app / controllers / scrolls_controller.rb
1 class ScrollsController < 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 => [:top, :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 = Scroll.page params[:page]
15     @page_size = Scroll.page_size params[:page_size]
16     @scrolls = Scroll.list(@page, @page_size)
17     respond_to do |format|
18       format.html {
19         @paginate = Scroll.list_paginate(@page, @page_size)
20         render :template => 'system/filer', :locals => {
21           :items => @scrolls, :model => Scroll, 
22           :roles => [@user, @admin], :pager => @paginate
23         }
24       }
25       format.json { render json: @scrolls.to_json(Scroll.list_json_opt) }
26       format.atom 
27       format.rss
28     end
29   end
30
31   def show
32     @scroll = Scroll.show(params[:id], [@user, @admin])
33
34     respond_to do |format|
35       format.html {
36         if @author
37           @new_panels = Panel.mylist(@author, 1, 5)
38         end
39       }
40       format.json { render json: @scroll.to_json(Scroll.show_json_opt) }
41       format.prof  { render :template => 'top/prof', :layout => true }
42       format.atom 
43       format.rss 
44     end
45   end
46
47   def play
48     @scroll = Scroll.show(params[:id], [@user, @admin])
49     cnt = ScrollPanel.count(:conditions => ['scroll_id = ?', @scroll.id]).to_i
50     @offset = ScrollPanel.offset cnt, params[:offset]
51     @panel_count = ScrollPanel.panel_count cnt, params[:count]
52     @scroll_panels = ScrollPanel.play_list(@scroll, @author, @offset, @panel_count)
53     respond_to do |format|
54       format.html {
55         @prev_offset = if @offset > 0
56           if @offset - @panel_count < 0
57             0
58           else
59             @offset - @panel_count
60           end
61         else
62           nil
63         end
64         @next_offset = if @offset + @panel_count > cnt
65           nil
66         else
67           @offset + @panel_count
68         end
69         if @author
70           @new_panels = Panel.mylist(@author, 1, 5)
71         end
72       }
73       format.json {render text: ScrollPanel.list_as_json_text(@scroll_panels, @author)}
74       format.jsonp {
75         render :json => "callback(" + @scroll_panels.to_json_list + ");"
76       }
77     end
78   end
79   
80   def count
81     @scroll = {:count => Scroll.visible_count}
82     respond_to do |format|
83       format.json { render json: @scroll.to_json }
84     end
85   end
86   
87   def list
88     @scrolls = Scroll.all
89
90     respond_to do |format|
91       format.html { render layout: 'system' }# index.html.erb
92       format.json { render json: @scrolls }
93     end
94   end
95
96   def browse
97     @scroll = Scroll.find(params[:id])
98
99     respond_to do |format|
100       format.html { render layout: 'system' } # show.html.erb
101       format.json { render json: @scroll }
102     end
103   end
104   
105   def new
106     @scroll = Scroll.new
107     @scroll.supply_default
108     respond_to do |format|
109       format.html # new.html.erb
110       format.js
111       format.json { render json: @scroll.to_json(Scroll.show_json_opt) }
112     end
113   end
114
115   def edit
116     @scroll = Scroll.edit(params[:id], @author)
117     respond_to do |format|
118       format.html 
119       format.js
120     end
121   end
122
123   def create
124     @scroll = Scroll.new
125     @scroll.supply_default 
126     @scroll.attributes = params[:scroll]
127     @scroll.overwrite @author
128
129     respond_to do |format|
130       if @scroll.save
131         flash[:notice] = I18n.t('flash.notice.created', :model => Scroll.model_name.human)
132         format.html { redirect_to @scroll }
133         format.json { render json: @scroll.to_json(Scroll.show_json_opt), status: :created, location: @scroll }
134       else
135         flash[:notice] = I18n.t('flash.notice.not_created', :model => Scroll.model_name.human)
136         format.html { render action: "new" }
137         format.json { render json: @scroll.errors, status: :unprocessable_entity }
138       end
139     end
140   end
141
142   def update
143     @scroll = Scroll.edit(params[:id], @author)
144     @scroll.attributes = params[:scroll]
145     @scroll.overwrite @author
146     respond_to do |format|
147       if @scroll.save
148         flash[:notice] = I18n.t('flash.notice.updated', :model => Scroll.model_name.human)
149         format.html { redirect_to @scroll }
150         format.json { head :ok }
151       else
152         flash[:notice] = I18n.t('flash.notice.not_updated', :model => Scroll.model_name.human)
153         format.html { render action: "edit" }
154         format.json { render json: @scroll.errors, status: :unprocessable_entity }
155       end
156     end
157   end
158
159   def destroy
160     @scroll = Scroll.edit(params[:id], @author)
161     respond_to do |format|
162       if @scroll.destroy_with_scroll_panel
163         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Scroll.model_name.human)
164         format.html { redirect_to '/home/scrolls' }
165         format.json { head :ok }
166       else
167         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Scroll.model_name.human)
168         format.html { redirect_to @scroll }
169         format.json { render json: @scroll.errors, status: :unprocessable_entity }
170       end
171     end
172   end
173 end