bolton-cms-padrino 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,15 +1,15 @@
1
1
  ---
2
2
  !binary "U0hBMQ==":
3
3
  metadata.gz: !binary |-
4
- Nzk4ZTllYTdhZTRkNmZmZGRkNDUzNjA3ZDQyYjY1MTM5ODUyYTI3Yw==
4
+ ODVjYTQyNGY3ZTIxYWJjNjJmNWY0ZTY5YzAxZWNkNDYzOWUwNWIxZQ==
5
5
  data.tar.gz: !binary |-
6
- NmFhODg0Y2ExYzdiOTRlM2IzNzc4OWM1N2VkMGY3ODQyZmZmNjkzYg==
6
+ NTAwZWE5M2Q5Zjk1MjUyYzA0OTU2NjBiMTQzOGNiMzI5YzQxMmVmMQ==
7
7
  SHA512:
8
8
  metadata.gz: !binary |-
9
- NmRjOTBiYTAwNzlmNDBhNDQwMWZiNjEwZmEwM2I5Nzc1NjcwOTE2MWQ2NTEx
10
- YjRmZWNhZTRkM2I0NDNkYTI3Y2M1NTMxYTI3Y2Y0NTY4MjlhOWRmY2M0ZjEx
11
- Mzc5YjhhMWEyMWI4MTc5NjdhNjNlYWUxY2JiZjRlMDdmMTEzNTk=
9
+ NzFhN2E4ZjUxNzc3Y2Q0ZGYwN2IwZTIzMTA1NmNmMGJlYjZkYTgwNWVkOWFj
10
+ OTk0ZDg5NmUzOWY4MjM4MDVjN2YwM2VjNDI0MjU5NjM4NTE3ODI0YzM1NzFj
11
+ YWZlMTg0ZWUyMWU2YzJkMDg2NjdkZjkxZjgxYzhiZWVkODFiMjA=
12
12
  data.tar.gz: !binary |-
