class SheetsController < ApplicationController
+ 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_reader, :only => [
+ :index, :show, :play, :by_story, :by_panel, :by_author, :count, :count_by_story, :count_by_panel, :count_by_author
+ ]
+ before_filter :authenticate_user, :only => [:new, :create, :edit, :update, :destroy]
+ before_filter :authenticate_author, :only => [:new, :create, :edit, :update, :destroy]
+ end
+
+ def self.model
+ Sheet
+ end
+
+ def index
+ filer_list
+ end
+
+ def by_story
+ filer_list
+ end
+
+ def by_panel
+ filer_list
+ end
+
+ def by_author
+ filer_list
+ end
+
+ def show_html_format format
+ format.html {
+ if @operators.author
+ @new_panel_items = assist_items('panel', 'private')
+
+ @new_story_items = assist_items('story', 'private')
+ @fresh_story_items = assist_items('story_sheet', 'private').map {|ss| ss.story}
+ end
+ }
+ end
+
+ def show
+ set_show
+ respond_to do |format|
+ show_html_format format
+ show_prof_format format
+ show_json_format_for_root format
+ end
+ end
+
+ def play
+ @item = self.class.model.show(params[:id], @operators)
+ set_play
+ list_result = @list.open(@operators,
+ {:id => params[:id]}
+ )
+ @items = list_result.items
+ respond_to do |format|
+ format.html {
+ if @operators.author
+ @new_panel_items = assist_items('panel', 'private')
+ end
+ }
+ format.json { render json: @items.to_json(self.class.model.list_json_opt) }
+ end
+ end
+
+ def count
+ list_count
+ end
+
+ def count_by_story
+ list_count
+ end
+
+ def count_by_panel
+ list_count
+ end
+
+ def count_by_author
+ list_count
+ end
+
+ def new
+ set_new
+ respond_to do |format|
+ format.html {
+ @editor = Editor::SheetEditor.new @item, @operators
+ render :template => @editor.template_name, :locals => {
+ :editor => @editor
+ }
+ }
+ format.json { render json: @item.to_json }
+ end
+ end
+
+ def edit
+ set_edit
+ respond_to do |format|
+ format.html {
+ @editor = Editor::SheetEditor.new @item, @operators
+ render :template => @editor.template_name, :locals => {
+ :editor => @editor
+ }
+ }
+ format.json { render json: @item.to_json }
+ end
+ end
+
+ def create
+ @sheet = Sheet.new
+ @sheet.supply_default
+ jsn = nil
+ if params[:json]
+ jsn = JSON.parse_no_except(params[:json])
+ end
+ @prm = params[:sheet] || jsn
+
+ respond_to do |format|
+ if @sheet.store @prm, @operators
+ created_html_format format
+ created_json_format format
+ else
+ format.html {
+ flash[:notice] = I18n.t('flash.notice.not_created', :model => @my_model_class.model_name.human)
+ @editor = Editor::PanelEditor.new @item, @operators
+ render :template => @editor.template_name, :locals => {
+ :editor => @editor
+ }
+ }
+ not_created_json_format format
+ end
+ end
+ end
+
+ def update
+ @sheet = Sheet.edit(params[:id], @operators)
+ jsn = nil
+ if params[:json]
+ jsn = JSON.parse(params[:json])
+ end
+ @prm = params[:sheet] || jsn
+ respond_to do |format|
+ if @sheet.store @prm, @operators
+ updated_html_format format
+ updated_json_format format
+ else
+ format.html {
+ flash[:notice] = I18n.t('flash.notice.not_updated', :model => @my_model_class.model_name.human)
+ @editor = Editor::PanelEditor.new @item, @operators
+ render :template => @editor.template_name, :locals => {
+ :editor => @editor
+ }
+ }
+ not_updated_json_format format
+ end
+ end
+ end
+
+ def destroy
+ @sheet = Sheet.edit(params[:id], @operators)
+ respond_to do |format|
+ if @sheet.destroy_with_sheet_panel
+ flash[:notice] = I18n.t('flash.notice.destroyed', :model => Sheet.model_name.human)
+ format.html { redirect_to '/home/sheets' }
+ format.json { head :ok }
+ else
+ flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Sheet.model_name.human)
+ format.html { redirect_to @sheet }
+ format.json { render json: @sheet.errors, status: :unprocessable_entity }
+ end
+ end
+ end
end