Skip to content

Commit

Permalink
add newsletters|sections|preview controller and views
Browse files Browse the repository at this point in the history
  • Loading branch information
fwolfst committed Sep 26, 2019
1 parent d43d014 commit 008688c
Show file tree
Hide file tree
Showing 23 changed files with 567 additions and 1 deletion.
74 changes: 74 additions & 0 deletions app/controllers/newsletters_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,74 @@
class NewslettersController < ApplicationController
before_action :set_newsletter, only: [:show, :edit, :update, :destroy]

# GET /newsletters
# GET /newsletters.json
def index
@newsletters = Newsletter.all
end

# GET /newsletters/1
# GET /newsletters/1.json
def show
end

# GET /newsletters/new
def new
@newsletter = Newsletter.new
end

# GET /newsletters/1/edit
def edit
end

# POST /newsletters
# POST /newsletters.json
def create
@newsletter = Newsletter.new(newsletter_params)

respond_to do |format|
if @newsletter.save
format.html { redirect_to @newsletter, notice: 'Newsletter was successfully created.' }
format.json { render :show, status: :created, location: @newsletter }
else
format.html { render :new }
format.json { render json: @newsletter.errors, status: :unprocessable_entity }
end
end
end

# PATCH/PUT /newsletters/1
# PATCH/PUT /newsletters/1.json
def update
respond_to do |format|
if @newsletter.update(newsletter_params)
format.html { redirect_to @newsletter, notice: 'Newsletter was successfully updated.' }
format.json { render :show, status: :ok, location: @newsletter }
else
format.html { render :edit }
format.json { render json: @newsletter.errors, status: :unprocessable_entity }
end
end
end

# DELETE /newsletters/1
# DELETE /newsletters/1.json
def destroy
@newsletter.destroy
respond_to do |format|
format.html { redirect_to newsletters_url, notice: 'Newsletter was successfully destroyed.' }
format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_newsletter
@newsletter = Newsletter.find(params[:id])
end

# Never trust parameters from the scary internet, only allow the white list through.
def newsletter_params
params.require(:newsletter).permit(:name, :header)
end
end
14 changes: 14 additions & 0 deletions app/controllers/previews_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
class PreviewsController < ApplicationController
layout "preview"
before_action :set_newsletter

def show
render "show2"
end

private

def set_newsletter
@newsletter = Newsletter.find params[:newsletter_id]
end
end
80 changes: 80 additions & 0 deletions app/controllers/sections_controller.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
class SectionsController < ApplicationController
before_action :set_section, only: [:show, :edit, :update, :destroy]
before_action :set_newsletter, only: [:new, :create]

# GET /sections
# GET /sections.json
def index
@sections = Section.all
end

# GET /sections/1
# GET /sections/1.json
def show
end

# GET /sections/new
def new
@section = @newsletter.sections.new
end

# GET /sections/1/edit
def edit
end

# POST /sections
# POST /sections.json
def create
@section = @newsletter.sections.new(section_params)

respond_to do |format|
if @section.save
format.html { redirect_to [@newsletter, @section], notice: 'Section was successfully created.' }
format.json { render :show, status: :created, location: [@newsletter, @section] }
else
format.html { render :new }
format.json { render json: @section.errors, status: :unprocessable_entity }
end
end
end

# PATCH/PUT /sections/1
# PATCH/PUT /sections/1.json
def update
respond_to do |format|
if @section.update(section_params)
format.html { redirect_to [@section.newsletter, @section], notice: 'Section was successfully updated.' }
format.json { render :show, status: :ok, location: @section }
else
format.html { render :edit }
format.json { render json: @section.errors, status: :unprocessable_entity }
end
end
end

# DELETE /sections/1
# DELETE /sections/1.json
def destroy
@section.destroy
respond_to do |format|
format.html { redirect_to sections_url, notice: 'Section was successfully destroyed.' }
format.json { head :no_content }
end
end

private
# Use callbacks to share common setup or constraints between actions.
def set_section
@section = Section.find(params[:id])
end

def set_newsletter
@newsletter = Newsletter.find(params[:newsletter_id])
end


# Never trust parameters from the scary internet, only allow the white list through.
def section_params
params.require(:section).permit(:heading, :content, :image)
end
end
11 changes: 11 additions & 0 deletions app/views/layouts/preview.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
!!!
%html
%head
%meta{:content => "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
%title Newslater
= csrf_meta_tags
= csp_meta_tag
-#= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload'
%body
= yield

23 changes: 23 additions & 0 deletions app/views/newsletters/_form.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
= form_with(model: newsletter, local: true) do |form|
- if newsletter.errors.any?
#error_explanation
%h2
= pluralize(newsletter.errors.count, "error")
prohibited this newsletter from being saved:
%ul
- newsletter.errors.full_messages.each do |message|
%li= message
.field
= form.label :name
= form.text_field :name
.field
= form.label :header
= form.text_field :header

%div
%ul
- newsletter.sections.order(order: :asc).each do |section|
%li= section.heading

.actions
= form.submit
2 changes: 2 additions & 0 deletions app/views/newsletters/_newsletter.json.jbuilder
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
json.extract! newsletter, :id, :name, :header, :created_at, :updated_at
json.url newsletter_url(newsletter, format: :json)
5 changes: 5 additions & 0 deletions app/views/newsletters/edit.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
%h1 Editing Newsletter
= render 'form', newsletter: @newsletter
= link_to 'Show', @newsletter
|
= link_to 'Back', newsletters_path
21 changes: 21 additions & 0 deletions app/views/newsletters/index.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
%p#notice= notice
%h1 Newsletters
%table
%thead
%tr
%th Name
%th Header
%th{:colspan => "6"}
%tbody
- @newsletters.each do |newsletter|
%tr
%td= newsletter.name
%td= newsletter.header
%td= newsletter.sections.count
%td= link_to 'Add Section', new_newsletter_section_path(newsletter)
%td= link_to 'Preview', newsletter_preview_path(newsletter_id: newsletter)
%td= link_to 'Show', newsletter
%td= link_to 'Edit', edit_newsletter_path(newsletter)
%td= link_to 'Destroy', newsletter, method: :delete, data: { confirm: 'Are you sure?' }
%br/
= link_to 'New Newsletter', new_newsletter_path
1 change: 1 addition & 0 deletions app/views/newsletters/index.json.jbuilder
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
json.array! @newsletters, partial: "newsletters/newsletter", as: :newsletter
3 changes: 3 additions & 0 deletions app/views/newsletters/new.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
%h1 New Newsletter
= render 'form', newsletter: @newsletter
= link_to 'Back', newsletters_path
20 changes: 20 additions & 0 deletions app/views/newsletters/show.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
%p#notice= notice
%p
%strong Name:
= @newsletter.name
%p
%strong Header:
= @newsletter.header

%div
%ul
- @newsletter.sections.order(order: :asc).each do |section|
%li= link_to section.heading, [@newsletter, section]

= link_to 'Edit', edit_newsletter_path(@newsletter)
|
= link_to 'Add section', new_newsletter_section_path(@newsletter)
|
= link_to 'Back', newsletters_path
|
= link_to 'Preview', newsletter_preview_path(newsletter_id: @newsletter)
1 change: 1 addition & 0 deletions app/views/newsletters/show.json.jbuilder
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
json.partial! "newsletters/newsletter", newsletter: @newsletter
5 changes: 5 additions & 0 deletions app/views/previews/show.html.haml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
= @newsletter.name
= @newsletter.header
= @newsletter.sections.order(order: :asc).each do |section|
= section.heading
= section.content
Loading

0 comments on commit 008688c

Please sign in to comment.