refinerycms-sl-snippets 1.0.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.
Files changed (53) hide show
  1. data/app/assets/javascripts/page-snippet-picker.js +121 -0
  2. data/app/assets/javascripts/part-snippets-select.js +40 -0
  3. data/app/assets/stylesheets/page-snippet-picker.css +82 -0
  4. data/app/controllers/refinery/admin/snippets_controller.rb +38 -0
  5. data/app/controllers/refinery/admin/snippets_page_parts_controller.rb +38 -0
  6. data/app/models/refinery/snippet.rb +62 -0
  7. data/app/models/refinery/snippet_page_part.rb +20 -0
  8. data/app/views/admin/pages/tabs/_snippets_field.html.erb +46 -0
  9. data/app/views/refinery/admin/pages/tabs/_snippets.html.erb +3 -0
  10. data/app/views/refinery/admin/pages/tabs/_snippets_content.html.erb +24 -0
  11. data/app/views/refinery/admin/pages/tabs/_snippets_field.html.erb +55 -0
  12. data/app/views/refinery/admin/pages/tabs/_snippets_list_item.html.erb +20 -0
  13. data/app/views/refinery/admin/snippets/_actions.html.erb +28 -0
  14. data/app/views/refinery/admin/snippets/_form.html.erb +35 -0
  15. data/app/views/refinery/admin/snippets/_locale_picker.html.erb +12 -0
  16. data/app/views/refinery/admin/snippets/_records.html.erb +18 -0
  17. data/app/views/refinery/admin/snippets/_snippet.html.erb +22 -0
  18. data/app/views/refinery/admin/snippets/_snippets.html.erb +2 -0
  19. data/app/views/refinery/admin/snippets/_sortable_list.html.erb +7 -0
  20. data/app/views/refinery/admin/snippets/edit.html.erb +1 -0
  21. data/app/views/refinery/admin/snippets/index.html.erb +10 -0
  22. data/app/views/refinery/admin/snippets/new.html.erb +1 -0
  23. data/app/views/refinery/admin/snippets_page_parts/add.html.erb +1 -0
  24. data/app/views/refinery/admin/snippets_page_parts/remove.html.erb +1 -0
  25. data/config/locales/cs.yml +35 -0
  26. data/config/locales/en.yml +44 -0
  27. data/config/locales/es.yml +44 -0
  28. data/config/locales/nl.yml +22 -0
  29. data/config/routes.rb +18 -0
  30. data/db/migrate/1_create_snippets.rb +22 -0
  31. data/db/migrate/2_translate_snippets.rb +20 -0
  32. data/db/migrate/3_create_snippets_page_parts.rb +22 -0
  33. data/db/migrate/6_remove_position_from_snippets.rb +12 -0
  34. data/db/seeds.rb +6 -0
  35. data/features/manage_snippets.feature +63 -0
  36. data/features/step_definitions/snippet_steps.rb +14 -0
  37. data/features/support/paths.rb +17 -0
  38. data/lib/extensions/application_helper_extensions.rb +39 -0
  39. data/lib/extensions/page_extensions.rb +22 -0
  40. data/lib/gemspec.rb +31 -0
  41. data/lib/generators/refinery/snippets_generator.rb +22 -0
  42. data/lib/refinery/snippets.rb +29 -0
  43. data/lib/refinery/snippets/engine.rb +49 -0
  44. data/lib/refinery/snippets/tabs.rb +22 -0
  45. data/lib/refinery/snippets/version.rb +5 -0
  46. data/lib/refinerycms-snippets.rb +1 -0
  47. data/lib/tasks/snippets.rake +13 -0
  48. data/readme.md +52 -0
  49. data/refinerycms-snippets.gemspec +106 -0
  50. data/spec/helpers/application_helper_spec.rb +43 -0
  51. data/spec/models/page_spec.rb +39 -0
  52. data/spec/models/snippet_spec.rb +91 -0
  53. metadata +133 -0
