app/controllers/refinery/admin/images_controller.rb in refinerycms-images-2.1.5 vs app/controllers/refinery/admin/images_controller.rb in refinerycms-images-3.0.0

- old
+ new

@@ -1,27 +1,27 @@ module Refinery module Admin class ImagesController < ::Refinery::AdminController crudify :'refinery/image', - :order => "created_at DESC", - :sortable => false, - :xhr_paging => true + include: [:translations], + order: "updated_at DESC", + sortable: false - before_filter :change_list_mode_if_specified, :init_dialog + before_action :change_list_mode_if_specified, :init_dialog def new @image = ::Refinery::Image.new if @image.nil? - @url_override = refinery.admin_images_path(:dialog => from_dialog?) + @url_override = refinery.admin_images_path(dialog: from_dialog?) end # This renders the image insert dialog def insert self.new if @image.nil? - @url_override = refinery.admin_images_path(request.query_parameters.merge(:insert => true)) + @url_override = refinery.admin_images_path(request.query_parameters.merge(insert: true)) if params[:conditions].present? extra_condition = params[:conditions].split(',') extra_condition[1] = true if extra_condition[1] == "true" @@ -32,90 +32,87 @@ find_all_images(({extra_condition[0] => extra_condition[1]} if extra_condition.present?)) search_all_images if searching? paginate_images - render :action => "insert" + render 'insert' end def create @images = [] begin - unless params[:image].present? and params[:image][:image].is_a?(Array) - @images << (@image = ::Refinery::Image.create(params[:image])) - else + if params[:image].present? && params[:image][:image].is_a?(Array) params[:image][:image].each do |image| - @images << (@image = ::Refinery::Image.create({:image => image}.merge(params[:image].except(:image)))) + params[:image][:image_title] = params[:image][:image_title].presence || auto_title(image.original_filename) + @images << (@image = ::Refinery::Image.create({image: image}.merge(image_params.except(:image)))) end + else + @images << (@image = ::Refinery::Image.create(image_params)) end - rescue Dragonfly::FunctionManager::UnableToHandle + rescue NotImplementedError logger.warn($!.message) @image = ::Refinery::Image.new end - unless params[:insert] + if params[:insert] + # if all uploaded images are ok redirect page back to dialog, else show current page with error if @images.all?(&:valid?) - flash.notice = t('created', :scope => 'refinery.crudify', :what => "'#{@images.map(&:title).join("', '")}'") + @image_id = @image.id if @image.persisted? + @image = nil + end + + self.insert + else + if @images.all?(&:valid?) + flash.notice = t('created', scope: 'refinery.crudify', what: "'#{@images.map(&:image_title).join("', '")}'") if from_dialog? @dialog_successful = true - render :nothing => true, :layout => true + render '/refinery/admin/dialog_success', layout: true else redirect_to refinery.admin_images_path end else self.new # important for dialogs - render :action => 'new' + render 'new' end - else - # if all uploaded images are ok redirect page back to dialog, else show current page with error - if @images.all?(&:valid?) - @image_id = @image.id if @image.persisted? - @image = nil - end - - self.insert end end def update - attributes_before_assignment = @image.attributes - @image.attributes = params[:image] + @image.attributes = image_params if @image.valid? && @image.save - flash.notice = t( - 'refinery.crudify.updated', - :what => "'#{@image.title}'" - ) + flash.notice = t('refinery.crudify.updated', what: "'#{@image.title}'") - unless from_dialog? - unless params[:continue_editing] =~ /true|on|1/ - redirect_back_or_default refinery.admin_images_path - else - unless request.xhr? - redirect_to :back - else - render :partial => '/refinery/message' - end - end - else + if from_dialog? self.index @dialog_successful = true render :index + else + if params[:continue_editing] =~ /true|on|1/ + if request.xhr? + render partial: '/refinery/message' + else + redirect_to :back + end + else + redirect_back_or_default refinery.admin_images_path + end end else @thumbnail = Image.find params[:id] - unless request.xhr? - render :action => 'edit' - else - render :partial => '/refinery/admin/error_messages', :locals => { - :object => @image, - :include_object_name => true + if request.xhr? + render partial: '/refinery/admin/error_messages', locals: { + object: @image, + include_object_name: true } + else + render 'edit' end end end - protected + protected def init_dialog @app_dialog = params[:app_dialog].present? @field = params[:field] @update_image = params[:update_image] @@ -130,14 +127,30 @@ Refinery::Images.preferred_image_view = params[:view] end end def paginate_images - @images = @images.paginate(:page => params[:page], :per_page => Image.per_page(from_dialog?, !@app_dialog)) + @images = @images.paginate(page: params[:page], per_page: Image.per_page(from_dialog?, !@app_dialog)) end def restrict_controller super unless action_name == 'insert' + end + + def auto_title(filename) + CGI::unescape(filename.to_s).gsub(/\.\w+$/, '').titleize + end + + def image_params + params.require(:image).permit(permitted_image_params) + end + + private + + def permitted_image_params + [ + :image, :image_size, :image_title, :image_alt + ] end end end end