OSDN Git Service

t#29312:any update
[pettanr/pettanr.git] / app / controllers / original_pictures_controller.rb
1 #原画
2 class OriginalPicturesController < ApplicationController
3   layout 'test' if Pettanr::TestLayout
4   before_filter :authenticate_user!, :only => [:index, :show, :history, :new, :edit, :create, :update, :destroy]
5   before_filter :authenticate_admin!, :only => [:list, :browse]
6   before_filter :authenticate_artist, :only => [:index, :show, :history, :new, :edit, :create, :update, :destroy]
7   
8   private
9   
10   def set_image(file)
11     if file.respond_to?(:read)
12       file.read
13     else
14       Base64.decode64(file.to_s.gsub(' ', '+')) #rubyのバグ?+でデコードされるべきキャラがスペースになる
15     end
16   end
17   
18   public
19   
20   # GET /original_pictures
21   # GET /original_pictures.json
22   def index
23     @page = OriginalPicture.page params[:page]
24     @page_size = OriginalPicture.page_size params[:page_size]
25     @original_pictures = OriginalPicture.list(@artist.id, {}, @page, @page_size)
26
27     respond_to do |format|
28       format.html # index.html.erb
29       format.json { render json: @original_pictures.to_json(OriginalPicture.list_json_opt) }
30     end
31   end
32
33   # GET /original_pictures/1
34   # GET /original_pictures/1.json
35   def show
36     @original_picture = OriginalPicture.show(params[:id], @artist)
37     
38     respond_to do |format|
39       opt = {:type => @original_picture.mime_type, :disposition=>"inline"}
40       format.png { send_data(@original_picture.restore, opt ) }
41       format.gif { send_data(@original_picture.restore, opt ) }
42       format.jpeg { send_data(@original_picture.restore, opt ) }
43       format.html {
44         #ライセンス付与のために原画ライセンスグループ作成準備
45         @original_picture_license_group  = OriginalPictureLicenseGroup.new :original_picture_id => @original_picture.id
46         render
47       }
48       format.json { render json: @original_picture.to_json(OriginalPicture.show_json_include_opt)}
49     end
50   end
51
52   def history
53     @original_picture = OriginalPicture.show(params[:id], @artist)
54     @history = @original_picture.history
55     
56     respond_to do |format|
57       format.html # index.html.erb
58       format.json { render json: @history.to_json }
59     end
60   end
61   
62   def list
63     @original_pictures = OriginalPicture.all
64
65     respond_to do |format|
66       format.html { render layout: 'system' }
67       format.json { render json: @original_pictures }
68     end
69   end
70
71   def browse
72     @original_picture = OriginalPicture.find(params[:id])
73
74     respond_to do |format|
75       format.html { render layout: 'system' }
76       format.json { render json: @original_picture }
77     end
78   end
79
80   def refresh
81     @original_picture = OriginalPicture.find(params[:id])
82     img = Magick::Image.from_blob(@original_picture.restore).shift
83     @original_picture.store img
84     respond_to do |format|
85       format.html { redirect_to original_pictures_url }
86     end
87   end
88   
89   # GET /original_pictures/new
90   # GET /original_pictures/new.json
91   def new
92     @original_picture = OriginalPicture.new
93     @original_picture.supply_default @artist
94
95     respond_to do |format|
96       format.html # new.html.erb
97       format.js
98       format.json { render json: @original_picture }
99     end
100   end
101
102   # GET /original_pictures/1/edit
103   def edit
104     @original_picture = OriginalPicture.edit(params[:id], @author)
105     respond_to do |format|
106       format.html
107       format.js
108     end
109   end
110
111   # POST /original_pictures
112   # POST /original_pictures.json
113   def create
114     @picture_data = set_image params[:original_picture][:file]
115     @original_picture = OriginalPicture.new
116     @original_picture.supply_default @artist
117
118     respond_to do |format|
119       if @original_picture.store(@picture_data, @artist)
120         format.html { redirect_to @original_picture, notice: 'Original picture was successfully created.' }
121         format.json { render json: @original_picture, status: :created, location: @original_picture }
122       else
123         format.html { render action: "new" }
124         format.json { render json: @original_picture.errors, status: :unprocessable_entity }
125       end
126     end
127   end
128
129   # PUT /original_pictures/1
130   # PUT /original_pictures/1.json
131   def update
132     @picture_data = set_image params[:original_picture][:file]
133     @original_picture = OriginalPicture.edit(params[:id], @author)
134
135     respond_to do |format|
136       if @original_picture.store(@picture_data, @artist)
137         format.html { redirect_to @original_picture, notice: 'Original picture was successfully created.' }
138         format.json { render json: @original_picture, status: :created, location: @original_picture }
139       else
140         format.html { render action: "edit" }
141         format.json { render json: @original_picture.errors, status: :unprocessable_entity }
142       end
143     end
144   end
145
146   # DELETE /original_pictures/1
147   # DELETE /original_pictures/1.json
148   def destroy
149     @original_picture = OriginalPicture.edit(params[:id], @author)
150     OriginalPicture.transaction do
151       @original_picture.destroy
152     end
153     
154     respond_to do |format|
155       format.html { redirect_to original_pictures_url }
156       format.json { head :ok }
157     end
158   end
159 end