@@ -0,0 +1,106 @@
1
+ Gem::Specification.new do |s|
2
+ s.platform = Gem::Platform::RUBY
3
+ s.name = %q{refinerycms-sl-snippets}
4
+ s.version = %q{1.0.0}
5
+ s.description = %q{Ruby on Rails Snippets engine for Refinery CMS}
6
+ s.date = %q{2012-09-05}
7
+ s.summary = %q{Html snippets for Refinery CMS page}
8
+ s.authors = ['Rodrigo García Suárez', 'Simplelogica', 'Marek L.']
9
+ s.email = %q{rodrigo@simplelogica.net}
10
+ s.require_paths = %w(lib)
11
+ s.homepage = %q{https://github.com/simplelogica/refinerycms-snippets}
12
+
13
+ s.add_dependency 'refinerycms-pages', '>= 2.0.0'
14
+
15
+ s.files = [
16
+ 'app',
17
+ 'app/models',
18
+ 'app/models/refinery',
19
+ 'app/models/refinery/snippet.rb',
20
+ 'app/models/refinery/snippet_page_part.rb',
21
+ 'app/controllers',
22
+ 'app/controllers/refinery',
23
+ 'app/controllers/refinery/admin',
24
+ 'app/controllers/refinery/admin/snippets_controller.rb',
25
+ 'app/controllers/refinery/admin/snippets_page_parts_controller.rb',
26
+ 'app/assets',
27
+ 'app/assets/stylesheets',
28
+ 'app/assets/stylesheets/page-snippet-picker.css',
29
+ 'app/assets/javascripts',
30
+ 'app/assets/javascripts/part-snippets-select.js',
31
+ 'app/assets/javascripts/page-snippet-picker.js',
32
+ 'app/views',
33
+ 'app/views/refinery',
34
+ 'app/views/refinery/admin',
35
+ 'app/views/refinery/admin/snippets',
36
+ 'app/views/refinery/admin/snippets/index.html.erb',
37
+ 'app/views/refinery/admin/snippets/edit.html.erb',
38
+ 'app/views/refinery/admin/snippets/_snippet.html.erb',
39
+ 'app/views/refinery/admin/snippets/new.html.erb',
40
+ 'app/views/refinery/admin/snippets/_locale_picker.html.erb',
41
+ 'app/views/refinery/admin/snippets/_snippets.html.erb',
42
+ 'app/views/refinery/admin/snippets/_records.html.erb',
43
+ 'app/views/refinery/admin/snippets/_form.html.erb',
44
+ 'app/views/refinery/admin/snippets/_actions.html.erb',
45
+ 'app/views/refinery/admin/snippets/_sortable_list.html.erb',
46
+ 'app/views/refinery/admin/snippets_page_parts',
47
+ 'app/views/refinery/admin/snippets_page_parts/add.html.erb',
48
+ 'app/views/refinery/admin/snippets_page_parts/remove.html.erb',
49
+ 'app/views/refinery/admin/pages',
50
+ 'app/views/refinery/admin/pages/tabs',
51
+ 'app/views/refinery/admin/pages/tabs/_snippets_field.html.erb',
52
+ 'app/views/refinery/admin/pages/tabs/_snippets_content.html.erb',
53
+ 'app/views/refinery/admin/pages/tabs/_snippets.html.erb',
54
+ 'app/views/refinery/admin/pages/tabs/_snippets_list_item.html.erb',
55
+ 'app/views/admin',
56
+ 'app/views/admin/pages',
57
+ 'app/views/admin/pages/tabs',
58
+ 'app/views/admin/pages/tabs/_snippets_field.html.erb',
59
+ 'lib',
60
+ 'lib/generators',
61
+ 'lib/generators/refinery',
62
+ 'lib/generators/refinery/snippets_generator.rb',
63
+ 'lib/refinery',
64
+ 'lib/refinery/snippets.rb',
65
+ 'lib/refinery/snippets',
66
+ 'lib/refinery/snippets/version.rb',
67
+ 'lib/refinery/snippets/tabs.rb',
68
+ 'lib/refinery/snippets/engine.rb',
69
+ 'lib/refinerycms-snippets.rb',
70
+ 'lib/gemspec.rb',
71
+ 'lib/tasks',
72
+ 'lib/tasks/snippets.rake',
73
+ 'lib/extensions',
74
+ 'lib/extensions/application_helper_extensions.rb',
75
+ 'lib/extensions/page_extensions.rb',
76
+ 'db',
77
+ 'db/seeds.rb',
78
+ 'db/migrate',
79
+ 'db/migrate/1_create_snippets.rb',
80
+ 'db/migrate/6_remove_position_from_snippets.rb',
81
+ 'db/migrate/2_translate_snippets.rb',
82
+ 'db/migrate/3_create_snippets_page_parts.rb',
83
+ 'spec',
84
+ 'spec/models',
85
+ 'spec/models/page_spec.rb',
86
+ 'spec/models/snippet_spec.rb',
87
+ 'spec/helpers',
88
+ 'spec/helpers/application_helper_spec.rb',
89
+ 'refinerycms-snippets.gemspec',
90
+ 'config',
91
+ 'config/routes.rb',
92
+ 'config/locales',
93
+ 'config/locales/nl.yml',
94
+ 'config/locales/en.yml',
95
+ 'config/locales/es.yml',
96
+ 'config/locales/cs.yml',
97
+ 'readme.md',
98
+ 'features',
99
+ 'features/support',
100
+ 'features/support/paths.rb',
101
+ 'features/step_definitions',
102
+ 'features/step_definitions/snippet_steps.rb',
103
+ 'features/manage_snippets.feature'
104
+ ]
105
+ s.require_path = 'lib'
106
+ end
@@ -0,0 +1,43 @@
1
+ require 'spec_helper'
2
+
3
+ describe ApplicationHelper do
4
+
5
+ def write_template(snippet = @snippet)
6
+ FileUtils.mkdir_p Refinery::Snippet::TEMPLATES_DIR
7
+ @file = File.open("#{Refinery::Snippet::TEMPLATES_DIR}/#{snippet.template_filename}", 'w')
8
+ @file.write("<%= snippet.title %>")
9
+ @file.close
10
+ return @file
11
+ end
12
+
13
+ before(:each) do
14
+ @page = Refinery::Page.create!(:title => 'Page title')
15
+ @part = Refinery::PagePart.create!(:title => 'Part', :body => "PART BODY")
16
+ @snippet_before = Refinery::Snippet.create!(:title => 'Before title', :body => "BEFORE BODY")
17
+ @snippet_after = Refinery::Snippet.create!(:title => 'After title', :body => "AFTER BODY")
18
+ Refinery::SnippetPagePart.create!(:page_part_id => @part.id, :snippet_id => @snippet_before.id, :before_body => true)
19
+ Refinery::SnippetPagePart.create!(:page_part_id => @part.id, :snippet_id => @snippet_after.id)
20
+ @page.parts << @part
21
+ end
22
+
23
+ after(:each) do
24
+ File.delete(@file.path) if @file
25
+ end
26
+
27
+ it 'should give content for one part wrapped with its snippets' do
28
+ content_of(@page, :part).should == "BEFORE BODY<p>PART BODY</p>AFTER BODY"
29
+ end
30
+
31
+ it 'should render snippets templates if present' do
32
+ write_template(@snippet_before)
33
+ should_receive(:render).with({:file => @snippet_before.template_path}).and_return('TEMPLATE')
34
+ content_of(@page, :part).should == "TEMPLATE<p>PART BODY</p>AFTER BODY"
35
+ end
36
+
37
+ it "should work when body of part is nil or don't have snippets" do
38
+ @part.update_attributes(:body => nil)
39
+ @part.snippets.map(&:delete)
40
+ Proc.new {content_of(@page, :part)}.should_not raise_exception
41
+ end
42
+
43
+ end
@@ -0,0 +1,39 @@
1
+ require 'spec_helper'
2
+
3
+ module Refinery
4
+ module Pages
5
+ describe Page do
6
+
7
+ before(:each) do
8
+ @page = Page.create!(:title => 'Page title')
9
+ @part = PagePart.create!(:title => 'Part', :body => "PART BODY")
10
+ @snippet_before = Snippet.create!(:title => 'Before title', :body => "BEFORE BODY")
11
+ @snippet_after = Snippet.create!(:title => 'After title', :body => "AFTER BODY")
12
+ SnippetPagePart.create!(:page_part_id => @part.id, :snippet_id => @snippet_before.id, :before_body => true)
13
+ SnippetPagePart.create!(:page_part_id => @part.id, :snippet_id => @snippet_after.id)
14
+ @page.parts << @part
15
+ end
16
+
17
+ it 'should return all snippets attached to its parts' do
18
+ page = Page.create!(:title => 'Other page')
19
+ part = PagePart.create!(:title => 'Other part', :body => "OTHER PART BODY")
20
+ snippet = Snippet.create!(:title => 'Other snippet', :body => "SNIPPET BODY")
21
+ part.snippets << snippet
22
+ @page.snippets.should have(2).snippets
23
+ @page.snippets.each do |s|
24
+ s.title.should_not == snippet.title
25
+ end
26
+ part.snippets.clear
27
+ part.save
28
+ page.snippets.should be_empty
29
+ end
30
+
31
+ it "should work when body of part is nil or don't have snippets" do
32
+ @part.update_attributes(:body => nil)
33
+ @part.snippets.map(&:delete)
34
+ Proc.new {@page.content_for(:part)}.should_not raise_exception
35
+ end
36
+
37
+ end
38
+ end
39
+ end
@@ -0,0 +1,91 @@
1
+ # -*- coding: utf-8 -*-
2
+ require 'spec_helper'
3
+
4
+ module Refinery
5
+ module Snippets
6
+ describe Snippet do
7
+
8
+ def reset_snippet(options = {})
9
+ @valid_attributes = {
10
+ :id => 1,
11
+ :title => "RSpec is great for testing too"
12
+ }
13
+
14
+ @snippet.destroy! if @snippet
15
+ @snippet = Snippet.create!(@valid_attributes.update(options))
16
+ end
17
+
18
+ def write_template(snippet = @snippet)
19
+ FileUtils.mkdir_p Snippet::TEMPLATES_DIR
20
+ @file = File.open("#{Snippet::TEMPLATES_DIR}/#{snippet.template_filename}", 'w')
21
+ @file.write("<%= snippet.title %>")
22
+ @file.close
23
+ return @file
24
+ end
25
+
26
+ before(:each) do
27
+ reset_snippet
28
+ end
29
+
30
+ after(:each) do
31
+ File.delete(@file.path) if @file
32
+ end
33
+
34
+ context "validations" do
35
+
36
+ it "rejects empty title" do
37
+ Snippet.new(@valid_attributes.merge(:title => "")).should_not be_valid
38
+ end
39
+
40
+ it "rejects non unique title" do
41
+ # as one gets created before each spec by reset_snippet
42
+ Snippet.new(@valid_attributes).should_not be_valid
43
+ end
44
+
45
+ end
46
+
47
+ it 'should return the page it is attached' do
48
+ @snippet.pages.should be_empty
49
+ page = Page.create!(:title => 'Page')
50
+ 2.times do
51
+ other_page = Page.create!(:title => 'Other Page')
52
+ part = other_page.parts.create(:title => 'Other part', :body => "OTHER PART BODY")
53
+ part.snippets << @snippet
54
+ end
55
+
56
+ @snippet.pages.should have(2).pages
57
+ @snippet.pages.each do |p|
58
+ p.title.should_not == page.title
59
+ end
60
+ end
61
+
62
+ it 'should return the page it is attached to' do
63
+ @snippet.pages.should be_empty
64
+ page = Page.create!(:title => 'Page')
65
+ 2.times do
66
+ part = PagePart.create!(:title => 'Other part', :body => "OTHER PART BODY")
67
+ part.page = Page.create!(:title => 'Other Page')
68
+ part.save!
69
+ part.snippets << @snippet
70
+ end
71
+ @snippet.pages.should have(2).pages
72
+ @snippet.pages.each do |p|
73
+ p.title.should_not == page.title
74
+ end
75
+ end
76
+
77
+ it 'should verify if template for it exists' do
78
+ @snippet.template?.should be_false
79
+ write_template
80
+ @snippet.template?.should be_true
81
+ end
82
+
83
+ it 'should sanitize its title for a filename' do
84
+ @snippet.template_filename.should == '_rspec_is_great_for_testing_too.html.erb'
85
+ @snippet.title = '/dir & folder/FooÑBar'
86
+ @snippet.template_filename.should == '_dir_folder_foo_bar.html.erb'
87
+ end
88
+
89
+ end
90
+ end
91
+ end
metadata ADDED
@@ -0,0 +1,133 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: refinerycms-sl-snippets
3
+ version: !ruby/object:Gem::Version
4
+ hash: 23
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 0
9
+ - 0
10
+ version: 1.0.0
11
+ platform: ruby
12
+ authors:
13
+ - "Rodrigo Garc\xC3\xADa Su\xC3\xA1rez"
14
+ - Simplelogica
15
+ - Marek L.
16
+ autorequire:
17
+ bindir: bin
18
+ cert_chain: []
19
+
20
+ date: 2012-09-05 00:00:00 Z
21
+ dependencies:
22
+ - !ruby/object:Gem::Dependency
23
+ name: refinerycms-pages
24
+ prerelease: false
25
+ requirement: &id001 !ruby/object:Gem::Requirement
26
+ none: false
27
+ requirements:
28
+ - - ">="
29
+ - !ruby/object:Gem::Version
30
+ hash: 15
31
+ segments:
32
+ - 2
33
+ - 0
34
+ - 0
35
+ version: 2.0.0
36
+ type: :runtime
37
+ version_requirements: *id001
38
+ description: Ruby on Rails Snippets engine for Refinery CMS
39
+ email: rodrigo@simplelogica.net
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files: []
45
+
46
+ files:
47
+ - app/models/refinery/snippet.rb
48
+ - app/models/refinery/snippet_page_part.rb
49
+ - app/controllers/refinery/admin/snippets_controller.rb
50
+ - app/controllers/refinery/admin/snippets_page_parts_controller.rb
51
+ - app/assets/stylesheets/page-snippet-picker.css
52
+ - app/assets/javascripts/part-snippets-select.js
53
+ - app/assets/javascripts/page-snippet-picker.js
54
+ - app/views/refinery/admin/snippets/index.html.erb
55
+ - app/views/refinery/admin/snippets/edit.html.erb
56
+ - app/views/refinery/admin/snippets/_snippet.html.erb
57
+ - app/views/refinery/admin/snippets/new.html.erb
58
+ - app/views/refinery/admin/snippets/_locale_picker.html.erb
59
+ - app/views/refinery/admin/snippets/_snippets.html.erb
60
+ - app/views/refinery/admin/snippets/_records.html.erb
61
+ - app/views/refinery/admin/snippets/_form.html.erb
62
+ - app/views/refinery/admin/snippets/_actions.html.erb
63
+ - app/views/refinery/admin/snippets/_sortable_list.html.erb
64
+ - app/views/refinery/admin/snippets_page_parts/add.html.erb
65
+ - app/views/refinery/admin/snippets_page_parts/remove.html.erb
66
+ - app/views/refinery/admin/pages/tabs/_snippets_field.html.erb
67
+ - app/views/refinery/admin/pages/tabs/_snippets_content.html.erb
68
+ - app/views/refinery/admin/pages/tabs/_snippets.html.erb
69
+ - app/views/refinery/admin/pages/tabs/_snippets_list_item.html.erb
70
+ - app/views/admin/pages/tabs/_snippets_field.html.erb
71
+ - lib/generators/refinery/snippets_generator.rb
72
+ - lib/refinery/snippets.rb
73
+ - lib/refinery/snippets/version.rb
74
+ - lib/refinery/snippets/tabs.rb
75
+ - lib/refinery/snippets/engine.rb
76
+ - lib/refinerycms-snippets.rb
77
+ - lib/gemspec.rb
78
+ - lib/tasks/snippets.rake
79
+ - lib/extensions/application_helper_extensions.rb
80
+ - lib/extensions/page_extensions.rb
81
+ - db/seeds.rb
82
+ - db/migrate/1_create_snippets.rb
83
+ - db/migrate/6_remove_position_from_snippets.rb
84
+ - db/migrate/2_translate_snippets.rb
85
+ - db/migrate/3_create_snippets_page_parts.rb
86
+ - spec/models/page_spec.rb
87
+ - spec/models/snippet_spec.rb
88
+ - spec/helpers/application_helper_spec.rb
89
+ - refinerycms-snippets.gemspec
90
+ - config/routes.rb
91
+ - config/locales/nl.yml
92
+ - config/locales/en.yml
93
+ - config/locales/es.yml
94
+ - config/locales/cs.yml
95
+ - readme.md
96
+ - features/support/paths.rb
97
+ - features/step_definitions/snippet_steps.rb
98
+ - features/manage_snippets.feature
99
+ homepage: https://github.com/simplelogica/refinerycms-snippets
100
+ licenses: []
101
+
102
+ post_install_message:
103
+ rdoc_options: []
104
+
105
+ require_paths:
106
+ - lib
107
+ required_ruby_version: !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ hash: 3
113
+ segments:
114
+ - 0
115
+ version: "0"
116
+ required_rubygems_version: !ruby/object:Gem::Requirement
117
+ none: false
118
+ requirements:
119
+ - - ">="
120
+ - !ruby/object:Gem::Version
121
+ hash: 3
122
+ segments:
123
+ - 0
124
+ version: "0"
125
+ requirements: []
126
+
127
+ rubyforge_project:
128
+ rubygems_version: 1.8.24
129
+ signing_key:
130
+ specification_version: 3
131
+ summary: Html snippets for Refinery CMS page
132
+ test_files: []
133
+