OSDN Git Service

975288b0b0fb18ad15af27d296d8dc320ea8eb90
[pettanr/pettanr.git] / app / controllers / comics_controller.rb
1 class ComicsController < 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_story, :by_author, :count, :count_by_story, :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 index
14     filer_list
15   end
16   
17   def by_story
18     filer_list
19   end
20   
21   def by_author
22     filer_list
23   end
24   
25   def show_html_format format
26     format.html {
27       play_list = Locmare::ListGroup.list(
28         'comic_stories', 'by_comic', @operators, 
29         {:id => @item.id, :my_play => @item.own?(@operators)}
30       )
31       @play_count = play_list.count(@operators)
32     }
33   end
34   
35   def show
36     set_show
37     respond_to do |format|
38       show_html_format format
39       show_prof_format format
40       show_json_format format
41       format.atom 
42       format.rss 
43     end
44   end
45   
46   def play
47     set_play
48     @list = Locmare::ListGroup.list(
49       @my_controller.name, 
50       @my_action.name, @operators, 
51       {:id => @item.id, :offset => 0, :limit => -1}# no limit
52     )
53     @items = @list.items(@operators)
54     @count = @list.count @operators
55     # no pager
56     respond_to do |format|
57       format.html {
58         if @item.own? @operators
59           @new_story_items = assist_items('home', 'stories')
60         end
61       }
62       format.json { render json: @items.to_json }
63     end
64   end
65   
66   def count
67     list_count
68   end
69   
70   def count_by_story
71     list_count
72   end
73   
74   def count_by_author
75     list_count
76   end
77   
78   def new
79     form_new
80   end
81   
82   def edit
83     form_edit
84   end
85   
86   def create
87     set_model
88     @item = @my_model_class.new
89     @item.supply_default 
90     @my_model_class.fold_extend_settings params[@my_model_class.item_name]
91     @item.attributes = params[@my_model_class.item_name]
92     @item.overwrite @operators
93     render_create
94   end
95   
96   def update
97     set_edit
98     @my_model_class.fold_extend_settings params[@my_model_class.item_name]
99     @item.attributes = params[@my_model_class.item_name]
100     @item.overwrite @operators
101     render_update
102   end
103   
104   def destroy
105     @item = Comic.edit(params[:id], @operators)
106     respond_to do |format|
107       if @item.destroy_with_leafs
108         flash[:notice] = I18n.t('flash.notice.destroyed', :model => Comic.model_name.human)
109         format.html { redirect_to '/home/comics' }
110         format.json { head :ok }
111       else
112         flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Comic.model_name.human)
113         format.html { redirect_to @item }
114         format.json { render json: @item.errors, status: :unprocessable_entity }
115       end
116     end
117   end
118 end