pulitzer 0.15.11 → 0.15.12

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 2123b36fd884f5cefcafa3daa6cca28074b8fbc8
4
- data.tar.gz: 6b4950f08d1d6765095d257af344800e307e0302
3
+ metadata.gz: 6101c5c502e2b5c671157957f4906705092e3d1e
4
+ data.tar.gz: 1d8763814827c1df4b8325146e0f122a64e84e63
5
5
  SHA512:
6
- metadata.gz: 6c0063720c533ed0fcbefd05cb0f07fe927bacc77433e11ca0666f9b6685990d354cca1f013069da673eea2cc715abb44d50321bbf6a68a15fa8a81b234b2ef0
7
- data.tar.gz: 7bf9e068e479f688dd1d057d80206ea4ba7015dd076dff11cebf74496ce038662c9061481e76ff826fe195dfea4ee2069d4bbd871391c83d1a2e7c400414425e
6
+ metadata.gz: 35f815967cbf623a1aee11a07becc482fad54bdcd5b847fdca6fb204375737818734e5f38cda2ecb160b62daa69632367d6836a8d49239b5998a49f39c5ecbf8
7
+ data.tar.gz: e5fe46974a637f3833c5c8aa5d1156a750d246a7bb83cb8b2ac5267a1a325dc88d829b54dca418b8643dd806346e1bcb0446f8db11c299a2c2d33b7081e334f2
@@ -45,6 +45,11 @@ class Pulitzer::PartialsController < Pulitzer::ApplicationController
45
45
  head :ok
46
46
  end
47
47
 
48
+ def upgrade
49
+ @partial = UpgradePartialVersion.new(@partial).call
50
+ render partial: 'show', locals: { partial: @partial }
51
+ end
52
+
48
53
  protected
49
54
 
50
55
  def partial_params
@@ -0,0 +1,24 @@
1
+ class Pulitzer::PartialsController::UpgradePartialVersion
2
+
3
+ def initialize(partial)
4
+ @partial = partial
5
+ @free_form_section = partial.free_form_section
6
+ end
7
+
8
+ def call
9
+ most_recent_partial_version = @partial.post_type_version.post_type.most_recent_published_post_type_version
10
+ new_partial = @free_form_section.partials.create(label: @partial.label, post_type_version_id: most_recent_partial_version.id)
11
+ Pulitzer::CreatePartialContentElements.new(new_partial).call
12
+ content_elements = new_partial.content_elements.to_a
13
+ content_elements.each do |ce|
14
+ old_ce = @partial.content_elements.find_by(label: ce.label)
15
+ if old_ce
16
+ cloned = old_ce.clone_me
17
+ cloned.update(post_type_content_element_type_id: ce.post_type_content_element_type_id, partial_id: ce.partial_id)
18
+ ce.destroy
19
+ end
20
+ end
21
+ @partial.destroy
22
+ new_partial
23
+ end
24
+ end
@@ -7,7 +7,7 @@ module Pulitzer
7
7
  belongs_to :sequence_flow_style
8
8
  belongs_to :arrangement_style
9
9
  has_one :post_type, through: :post_type_version
10
-
10
+
11
11
  has_many :content_elements, dependent: :destroy
12
12
 
13
13
  delegate :name, :post_type_content_element_types, :has_display?, :post_type_id, :version_number, to: :post_type_version
@@ -54,7 +54,7 @@ module Pulitzer
54
54
  end
55
55
 
56
56
  def folder_path
57
- name.downcase.gsub(/ /,'_').gsub(/\W/,'')
57
+ name.downcase.gsub(/ /,'_').gsub(/\W/,'')
58
58
  end
59
59
 
60
60
  def version_folder
@@ -86,5 +86,8 @@ module Pulitzer
86
86
  my_clone
87
87
  end
88
88
 
89
+ def upgradable?
90
+ version_number < (post_type_version&.post_type&.post_type_versions&.published&.maximum(:version_number) || 0)
91
+ end
89
92
  end
90
- end
93
+ end
@@ -16,4 +16,8 @@ class Pulitzer::PostType < ActiveRecord::Base
16
16
  def published_type_version_id
17
17
  published_type_version&.id
