radiant-page_factory_config-extension 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.
data/README.md ADDED
@@ -0,0 +1,66 @@
1
+ # Page Factory Config
2
+
3
+ This applies the idea of the Default Page Parts extension but uses Page
4
+ Factory to create a child page with default fields, parts and layout.
5
+
6
+
7
+ ## Installation
8
+
9
+ The Page Factory extension is requirement but currently doesn't install via
10
+ a gem. So from within your Radiant install clone the repo :
11
+
12
+ ```
13
+ git clone git://github.com/joshfrench/radiant-page_factory-extension.git vendor/extensions/page_factory
14
+ ```
15
+
16
+
17
+ Add the gems to your Gemfile :
18
+
19
+ ```
20
+ gem "radiant-page_factory-extension", :path => "vendor/extensions"
21
+ gem "radiant-page_factory_config-extension", "~> 1.0.0"
22
+ ```
23
+
24
+
25
+ Update your bundle :
26
+
27
+ ```
28
+ $ bundle install
29
+ ```
30
+
31
+
32
+ ## Usage
33
+
34
+ Add a new page part to the parent page called `factory-config` with the
35
+ `filter` set to none.
36
+
37
+ Within the factory-config part add a YAML config consisting of the parts,
38
+ fields and layout you'd like to use as defaults. You cam also use remove_parts
39
+ and remove_fields to remove default elements.
40
+
41
+ ```
42
+ layout: Default
43
+
44
+ parts:
45
+ - name: content
46
+ description: "The body page part"
47
+ filter_id: textile
48
+
49
+ - name: sidebar
50
+ description: "The sidebar page part"
51
+ filter_id: none
52
+
53
+ remove_parts:
54
+ - name: body
55
+
56
+ fields:
57
+ - name: "Sub Title"
58
+
59
+ remove_fields:
60
+ - name: Description
61
+ ```
62
+
63
+
64
+ ## To Do
65
+
66
+ - Create some tests
data/Rakefile ADDED
@@ -0,0 +1,109 @@
1
+ # Determine where the RSpec plugin is by loading the boot
2
+ unless defined? RADIANT_ROOT
3
+ ENV["RAILS_ENV"] = "test"
4
+ case
5
+ when ENV["RADIANT_ENV_FILE"]
6
+ require File.dirname(ENV["RADIANT_ENV_FILE"]) + "/boot"
7
+ when File.dirname(__FILE__) =~ %r{vendor/radiant/vendor/extensions}
8
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../")}/config/boot"
9
+ else
10
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../")}/config/boot"
11
+ end
12
+ end
13
+
14
+ require 'rake'
15
+ require 'rdoc/task'
16
+ require 'rake/testtask'
17
+
18
+ rspec_base = File.expand_path(RADIANT_ROOT + '/vendor/plugins/rspec/lib')
19
+ $LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base)
20
+ require 'spec/rake/spectask'
21
+ require 'cucumber'
22
+ require 'cucumber/rake/task'
23
+
24
+ # Cleanup the RADIANT_ROOT constant so specs will load the environment
25
+ Object.send(:remove_const, :RADIANT_ROOT)
26
+
27
+ extension_root = File.expand_path(File.dirname(__FILE__))
28
+
29
+ task :default => [:spec, :features]
30
+ task :stats => "spec:statsetup"
31
+
32
+ desc "Run all specs in spec directory"
33
+ Spec::Rake::SpecTask.new(:spec) do |t|
34
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
35
+ t.spec_files = FileList['spec/**/*_spec.rb']
36
+ end
37
+
38
+ task :features => 'spec:integration'
39
+
40
+ namespace :spec do
41
+ desc "Run all specs in spec directory with RCov"
42
+ Spec::Rake::SpecTask.new(:rcov) do |t|
43
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
44
+ t.spec_files = FileList['spec/**/*_spec.rb']
45
+ t.rcov = true
46
+ t.rcov_opts = ['--exclude', 'spec', '--rails']
47
+ end
48
+
49
+ desc "Print Specdoc for all specs"
50
+ Spec::Rake::SpecTask.new(:doc) do |t|
51
+ t.spec_opts = ["--format", "specdoc", "--dry-run"]
52
+ t.spec_files = FileList['spec/**/*_spec.rb']
53
+ end
54
+
55
+ [:models, :controllers, :views, :helpers].each do |sub|
56
+ desc "Run the specs under spec/#{sub}"
57
+ Spec::Rake::SpecTask.new(sub) do |t|
58
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
59
+ t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
60
+ end
61
+ end
62
+
63
+ desc "Run the Cucumber features"
64
+ Cucumber::Rake::Task.new(:integration) do |t|
65
+ t.fork = true
66
+ t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')]
67
+ # t.feature_pattern = "#{extension_root}/features/**/*.feature"
68
+ t.profile = "default"
69
+ end
70
+
71
+ # Setup specs for stats
72
+ task :statsetup do
73
+ require 'code_statistics'
74
+ ::STATS_DIRECTORIES << %w(Model\ specs spec/models)
75
+ ::STATS_DIRECTORIES << %w(View\ specs spec/views)
76
+ ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers)
77
+ ::STATS_DIRECTORIES << %w(Helper\ specs spec/views)
78
+ ::CodeStatistics::TEST_TYPES << "Model specs"
79
+ ::CodeStatistics::TEST_TYPES << "View specs"
80
+ ::CodeStatistics::TEST_TYPES << "Controller specs"
81
+ ::CodeStatistics::TEST_TYPES << "Helper specs"
82
+ ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
83
+ end
84
+
85
+ namespace :db do
86
+ namespace :fixtures do
87
+ desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y"
88
+ task :load => :environment do
89
+ require 'active_record/fixtures'
90
+ ActiveRecord::Base.establish_connection(RAILS_ENV.to_sym)
91
+ (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(RAILS_ROOT, 'spec', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
92
+ Fixtures.create_fixtures('spec/fixtures', File.basename(fixture_file, '.*'))
93
+ end
94
+ end
95
+ end
96
+ end
97
+ end
98
+
99
+ desc 'Generate documentation for the page_factory_config extension.'
100
+ RDoc:Task.new(:rdoc) do |rdoc|
101
+ rdoc.rdoc_dir = 'rdoc'
102
+ rdoc.title = 'PageFactoryConfigExtension'
103
+ rdoc.options << '--line-numbers' << '--inline-source'
104
+ rdoc.rdoc_files.include('README')
105
+ rdoc.rdoc_files.include('lib/**/*.rb')
106
+ end
107
+
108
+ # Load any custom rakefiles for extension
109
+ Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }
@@ -0,0 +1,36 @@
1
+ module PageFactoryConfig
2
+ module Admin::PagesController
3
+ class PageFactoryConfigError < StandardError
4
+ def initialize(message = 'There is an error in the factory-config'); super end
5
+ end
6
+
7
+ def self.included(base)
8
+ base.class_eval do
9
+ def new_with_factory_config
10
+ if params[:page_id].present?
11
+ begin
12
+ if factory_config = YAML::load(Page.find(params[:page_id]).render_part('factory-config'))
13
+ ['parts', 'fields', 'remove_parts', 'remove_fields'].each do |key|
14
+ if config = factory_config[key]
15
+ config.each do |value|
16
+ model_class.send(key.singularize, value.delete('name'), value)
17
+ end
18
+ end
19
+ end
20
+
21
+ model_class.layout(factory_config['layout'])
22
+ end
23
+ rescue
24
+ raise PageFactoryConfigError
25
+ end
26
+ end
27
+
28
+ new_without_factory_config
29
+ end
30
+
31
+ alias_method_chain :new, :factory_config
32
+ end
33
+ end
34
+
35
+ end
36
+ end
@@ -0,0 +1,8 @@
1
+ module RadiantPageFactoryConfigExtension
2
+ VERSION = "1.0.0"
3
+ SUMMARY = "Child Config for Radiant CMS"
4
+ DESCRIPTION = "Enables default parts & fields for a Page's children"
5
+ URL = "http://github.com/jsntv200/radiant-page_factory_config-extension"
6
+ AUTHORS = ["Jason Taylor"]
7
+ EMAIL = ["jsntv200@gmail.com"]
8
+ end
@@ -0,0 +1,55 @@
1
+ namespace :radiant do
2
+ namespace :extensions do
3
+ namespace :page_factory_config do
4
+
5
+ desc "Runs the migration of the Page Factory Config extension"
6
+ task :migrate => :environment do
7
+ require 'radiant/extension_migrator'
8
+ if ENV["VERSION"]
9
+ PageFactoryConfigExtension.migrator.migrate(ENV["VERSION"].to_i)
10
+ Rake::Task['db:schema:dump'].invoke
11
+ else
12
+ PageFactoryConfigExtension.migrator.migrate
13
+ Rake::Task['db:schema:dump'].invoke
14
+ end
15
+ end
16
+
17
+ desc "Copies public assets of the Page Factory Config to the instance public/ directory."
18
+ task :update => :environment do
19
+ is_svn_or_dir = proc {|path| path =~ /\.svn/ || File.directory?(path) }
20
+ puts "Copying assets from PageFactoryConfigExtension"
21
+ Dir[PageFactoryConfigExtension.root + "/public/**/*"].reject(&is_svn_or_dir).each do |file|
22
+ path = file.sub(PageFactoryConfigExtension.root, '')
23
+ directory = File.dirname(path)
24
+ mkdir_p RAILS_ROOT + directory, :verbose => false
25
+ cp file, RAILS_ROOT + path, :verbose => false
26
+ end
27
+ unless PageFactoryConfigExtension.root.starts_with? RAILS_ROOT # don't need to copy vendored tasks
28
+ puts "Copying rake tasks from PageFactoryConfigExtension"
29
+ local_tasks_path = File.join(RAILS_ROOT, %w(lib tasks))
30
+ mkdir_p local_tasks_path, :verbose => false
31
+ Dir[File.join PageFactoryConfigExtension.root, %w(lib tasks *.rake)].each do |file|
32
+ cp file, local_tasks_path, :verbose => false
33
+ end
34
+ end
35
+ end
36
+
37
+ desc "Syncs all available translations for this ext to the English ext master"
38
+ task :sync => :environment do
39
+ # The main translation root, basically where English is kept
40
+ language_root = PageFactoryConfigExtension.root + "/config/locales"
41
+ words = TranslationSupport.get_translation_keys(language_root)
42
+
43
+ Dir["#{language_root}/*.yml"].each do |filename|
44
+ next if filename.match('_available_tags')
45
+ basename = File.basename(filename, '.yml')
46
+ puts "Syncing #{basename}"
47
+ (comments, other) = TranslationSupport.read_file(filename, basename)
48
+ words.each { |k,v| other[k] ||= words[k] } # Initializing hash variable as empty if it does not exist
49
+ other.delete_if { |k,v| !words[k] } # Remove if not defined in en.yml
50
+ TranslationSupport.write_file(filename, basename, comments, other)
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,11 @@
1
+ require "radiant-page_factory_config-extension"
2
+
3
+ class PageFactoryConfigExtension < Radiant::Extension
4
+ version RadiantPageFactoryConfigExtension::VERSION
5
+ description RadiantPageFactoryConfigExtension::DESCRIPTION
6
+ url RadiantPageFactoryConfigExtension::URL
7
+
8
+ def activate
9
+ Admin::PagesController.send :include, PageFactoryConfig::Admin::PagesController
10
+ end
11
+ end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "radiant-page_factory_config-extension"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "radiant-page_factory_config-extension"
7
+ s.version = RadiantPageFactoryConfigExtension::VERSION
8
+ s.platform = Gem::Platform::RUBY
9
+ s.authors = RadiantPageFactoryConfigExtension::AUTHORS
10
+ s.email = RadiantPageFactoryConfigExtension::EMAIL
11
+ s.homepage = RadiantPageFactoryConfigExtension::URL
12
+ s.summary = RadiantPageFactoryConfigExtension::SUMMARY
13
+ s.description = RadiantPageFactoryConfigExtension::DESCRIPTION
14
+
15
+ # s.add_dependency "radiant-page_factory-extension", "~> 2.0.0"
16
+
17
+ ignores = if File.exist?('.gitignore')
18
+ File.read('.gitignore').split("\n").inject([]) {|a,p| a + Dir[p] }
19
+ else
20
+ []
21
+ end
22
+
23
+ s.files = Dir['**/*'] - ignores
24
+ s.test_files = Dir['test/**/*','spec/**/*','features/**/*'] - ignores
25
+ s.require_paths = ["lib"]
26
+ end
data/spec/spec.opts ADDED
@@ -0,0 +1,6 @@
1
+ --colour
2
+ --format
3
+ progress
4
+ --loadby
5
+ mtime
6
+ --reverse
@@ -0,0 +1,36 @@
1
+ unless defined? RADIANT_ROOT
2
+ ENV["RAILS_ENV"] = "test"
3
+ case
4
+ when ENV["RADIANT_ENV_FILE"]
5
+ require ENV["RADIANT_ENV_FILE"]
6
+ when File.dirname(__FILE__) =~ %r{vendor/radiant/vendor/extensions}
7
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
8
+ else
9
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
10
+ end
11
+ end
12
+ require "#{RADIANT_ROOT}/spec/spec_helper"
13
+
14
+ Dataset::Resolver.default << (File.dirname(__FILE__) + "/datasets")
15
+
16
+ if File.directory?(File.dirname(__FILE__) + "/matchers")
17
+ Dir[File.dirname(__FILE__) + "/matchers/*.rb"].each {|file| require file }
18
+ end
19
+
20
+ Spec::Runner.configure do |config|
21
+ # config.use_transactional_fixtures = true
22
+ # config.use_instantiated_fixtures = false
23
+ # config.fixture_path = RAILS_ROOT + '/spec/fixtures'
24
+
25
+ # You can declare fixtures for each behaviour like this:
26
+ # describe "...." do
27
+ # fixtures :table_a, :table_b
28
+ #
29
+ # Alternatively, if you prefer to declare them only once, you can
30
+ # do so here, like so ...
31
+ #
32
+ # config.global_fixtures = :table_a, :table_b
33
+ #
34
+ # If you declare global fixtures, be aware that they will be declared
35
+ # for all of your examples, even those that don't use them.
36
+ end
metadata ADDED
@@ -0,0 +1,75 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: radiant-page_factory_config-extension
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
+ - Jason Taylor
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-09-15 00:00:00 Z
19
+ dependencies: []
20
+
21
+ description: Enables default parts & fields for a Page's children
22
+ email:
23
+ - jsntv200@gmail.com
24
+ executables: []
25
+
26
+ extensions: []
27
+
28
+ extra_rdoc_files: []
29
+
30
+ files:
31
+ - lib/page_factory_config/admin/pages_controller.rb
32
+ - lib/radiant-page_factory_config-extension.rb
33
+ - lib/tasks/page_factory_config_extension_tasks.rake
34
+ - page_factory_config_extension.rb
35
+ - radiant-page_factory_config-extension.gemspec
36
+ - Rakefile
37
+ - README.md
38
+ - spec/spec.opts
39
+ - spec/spec_helper.rb
40
+ homepage: http://github.com/jsntv200/radiant-page_factory_config-extension
41
+ licenses: []
42
+
43
+ post_install_message:
44
+ rdoc_options: []
45
+
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ hash: 3
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 3
63
+ segments:
64
+ - 0
65
+ version: "0"
66
+ requirements: []
67
+
68
+ rubyforge_project:
69
+ rubygems_version: 1.8.10
70
+ signing_key:
71
+ specification_version: 3
72
+ summary: Child Config for Radiant CMS
73
+ test_files:
74
+ - spec/spec.opts
75
+ - spec/spec_helper.rb