Sha256: 9ae61330c2e2c416d8ad7c8342f7317afb2c00377494d67d1ebd60c17ee7495b

Contents?: true

Size: 1.33 KB

Versions: 19

Compression:

Stored size: 1.33 KB

Contents

module Pageflow
  module Editor
    class WidgetsController < Pageflow::ApplicationController
      respond_to :json

      before_action :authenticate_user!

      def index
        subject = find_subject
        authorize!(:index_widgets_for, subject.to_model)

        @widgets = subject.resolve_widgets(include_placeholders: true)
        respond_with(@widgets)
      end

      def batch
        subject = find_subject
        authorize!(:edit, subject.to_model)

        subject.widgets.batch_update!(widget_batch_params)
        render(json: {})
      end

      private

      def widget_batch_params
        widget_configurations = params.fetch(:widgets, []).map do |widget_params|
          widget_params[:configuration].try(:permit!)
        end

        params
          .permit(widgets: [:role, :type_name])
          .fetch(:widgets, [])
          .zip(widget_configurations)
          .map do |(widget_params, widget_configuration)|
            if widget_configuration
              widget_params.merge(configuration: widget_configuration)
            else
              widget_params
            end
          end
      end

      def find_subject
        if params[:collection_name] == 'entries'
          DraftEntry.find(params[:subject_id])
        else
          EntryTemplate.find(params[:subject_id])
        end
      end
    end
  end
end

Version data entries

19 entries across 19 versions & 1 rubygems

Version Path
pageflow-17.0.4 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-17.0.3 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-17.0.2 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-17.0.1 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-17.0.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-16.2.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-16.1.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-16.0.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.8.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.7.1 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.7.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.6.1 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.6.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.5.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.4.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.3.0 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.2.2 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.2.1 app/controllers/pageflow/editor/widgets_controller.rb
pageflow-15.2.0 app/controllers/pageflow/editor/widgets_controller.rb