app/controllers/landable/api/themes_controller.rb in landable-1.7.1.rc1 vs app/controllers/landable/api/themes_controller.rb in landable-1.8.0

- old
+ new

@@ -1,57 +1,78 @@ -require_dependency "landable/api_controller" +require_dependency 'landable/api_controller' module Landable module Api class ThemesController < ApiController - def index - respond_with Theme.all - end + # filters + before_filter :load_theme, except: [:create, :index, :preview] + # RESTful methods def create theme = Theme.new(theme_params) theme.save! + respond_with theme, status: :created, location: theme_url(theme) end + def destroy + @theme.try(:deactivate) + + respond_with @theme + end + + def index + respond_with Theme.all + end + + def reactivate + @theme.try(:reactivate) + + respond_with @theme + end + def show - respond_with Theme.find(params[:id]) + respond_with @theme end def update - theme = Theme.find(params[:id]) - theme.update_attributes! theme_params - respond_with theme + @theme.update_attributes!(theme_params) + + respond_with @theme end + # custom methods 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 load_theme + @theme = Theme.find(params[:id]) + end - def theme_params - params.require(:theme).permit(:id, :name, :body, :description, :thumbnail_url) - end + def theme_params + params.require(:theme).permit(:id, :name, :body, :description, :thumbnail_url) + end end end end