18
18
  end
19
+
20
+ def most_recent_published_post_type_version
21
+ post_type_versions&.published&.order(version_number: :desc)&.first
22
+ end
19
23
  end
@@ -17,6 +17,8 @@ class Pulitzer::PostTypeVersion < ActiveRecord::Base
17
17
 
18
18
  delegate :name, :kind, :partial?, :template?, :plural, :plural?, to: :post_type
19
19
 
20
+ scope :published, -> { where(status: 'published') }
21
+
20
22
  register_transitions({
21
23
  previewing_service: Preview,
22
24
  publishing_service: Publish,
@@ -52,6 +52,10 @@ module Pulitzer
52
52
  processed_element_count: self.processed_element_count
53
53
  end
54
54
 
55
+ def publishable?
56
+ !empty_required_content_elements? && required_partials?
57
+ end
58
+
55
59
  def empty_required_content_elements?
56
60
  content_elements.required.select{|ce| ce.empty_body?}.any? || free_form_sections.includes(partials: :content_elements).map(&:partials).flatten.map(&:content_elements).flatten.select{|ce| ce.empty_body? && ce.required?}.any?
57
61
  end
@@ -13,6 +13,11 @@
13
13
  <%= render partial: '/pulitzer/shared/drag_handle' %>
14
14
  </div>
15
15
  </div>
16
+ <div class="pulitzer-row margin-bottom">
17
+ <% if partial.upgradable? %>
18
+ <%= ajax_link "Upgrade #{partial.label} to the last partial version", upgrade_partial_path(partial), {class: 'button'}, dom_target(partial), http_method: 'PATCH' %>
19
+ <% end %>
20
+ </div>
16
21
  <div <%= collapsed(dom_id(partial)) %>>
17
22
  <%= render partial: '/pulitzer/content_elements/partial_index', locals: {partial: partial} %>
18
- </div>
23
+ </div>
@@ -39,7 +39,6 @@
39
39
  <% end %>
40
40
  </div>
41
41
  </div>
42
-
43
42
  <% version.all_elements.each do |element| %>
44
43
  <%= render partial: "/pulitzer/#{element.class.table_name.gsub(/pulitzer_/,'')}/show_wrapper", locals: { element: element } %>
45
44
  <% end %>
@@ -47,10 +46,14 @@
47
46
  <%= render partial: 'pulitzer/versions/form', locals: { version: version } %>
48
47
  </div>
49
48
  <div class="preview-link">
50
- <% if @preview_path %>
49
+ <% if @preview_path && version.publishable? %>
51
50
  <%= link_to "Preview", @preview_path, target: '_blank' %>
52
51
  <% else %>
53
- <small>Preview not available</small>
52
+ <small>Preview not available.
53
+ <% if !version.publishable? %>
54
+ Missing required content
55
+ <% end %>
56
+ </small>
54
57
  <% end %>
55
58
  </div>
56
59
  <% end %>
@@ -16,6 +16,9 @@ Pulitzer::Engine.routes.draw do
16
16
  collection do
17
17
  patch :update_all
18
18
  end
19
+ member do
20
+ patch :upgrade
21
+ end
19
22
  end
20
23
 
21
24
  resources :tags
@@ -1,3 +1,3 @@
1
1
  module Pulitzer
2
- VERSION = '0.15.11'
2
+ VERSION = '0.15.12'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pulitzer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.15.11
4
+ version: 0.15.12
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Draut
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-07-10 00:00:00.000000000 Z
12
+ date: 2017-07-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails
@@ -545,6 +545,7 @@ files:
545
545
  - app/interactions/pulitzer/create_singleton_post.rb
546
546
  - app/interactions/pulitzer/destroy_post_type_content_elements.rb
547
547
  - app/interactions/pulitzer/destroy_post_type_free_form_sections.rb
548
+ - app/interactions/pulitzer/partials_controller/upgrade_partial_version.rb
548
549
  - app/interactions/pulitzer/post_type_versions_controller/change_state.rb
549
550
  - app/interactions/pulitzer/post_type_versions_controller/clone.rb
550
551
  - app/interactions/pulitzer/post_type_versions_controller/clone_post_with_version_elements.rb