Class: ActiveCanvas::Admin::PagesController

Inherits:
ApplicationController show all
Includes:
TailwindCompilation
Defined in:
app/controllers/active_canvas/admin/pages_controller.rb

Instance Method Summary collapse

Instance Method Details

#contentObject



47
48
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 47

def content
end

#createObject



24
25
26
27
28
29
30
31
32
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 24

def create
  @page = ActiveCanvas::Page.new(page_params)

  if @page.save
    redirect_to admin_page_path(@page), notice: "Page was successfully created."
  else
    render :new, status: :unprocessable_entity
  end
end

#destroyObject



42
43
44
45
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 42

def destroy
  @page.destroy
  redirect_to admin_pages_path, notice: "Page was successfully deleted."
end

#editObject



21
22
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 21

def edit
end

#editorObject



58
59
60
61
62
63
64
65
66
67
68
69
70
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 58

def editor
  respond_to do |format|
    format.html { render layout: "active_canvas/admin/editor" }
    format.json do
      render json: {
        content: @page.content,
        content_css: @page.content_css,
        content_js: @page.content_js,
        content_components: @page.content_components
      }
    end
  end
end

#indexObject



8
9
10
11
12
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 8

def index
  @pages = ActiveCanvas::Page.includes(:page_type).order(created_at: :desc)
  @media_count = ActiveCanvas::Media.count
  @media_total_size = ActiveCanvas::Media.sum(:byte_size)
end

#newObject



17
18
19
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 17

def new
  @page = ActiveCanvas::Page.new(page_type: ActiveCanvas::PageType.default)
end

#save_editorObject



72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 72

def save_editor
  content_changed = @page.content != editor_params[:content]
  Rails.logger.info "[ActiveCanvas::PagesController] save_editor for page ##{@page.id}"
  Rails.logger.info "[ActiveCanvas::PagesController]   content_changed: #{content_changed}"

  if @page.update(editor_params)
    tailwind_info = compile_tailwind_if_needed(content_changed) do
      compiled_css = ActiveCanvas::TailwindCompiler.compile_for_page(@page)
      @page.update_columns(compiled_tailwind_css: compiled_css, tailwind_compiled_at: Time.current)
      compiled_css
    end

    respond_to do |format|
      format.html { redirect_to editor_admin_page_path(@page), notice: "Page saved successfully." }
      format.json do
        render json: {
          success: true,
          message: "Page saved successfully.",
          tailwind: tailwind_info
        }
      end
    end
  else
    respond_to do |format|
      format.html { render :editor, layout: "active_canvas/admin/editor", status: :unprocessable_entity }
      format.json { render json: { success: false, errors: @page.errors.full_messages }, status: :unprocessable_entity }
    end
  end
end

#showObject



14
15
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 14

def show
end

#updateObject



34
35
36
37
38
39
40
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 34

def update
  if @page.update(page_params)
    redirect_to admin_page_path(@page), notice: "Page was successfully updated."
  else
    render :edit, status: :unprocessable_entity
  end
end

#update_contentObject



50
51
52
53
54
55
56
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 50

def update_content
  if @page.update(params.require(:page).permit(:content))
    redirect_to content_admin_page_path(@page), notice: "Content saved."
  else
    render :content, status: :unprocessable_entity
  end
end

#versionsObject



102
103
104
# File 'app/controllers/active_canvas/admin/pages_controller.rb', line 102

def versions
  @versions = @page.versions.recent.limit(50)
end