pulitzer 0.13.1 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/app/assets/stylesheets/pulitzer.scss +28 -2
  3. data/app/controllers/pulitzer/content_elements_controller.rb +6 -2
  4. data/app/controllers/pulitzer/custom_option_lists_controller.rb +55 -0
  5. data/app/controllers/pulitzer/custom_options_controller.rb +55 -0
  6. data/app/controllers/pulitzer/partial_types_controller.rb +0 -11
  7. data/app/controllers/pulitzer/posts_controller.rb +5 -6
  8. data/app/controllers/pulitzer/styles_controller.rb +42 -0
  9. data/app/helpers/pulitzer/posts_helper.rb +15 -4
  10. data/app/interactions/pulitzer/content_elements_controller/update.rb +21 -0
  11. data/app/models/pulitzer/content_element.rb +63 -8
  12. data/app/models/pulitzer/content_element_type.rb +6 -1
  13. data/app/models/pulitzer/custom_option.rb +6 -0
  14. data/app/models/pulitzer/custom_option_list.rb +10 -0
  15. data/app/models/pulitzer/post_type_content_element_type.rb +58 -2
  16. data/app/models/pulitzer/style.rb +11 -0
  17. data/app/views/pulitzer/content_elements/_clickable_fields.html.erb +31 -0
  18. data/app/views/pulitzer/content_elements/_form.html.erb +1 -3
  19. data/app/views/pulitzer/content_elements/_partial_index.html.erb +1 -1
  20. data/app/views/pulitzer/content_elements/_show.html.erb +11 -20
  21. data/app/views/pulitzer/custom_option_lists/_edit.html.erb +10 -0
  22. data/app/views/pulitzer/custom_option_lists/_index.html.erb +12 -0
  23. data/app/views/pulitzer/custom_option_lists/_new.html.erb +9 -0
  24. data/app/views/pulitzer/custom_option_lists/_show.html.erb +11 -0
  25. data/app/views/pulitzer/custom_option_lists/_show_wrapper.html.erb +3 -0
  26. data/app/views/pulitzer/custom_options/_edit.html.erb +10 -0
  27. data/app/views/pulitzer/custom_options/_fields.html.erb +2 -0
  28. data/app/views/pulitzer/custom_options/_index.html.erb +20 -0
  29. data/app/views/pulitzer/custom_options/_new.html.erb +10 -0
  30. data/app/views/pulitzer/custom_options/_show.html.erb +5 -0
  31. data/app/views/pulitzer/custom_options/_show_wrapper.html.erb +3 -0
  32. data/app/views/pulitzer/free_form_section_types/_show_wrapper.html.erb +1 -1
  33. data/app/views/pulitzer/partial_types/_index.html.erb +1 -1
  34. data/app/views/pulitzer/partials/_index.html.erb +4 -4
  35. data/app/views/pulitzer/partials/_new.html.erb +1 -1
  36. data/app/views/pulitzer/post_type_content_element_types/_form_fields.html.erb +4 -0
  37. data/app/views/pulitzer/post_type_content_element_types/_show.html.erb +13 -5
  38. data/app/views/pulitzer/post_types/_template.html.erb +5 -4
  39. data/app/views/pulitzer/post_types/index.html.erb +26 -12
  40. data/app/views/pulitzer/posts/{index.html.erb → _index.html.erb} +0 -0
  41. data/app/views/pulitzer/styles/_index.html.erb +10 -0
  42. data/app/views/pulitzer/styles/_new.html.erb +29 -0
  43. data/app/views/pulitzer/styles/_show.html.erb +15 -0
  44. data/app/views/pulitzer/styles/_show_wrapper.html.erb +3 -0
  45. data/config/routes.rb +4 -0
  46. data/lib/pulitzer/content_element_helper.rb +22 -4
  47. data/lib/pulitzer/version.rb +1 -1
  48. data/spec/controllers/pages_controller_spec.rb +16 -0
  49. data/spec/dummy/app/controllers/pages_controller.rb +7 -0
  50. data/spec/dummy/app/controllers/pulitzer_preview/pages_controller.rb +16 -0
  51. data/spec/dummy/app/views/pages/welcome.html.erb +27 -0
  52. data/spec/dummy/app/views/pulitzer/welcome.html.erb +27 -0
  53. data/spec/dummy/config/initializers/zz_pulitzer.rb +1 -0
  54. data/spec/dummy/config/routes.rb +2 -0
  55. data/spec/dummy/db/development.sqlite3 +0 -0
  56. data/spec/dummy/db/test.sqlite3 +0 -0
  57. data/spec/dummy/log/development.log +198 -0
  58. data/spec/dummy/log/test.log +1733 -0
  59. metadata +34 -6
  60. data/app/interactions/pulitzer/update_free_form_section_partials.rb +0 -18
  61. data/app/models/pulitzer/layout.rb +0 -11
  62. data/app/views/pulitzer/partial_types/_form.html.erb +0 -21
