X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fcontrollers%2Fcomics_controller.rb;h=3ef277ef020b800c651cb4c5e67ae49642d18dad;hb=85d27b03ef74a6d4775fc345a9f59c9e1736e7c1;hp=d2668b6bedde4ebcf66679a3bd765b4c55bf6e81;hpb=484f3416b80d923fd87bc542738cb6a12c4f8e47;p=pettanr%2Fpettanr.git diff --git a/app/controllers/comics_controller.rb b/app/controllers/comics_controller.rb index d2668b6b..3ef277ef 100644 --- a/app/controllers/comics_controller.rb +++ b/app/controllers/comics_controller.rb @@ -1,165 +1,120 @@ class ComicsController < ApplicationController - if Const.run_mode == 0 - before_filter :authenticate_user!, :only => [:new, :create, :edit, :update, :destroy] + if Manifest.manifest.magic_numbers['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_user!, :only => [:top, :index, :show, :play, :new, :create, :edit, :update, :destroy] + before_filter :authenticate_reader, :only => [ + :index, :show, :play, :by_story, :by_author, :count, :count_by_story, :count_by_author + ] + 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] - private + def self.model + Comic + end - def treat_param comic - comic.author_id = @author.id + def index + filer_list end - public + def by_story + filer_list + end - def top - @new_comics = Comic.find(:all, - :include => :author, :conditions => ['visible > 0'], :order => 'updated_at desc', :limit => 5 - ) - @new_pictures = OriginalPicture.find(:all, - :include => [:artist, :license, :resource_picture], :order => 'updated_at', :limit => 5 - ) - - respond_to do |format| - format.html # index.html.erb - end + def by_author + filer_list end - # GET /comics - # GET /comics.json - def index - @page = Comic.page params[:page] - @page_size = Comic.page_size params[:page_size] - @comics = Comic.list({}, @page, @page_size) - respond_to do |format| - format.html # index.html.erb - format.json { render json: @comics.to_json(Comic.list_json_opt) } - end + def show_html_format format + format.html { + play_list = Locmare::ListGroup.list 'comic_story', 'play' + @play_count = play_list.count(@operators, + {:id => @item.id, :my_play => @item.own?(@operators)} + ) + } end - - # GET /comics/1 - # GET /comics/1.json + def show - @comic = Comic.show(params[:id]) - + set_show respond_to do |format| - raise ActiveRecord::Forbidden unless @comic.visible?(@author) - format.html # show.html.erb - format.json { render json: @comic.to_json(Comic.show_json_opt) } - end - end - - def count - @comic = {:count => Comic.visible_count} - respond_to do |format| - format.json { render json: @comic.to_json } + show_html_format format + show_prof_format format + show_json_format format + format.atom + format.rss end end def play - @comic = Comic.play(params[:id]) + @item = self.class.model.show(params[:id], @operators) + set_play + @items = @list.items(@operators, + {:id => params[:id], :my_play => @item.own?(@operators)}, + 0, -1 # no limit + ) + @count = @items.count + # no pager respond_to do |format| - format.html # index.html.erb - format.json { - render :json => @comic.to_json_play - } - format.jsonp { - render :json => "callback(" + @comic.to_json_play + ");" + format.html { + if @item.own? @operators + @new_story_items = assist_items('story', 'private') + end } + format.json { render json: @items.to_json } end end - def list - @comics = Comic.all - - respond_to do |format| - format.html { render layout: 'system' }# index.html.erb - format.json { render json: @comics } - end + def count + list_count end - - def browse - @comic = Comic.find(params[:id]) - - respond_to do |format| - format.html { render layout: 'system' } # show.html.erb - format.json { render json: @comic } - end + + def count_by_story + list_count + end + + def count_by_author + list_count end - # GET /comics/new - # GET /comics/new.js def new - @comic = Comic.new - @comic.supply_default - respond_to do |format| - format.html # new.html.erb - format.js - end + form_new end - - # GET /comics/1/edit - # GET /comics/1.js/edit + def edit - @comic = Comic.find(params[:id]) - @comic.supply_default - respond_to do |format| - raise ActiveRecord::Forbidden unless @comic.own?(@author) - format.html - format.js - end + form_edit end - - # POST /comics - # POST /comics.json + def create - params[:comic].merge! author_id: @author.id - @comic = Comic.new params[:comic] - @comic.supply_default - - respond_to do |format| - if @comic.save - format.html { redirect_to @comic, notice: 'Comic was successfully created.' } - format.json { render json: Comic.show(@comic.id).to_json(Comic.show_json_opt), status: :created, location: @comic } - else - format.html { render action: "new" } - format.json { render json: @comic.errors, status: :unprocessable_entity } - end - end + set_model + @item = @my_model_class.new + @item.supply_default + @my_model_class.fold_extend_settings params[@my_model_class.item_name] + @item.attributes = params[@my_model_class.item_name] + @item.overwrite @operators + render_create end - - # PUT /comics/1 - # PUT /comics/1.json + def update - params[:comic].merge! author_id: @author.id - @comic = Comic.find(params[:id]) - respond_to do |format| - raise ActiveRecord::Forbidden unless @comic.own?(@author) - if @comic.update_attributes(params[:comic]) - format.html { redirect_to @comic, notice: 'Comic was successfully updated.' } - format.json { head :ok } - else - format.html { render action: "edit" } - format.json { render json: @comic.errors, status: :unprocessable_entity } - end - end + set_edit + @my_model_class.fold_extend_settings params[@my_model_class.item_name] + @item.attributes = params[@my_model_class.item_name] + @item.overwrite @operators + render_update end - - # DELETE /comics/1 - # DELETE /comics/1.json + def destroy - @comic = Comic.find(params[:id]) - if @comic.own? @author - @comic.destroy - respond_to do |format| - format.html { redirect_to comics_url } + @item = Comic.edit(params[:id], @operators) + respond_to do |format| + if @item.destroy_with_leafs + flash[:notice] = I18n.t('flash.notice.destroyed', :model => Comic.model_name.human) + format.html { redirect_to '/home/comics' } format.json { head :ok } + else + flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Comic.model_name.human) + format.html { redirect_to @item } + format.json { render json: @item.errors, status: :unprocessable_entity } end - else - format.html { render action: "edit" } - format.json { render json: @comic.errors, status: :unprocessable_entity } end end end