OSDN Git Service

t#31223:add them contents list for author and artist
[pettanr/pettanr.git] / app / controllers / artists_controller.rb
index ae96dd9..51543bb 100644 (file)
@@ -1,6 +1,13 @@
 class ArtistsController < ApplicationController
-layout 'test'
-  before_filter :authenticate_user!, :only => [:index, :show, :create, :update, :destroy]
+  layout 'test' if MagicNumber['test_layout']
+  if MagicNumber['run_mode'] == 0
+    before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
+    before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
+  else
+    before_filter :authenticate_resource_reader, :only => [:index, :show, :resource_pictures]
+    before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
+    before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
+  end
   before_filter :authenticate_admin!, :only => [:list, :browse]
 
   # GET /artists
@@ -8,7 +15,7 @@ layout 'test'
   def index
     @page = Artist.page params[:page]
     @page_size = Artist.page_size params[:page_size]
-    @artists = Artist.list({}, @page, @page_size)
+    @artists = Artist.list(@page, @page_size)
 
     respond_to do |format|
       format.html # index.html.erb
@@ -19,18 +26,31 @@ layout 'test'
   # GET /artists/1
   # GET /artists/1.json
   def show
-    @artist = Artist.show(params[:id])
+    @ar = Artist.show(params[:id], [@user, @admin, @demand_user])
 
     respond_to do |format|
       format.html # show.html.erb
-      format.json { render :json => @artist.to_json(Artist.list_json_opt) }
+      format.json { render :json => @ar.to_json(Artist.show_json_opt) }
     end
   end
 
+  def resource_pictures
+    @ar = Artist.show(params[:id], [@user, @admin, @demand_user])
+    
+    @page = Author.page params[:page]
+    @page_size = Author.resource_picture_page_size params[:page_size]
+    @resource_pictures = ResourcePicture.mylist(@ar, @page, @page_size)
+
+    respond_to do |format|
+      format.html # index.html.erb
+      format.json { render json: @resource_pictures.to_json(ResourcePicture.list_json_opt) }
+    end
+  end
+  
   def count
-    @artist = {:count => Artist.visible_count}
+    @ar = {:count => Artist.visible_count}
     respond_to do |format|
-      format.json { render json: @artist.to_json }
+      format.json { render json: @ar.to_json }
     end
   end
   
@@ -44,43 +64,51 @@ layout 'test'
   end
 
   def browse
-    @artist = Artist.find(params[:id])
+    @ar = Artist.find(params[:id])
 
     respond_to do |format|
       format.html { render layout: 'system' }
-      format.json { render json: @artist }
+      format.json { render json: @ar }
     end
   end
 
   # GET /artists/new
   # GET /artists/new.json
   def new
-    @artist = Artist.new
+    @ar = Artist.new
+    @ar.supply_default 
 
     respond_to do |format|
       format.html # new.html.erb
       format.js
-      format.json { render json: @artist }
+      format.json { render json: @ar.to_json(Artist.show_json_opt) }
     end
   end
 
   # GET /artists/1/edit
   def edit
-    @artist = Artist.find(params[:id])
+    @ar = Artist.edit(params[:id], @author)
+    respond_to do |format|
+      format.html 
+      format.js
+    end
   end
 
   # POST /artists
   # POST /artists.json
   def create
-    @artist = Artist.new(params[:artist])
-    @artist.author_id = @author.id
+    @ar = Artist.new()
+    @ar.supply_default 
+    @ar.attributes = params[:artist]
+    @ar.overwrite @author
     respond_to do |format|
-      if @artist.save
-        format.html { redirect_to @artist, notice: 'Artist was successfully created.' }
-        format.json { render json: @artist, status: :created, location: @artist }
+      if @ar.save
+        flash[:notice] = I18n.t('flash.notice.created', :model => Artist.model_name.human)
+        format.html { redirect_to root_path }
+        format.json { render json: @ar.to_json(Artist.show_json_opt), status: :created, location: @artist }
       else
         format.html { render action: "new" }
-        format.json { render json: @artist.errors, status: :unprocessable_entity }
+        format.json { render json: @ar.errors, status: :unprocessable_entity }
       end
     end
   end
@@ -88,15 +116,18 @@ layout 'test'
   # PUT /artists/1
   # PUT /artists/1.json
   def update
-    @artist = Artist.find(params[:id])
+    @ar = Artist.edit(params[:id], @author)
+    @ar.attributes = params[:artist]
+    @ar.overwrite @author
 
     respond_to do |format|
-      if @artist.update_attributes(params[:artist])
-        format.html { redirect_to @artist, notice: 'Artist was successfully updated.' }
+      if @ar.save
+        flash[:notice] = I18n.t('flash.notice.updated', :model => Artist.model_name.human)
+        format.html { redirect_to '/home/configure' }
         format.json { head :ok }
       else
         format.html { render action: "edit" }
-        format.json { render json: @artist.errors, status: :unprocessable_entity }
+        format.json { render json: @ar.errors, status: :unprocessable_entity }
       end
     end
   end
@@ -104,8 +135,8 @@ layout 'test'
   # DELETE /artists/1
   # DELETE /artists/1.json
   def destroy
-    @artist = Artist.find(params[:id])
-    @artist.destroy
+    @ar = Artist.edit(params[:id], @author)
+    @ar.destroy
 
     respond_to do |format|
       format.html { redirect_to artists_url }