@@ -2,15 +2,20 @@ module Pulitzer
2
2
  class ContentElementType < ActiveRecord::Base
3
3
  validates :name, presence: true, uniqueness: true
4
4
  has_many :post_type_content_element_types, dependent: :destroy
5
+ has_many :layouts, dependent: :destroy
5
6
 
6
7
  def type
7
8
  name.downcase.to_sym
8
9
  end
9
10
 
10
- %i(text image video).each do |content_type|
11
+ %i(text image video clickable).each do |content_type|
11
12
  define_method "#{content_type}_type?" do
12
13
  type == content_type
13
14
  end
14
15
  end
16
+
17
+ def has_styles?
18
+ [:clickable].include? type
19
+ end
15
20
  end
16
21
  end
@@ -0,0 +1,6 @@
1
+ module Pulitzer
2
+ class CustomOption < ActiveRecord::Base
3
+ belongs_to :custom_option_list
4
+ has_many :content_elements
5
+ end
6
+ end
@@ -0,0 +1,10 @@
1
+ module Pulitzer
2
+ class CustomOptionList < ActiveRecord::Base
3
+ belongs_to :content_element_type
4
+ has_many :custom_options
5
+
6
+ def gid
7
+ to_global_id.to_s
8
+ end
9
+ end
10
+ end
@@ -4,21 +4,72 @@ module Pulitzer
4
4
 
5
5
  belongs_to :post_type
6
6
  belongs_to :content_element_type
7
- has_one :content_element
7
+ has_many :styles
8
+
8
9
  before_save :handle_sort_order
9
10
 
10
- delegate :type, :image_type?, to: :content_element_type
11
+ delegate :type, :image_type?, :has_styles?, to: :content_element_type
11
12
 
12
13
  default_scope { order(sort_order: :asc) }
13
14
 
14
15
  validates :label, presence: true
15
16
 
17
+ def self.any_clickable
18
+ return @any if @any.present?
19
+ @any = OpenStruct.new
20
+ @any.gid = 'any'
21
+ @any.name = 'Any'
22
+ @any
23
+ end
24
+
25
+ def self.url_clickable
26
+ return @url if @url.present?
27
+ @url = OpenStruct.new
28
+ @url.gid = 'url'
29
+ @url.name = 'URL'
30
+ @url
31
+ end
32
+
33
+ def self.clickable_kinds
34
+ [any_clickable] + Pulitzer::CustomOptionList.all.to_a + [url_clickable]
35
+ end
36
+
37
+ def clickable_kind_display
38
+ GlobalID::Locator.locate(clickable_kind)&.name || clickable_kind.humanize
39
+ end
40
+
41
+ def any_clickable_kind?
42
+ 'any' == clickable_kind
43
+ end
44
+
45
+ def url_clickable_kind?
46
+ 'url' == clickable_kind
47
+ end
48
+
49
+ def clickable_kinds
50
+ Pulitzer::CustomOptionList.all.to_a + [self.class.url_clickable]
51
+ end
52
+
53
+ def custom_clickable_kinds
54
+ Pulitzer::CustomOptionList.all.to_a
55
+ end
56
+
57
+ def custom_option_list
58
+ GlobalID::Locator.locate(clickable_kind)
59
+ end
60
+
61
+ def custom_options
62
+ custom_option_list&.custom_options
63
+ end
64
+
16
65
  def type_specific_display
