Sha256: dcca29614ab5358688a691b714456aa6b09ef909131c103099616a95b55a44c8

Contents?: true

Size: 1.97 KB

Versions: 4

Compression:

Stored size: 1.97 KB

Contents

require_dependency "landable/api_controller"

module Landable
  module Api
    class TemplatesController < ApiController
      # filters
      before_filter :load_template, except: [:create, :index, :preview]

      # RESTful methods
      def create
        template = Template.new(template_params)
        template.save!
        
        respond_with template, status: :created, location: template_url(template)
      end

      def destroy
        @template.temp_author = current_author
        @template.try(:deactivate)

        respond_with @template
      end

      def index
        respond_with Template.all
      end

      def show
        respond_with @template
      end

      def update
        @template.update_attributes!(template_params)
        
        respond_with @template
      end

      # custom methods
      def publish
        @template.publish! author_id: current_author.id, notes: params[:notes], is_minor: !!params[:is_minor]
        
        respond_with @template
      end

      def reactivate
        @template.try(:reactivate)
        
        respond_with @template
      end

      # custom methods
      def preview
        template = Template.new(template_params)
        theme  = Theme.most_used_on_pages

        page  = Page.example(theme: theme, body: template.body)

        content = generate_preview_for(page)

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

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

      private
        def template_params
          params.require(:template).permit(:id, :name, :body, :description, :thumbnail_url, 
                                           :slug, :is_layout, :is_publishable,
                                           audit_flags: [])
        end

        def load_template
          @template = Template.find(params[:id])
        end
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
landable-1.13.1 app/controllers/landable/api/templates_controller.rb
landable-1.12.3 app/controllers/landable/api/templates_controller.rb
landable-1.12.2 app/controllers/landable/api/templates_controller.rb
landable-1.12.1 app/controllers/landable/api/templates_controller.rb