Sha256: 4856ee484af1079b3753e02de7fe2d25f5e449e4bac7aab0ecff1e3d93476a2e

Contents?: true

Size: 1.84 KB

Versions: 7

Compression:

Stored size: 1.84 KB

Contents

# frozen_string_literal: true

require_dependency 'scribo/application_admin_controller'

module Scribo
  module Admin
    class SitesController < ApplicationAdminController
      before_action :set_objects, except: [:index]

      def new
        if params[:template_id]
          url = Scribo.config.templates.find { |t| t[:id] == params[:template_id] }&.[](:url)
          redirect_to(admin_sites_path) && return unless url

          file = Down.download(url)
          @site = Scribo::SiteImportService.new(file.path, scribable: Scribo.config.scribable_for_request(request)).call
          redirect_to(admin_site_contents_path(@site))
          nil
        else
          @site = Scribo::Site.create!(scribable: Scribo.config.scribable_for_request(request))
          Scribo.config.after_site_create(@site)
          redirect_to(admin_site_contents_path(@site))
          nil
        end
      end

      def create
        flash_and_redirect @site.save, admin_site_contents_path(@site), 'Site created successfully',
                           'There were problems creating the site'
      end

      def index
        @sites = Site.adminable
      end

      def destroy
        flash_and_redirect @site.destroy, admin_sites_url, 'Site deleted successfully',
                           'There were problems deleting the site'
      end

      def import
        @sites = Site.adminable
        params[:files].each do |file|
          Scribo::SiteImportService.new(file.path, scribable: Scribo.config.scribable_for_request(request)).call
        end
      end

      def export
        name, data = Scribo::SiteExportService.new(@site).call
        send_data data, type: 'application/zip', filename: name
      end

      private

      def set_objects
        @sites = Site.adminable
        @site = Site.adminable.find(params[:id]) if params[:id]
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
scribo-1.0.44 app/controllers/scribo/admin/sites_controller.rb
scribo-1.0.43 app/controllers/scribo/admin/sites_controller.rb
scribo-1.0.42 app/controllers/scribo/admin/sites_controller.rb
scribo-1.0.41 app/controllers/scribo/admin/sites_controller.rb
scribo-1.0.40 app/controllers/scribo/admin/sites_controller.rb
scribo-1.0.39 app/controllers/scribo/admin/sites_controller.rb
scribo-1.0.38 app/controllers/scribo/admin/sites_controller.rb