17
66
  case type
18
67
  when :image
19
68
  "#{height}x#{width}"
20
69
  when :text
21
70
  text_editor_display
71
+ when :clickable
72
+ clickable_kind_display
22
73
  else
23
74
  ''
24
75
  end
@@ -32,5 +83,10 @@ module Pulitzer
32
83
  text_editor
33
84
  end
34
85
  end
86
+
87
+ def first_style
88
+ styles.first
89
+ end
90
+
35
91
  end
36
92
  end
@@ -0,0 +1,11 @@
1
+ module Pulitzer
2
+ class Style < ActiveRecord::Base
3
+ has_many :content_elements
4
+ belongs_to :post_type_content_element_type
5
+ validates :display_name, :css_class_name, presence: true
6
+
7
+ def first?
8
+ post_type_content_element_type.first_style.id == id
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,31 @@
1
+ <div class="pulitzer-row"><span class="pulitzer-span heading">clickable text</span></div>
2
+ <div class="pulitzer-row margin-bottom">
3
+ <span class="pulitzer-span one-half"> <%= f.text_field :title %></span>
4
+ </div>
5
+ <% if f.object.any_clickable_kind? %>
6
+ <div class="pulitzer-span one-fifth">
7
+ <span class="pulitzer-span heading">action type</span>
8
+ <%= select_tag 'content_element[clickable_kind]',
9
+ options_from_collection_for_select(f.object.clickable_kinds, :gid, :name, f.object.clickable_kind.gid), revealer(dom_id(f.object, :clickable_kind), highlander: true) %>
10
+ </div>
11
+ <div <%= revealer_target_attrs(dom_id(f.object, :clickable_kind)) %> ></div>
12
+ <div class="pulitzer-span one-half" <%= revealer_option_attrs(dom_id(f.object, :clickable_kind), trigger: 'url') %>>
13
+ <div class="pulitzer-row"><span class="pulitzer-span heading">URL</span></div>
14
+ <%= f.text_field :body %>
15
+ </div>
16
+ <% f.object.custom_clickable_kinds.each do |custom_option_list| %>
17
+ <div class="pulitzer-span one-quarter" <%= revealer_option_attrs(dom_id(f.object, :clickable_kind), trigger: custom_option_list.gid) %>>
18
+ <span class="pulitzer-span heading"><%= custom_option_list.name %></span>
19
+ <%= f.select :custom_option_id, options_from_collection_for_select(custom_option_list.custom_options, :id, :display, f.object.custom_option_id) %>
20
+ </div>
21
+ <% end %>
22
+ <% elsif f.object.url_clickable_kind? %>
23
+ <div class="pulitzer-row"><span class="pulitzer-span heading">URL</span></div>
24
+ <%= f.text_field :body %>
25
+ <% else %>
26
+ <%= hidden_field_tag 'content_element[clickable_kind]', f.object.custom_option_list.gid %>
27
+ <span class="pulitzer-span heading"><%= f.object.custom_option_list.name %></span>
28
+ <%= f.select :custom_option_id, options_from_collection_for_select(f.object.custom_options, :id, :display) %>
29
+ <% end %>
30
+ <div class="pulitzer-row"><span class="pulitzer-span heading">Style</span></div>
31
+ <%= f.select :style_id, options_from_collection_for_select(f.object.style_options, :id, :display_name, f.object.style_id) %>
@@ -1,6 +1,4 @@
1
- <% if content_element.template? %>
2
- <h5><%= content_element.label %></h5>
3
- <% end %>
1
+ <h5><%= content_element.label %></h5>
4
2
  <%= form_for content_element, html: ajax_form_hash(dom_target(content_element)), multipart: true,
