pulitzer 0.14.4 → 0.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/app/controllers/pulitzer/arrangement_styles_controller.rb +1 -3
- data/app/controllers/pulitzer/background_styles_controller.rb +1 -3
- data/app/controllers/pulitzer/free_form_section_types_controller.rb +4 -4
- data/app/controllers/pulitzer/justification_styles_controller.rb +1 -3
- data/app/controllers/pulitzer/partial_types_controller.rb +0 -1
- data/app/controllers/pulitzer/post_type_content_element_types_controller.rb +4 -4
- data/app/controllers/pulitzer/post_type_versions_controller.rb +54 -0
- data/app/controllers/pulitzer/post_types_controller.rb +1 -5
- data/app/controllers/pulitzer/posts_controller.rb +3 -3
- data/app/controllers/pulitzer/sequence_flow_styles_controller.rb +1 -3
- data/app/controllers/pulitzer/versions_controller.rb +8 -2
- data/app/helpers/pulitzer/posts_helper.rb +7 -7
- data/app/interactions/pulitzer/create_free_form_section_partials.rb +2 -2
- data/app/interactions/pulitzer/create_post_type_content_elements.rb +3 -3
- data/app/interactions/pulitzer/create_post_type_free_form_sections.rb +3 -3
- data/app/interactions/pulitzer/create_singleton_post.rb +6 -6
- data/app/interactions/pulitzer/destroy_post_type_content_elements.rb +3 -3
- data/app/interactions/pulitzer/destroy_post_type_free_form_sections.rb +3 -3
- data/app/interactions/pulitzer/post_type_versions_controller/change_state.rb +15 -0
- data/app/interactions/pulitzer/post_type_versions_controller/create.rb +18 -0
- data/app/interactions/pulitzer/post_types_controller/create_singleton_post.rb +15 -0
- data/app/interactions/pulitzer/post_types_controller/create_template_version.rb +12 -0
- data/app/interactions/pulitzer/update_post_type_content_elements.rb +4 -4
- data/app/interactions/pulitzer/update_post_type_free_form_sections.rb +3 -3
- data/app/interactions/pulitzer/update_singleton_post.rb +6 -4
- data/app/models/pulitzer/arrangement_style.rb +1 -1
- data/app/models/pulitzer/background_style.rb +1 -1
- data/app/models/pulitzer/free_form_section_type.rb +1 -1
- data/app/models/pulitzer/justification_style.rb +1 -1
- data/app/models/pulitzer/partial.rb +8 -3
- data/app/models/pulitzer/post.rb +10 -2
- data/app/models/pulitzer/post_type.rb +10 -39
- data/app/models/pulitzer/post_type_content_element_type.rb +1 -1
- data/app/models/pulitzer/post_type_element.rb +1 -1
- data/app/models/pulitzer/post_type_version.rb +84 -0
- data/app/models/pulitzer/sequence_flow_style.rb +1 -1
- data/app/services/pulitzer/post_type_version/preview.rb +30 -0
- data/app/services/pulitzer/post_type_version/publish.rb +38 -0
- data/app/services/pulitzer/post_type_version/retire.rb +20 -0
- data/app/views/pulitzer/arrangement_styles/_new.html.erb +3 -3
- data/app/views/pulitzer/arrangement_styles/_show.html.erb +10 -6
- data/app/views/pulitzer/background_styles/_new.html.erb +3 -3
- data/app/views/pulitzer/background_styles/_show.html.erb +10 -6
- data/app/views/pulitzer/free_form_section_types/_new.html.erb +3 -3
- data/app/views/pulitzer/justification_styles/_new.html.erb +3 -3
- data/app/views/pulitzer/justification_styles/_show.html.erb +10 -6
- data/app/views/pulitzer/partials/_new.html.erb +8 -8
- data/app/views/pulitzer/post_type_content_element_types/_form.html.erb +0 -2
- data/app/views/pulitzer/post_type_content_element_types/_form_fields.html.erb +2 -2
- data/app/views/pulitzer/post_type_content_element_types/_new.html.erb +2 -2
- data/app/views/pulitzer/post_type_content_element_types/_show.html.erb +6 -2
- data/app/views/pulitzer/post_type_versions/_index.html.erb +15 -0
- data/app/views/pulitzer/post_type_versions/_show.html.erb +20 -0
- data/app/views/pulitzer/post_type_versions/_show_wrapper.html.erb +3 -0
- data/app/views/pulitzer/{post_types → post_type_versions}/_template.html.erb +34 -34
- data/app/views/pulitzer/post_types/_show.html.erb +3 -9
- data/app/views/pulitzer/post_types/index.html.erb +13 -10
- data/app/views/pulitzer/posts/_breadcrumbs.html.erb +4 -0
- data/app/views/pulitzer/posts/_edit.html.erb +5 -4
- data/app/views/pulitzer/posts/_index.html.erb +3 -3
- data/app/views/pulitzer/posts/_new.html.erb +1 -1
- data/app/views/pulitzer/posts/_show.html.erb +1 -1
- data/app/views/pulitzer/posts/_show_slug.html.erb +1 -1
- data/app/views/pulitzer/sequence_flow_styles/_new.html.erb +3 -3
- data/app/views/pulitzer/sequence_flow_styles/_show.html.erb +10 -6
- data/config/routes.rb +6 -4
- data/db/migrate/20170515230633_create_post_type_version.rb +9 -0
- data/db/migrate/20170515232938_reconnect_post_type_to_post.rb +13 -0
- data/lib/generators/pulitzer/post_type_generator.rb +24 -4
- data/lib/pulitzer.rb +1 -0
- data/lib/pulitzer/controller_helpers.rb +9 -0
- data/lib/pulitzer/version.rb +1 -1
- metadata +19 -4
- data/app/interactions/pulitzer/destroy_free_form_section_partials.rb +0 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0df49a7939d9ace02ebfe847087de3131b1a965a
|
4
|
+
data.tar.gz: f4f23a63b4f53dece53b66a4f0ed29a7952c1af1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6bc0696eac392143c15aad0104e106e86802382dce526bf2a0c098e1ff57a4acd5d3b88df9c238e57e0403f98b0f5c74fcc05bde2d83bb97c02f00b93edd4d37
|
7
|
+
data.tar.gz: fc751dcec13a5765799467e27c3d516bb26526fe1e9b93b942a61028561badcfb8df8e07111ba43eff832f0a03298775e13229de4556bbe7546936a06d179b33
|
@@ -3,7 +3,6 @@ class Pulitzer::ArrangementStylesController < Pulitzer::ApplicationController
|
|
3
3
|
|
4
4
|
def new
|
5
5
|
@arrangement_style = Pulitzer::ArrangementStyle.new(arrangement_style_params)
|
6
|
-
@post_type = @arrangement_style.post_type
|
7
6
|
render partial: 'new', locals: {arrangement_style: @arrangement_style}
|
8
7
|
end
|
9
8
|
|
@@ -12,8 +11,7 @@ class Pulitzer::ArrangementStylesController < Pulitzer::ApplicationController
|
|
12
11
|
if @arrangement_style.errors.empty?
|
13
12
|
render partial: 'show_wrapper', locals: {arrangement_style: @arrangement_style}
|
14
13
|
else
|
15
|
-
|
16
|
-
render partial: 'new', locals: {arrangement_style: @arrangement_style}
|
14
|
+
render partial: 'new', locals: {arrangement_style: @arrangement_style}, status: 409
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
@@ -3,7 +3,6 @@ class Pulitzer::BackgroundStylesController < Pulitzer::ApplicationController
|
|
3
3
|
|
4
4
|
def new
|
5
5
|
@background_style = Pulitzer::BackgroundStyle.new(background_style_params)
|
6
|
-
@post_type = @background_style.post_type
|
7
6
|
render partial: 'new', locals: {background_style: @background_style}
|
8
7
|
end
|
9
8
|
|
@@ -12,8 +11,7 @@ class Pulitzer::BackgroundStylesController < Pulitzer::ApplicationController
|
|
12
11
|
if @background_style.errors.empty?
|
13
12
|
render partial: 'show_wrapper', locals: {background_style: @background_style}
|
14
13
|
else
|
15
|
-
|
16
|
-
render partial: 'new', locals: {background_style: @background_style}
|
14
|
+
render partial: 'new', locals: {background_style: @background_style}, status: 409
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
@@ -2,14 +2,14 @@ class Pulitzer::FreeFormSectionTypesController < Pulitzer::ApplicationController
|
|
2
2
|
before_action :get_ffst, only: [:show, :edit, :update, :destroy]
|
3
3
|
|
4
4
|
def new
|
5
|
-
@
|
6
|
-
@ffst = @
|
5
|
+
@post_type_version = Pulitzer::PostTypeVersion.find(params[:post_type_version_id])
|
6
|
+
@ffst = @post_type_version.free_form_section_types.build
|
7
7
|
render partial: 'new', locals: {ffst: @ffst}
|
8
8
|
end
|
9
9
|
|
10
10
|
def create
|
11
|
-
@
|
12
|
-
@ffst = @
|
11
|
+
@post_type_version = Pulitzer::PostTypeVersion.find(ffst_params[:post_type_version_id])
|
12
|
+
@ffst = @post_type_version.free_form_section_types.create(ffst_params)
|
13
13
|
Pulitzer::CreatePostTypeFreeFormSections.new(@ffst).call
|
14
14
|
render partial: 'show_wrapper', locals: {ffst: @ffst}
|
15
15
|
end
|
@@ -3,7 +3,6 @@ class Pulitzer::JustificationStylesController < Pulitzer::ApplicationController
|
|
3
3
|
|
4
4
|
def new
|
5
5
|
@justification_style = Pulitzer::JustificationStyle.new(justification_style_params)
|
6
|
-
@post_type = @justification_style.post_type
|
7
6
|
render partial: 'new', locals: {justification_style: @justification_style}
|
8
7
|
end
|
9
8
|
|
@@ -12,8 +11,7 @@ class Pulitzer::JustificationStylesController < Pulitzer::ApplicationController
|
|
12
11
|
if @justification_style.errors.empty?
|
13
12
|
render partial: 'show_wrapper', locals: {justification_style: @justification_style}
|
14
13
|
else
|
15
|
-
|
16
|
-
render partial: 'new', locals: {justification_style: @justification_style}
|
14
|
+
render partial: 'new', locals: {justification_style: @justification_style}, status: 409
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
@@ -2,14 +2,14 @@ class Pulitzer::PostTypeContentElementTypesController < Pulitzer::ApplicationCon
|
|
2
2
|
before_action :get_ptcet, only: [:show, :edit, :update, :destroy]
|
3
3
|
|
4
4
|
def new
|
5
|
-
@
|
6
|
-
@ptcet = @
|
5
|
+
@post_type_version = Pulitzer::PostTypeVersion.find(params[:post_type_version_id])
|
6
|
+
@ptcet = @post_type_version.post_type_content_element_types.build
|
7
7
|
render partial: 'new', locals: {ptcet: @ptcet}
|
8
8
|
end
|
9
9
|
|
10
10
|
def create
|
11
|
-
@
|
12
|
-
@ptcet = @
|
11
|
+
@post_type_version = Pulitzer::PostTypeVersion.find(ptcet_params[:post_type_version_id])
|
12
|
+
@ptcet = @post_type_version.post_type_content_element_types.create(ptcet_params)
|
13
13
|
Pulitzer::CreatePostTypeContentElements.new(@ptcet).call
|
14
14
|
render partial: 'show_wrapper', locals: {ptcet: @ptcet}
|
15
15
|
end
|
@@ -0,0 +1,54 @@
|
|
1
|
+
class Pulitzer::PostTypeVersionsController < Pulitzer::ApplicationController
|
2
|
+
before_filter :get_post_type_version, except: [:index, :new, :create]
|
3
|
+
|
4
|
+
def index
|
5
|
+
@post_type = Pulitzer::PostType.find(params[:post_type_id])
|
6
|
+
@post_type_versions = @post_type.post_type_versions
|
7
|
+
render_ajax
|
8
|
+
end
|
9
|
+
|
10
|
+
def create
|
11
|
+
@post_type_version = Create.new(post_type_version_params).call
|
12
|
+
render partial: 'show_wrapper', locals: {post_type_version: @post_type_version}
|
13
|
+
end
|
14
|
+
|
15
|
+
def show
|
16
|
+
render partial: 'show', locals: {post_type_version: @post_type_version}
|
17
|
+
end
|
18
|
+
|
19
|
+
def destroy
|
20
|
+
@post_type_version.destroy
|
21
|
+
render nothing: true
|
22
|
+
end
|
23
|
+
|
24
|
+
def template
|
25
|
+
render_ajax locals: {post_type_version: @post_type_version}
|
26
|
+
end
|
27
|
+
|
28
|
+
def change_state
|
29
|
+
Pulitzer::PostTypeVersionsController::ChangeState.new(@post_type_version,params[:state_change]).call
|
30
|
+
if @post_type_version.errors.empty?
|
31
|
+
render partial: 'show', locals: {post_type_version: @post_type_version}
|
32
|
+
else
|
33
|
+
render json: {
|
34
|
+
flash_message: @post_type_version.errors.full_messages.join('<br>'),
|
35
|
+
html: render_to_string(partial: 'show', locals: {post_type_version: @post_type_version}) },
|
36
|
+
status: :conflict
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
protected
|
41
|
+
|
42
|
+
def post_type_version_params
|
43
|
+
params[:post_type_version].permit!
|
44
|
+
end
|
45
|
+
|
46
|
+
def post_params_name
|
47
|
+
params[:post_type_version][:name]
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_post_type_version
|
51
|
+
@post_type_version = Pulitzer::PostTypeVersion.find(params[:id])
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
@@ -20,7 +20,7 @@ class Pulitzer::PostTypesController < Pulitzer::ApplicationController
|
|
20
20
|
|
21
21
|
def create
|
22
22
|
@post_type = Pulitzer::PostType.create(post_type_params)
|
23
|
-
|
23
|
+
CreateTemplateVersion.new(@post_type).call
|
24
24
|
render partial: 'show_wrapper', locals: {post_type: @post_type}
|
25
25
|
end
|
26
26
|
|
@@ -28,10 +28,6 @@ class Pulitzer::PostTypesController < Pulitzer::ApplicationController
|
|
28
28
|
render partial: 'show', locals: {post_type: @post_type}
|
29
29
|
end
|
30
30
|
|
31
|
-
def template
|
32
|
-
render_ajax locals: {post_type: @post_type}
|
33
|
-
end
|
34
|
-
|
35
31
|
def edit
|
36
32
|
render partial: 'form', locals: {post_type: @post_type}
|
37
33
|
end
|
@@ -4,13 +4,13 @@ class Pulitzer::PostsController < Pulitzer::ApplicationController
|
|
4
4
|
before_action :get_version, only: [:edit_slug, :show_slug, :update_slug]
|
5
5
|
|
6
6
|
def index
|
7
|
-
@
|
8
|
-
@posts = Pulitzer::Post.where(
|
7
|
+
@post_type_version = Pulitzer::PostTypeVersion.find params[:post_type_version_id]
|
8
|
+
@posts = Pulitzer::Post.where(post_type_version_id: @post_type_version).order(id: :desc)
|
9
9
|
render_ajax
|
10
10
|
end
|
11
11
|
|
12
12
|
def new
|
13
|
-
@post = Pulitzer::Post.new(
|
13
|
+
@post = Pulitzer::Post.new(post_type_version_id: params[:post_type_version_id])
|
14
14
|
render_ajax locals: { post: @post }
|
15
15
|
end
|
16
16
|
|
@@ -3,7 +3,6 @@ class Pulitzer::SequenceFlowStylesController < Pulitzer::ApplicationController
|
|
3
3
|
|
4
4
|
def new
|
5
5
|
@sequence_flow_style = Pulitzer::SequenceFlowStyle.new(sequence_flow_style_params)
|
6
|
-
@post_type = @sequence_flow_style.post_type
|
7
6
|
render partial: 'new', locals: {sequence_flow_style: @sequence_flow_style}
|
8
7
|
end
|
9
8
|
|
@@ -12,8 +11,7 @@ class Pulitzer::SequenceFlowStylesController < Pulitzer::ApplicationController
|
|
12
11
|
if @sequence_flow_style.errors.empty?
|
13
12
|
render partial: 'show_wrapper', locals: {sequence_flow_style: @sequence_flow_style}
|
14
13
|
else
|
15
|
-
|
16
|
-
render partial: 'new', locals: {sequence_flow_style: @sequence_flow_style}
|
14
|
+
render partial: 'new', locals: {sequence_flow_style: @sequence_flow_style}, status: 409
|
17
15
|
end
|
18
16
|
end
|
19
17
|
|
@@ -3,8 +3,14 @@ class Pulitzer::VersionsController < Pulitzer::ApplicationController
|
|
3
3
|
|
4
4
|
def edit
|
5
5
|
if @version.preview?
|
6
|
-
route
|
7
|
-
|
6
|
+
route = "#{Pulitzer.preview_namespace}_#{@post.post_type.name.parameterize('_')}_path"
|
7
|
+
if main_app.respond_to?(route)
|
8
|
+
if @post.plural?
|
9
|
+
@preview_path = main_app.public_send(route, @post.slug, {version_number: @post.post_type_version.version_number})
|
10
|
+
else
|
11
|
+
@preview_path = main_app.public_send(route, {version_number: @post.post_type_version.version_number})
|
12
|
+
end
|
13
|
+
end
|
8
14
|
end
|
9
15
|
render_ajax locals: { version: @version }
|
10
16
|
end
|
@@ -1,17 +1,17 @@
|
|
1
1
|
module Pulitzer
|
2
2
|
module PostsHelper
|
3
3
|
|
4
|
-
def link_to_posts(
|
5
|
-
if
|
6
|
-
ajax_link plural_label, posts_path(
|
4
|
+
def link_to_posts(post_type_version, plural_label, singular_label)
|
5
|
+
if post_type_version.plural?
|
6
|
+
ajax_link plural_label, posts_path(post_type_version_id: post_type_version.id), {}, '[data-tab-id="templates"]'
|
7
7
|
else
|
8
|
-
ajax_link singular_label, edit_post_path(
|
8
|
+
ajax_link singular_label, edit_post_path(post_type_version.singleton_post), {}, '[data-tab-id="templates"]'
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
12
|
-
def link_back_to_posts(
|
13
|
-
if
|
14
|
-
ajax_link plural_label, pulitzer.posts_path(
|
12
|
+
def link_back_to_posts(post_type_version, plural_label, singular_label)
|
13
|
+
if post_type_version.plural?
|
14
|
+
ajax_link plural_label, pulitzer.posts_path(post_type_version_id: post_type_version.id), {}, '[data-tab-id="templates"]'
|
15
15
|
else
|
16
16
|
ajax_link singular_label, pulitzer.post_types_path, {}, '[data-tab-id="templates"]'
|
17
17
|
end
|
@@ -6,8 +6,8 @@ class Pulitzer::CreateFreeFormSectionPartials
|
|
6
6
|
|
7
7
|
def call
|
8
8
|
free_form_section_type = @partial_type.free_form_section_type
|
9
|
-
|
10
|
-
|
9
|
+
post_type_version = free_form_section_type.post_type_version
|
10
|
+
post_type_version.posts.each do |post|
|
11
11
|
if post.preview_version
|
12
12
|
free_form_section = post.preview_version.free_form_sections.find_by(name: free_form_section_type.name)
|
13
13
|
partial = free_form_section.partials.create do |p|
|
@@ -1,13 +1,13 @@
|
|
1
1
|
class Pulitzer::CreatePostTypeContentElements
|
2
|
-
attr_accessor :
|
2
|
+
attr_accessor :post_type_version, :ptcet, :old_label
|
3
3
|
|
4
4
|
def initialize(ptcet)
|
5
|
-
self.
|
5
|
+
self.post_type_version = ptcet.post_type_version
|
6
6
|
self.ptcet = ptcet
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
|
10
|
+
post_type_version.posts.each do |post|
|
11
11
|
post.preview_version.content_elements.create do |ce|
|
12
12
|
ce.label = ptcet.label
|
13
13
|
ce.height = ptcet.height
|
@@ -1,13 +1,13 @@
|
|
1
1
|
class Pulitzer::CreatePostTypeFreeFormSections
|
2
|
-
attr_accessor :
|
2
|
+
attr_accessor :post_type_version, :ffst, :old_label
|
3
3
|
|
4
4
|
def initialize(ffst)
|
5
|
-
self.
|
5
|
+
self.post_type_version = ffst.post_type_version
|
6
6
|
self.ffst = ffst
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
|
10
|
+
post_type_version.posts.each do |post|
|
11
11
|
if post.preview_version
|
12
12
|
post.preview_version.free_form_sections.create do |ffs|
|
13
13
|
ffs.name = ffst.name
|
@@ -1,14 +1,14 @@
|
|
1
1
|
class Pulitzer::CreateSingletonPost
|
2
|
-
attr_accessor :
|
2
|
+
attr_accessor :post_type_version, :title
|
3
3
|
|
4
|
-
def initialize(
|
5
|
-
self.
|
6
|
-
self.title =
|
4
|
+
def initialize(post_type_version)
|
5
|
+
self.post_type_version = post_type_version
|
6
|
+
self.title = post_type_version.name
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
if
|
11
|
-
singleton_post =
|
10
|
+
if post_type_version.singular? && !post_type_version.posts.any?
|
11
|
+
singleton_post = post_type_version.posts.create(title: title)
|
12
12
|
Pulitzer::CreatePostContentElements.new(singleton_post).call
|
13
13
|
end
|
14
14
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
class Pulitzer::DestroyPostTypeContentElements
|
2
|
-
attr_accessor :
|
2
|
+
attr_accessor :post_type_version, :ptcet
|
3
3
|
|
4
4
|
def initialize(ptcet)
|
5
|
-
self.
|
5
|
+
self.post_type_version = ptcet.post_type_version
|
6
6
|
self.ptcet = ptcet
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
|
10
|
+
post_type_version.posts.each do |post|
|
11
11
|
post.preview_version.content_elements.where(label: ptcet.label).each do |ce|
|
12
12
|
ce.destroy
|
13
13
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
class Pulitzer::DestroyPostTypeFreeFormSections
|
2
|
-
attr_accessor :
|
2
|
+
attr_accessor :post_type_version, :ffst
|
3
3
|
|
4
4
|
def initialize(ffst)
|
5
|
-
self.
|
5
|
+
self.post_type_version = ffst.post_type_version
|
6
6
|
self.ffst = ffst
|
7
7
|
end
|
8
8
|
|
9
9
|
def call
|
10
|
-
|
10
|
+
post_type_version.posts.each do |post|
|
11
11
|
post.preview_version.free_form_sections.where(free_form_section_type_id: ffst.id).each do |ffs|
|
12
12
|
ffs.destroy
|
13
13
|
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Pulitzer::PostTypeVersionsController::ChangeState
|
2
|
+
|
3
|
+
def initialize(ptv,state_change)
|
4
|
+
@ptv, @state_change = ptv, state_change.to_sym
|
5
|
+
end
|
6
|
+
|
7
|
+
def call
|
8
|
+
sanitize_state_change or return false
|
9
|
+
@ptv.send @state_change
|
10
|
+
end
|
11
|
+
|
12
|
+
def sanitize_state_change
|
13
|
+
return [:publish,:retire,:preview].include? @state_change
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
class Pulitzer::PostTypeVersionsController::Create
|
2
|
+
|
3
|
+
def initialize(params)
|
4
|
+
@params = params.to_h.to_hash.symbolize_keys
|
5
|
+
end
|
6
|
+
|
7
|
+
def call
|
8
|
+
@ptv = Pulitzer::PostTypeVersion.new(@params)
|
9
|
+
@post_type = @ptv.post_type
|
10
|
+
last_version_number = @post_type.post_type_versions.maximum(:version_number) || 0
|
11
|
+
this_version_number = last_version_number + 1
|
12
|
+
@ptv.version_number = this_version_number
|
13
|
+
@ptv.save
|
14
|
+
CreateSingletonPost.new(@ptv).call
|
15
|
+
@ptv
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class Pulitzer::CreateSingletonPost
|
2
|
+
attr_accessor :post_type_version, :title
|
3
|
+
|
4
|
+
def initialize(post_type_version)
|
5
|
+
self.post_type_version = post_type_version
|
6
|
+
self.title = post_type_version.name
|
7
|
+
end
|
8
|
+
|
9
|
+
def call
|
10
|
+
if post_type_version.singular? && !post_type_version.posts.any?
|
11
|
+
singleton_post = post_type_version.posts.create(title: title)
|
12
|
+
Pulitzer::CreatePostContentElements.new(singleton_post).call
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,12 @@
|
|
1
|
+
class Pulitzer::PostTypesController::CreateTemplateVersion
|
2
|
+
|
3
|
+
def initialize(post_type)
|
4
|
+
@post_type = post_type
|
5
|
+
end
|
6
|
+
|
7
|
+
def call
|
8
|
+
post_type_version = @post_type.post_type_versions.create
|
9
|
+
CreateSingletonPost.new(post_type_version).call
|
10
|
+
end
|
11
|
+
|
12
|
+
end
|