Sha256: c5adf230e0d6e3b03c91deddd40740db83563ae99002ba92e6b5072ffbe7af3d

Contents?: true

Size: 1.29 KB

Versions: 2

Compression:

Stored size: 1.29 KB

Contents

require_dependency "landable/api_controller"

module Landable
  module Api
    class ThemesController < ApiController
      def index
        respond_with Theme.all
      end

      def create
        theme = Theme.new(theme_params)
        theme.save!
        respond_with theme, status: :created, location: theme_url(theme)
      end

      def show
        respond_with Theme.find(params[:id])
      end

      def update
        theme = Theme.find(params[:id])
        theme.update_attributes! theme_params
        respond_with theme
      end

      def preview
        theme = Theme.new(theme_params)
        page  = Page.example(theme: theme)

        params[:theme][:asset_ids].try(:each) do |asset_id|
          theme.attachments.add Asset.find(asset_id)
        end

        content = render_to_string(
          text: RenderService.call(page),
          layout: page.theme.file || false
        )

        respond_to do |format|
          format.html do
            render text: content, layout: false, content_type: 'text/html'
          end

          format.json do
            render json: {theme: {preview: content}}
          end
        end
      end

      private

      def theme_params
        params.require(:theme).permit(:id, :name, :body, :description, :thumbnail_url)
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
landable-1.7.1.rc1 app/controllers/landable/api/themes_controller.rb
landable-1.7.0 app/controllers/landable/api/themes_controller.rb