5
3
  data: { server_endpoint: content_element_path(content_element) } do |f| %>
6
4
  <%= render partial: "/pulitzer/content_elements/#{content_element.type}_fields", locals: { f: f, content_element: content_element } %>
@@ -1,4 +1,4 @@
1
- <div class="pulitzer-row margin-left">
1
+ <div class="pulitzer-row margin-left highlight-off-white">
2
2
  <% partial.content_elements.each do |content_element| %>
3
3
  <%= render partial: '/pulitzer/content_elements/show_wrapper', locals: { element: content_element } %>
4
4
  <% end %>
@@ -1,23 +1,14 @@
1
- <% if content_element.free_form? %>
1
+ <div class="pulitzer-row">
2
2
  <div class="pulitzer-row">
3
- <div class="pulitzer-span right">
4
- <%= render partial: '/pulitzer/shared/drag_handle' %>
5
- </div>
3
+ <h5>
4
+ <%= content_element.label %>
5
+ <% if content_element.required? %>
6
+ - *required
7
+ <% end %>
8
+ </h5>
9
+ </div>
10
+ <div class="pulitzer-row">
11
+ <div class="pulitzer-span ninety-percent"><%= render_element(content_element) %></div>
12
+ <div class="pulitzer-span ten-percent"><%= ajax_link "Edit", edit_content_element_path(content_element), {}, dom_target(content_element) %></div>
6
13
  </div>
7
- <% end %>
8
- <div class="pulitzer-row">
9
- <ul class="list">
10
- <% if content_element.template? %>
11
- <li>
12
- <h5>
13
- <%= content_element.label %>
14
- <% if content_element.required? %>
15
- - *required
16
- <% end %>
17
- </h5>
18
- </li>
19
- <% end %>
20
- <li><%= render_element(content_element) %></li>
21
- <li><%= ajax_link "Edit", edit_content_element_path(content_element), {}, dom_target(content_element) %></li>
22
- </ul>
23
14
  </div>
