OSDN Git Service

fix play leaf
[pettanr/pettanr.git] / app / controllers / stories_controller.rb
1 class StoriesController < ApplicationController
2   if Manifest.manifest.magic_numbers['run_mode'] == 0
3     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
4     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
5   else
6     before_filter :authenticate_reader, :only => [
7       :index, :show, :play, :by_comic, :by_sheet, :by_author, :count, :count_by_comic, :count_by_sheet, :count_by_author
8     ]
9     before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
10     before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
11   end
12
13   def self.model
14     Story
15   end
16   
17   def index
18     filer_list
19   end
20   
21   def by_comic
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 show_html_format format
34     format.html {
35       play_list = Locmare::ListGroup.list 'story_sheet', 'play'
36       @play_count = play_list.count(@operators, {:id => @item.id, :my_play => @item.own?(@operators)})
37       if @operators.author
38         @new_comic_items = assist_items('comic', 'private')
39       end
40     }
41   end
42   
43   def show
44     set_show
45     respond_to do |format|
46       show_html_format format
47       show_prof_format format
48       show_json_format format
49     end
50   end
51   
52   def play
53     @item = self.class.model.show(params[:id], @operators)
54     @story = @item
55     set_play
56     @options = {:id => params[:id], :offset => params[:offset], :count => 1}
57     list_result = @list.open(@operators, @options)
58     @items = list_result.items
59     @count = @list.count(@operators, @options)
60     @pager = Kaminari.paginate_array(Array.new(@count, nil)).page(params[:offset]).per(1)
61     @sort_items = @list.items(@operators, 
62       {:id => params[:id], :my_play => @item.own?(@operators)},
63       0, -1
64     )
65     respond_to do |format|
66       format.html {
67         #@count = @action.list.count @item
68         #@prev_offset = @action.list.prev_offset @item
69         #@next_offset = @action.list.next_offset @item
70         if @operators.author
71           @new_sheet_items = assist_items('sheet', 'private')
72         end
73       }
74       format.json { render json: @items.to_json(self.class.model.list_json_opt) }
75     end
76   end
77   
78   def count
79     list_count
80   end
81   
82   def count_by_comic
83     list_count
84   end
85   
86   def count_by_sheet
87     list_count
88   end
89   
90   def count_by_author
91     list_count
92   end
93   
94   def new
95     form_new
96   end
97   
98   def edit
99     form_edit
100   end
101   
102   def create
103     set_model
104     @story = @item
105     @item = @my_model_class.new
106     @item.supply_default 
107     @item.attributes = params[@my_model_class.item_name]
108     @item.overwrite @operators
109     render_create
110   end
111   
112   def update
113     set_edit
114     @story = @item
115     @item.attributes = params[@my_model_class.item_name]
116     @item.overwrite @operators
117     render_update
118   end
119   
120   def destroy
121     @item = Story.edit(params[:id], @operators)
122     respond_to do |format|
123       if @item.destroy_with_leafs
124         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Story.model_name.human)
125         format.html { redirect_to '/home/stories' }
126         format.json { head :ok }
127       else
128         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Story.model_name.human)
129         format.html { redirect_to @item }
130         format.json { render json: @item.errors, status: :unprocessable_entity }
131       end
132     end
133   end
134   
135 end