X-Git-Url: http://git.osdn.net/view?a=blobdiff_plain;f=app%2Fcontrollers%2Fpanels_controller.rb;h=ad67b3e598bb0aa16a9bfe61256ffe7d15062ce1;hb=d36edcdd63570a8dd64f9341ddb2081fbfd21d5d;hp=0edb1a94f41a40c12478aa68a0c4268311bc996a;hpb=feb98851d07945d34179f2bc23745316ae062ea0;p=pettanr%2Fpettanr.git diff --git a/app/controllers/panels_controller.rb b/app/controllers/panels_controller.rb index 0edb1a94..ad67b3e5 100644 --- a/app/controllers/panels_controller.rb +++ b/app/controllers/panels_controller.rb @@ -4,18 +4,31 @@ class PanelsController < ApplicationController before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy, :catch] else before_filter :authenticate_reader, :only => [ - :index, :show, :by_scroll, :by_sheet, :by_author, :count, :count_by_scroll, :count_by_sheet, :count_by_author + :index, :show, :by_scroll, :by_sheet, :by_author, :by_speech_balloon_template ] before_filter :authenticate_user, :only => [:new, :edit, :create, :update, :destroy, :catch] before_filter :authenticate_author, :only => [:new, :edit, :create, :update, :destroy, :catch] end - def self.model - Panel + private + def panel_list + set_list + @items = @list.items + @pager = @list.page_status.pager + respond_to do |format| + format.html + list_json_format @list, format + format.atom + format.rss + end end - + public def index - filer_list + if params[:mode] == 'filer' + filer_list + else + panel_list + end end def by_scroll @@ -30,19 +43,15 @@ class PanelsController < ApplicationController filer_list end + def by_speech_balloon_template + filer_list + end + def show_html_format format format.html { - @panel = @item if @operators.author - @new_scroll_items = assist_items('scroll', 'private') - #@new_scroll_filer = assist_filer 'scroll', @new_scroll_items - @fresh_scroll_items = assist_items('scroll_panel', 'private').map {|sp| sp.scroll} - #@fresh_scroll_filer = assist_filer 'scroll', @fresh_scroll_items - - @new_sheet_items = assist_items('sheet', 'private') - #@new_sheet_filer = assist_filer 'sheet', @new_sheet_items - @fresh_sheet_items = assist_items('sheet_panel', 'private').map {|sp| sp.sheet} - #@fresh_sheet_filer = assist_filer 'sheet', @fresh_sheet_items + @new_scroll_items = assist_items('home', 'scrolls') + @fresh_scroll_items = assist_items('home', 'scroll_panels').map {|sp| sp.scroll} end } end @@ -52,124 +61,123 @@ class PanelsController < ApplicationController respond_to do |format| show_html_format format show_prof_format format - show_json_format format + if params[:with_elements] + show_json_format_for_root format + else + show_json_format format + end end end - - def count - list_count - end - - def count_by_scroll - list_count - end - - def count_by_sheet - list_count - end - - def count_by_author - list_count - end def new - @panel = Panel.new - @panel.boost - @panel.supply_default + set_new respond_to do |format| format.html { - @editor = Editor::PanelEditor.new @panel, @operators + @editor = Editor::PanelEditor.new @item, @operators render :template => @editor.template_name, :locals => { :editor => @editor } } - format.js - format.json { render json: @panel.panel_elements_as_json } + format.json { render json: @item.to_json } end end - + def edit - @panel = Panel.edit(params[:id], @operators) + set_edit respond_to do |format| format.html { - @editor = Editor::PanelEditor.new @panel, @operators + @editor = Editor::PanelEditor.new @item, @operators render :template => @editor.template_name, :locals => { :editor => @editor } } - format.js + format.json { render json: @item.to_json } end end - + def create - @panel = Panel.new - @panel.boost + set_model + @item = @my_model_class.new +# @item.boosts 'post' jsn = nil if params[:json] jsn = JSON.parse_no_except(params[:json]) end - @prm = params[:panel] || jsn - self.model.fold_extend_settings @prm - @panel.refresh + @prm = if params[:panel] == nil or params[:panel].empty? + jsn + else + params[:panel] + end + @item.class.fold_extend_settings @prm + #@item.refresh respond_to do |format| - if @panel.store @panel.packed_attributes, @operators - flash[:notice] = I18n.t('flash.notice.created', :model => Panel.model_name.human) - format.html { redirect_to @panel } - format.json { render json: @panel.panel_elements_as_json, status: :created, location: @panel } + if @item.store @prm, @operators + created_html_format format + created_json_format format else - format.html { render action: "new" } - format.json { render json: @panel.errors, status: :unprocessable_entity } + 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 - @panel = Panel.edit(params[:id], @operators) - @panel.boost + @item = Panel.edit(params[:id], @operators) + @item.boosts 'post' jsn = nil if params[:json] jsn = JSON.parse(params[:json]) end @prm = params[:panel] || jsn - self.model.fold_extend_settings @prm - @panel.attributes = @prm - @panel.refresh + @item.class.fold_extend_settings @prm + # @item.refresh respond_to do |format| - if @panel.store @panel.packed_attributes, @operators - flash[:notice] = I18n.t('flash.notice.updated', :model => Panel.model_name.human) - format.html { redirect_to @panel } - format.json { head :ok } + if @item.store @prm, @operators + updated_html_format format + updated_json_format format else - format.html { render action: "edit" } - format.json { render json: @panel.errors, status: :unprocessable_entity } + 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 - @panel = Panel.edit(params[:id], @operators) + @item = Panel.edit(params[:id], @operators) respond_to do |format| Panel.transaction do - if @panel.destroy_with_elements + if @item.destroy_with_elements flash[:notice] = I18n.t('flash.notice.destroyed', :model => Panel.model_name.human) format.html { redirect_to '/home/panels' } format.json { head :ok } else flash[:notice] = I18n.t('flash.notice.not_destroyed', :model => Panel.model_name.human) - format.html { redirect_to @panel } - format.json { render json: @panel.errors, status: :unprocessable_entity } + format.html { redirect_to @item } + format.json { render json: @item.errors, status: :unprocessable_entity } end end end end def catch - @panel = Panel.edit(params[:id], @operators) + @item = Panel.edit(params[:id], @operators) respond_to do |format| - @operators.author.working_panel_id = @panel.id + @operators.author.working_panel_id = @item.id if @operators.author.save - format.html { redirect_to @panel } + format.html { redirect_to @item } else end end