@@ -0,0 +1,10 @@
1
+ <div class="pulitzer-row">
2
+ <%= form_for custom_option_list, ajax_form_hash(dom_target(custom_option_list)) do |f| %>
3
+ <div class="pulitzer-span margin one-half"><%= f.text_field :name %></div>
4
+ <div class="pulitzer-span margin one-half">
5
+ <%= f.submit data: {disable_with: false}, class: 'input-medium' %>
6
+ <%= ajax_link 'cancel', custom_option_list_path(custom_option_list), {class: 'button'}, dom_target(custom_option_list) %>
7
+ <%= ajax_delete 'delete', custom_option_list_path(custom_option_list), {class: 'button'}, dom_target(custom_option_list) %>
8
+ </div>
9
+ <% end %>
10
+ </div>
@@ -0,0 +1,12 @@
1
+ <div class="pulitzer-row margin-top margin-bottom">
2
+ <div class="pulitzer-row margin-bottom">
3
+ <%= ajax_link "add a new custom option list", new_custom_option_list_path(custom_option_list: {name: nil}), {}, "#new_custom_option_list" %>
4
+ </div>
5
+ <div id="new_custom_option_list"></div>
6
+ </div>
7
+
8
+ <div id="custom_option_lists_container">
9
+ <% @custom_option_lists.each do |col| %>
10
+ <%= render partial: 'show_wrapper', locals: {custom_option_list: col} %>
11
+ <% end %>
12
+ </div>
@@ -0,0 +1,9 @@
1
+ <div class="pulitzer-row">
2
+ <%= form_for custom_option_list, html: ajax_form_hash('#custom_option_lists_container', insert_method: 'prepend', error_target: '#new_custom_option_list', reset_on_success: true) do |f| %>
3
+ <div class="pulitzer-span margin one-half"><%= f.text_field :name %></div>
4
+ <div class="pulitzer-span margin one-half">
5
+ <%= f.submit data: {disable_with: false}, class: 'input-medium' %> or
6
+ <a class="link-button-small" <%= emptier '#new_custom_option_list' %>>close</a>
7
+ </div>
8
+ <% end %>
9
+ </div>
@@ -0,0 +1,11 @@
1
+ <div class="pulitzer-row">
2
+ <div class="pulitzer-span margin one-half">
3
+ <div class="pulitzer-span margin ten-percent" <%= expander(dom_id(custom_option_list, :options_container)) %>><strong>+</strong></div>
4
+ <div class="pulitzer-span margin ten-percent" <%= collapser(dom_id(custom_option_list, :options_container)) %>><strong>-</strong></div>
5
+ <%= custom_option_list.name %>
6
+ </div>
7
+ <div class="pulitzer-span margin one-half"><%= ajax_link 'edit', edit_custom_option_list_path(custom_option_list), {}, dom_target(custom_option_list) %></div>
8
+ </div>
9
+ <div class="pulitzer-row pulitzer-indent" <%= collapsed(dom_id(custom_option_list, :options_container)) %>>
10
+ <%= render partial: '/pulitzer/custom_options/index', locals: {custom_option_list: custom_option_list} %>
11
+ </div>
@@ -0,0 +1,3 @@
1
+ <div class="pulitzer-row margin-top" id="<%= dom_id(custom_option_list) %>">
2
+ <%= render partial: 'show', locals: {custom_option_list: custom_option_list} %>
3
+ </div>
@@ -0,0 +1,10 @@
1
+ <div class="pulitzer-row">
2
+ <%= form_for custom_option, ajax_form_hash(dom_target(custom_option)) do |f| %>
3
+ <%= render partial: '/pulitzer/custom_options/fields', locals: {f: f} %>
4
+ <div class="pulitzer-span margin one-third">
5
+ <%= f.submit data: {disable_with: false}, class: 'input-medium' %>
6
+ <%= ajax_link 'cancel', custom_option_path(custom_option), {class: 'button'}, dom_target(custom_option) %>
7
+ <%= ajax_delete 'delete', custom_option_path(custom_option), {class: 'button'}, dom_target(custom_option) %>
8
+ </div>
9
+ <% end %>
10
+ </div>
@@ -0,0 +1,2 @@
1
+ <div class="pulitzer-span margin one-third"><%= f.text_field :display %></div>
2
+ <div class="pulitzer-span margin one-third"><%= f.text_field :value %></div>
@@ -0,0 +1,20 @@
1
+ <div class="pulitzer-row margin-top margin-bottom highlight-off-white">
2
+ <div class="pulitzer-row margin-bottom">
3
+ <%= ajax_link "add a new custom option to #{custom_option_list.name}", new_custom_option_path(custom_option: {custom_option_list_id: custom_option_list.id}), {}, dom_target(custom_option_list, :new_option) %>
4
+ </div>
5
+ <div class="pulitzer-row">
6
+ <div class="pulitzer-span one-third heading">
7
+ Editor Display
8
+ </div>
9
+ <div class="pulitzer-span one-third heading">
10
+ Value
11
+ </div>
12
+ </div>
13
+ <div id="<%= dom_id(custom_option_list, :new_option) %>"></div>
14
+ <div id="<%= dom_id(custom_option_list, :options_container) %>">
15
+ <% custom_option_list.custom_options.each do |co| %>
16
+ <%= render partial: '/pulitzer/custom_options/show_wrapper', locals: {custom_option: co} %>
17
+ <% end %>
18
+ </div>
19
+ </div>
20
+
@@ -0,0 +1,10 @@
1
+ <div class="pulitzer-row">
2
+ <%= form_for custom_option, html: ajax_form_hash(dom_target(custom_option.custom_option_list, :options_container), insert_method: 'prepend', error_target: dom_target(custom_option.custom_option_list, :new_option), reset_on_success: true) do |f| %>
3
+ <%= f.hidden_field :custom_option_list_id %>
4
+ <%= render partial: '/pulitzer/custom_options/fields', locals: {f: f} %>
5
+ <div class="pulitzer-span margin one-third">
6
+ <%= f.submit data: {disable_with: false}, class: 'input-medium' %> or
7
+ <a class="link-button-small" <%= emptier dom_target(custom_option.custom_option_list, :new_option) %>>close</a>
8
+ </div>
9
+ <% end %>
10
+ </div>
@@ -0,0 +1,5 @@
1
+ <div class="pulitzer-row">
2
+ <div class="pulitzer-span margin one-third"><%= custom_option.display %></div>
3
+ <div class="pulitzer-span margin one-third"><%= custom_option.value %></div>
4
+ <div class="pulitzer-span margin one-third"><%= ajax_link 'edit', edit_custom_option_path(custom_option), {}, dom_target(custom_option) %></div>
5
+ </div>
@@ -0,0 +1,3 @@
1
+ <div class="pulitzer-row margin-top" id="<%= dom_id(custom_option) %>">
2
+ <%= render partial: '/pulitzer/custom_options/show', locals: {custom_option: custom_option} %>
3
+ </div>
@@ -1,3 +1,3 @@
1
- <div class="pulitzer-row" id="<%= dom_id(ffst) %>">
1
+ <div class="pulitzer-row list-item margin-bottom" id="<%= dom_id(ffst) %>">
2
2
  <%= render partial: '/pulitzer/free_form_section_types/show', locals: {ffst: ffst} %>