13
- YzA4ZmQ5YWVlMjMyZjE2NzY1MzY2ZDhhNmYzZDJjMTYyOGU4OGJhOTA5Yjk2
14
- MDZhZGViOWYyMjE1MzI4MGY5ZmMxY2ZlZjE1YWVjODYxN2Q4MjE2ODg0YTA1
15
- N2JmMmE0NzQ2NjY3MjEzZTExYjdlOGY3NDY5Yzc2MDZjYWM4NTY=
13
+ OGVlZTczMDg5Nzc3MDFmMjBiNDA1ZjhlZmFiZmQxMGJkODE3MTkxYTU5OGQ2
14
+ OGQ2YWFiMTMyOWM2YTIzYmJhZTQyMjQxMmJmYWQ4MzhmMjczZGRmZTJhZTNh
15
+ OGZhYjU4Yzg0NDkxYTNiOWU4YzcxOGVmMzcxZjBhMDFhNDIxYWE=
@@ -46,13 +46,17 @@ $(window).load(function() {
46
46
 
47
47
  if ($.ui) {
48
48
 
49
- $(".accordion-container .collapsible:not(.collapsed)").addClass("collapsed", 250);
50
- $parent.removeClass("collapsed", 250);
49
+ if ($parent.hasClass("collapsed")) {
50
+ $parent.parent(".accordion-container").find(".collapsible:not(.collapsed)").addClass("collapsed", 250);
51
+ $parent.removeClass("collapsed", 250);
52
+ } else {
53
+ $parent.addClass("collapsed", 250);
54
+ }
51
55
 
52
56
  } else {
53
57
 
54
58
  if ($parent.hasClass("collapsed")) {
55
- var $open = $(".accordion-container .collapsible:not(.collapsed) .collapsible-content");
59
+ var $open = $parent.parent(".accordion-container").find(".collapsible:not(.collapsed) .collapsible-content");
56
60
  var height = $open.innerHeight();
57
61
 
58
62
  $open.css({
@@ -32,3 +32,8 @@ a, .form-link input[type=submit] {
32
32
  img {
33
33
  vertical-align: middle;
34
34
  }
35
+
36
+ hr {
37
+ margin: 3ex 0;
38
+ border-width: 1px 0 0;
39
+ }
@@ -14,7 +14,7 @@ BoltonCms::Manage.controllers :pages do
14
14
  @page = Page.new
15
15
 
16
16
  @page.template = :default
17
- @page.create_fragments
17
+ @page.manage_fragments BoltonCms::TEMPLATES[@page.template.to_s]['fragments'].clone
18
18
 
19
19
  render 'pages/new'
20
20
  end
@@ -22,6 +22,7 @@ BoltonCms::Manage.controllers :pages do
22
22
  post :create do
23
23
  @page = Page.new(params[:page])
24
24
  @page.creator = current_account
25
+ @page.manage_fragments BoltonCms::TEMPLATES[@page.template.to_s]['fragments'].clone
25
26
 
26
27
  if @page.save
27
28
  flash[:success] = "Page '#{@page.title}' created"
@@ -51,17 +52,21 @@ BoltonCms::Manage.controllers :pages do
51
52
 
52
53
  put :update, with: :id do
53
54
  @page = Page.find(params[:id])
54
- @page.updater = current_account
55
-
56
- if @page && params[:new_asset][:file]
57
- @page.assets << Asset.new(
58
- gravity: params[:new_asset][:gravity],
59
- attachment: params[:new_asset][:file]
60
- )
61
- end
62
55
 
63
56
  if @page
57
+ @page.updater = current_account
58
+
59
+ if params[:new_asset][:file]
60
+ @page.assets << Asset.new(
61
+ gravity: params[:new_asset][:gravity],
62
+ attachment: params[:new_asset][:file]
63
+ )
64
+ end
65
+
64
66
  if @page.update_attributes(params[:page])
67
+ @page.manage_fragments BoltonCms::TEMPLATES[@page.template.to_s]['fragments'].clone
68
+ logger.info @page.inactive_fragments
69
+
65
70
  flash[:success] = "Page '#{@page.title}' saved"
66
71
 
67
72
  params[:save_and_continue] ?
@@ -34,21 +34,36 @@ fieldset.page-options
34
34
  = f.select :filter, options: BoltonCms::RENDERERS.collect { |v| [v.to_s.titleize, v] }
35
35
 
36
36
  - f.fields_for :fragments do |pf|
37
- fieldset.page-fragment.collapsible.collapsed
38
- legend.collapsible-header = pf.object.label
37
+ - if pf.object.active
38
+ fieldset.page-fragment.collapsible.collapsed
39
+ legend.collapsible-header = pf.object.label
39
40
 
40
- .collapsible-content
41
- = pf.hidden_field :label
41
+ .collapsible-content
42
+ = pf.hidden_field :label
43
+
44
+ = labeled_field pf, :body, label: 'Content', class: "content-field"
45
+ = pf.text_area :body, rows: 8
46
+
47
+ = labeled_field pf, :filter, class: 'control'
48
+ = pf.select :filter, options: BoltonCms::RENDERERS.collect { |v| [v.to_s.titleize, v] }
49
+ - else # Padrino fields_for is broken in the case there's no content passed in the block
50
+ = nil
42
51
 
43
- - inactive = !BoltonCms::TEMPLATES[@page.template.to_s]['fragments'].include?(pf.object.label)
44
- - if inactive
45
- p.warning This fragment is inactive for the given template
52
+ - if f.object.inactive_fragments.size > 0
53
+ .accordion-container.inactive
54
+ fieldset.page-content.collapsible.collapsed
55
+ legend.collapsible-header Inactive Fragments
56
+
57
+ .collapsible-content
58
+ - f.object.inactive_fragments.each_with_index do |pf, i|
59
+ - if i > 0
60
+ hr
46
61
 
47
- = labeled_field pf, :body, label: 'Content', class: "content-field#{' inactive' if inactive}"
48
- = pf.text_area :body, rows: 8
62
+ p
63
+ label for="#{pf.id}" = pf.label
64
+ textarea id="#{pf.id}" readonly='readonly' = pf.body
49
65
 
50
- = labeled_field pf, :filter, class: 'control'
51
- = pf.select :filter, options: BoltonCms::RENDERERS.collect { |v| [v.to_s.titleize, v] }
66
+ p Filter: #{pf.filter}
52
67
 
53
68
  = partial 'pages/asset_form', locals: { f: f }
54
69
 
@@ -8,6 +8,7 @@ class Fragment
8
8
  field :label, type: String
9
9
  field :body, type: String, default: ''
10
10
  field :filter, type: Symbol, default: :markdown
11
+ field :active, type: Boolean, default: true
11
12
 
12
13
  index({ label: 1 }, { unique: true })
13
14
 
@@ -34,7 +34,6 @@ class Page
34
34
 
35
35
  before_rearrange :set_slug
36
36
  after_rearrange :rebuild_path
37
- before_save :create_fragments
38
37
  before_save :destroy_flagged_assets
39
38
  before_save :flag_used_assets
40
39
  before_destroy :move_children_to_parent
@@ -47,14 +46,30 @@ class Page
47
46
  assets.where(used: false)
48
47
  end
49
48
 
49
+ def active_fragments
50
+ fragments.where(active: true)
51
+ end
52
+
53
+ def inactive_fragments
54
+ fragments.where(active: false)
55
+ end
56
+
50
57
  def find_fragment(label)
51
58
  fragments.find_by(label: label) unless label.blank?
52
59
  end
53
60
 
54
- def create_fragments
55
- BoltonCms::TEMPLATES[template.to_s]['fragments'].each do |fragment|
56
- fragments << Fragment.new(label: fragment) unless find_fragment(fragment)
61
+ def manage_fragments(configured_fragments = [])
62
+ fragments.each do |fragment|
63
+ if fragment.active = configured_fragments.include?(fragment.label)
64
+ configured_fragments.delete fragment.label
65
+ end
66
+ end
67
+
68
+ configured_fragments.each do |fragment|
69
+ fragments << Fragment.new(label: fragment)
57
70
  end
71
+
72
+ save
58
73
  end
59
74
 
60
75
  private
@@ -1,3 +1,3 @@
1
1
  module BoltonCms
2
- VERSION = '0.2.7'
2
+ VERSION = '0.2.8'
3
3
  end
@@ -22,6 +22,10 @@ describe Fragment do
22
22
  @fragment.must have_field(:body)
23
23
  end
24
24
 
25
+ it 'should have an active field' do
26
+ @fragment.must have_field(:active)
27
+ end
28
+
25
29
  it 'should have an index on label' do
26
30
  @fragment.must have_index_for(:label)
27
31
  end
@@ -58,12 +58,26 @@ describe Page do
58
58
  @page.find_fragment(@default_fragments.first).label.must_equal @default_fragments.first
59
59
  end
60
60
 
61
- it 'should add configured fragments on save' do
62
- BoltonCms::TEMPLATES['default']['fragments'] << 'test fragment'
63
- @page.save
61
+ it 'should add configured fragments' do
62
+ @page.manage_fragments(['Fragment 1', 'Fragment 2', 'test fragment'])
64
63
  @page.find_fragment('test fragment').nil?.must_equal false
65
64
  end
66
65
 
66
+ it 'should mark unconfigured fragments' do
67
+ @page.manage_fragments(['Fragment 1'])
68
+ @page.find_fragment('Fragment 2').active.must_equal false
69
+ end
70
+
71
+ it 'should only return active fragments' do
72
+ @page.manage_fragments(['Fragment 1'])
73
+ @page.active_fragments.size.must_equal 1
74
+ end
75
+
76
+ it 'should retrieve inactive fragments' do
77
+ @page.manage_fragments(['Fragment 1'])
78
+ @page.inactive_fragments.size.must_equal 1
79
+ end
80
+
67
81
  it 'should have page body' do
68
82
  @page.must have_field(:body)
69
83
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bolton-cms-padrino
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.7
4
+ version: 0.2.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Charles Hudson
@@ -371,7 +371,7 @@ files:
371
371
  - config/database.rb
372
372
  - config/mongoid.yml
373
373
  - db/seeds.rb
374
- - gems/bolton-cms-padrino-0.2.6.gem
374
+ - gems/bolton-cms-padrino-0.2.7.gem
375
375
  - lib/bolton-cms-padrino.rb
376
376
  - lib/bolton_cms/attachment_uploader.rb
377
377
  - lib/bolton_cms/config.rb