3
3
  </div>
@@ -5,7 +5,7 @@
5
5
  </div>
6
6
 
7
7
  <div id="<%= dom_id ffst, :partials %>">
8
- <div class="pulitzer-row margin-bottom list-item">
8
+ <div class="pulitzer-row margin-bottom">
9
9
  <%= ajax_link "add a new required partial for #{ffst.name}", new_partial_type_path({ffst_id: ffst}), {}, dom_target(ffst, :new_partial) %>
10
10
  <div id="<%= dom_id(ffst, :new_partial) %>"></div>
11
11
  </div>
@@ -3,10 +3,10 @@
3
3
  <%= render partial: '/pulitzer/partials/show_wrapper', locals: { partial: partial } %>
4
4
  <% end %>
5
5
  </div>
6
-
7
6
  <div id="<%= dom_id free_form_section, :partials %>">
8
- <div class="pulitzer-row margin-bottom list-item">
9
- <%= ajax_link "add a new partial for #{free_form_section.name}", new_partial_path(partial: {free_form_section_id: free_form_section}), {}, dom_target(free_form_section, :new_partial) %>
10
- <div id="<%= dom_id(free_form_section, :new_partial) %>"></div>
7
+ <div class="pulitzer-row margin-bottom">
8
+ <%= ajax_link "add a new partial for #{free_form_section.name}", new_partial_path(partial: {free_form_section_id: free_form_section}), {class: 'button'}, dom_target(free_form_section, :new_partial) %>
9
+ </div>
10
+ <div class="pulitzer-row" id="<%= dom_id(free_form_section, :new_partial) %>"></div>
11
11
  </div>
12
12
  </div>
@@ -5,7 +5,7 @@
5
5
  <%= f.text_field :label %>
6
6
  </div>
7
7
  <div class="pulitzer-span ten-percent">
8
- <%= f.collection_select :post_type_id, Pulitzer::PostType.partials, :id, :name, {}, revealer(dom_id(partial.free_form_section, :new_partial_type), highlander: true) %>
8
+ <%= f.collection_select :post_type_id, Pulitzer::PostType.partials.order(:name), :id, :name, {}, revealer(dom_id(partial.free_form_section, :new_partial_type), highlander: true) %>
9
9
  </div>
10
10
  <div class="pulitzer-span one-half" <%= revealer_target_attrs(dom_id(partial.free_form_section, :new_partial_type)) %>>
11
11
  <% Pulitzer::PostType.partials.each do |post_type| %>
@@ -23,6 +23,10 @@ revealer(dom_id(ptcet, :revealer), highlander: true) %>
23
23
  &nbsp;
24
24
  </div>
25
25
 
26
+ <div <%= revealer_option_attrs(dom_id(ptcet, :revealer), trigger: Pulitzer::ContentElementType.find_by(name: 'Clickable').id) %> class="pulitzer-span one-fifth">
27
+ <%= f.select :clickable_kind, options_from_collection_for_select(Pulitzer::PostTypeContentElementType.clickable_kinds, :gid, :name, f.object.clickable_kind) %>
28
+ </div>
29
+
26
30
  <div class="pulitzer-span ten-percent">
27
31
  <%= f.check_box :required %>
28
32
  </div>
@@ -1,17 +1,25 @@
1
1
  <div class="pulitzer-row">
2
2
  <div class="pulitzer-span one-fifth"><%= ptcet.label %></div>
3
- <div class="pulitzer-span one-fifth"><%= ptcet.content_element_type.name %></div>
4
- <div class="pulitzer-span one-fifth">
3
+ <div class="pulitzer-span ten-percent"><%= ptcet.content_element_type.name %></div>
4
+ <div class="pulitzer-span ten-percent">
5
5
  <%= ptcet.type_specific_display %>
6
6
  </div>
7
- <div class="pulitzer-span ten-percent">
8
- <%= ptcet.required? ? 'required' : 'optional' %>
7
+ <div class="pulitzer-span two-fifths">
8
+ <% if ptcet.has_styles? %>
9
+ <%= ajax_link "Styles", styles_path(post_type_content_element_type_id: ptcet.id), {}, dom_target(ptcet, :styles_container) %>
10
+ <% else %>
11
+ &nbsp;
12
+ <% end %>
9
13
  </div>
10
- <div class="pulitzer-span ten-percent">
14
+ <div class="pulitzer-span five-percent">
15
+ <%= ptcet.required? ? '✓' : '' %>
16
+ </div>
17
+ <div class="pulitzer-span five-percent">
11
18
  <%= ptcet.sort_order %>
12
19
  </div>
13
20
  <div class="pulitzer-span ten-percent">
14
21
  <%= ajax_link "Edit", edit_post_type_content_element_type_path(ptcet), {}, dom_target(ptcet) %> |
15
22
  <%= ajax_delete 'Delete', post_type_content_element_type_path(ptcet), {}, dom_target(ptcet) %>
16
23
  </div>
24
+ <div id="<%= dom_id(ptcet, :styles_container) %>"></div>
17
25
  </div>
@@ -5,10 +5,11 @@
5
5
  <h4>Content Elements</h4>
6
6
  <div class="pulitzer-row heading">
7
7
  <div class="pulitzer-span one-fifth heading">Editor Display</div>
8
- <div class="pulitzer-span one-fifth heading">Content Type</div>
9
- <div class="pulitzer-span one-fifth heading">Details</div>
10
- <div class="pulitzer-span ten-percent heading">Required</div>
11
- <div class="pulitzer-span ten-percent heading">Sort</div>
8
+ <div class="pulitzer-span ten-percent heading">Content Type</div>
9
+ <div class="pulitzer-span ten-percent heading">Details</div>
10
+ <div class="pulitzer-span two-fifths heading">&nbsp;</div>
11
+ <div class="pulitzer-span five-percent heading">Req'd</div>
12
+ <div class="pulitzer-span five-percent heading">Sort</div>
12
13
  </div>
13
14
  <div id="post_type_content_element_types_container_<%= dom_id(post_type) %>">
14
15
  <% post_type.post_type_content_element_types.each do |ptcet| %>