forge 0.1.3 → 0.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +6 -0
- data/Gemfile +1 -0
- data/Gemfile.lock +6 -0
- data/VERSION +1 -1
- data/forge.gemspec +6 -10
- data/layouts/default/functions/functions.php.erb +19 -6
- data/lib/forge/builder.rb +52 -10
- data/lib/forge/cli.rb +10 -5
- data/lib/forge/engines.rb +12 -0
- data/lib/forge/generator.rb +0 -10
- data/lib/forge/project.rb +2 -1
- data/lib/guard/forge/functions.rb +2 -0
- metadata +46 -42
- data/forge-0.1.2.gem +0 -0
- data/layouts/lib/struts/README.md +0 -43
- data/layouts/lib/struts/classes/settings.php +0 -11
- data/layouts/lib/struts/classes/settings/collection.php +0 -190
- data/layouts/lib/struts/classes/settings/option.php +0 -125
- data/layouts/lib/struts/classes/settings/option/select.php +0 -30
- data/layouts/lib/struts/classes/settings/option/text.php +0 -15
- data/layouts/lib/struts/classes/settings/section.php +0 -56
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,9 @@
|
|
1
|
+
== 0.2 ==
|
2
|
+
- Added preliminary LESS support
|
3
|
+
- Added ERB processing on templates, functions and assets with filenames that end with .erb
|
4
|
+
- Adding --config=filename flag for specifying an alternate config file
|
5
|
+
- Scaffolding template cleanup
|
6
|
+
|
1
7
|
== 0.1.3 ==
|
2
8
|
- Fixed bug where forge watch crashed when a file was at the root of the includes folder
|
3
9
|
|
data/Gemfile
CHANGED
@@ -13,6 +13,7 @@ gem "sprockets-sass", "~> 0.3.0"
|
|
13
13
|
gem "compass", "~> 0.11.5"
|
14
14
|
gem 'rack', '~> 1.3.5'
|
15
15
|
gem "guard-livereload", "~> 0.3.1"
|
16
|
+
gem "less", "~> 2.0.7"
|
16
17
|
|
17
18
|
# Add dependencies to develop your gem here.
|
18
19
|
# Include everything needed to run rake, tests, features, etc.
|
data/Gemfile.lock
CHANGED
@@ -46,6 +46,9 @@ GEM
|
|
46
46
|
git (>= 1.2.5)
|
47
47
|
rake
|
48
48
|
json (1.6.1)
|
49
|
+
less (2.0.7)
|
50
|
+
therubyracer (~> 0.9.2)
|
51
|
+
libv8 (3.3.10.2)
|
49
52
|
multi_json (1.0.3)
|
50
53
|
rack (1.3.5)
|
51
54
|
rake (0.9.2)
|
@@ -68,6 +71,8 @@ GEM
|
|
68
71
|
sprockets-sass (0.3.0)
|
69
72
|
sprockets (~> 2.0)
|
70
73
|
term-ansicolor (1.0.6)
|
74
|
+
therubyracer (0.9.9)
|
75
|
+
libv8 (~> 3.3.10)
|
71
76
|
thor (0.14.6)
|
72
77
|
tilt (1.3.3)
|
73
78
|
|
@@ -83,6 +88,7 @@ DEPENDENCIES
|
|
83
88
|
guard-livereload (~> 0.3.1)
|
84
89
|
jeweler (~> 1.6.4)
|
85
90
|
json (~> 1.6.1)
|
91
|
+
less (~> 2.0.7)
|
86
92
|
rack (~> 1.3.5)
|
87
93
|
rcov
|
88
94
|
rspec
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.2.0
|
data/forge.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "forge"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Andy Adams", "Drew Strojny", "Matt Button"]
|
12
|
-
s.date = "2011-
|
12
|
+
s.date = "2011-11-12"
|
13
13
|
s.description = "A toolkit for bootstrapping and developing WordPress themes."
|
14
14
|
s.email = "aadams@jestro.com"
|
15
15
|
s.executables = ["forge"]
|
@@ -31,7 +31,6 @@ Gem::Specification.new do |s|
|
|
31
31
|
"bin/forge",
|
32
32
|
"features/step_definitions/forge_steps.rb",
|
33
33
|
"features/support/env.rb",
|
34
|
-
"forge-0.1.2.gem",
|
35
34
|
"forge.gemspec",
|
36
35
|
"layouts/config/config.json.erb",
|
37
36
|
"layouts/config/stylesheet_header.erb",
|
@@ -53,17 +52,11 @@ Gem::Specification.new do |s|
|
|
53
52
|
"layouts/default/templates/search.php.erb",
|
54
53
|
"layouts/default/templates/sidebar.php",
|
55
54
|
"layouts/default/templates/single.php.erb",
|
56
|
-
"layouts/lib/struts/README.md",
|
57
|
-
"layouts/lib/struts/classes/settings.php",
|
58
|
-
"layouts/lib/struts/classes/settings/collection.php",
|
59
|
-
"layouts/lib/struts/classes/settings/option.php",
|
60
|
-
"layouts/lib/struts/classes/settings/option/select.php",
|
61
|
-
"layouts/lib/struts/classes/settings/option/text.php",
|
62
|
-
"layouts/lib/struts/classes/settings/section.php",
|
63
55
|
"lib/forge.rb",
|
64
56
|
"lib/forge/builder.rb",
|
65
57
|
"lib/forge/cli.rb",
|
66
58
|
"lib/forge/config.rb",
|
59
|
+
"lib/forge/engines.rb",
|
67
60
|
"lib/forge/error.rb",
|
68
61
|
"lib/forge/generator.rb",
|
69
62
|
"lib/forge/guard.rb",
|
@@ -97,6 +90,7 @@ Gem::Specification.new do |s|
|
|
97
90
|
s.add_runtime_dependency(%q<compass>, ["~> 0.11.5"])
|
98
91
|
s.add_runtime_dependency(%q<rack>, ["~> 1.3.5"])
|
99
92
|
s.add_runtime_dependency(%q<guard-livereload>, ["~> 0.3.1"])
|
93
|
+
s.add_runtime_dependency(%q<less>, ["~> 2.0.7"])
|
100
94
|
s.add_development_dependency(%q<rspec>, [">= 0"])
|
101
95
|
s.add_development_dependency(%q<cucumber>, [">= 0"])
|
102
96
|
s.add_development_dependency(%q<aruba>, [">= 0"])
|
@@ -114,6 +108,7 @@ Gem::Specification.new do |s|
|
|
114
108
|
s.add_dependency(%q<compass>, ["~> 0.11.5"])
|
115
109
|
s.add_dependency(%q<rack>, ["~> 1.3.5"])
|
116
110
|
s.add_dependency(%q<guard-livereload>, ["~> 0.3.1"])
|
111
|
+
s.add_dependency(%q<less>, ["~> 2.0.7"])
|
117
112
|
s.add_dependency(%q<rspec>, [">= 0"])
|
118
113
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
119
114
|
s.add_dependency(%q<aruba>, [">= 0"])
|
@@ -132,6 +127,7 @@ Gem::Specification.new do |s|
|
|
132
127
|
s.add_dependency(%q<compass>, ["~> 0.11.5"])
|
133
128
|
s.add_dependency(%q<rack>, ["~> 1.3.5"])
|
134
129
|
s.add_dependency(%q<guard-livereload>, ["~> 0.3.1"])
|
130
|
+
s.add_dependency(%q<less>, ["~> 2.0.7"])
|
135
131
|
s.add_dependency(%q<rspec>, [">= 0"])
|
136
132
|
s.add_dependency(%q<cucumber>, [">= 0"])
|
137
133
|
s.add_dependency(%q<aruba>, [">= 0"])
|
@@ -1,14 +1,13 @@
|
|
1
1
|
<?php
|
2
2
|
|
3
|
-
add_action( '
|
3
|
+
add_action( 'wp_enqueue_scripts', '<%= theme_id %>_enqueue_scripts' );
|
4
4
|
|
5
|
-
if ( ! function_exists( '<%= theme_id %>
|
5
|
+
if ( ! function_exists( '<%= theme_id %>_enqueue_scripts' ) ) :
|
6
6
|
|
7
7
|
/**
|
8
|
-
*
|
8
|
+
* Add theme styles and scripts here
|
9
9
|
*/
|
10
|
-
function <%= theme_id %>
|
11
|
-
add_theme_support( 'post-thumbnails' );
|
10
|
+
function <%= theme_id %>_enqueue_scripts() {
|
12
11
|
|
13
12
|
if ( ! is_admin() ) {
|
14
13
|
wp_enqueue_style(
|
@@ -16,6 +15,20 @@ function <%= theme_id %>_setup() {
|
|
16
15
|
get_bloginfo( 'stylesheet_url' )
|
17
16
|
);
|
18
17
|
}
|
18
|
+
|
19
|
+
}
|
20
|
+
|
21
|
+
endif; // <%= theme_id %>_enqueue_scripts
|
22
|
+
|
23
|
+
add_action( 'after_setup_theme', '<%= theme_id %>_setup' );
|
24
|
+
|
25
|
+
if ( ! function_exists( '<%= theme_id %>_setup' ) ) :
|
26
|
+
|
27
|
+
/**
|
28
|
+
* Set up your theme here
|
29
|
+
*/
|
30
|
+
function <%= theme_id %>_setup() {
|
31
|
+
add_theme_support( 'post-thumbnails' );
|
19
32
|
}
|
20
33
|
|
21
|
-
endif; // <%= theme_id %>_setup
|
34
|
+
endif; // <%= theme_id %>_setup
|
data/lib/forge/builder.rb
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
require 'sprockets'
|
2
2
|
require 'sprockets-sass'
|
3
3
|
require 'sass'
|
4
|
+
require 'less'
|
4
5
|
require 'zip/zip'
|
5
6
|
require 'compass'
|
7
|
+
require 'forge/engines'
|
6
8
|
|
7
9
|
module Forge
|
8
10
|
class Builder
|
@@ -76,12 +78,35 @@ module Forge
|
|
76
78
|
|
77
79
|
def copy_templates
|
78
80
|
template_paths.each do |template_path|
|
79
|
-
|
81
|
+
# Skip directories
|
82
|
+
next if File.directory?(template_path)
|
83
|
+
|
84
|
+
if template_path.end_with?('.erb')
|
85
|
+
# Chop the .erb extension off the filename
|
86
|
+
destination = File.join(@project.build_path, File.basename(template_path).slice(0..-5))
|
87
|
+
|
88
|
+
write_erb(template_path, destination)
|
89
|
+
else
|
90
|
+
# Regular old copy of PHP-only files
|
91
|
+
FileUtils.cp template_path, @project.build_path
|
92
|
+
end
|
80
93
|
end
|
81
94
|
end
|
82
95
|
|
96
|
+
def clean_functions
|
97
|
+
FileUtils.rm File.join(@project.build_path, 'functions.php')
|
98
|
+
end
|
99
|
+
|
83
100
|
def copy_functions
|
84
|
-
|
101
|
+
functions_erb_path = File.join(@functions_path, 'functions.php.erb')
|
102
|
+
functions_php_path = File.join(@functions_path, 'functions.php')
|
103
|
+
|
104
|
+
if File.exists?(functions_erb_path)
|
105
|
+
destination = File.join(@project.build_path, 'functions.php')
|
106
|
+
write_erb(functions_erb_path, destination)
|
107
|
+
elsif File.exists?(functions_php_path)
|
108
|
+
FileUtils.cp functions_php_path, @project.build_path
|
109
|
+
end
|
85
110
|
end
|
86
111
|
|
87
112
|
def clean_includes
|
@@ -96,9 +121,6 @@ module Forge
|
|
96
121
|
# Iterate over all files in source/includes, so we can exclude if necessary
|
97
122
|
paths = Dir.glob(File.join(@includes_path, '**', '*'))
|
98
123
|
paths.each do |path|
|
99
|
-
# Skip over hidden files and folders (.git, .svn, etc)
|
100
|
-
continue if File.basename(path)[0] == '.'
|
101
|
-
|
102
124
|
# Remove @includes_path from full file path to get the relative path
|
103
125
|
relative_path = path.gsub(@includes_path, '')
|
104
126
|
destination = File.join(@project.build_path, 'includes', relative_path)
|
@@ -168,11 +190,16 @@ module Forge
|
|
168
190
|
@sprockets.append_path File.join(@assets_path, dir)
|
169
191
|
end
|
170
192
|
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
193
|
+
# Add assets/styleshets to load path for Less Engine
|
194
|
+
Tilt::LessTemplateWithPaths.load_path = File.join(@assets_path, 'stylesheets')
|
195
|
+
|
196
|
+
@sprockets.register_engine '.less', Tilt::LessTemplateWithPaths
|
197
|
+
|
198
|
+
# Passing the @project instance variable to the Sprockets::Context instance
|
199
|
+
# used for processing the asset ERB files. Ruby meta-programming, FTW.
|
200
|
+
@sprockets.context_class.instance_exec(@project) do |project|
|
201
|
+
define_method :config do
|
202
|
+
project.config
|
176
203
|
end
|
177
204
|
end
|
178
205
|
end
|
@@ -202,5 +229,20 @@ module Forge
|
|
202
229
|
file = @task.find_in_source_paths(File.join('config', 'stylesheet_header.erb'))
|
203
230
|
@stylesheet_header = File.expand_path(file)
|
204
231
|
end
|
232
|
+
|
233
|
+
# Write an .erb from source to destination, catching and reporting errors along the way
|
234
|
+
def write_erb(source, destination)
|
235
|
+
begin
|
236
|
+
@task.shell.mute do
|
237
|
+
@task.create_file(destination) do
|
238
|
+
@project.parse_erb(source)
|
239
|
+
end
|
240
|
+
end
|
241
|
+
rescue Exception => e
|
242
|
+
@task.say "Error while building #{File.basename(source)}:"
|
243
|
+
@task.say e.message + "\n", Thor::Shell::Color::RED
|
244
|
+
exit
|
245
|
+
end
|
246
|
+
end
|
205
247
|
end
|
206
248
|
end
|
data/lib/forge/cli.rb
CHANGED
@@ -14,7 +14,6 @@ module Forge
|
|
14
14
|
end
|
15
15
|
|
16
16
|
desc "create DIRECTORY", "Creates a Forge project"
|
17
|
-
method_option :struts, :type => :boolean, :desc => "Include Struts Options Framework"
|
18
17
|
def create(dir)
|
19
18
|
theme = {}
|
20
19
|
theme[:name] = dir
|
@@ -35,8 +34,9 @@ module Forge
|
|
35
34
|
|
36
35
|
desc "watch", "Start watch process"
|
37
36
|
long_desc "Watches the source directory in your project for changes, and reflects those changes in a compile folder"
|
37
|
+
method_option :config, :type => :string, :desc => "Name of alternate config file"
|
38
38
|
def watch
|
39
|
-
project = Forge::Project.new('.', self)
|
39
|
+
project = Forge::Project.new('.', self, nil, options[:config])
|
40
40
|
|
41
41
|
# Empty the build directory before starting up to clean out old files
|
42
42
|
FileUtils.rm_rf project.build_path
|
@@ -46,19 +46,24 @@ module Forge
|
|
46
46
|
end
|
47
47
|
|
48
48
|
desc "build DIRECTORY", "Build your theme into specified directory"
|
49
|
+
method_option :config, :type => :string, :desc => "Name of alternate config file"
|
49
50
|
def build(dir='build')
|
50
|
-
project = Forge::Project.new('.', self)
|
51
|
+
project = Forge::Project.new('.', self, nil, options[:config])
|
51
52
|
|
52
53
|
builder = Builder.new(project)
|
53
54
|
builder.build
|
54
55
|
|
55
|
-
|
56
|
+
Dir.glob(File.join(dir, '**', '*')).each do |file|
|
57
|
+
shell.mute { remove_file(file) }
|
58
|
+
end
|
59
|
+
|
56
60
|
directory(project.build_path, dir)
|
57
61
|
end
|
58
62
|
|
59
63
|
desc "package FILENAME", "Compile and zip your project to FILENAME.zip"
|
64
|
+
method_option :config, :type => :string, :desc => "Name of alternate config file"
|
60
65
|
def package(filename=nil)
|
61
|
-
project = Forge::Project.new('.', self)
|
66
|
+
project = Forge::Project.new('.', self, nil, options[:config])
|
62
67
|
|
63
68
|
builder = Builder.new(project)
|
64
69
|
builder.build
|
@@ -0,0 +1,12 @@
|
|
1
|
+
module Tilt
|
2
|
+
class LessTemplateWithPaths < LessTemplate
|
3
|
+
class << self
|
4
|
+
attr_accessor :load_path
|
5
|
+
end
|
6
|
+
|
7
|
+
def prepare
|
8
|
+
parser = ::Less::Parser.new(:filename => eval_file, :line => line, :paths => [self.class.load_path])
|
9
|
+
@engine = parser.parse(data)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
data/lib/forge/generator.rb
CHANGED
@@ -66,15 +66,6 @@ module Forge
|
|
66
66
|
self
|
67
67
|
end
|
68
68
|
|
69
|
-
def copy_settings_library
|
70
|
-
settings_path = @task.find_in_source_paths(File.join('lib', 'struts', 'classes'))
|
71
|
-
|
72
|
-
source = File.expand_path(settings_path)
|
73
|
-
target = File.expand_path(File.join(@project.includes_path, 'struts', '.'))
|
74
|
-
|
75
|
-
@task.directory(source, target)
|
76
|
-
end
|
77
|
-
|
78
69
|
def copy_functions
|
79
70
|
source = File.expand_path(File.join(self.layout_path, 'functions', 'functions.php.erb'))
|
80
71
|
target = File.expand_path(File.join(@project.source_path, 'functions', 'functions.php'))
|
@@ -93,7 +84,6 @@ module Forge
|
|
93
84
|
copy_javascript
|
94
85
|
copy_templates
|
95
86
|
copy_functions
|
96
|
-
copy_settings_library if @task.options[:struts]
|
97
87
|
return self
|
98
88
|
end
|
99
89
|
|
data/lib/forge/project.rb
CHANGED
@@ -16,10 +16,11 @@ module Forge
|
|
16
16
|
|
17
17
|
attr_accessor :root, :config, :task
|
18
18
|
|
19
|
-
def initialize(root, task, config={})
|
19
|
+
def initialize(root, task, config={}, config_file=nil)
|
20
20
|
@root = File.expand_path(root)
|
21
21
|
@config = config || {}
|
22
22
|
@task = task
|
23
|
+
@config_file = config_file
|
23
24
|
|
24
25
|
self.load_config if @config.empty?
|
25
26
|
end
|
@@ -15,6 +15,7 @@ module Guard
|
|
15
15
|
|
16
16
|
def run_all
|
17
17
|
UI.info "Rebuilding all functions"
|
18
|
+
::Forge::Guard.builder.clean_functions
|
18
19
|
::Forge::Guard.builder.copy_functions
|
19
20
|
::Forge::Guard.builder.clean_includes
|
20
21
|
::Forge::Guard.builder.copy_includes
|
@@ -23,6 +24,7 @@ module Guard
|
|
23
24
|
# Called on file(s) modifications
|
24
25
|
def run_on_change(paths)
|
25
26
|
UI.info "Functions have changed, copying over"
|
27
|
+
::Forge::Guard.builder.clean_functions
|
26
28
|
::Forge::Guard.builder.copy_functions
|
27
29
|
::Forge::Guard.builder.clean_includes
|
28
30
|
::Forge::Guard.builder.copy_includes
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: forge
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -11,11 +11,11 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2011-
|
14
|
+
date: 2011-11-12 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: thor
|
18
|
-
requirement: &
|
18
|
+
requirement: &2156553020 !ruby/object:Gem::Requirement
|
19
19
|
none: false
|
20
20
|
requirements:
|
21
21
|
- - ~>
|
@@ -23,10 +23,10 @@ dependencies:
|
|
23
23
|
version: 0.14.6
|
24
24
|
type: :runtime
|
25
25
|
prerelease: false
|
26
|
-
version_requirements: *
|
26
|
+
version_requirements: *2156553020
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: guard
|
29
|
-
requirement: &
|
29
|
+
requirement: &2156552520 !ruby/object:Gem::Requirement
|
30
30
|
none: false
|
31
31
|
requirements:
|
32
32
|
- - ~>
|
@@ -34,10 +34,10 @@ dependencies:
|
|
34
34
|
version: 0.8.4
|
35
35
|
type: :runtime
|
36
36
|
prerelease: false
|
37
|
-
version_requirements: *
|
37
|
+
version_requirements: *2156552520
|
38
38
|
- !ruby/object:Gem::Dependency
|
39
39
|
name: sprockets
|
40
|
-
requirement: &
|
40
|
+
requirement: &2156552040 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
43
|
- - ~>
|
@@ -45,10 +45,10 @@ dependencies:
|
|
45
45
|
version: 2.0.2
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
|
-
version_requirements: *
|
48
|
+
version_requirements: *2156552040
|
49
49
|
- !ruby/object:Gem::Dependency
|
50
50
|
name: rubyzip
|
51
|
-
requirement: &
|
51
|
+
requirement: &2156551540 !ruby/object:Gem::Requirement
|
52
52
|
none: false
|
53
53
|
requirements:
|
54
54
|
- - ~>
|
@@ -56,10 +56,10 @@ dependencies:
|
|
56
56
|
version: 0.9.4
|
57
57
|
type: :runtime
|
58
58
|
prerelease: false
|
59
|
-
version_requirements: *
|
59
|
+
version_requirements: *2156551540
|
60
60
|
- !ruby/object:Gem::Dependency
|
61
61
|
name: json
|
62
|
-
requirement: &
|
62
|
+
requirement: &2156551000 !ruby/object:Gem::Requirement
|
63
63
|
none: false
|
64
64
|
requirements:
|
65
65
|
- - ~>
|
@@ -67,10 +67,10 @@ dependencies:
|
|
67
67
|
version: 1.6.1
|
68
68
|
type: :runtime
|
69
69
|
prerelease: false
|
70
|
-
version_requirements: *
|
70
|
+
version_requirements: *2156551000
|
71
71
|
- !ruby/object:Gem::Dependency
|
72
72
|
name: sass
|
73
|
-
requirement: &
|
73
|
+
requirement: &2156550500 !ruby/object:Gem::Requirement
|
74
74
|
none: false
|
75
75
|
requirements:
|
76
76
|
- - ~>
|
@@ -78,10 +78,10 @@ dependencies:
|
|
78
78
|
version: 3.1.8
|
79
79
|
type: :runtime
|
80
80
|
prerelease: false
|
81
|
-
version_requirements: *
|
81
|
+
version_requirements: *2156550500
|
82
82
|
- !ruby/object:Gem::Dependency
|
83
83
|
name: sprockets-sass
|
84
|
-
requirement: &
|
84
|
+
requirement: &2156531840 !ruby/object:Gem::Requirement
|
85
85
|
none: false
|
86
86
|
requirements:
|
87
87
|
- - ~>
|
@@ -89,10 +89,10 @@ dependencies:
|
|
89
89
|
version: 0.3.0
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
|
-
version_requirements: *
|
92
|
+
version_requirements: *2156531840
|
93
93
|
- !ruby/object:Gem::Dependency
|
94
94
|
name: compass
|
95
|
-
requirement: &
|
95
|
+
requirement: &2156531300 !ruby/object:Gem::Requirement
|
96
96
|
none: false
|
97
97
|
requirements:
|
98
98
|
- - ~>
|
@@ -100,10 +100,10 @@ dependencies:
|
|
100
100
|
version: 0.11.5
|
101
101
|
type: :runtime
|
102
102
|
prerelease: false
|
103
|
-
version_requirements: *
|
103
|
+
version_requirements: *2156531300
|
104
104
|
- !ruby/object:Gem::Dependency
|
105
105
|
name: rack
|
106
|
-
requirement: &
|
106
|
+
requirement: &2156530740 !ruby/object:Gem::Requirement
|
107
107
|
none: false
|
108
108
|
requirements:
|
109
109
|
- - ~>
|
@@ -111,10 +111,10 @@ dependencies:
|
|
111
111
|
version: 1.3.5
|
112
112
|
type: :runtime
|
113
113
|
prerelease: false
|
114
|
-
version_requirements: *
|
114
|
+
version_requirements: *2156530740
|
115
115
|
- !ruby/object:Gem::Dependency
|
116
116
|
name: guard-livereload
|
117
|
-
requirement: &
|
117
|
+
requirement: &2156530260 !ruby/object:Gem::Requirement
|
118
118
|
none: false
|
119
119
|
requirements:
|
120
120
|
- - ~>
|
@@ -122,10 +122,21 @@ dependencies:
|
|
122
122
|
version: 0.3.1
|
123
123
|
type: :runtime
|
124
124
|
prerelease: false
|
125
|
-
version_requirements: *
|
125
|
+
version_requirements: *2156530260
|
126
|
+
- !ruby/object:Gem::Dependency
|
127
|
+
name: less
|
128
|
+
requirement: &2156529780 !ruby/object:Gem::Requirement
|
129
|
+
none: false
|
130
|
+
requirements:
|
131
|
+
- - ~>
|
132
|
+
- !ruby/object:Gem::Version
|
133
|
+
version: 2.0.7
|
134
|
+
type: :runtime
|
135
|
+
prerelease: false
|
136
|
+
version_requirements: *2156529780
|
126
137
|
- !ruby/object:Gem::Dependency
|
127
138
|
name: rspec
|
128
|
-
requirement: &
|
139
|
+
requirement: &2156529280 !ruby/object:Gem::Requirement
|
129
140
|
none: false
|
130
141
|
requirements:
|
131
142
|
- - ! '>='
|
@@ -133,10 +144,10 @@ dependencies:
|
|
133
144
|
version: '0'
|
134
145
|
type: :development
|
135
146
|
prerelease: false
|
136
|
-
version_requirements: *
|
147
|
+
version_requirements: *2156529280
|
137
148
|
- !ruby/object:Gem::Dependency
|
138
149
|
name: cucumber
|
139
|
-
requirement: &
|
150
|
+
requirement: &2156528800 !ruby/object:Gem::Requirement
|
140
151
|
none: false
|
141
152
|
requirements:
|
142
153
|
- - ! '>='
|
@@ -144,10 +155,10 @@ dependencies:
|
|
144
155
|
version: '0'
|
145
156
|
type: :development
|
146
157
|
prerelease: false
|
147
|
-
version_requirements: *
|
158
|
+
version_requirements: *2156528800
|
148
159
|
- !ruby/object:Gem::Dependency
|
149
160
|
name: aruba
|
150
|
-
requirement: &
|
161
|
+
requirement: &2156528320 !ruby/object:Gem::Requirement
|
151
162
|
none: false
|
152
163
|
requirements:
|
153
164
|
- - ! '>='
|
@@ -155,10 +166,10 @@ dependencies:
|
|
155
166
|
version: '0'
|
156
167
|
type: :development
|
157
168
|
prerelease: false
|
158
|
-
version_requirements: *
|
169
|
+
version_requirements: *2156528320
|
159
170
|
- !ruby/object:Gem::Dependency
|
160
171
|
name: bundler
|
161
|
-
requirement: &
|
172
|
+
requirement: &2156527780 !ruby/object:Gem::Requirement
|
162
173
|
none: false
|
163
174
|
requirements:
|
164
175
|
- - ~>
|
@@ -166,10 +177,10 @@ dependencies:
|
|
166
177
|
version: 1.0.0
|
167
178
|
type: :development
|
168
179
|
prerelease: false
|
169
|
-
version_requirements: *
|
180
|
+
version_requirements: *2156527780
|
170
181
|
- !ruby/object:Gem::Dependency
|
171
182
|
name: jeweler
|
172
|
-
requirement: &
|
183
|
+
requirement: &2156527240 !ruby/object:Gem::Requirement
|
173
184
|
none: false
|
174
185
|
requirements:
|
175
186
|
- - ~>
|
@@ -177,10 +188,10 @@ dependencies:
|
|
177
188
|
version: 1.6.4
|
178
189
|
type: :development
|
179
190
|
prerelease: false
|
180
|
-
version_requirements: *
|
191
|
+
version_requirements: *2156527240
|
181
192
|
- !ruby/object:Gem::Dependency
|
182
193
|
name: rcov
|
183
|
-
requirement: &
|
194
|
+
requirement: &2156526640 !ruby/object:Gem::Requirement
|
184
195
|
none: false
|
185
196
|
requirements:
|
186
197
|
- - ! '>='
|
@@ -188,7 +199,7 @@ dependencies:
|
|
188
199
|
version: '0'
|
189
200
|
type: :development
|
190
201
|
prerelease: false
|
191
|
-
version_requirements: *
|
202
|
+
version_requirements: *2156526640
|
192
203
|
description: A toolkit for bootstrapping and developing WordPress themes.
|
193
204
|
email: aadams@jestro.com
|
194
205
|
executables:
|
@@ -211,7 +222,6 @@ files:
|
|
211
222
|
- bin/forge
|
212
223
|
- features/step_definitions/forge_steps.rb
|
213
224
|
- features/support/env.rb
|
214
|
-
- forge-0.1.2.gem
|
215
225
|
- forge.gemspec
|
216
226
|
- layouts/config/config.json.erb
|
217
227
|
- layouts/config/stylesheet_header.erb
|
@@ -233,17 +243,11 @@ files:
|
|
233
243
|
- layouts/default/templates/search.php.erb
|
234
244
|
- layouts/default/templates/sidebar.php
|
235
245
|
- layouts/default/templates/single.php.erb
|
236
|
-
- layouts/lib/struts/README.md
|
237
|
-
- layouts/lib/struts/classes/settings.php
|
238
|
-
- layouts/lib/struts/classes/settings/collection.php
|
239
|
-
- layouts/lib/struts/classes/settings/option.php
|
240
|
-
- layouts/lib/struts/classes/settings/option/select.php
|
241
|
-
- layouts/lib/struts/classes/settings/option/text.php
|
242
|
-
- layouts/lib/struts/classes/settings/section.php
|
243
246
|
- lib/forge.rb
|
244
247
|
- lib/forge/builder.rb
|
245
248
|
- lib/forge/cli.rb
|
246
249
|
- lib/forge/config.rb
|
250
|
+
- lib/forge/engines.rb
|
247
251
|
- lib/forge/error.rb
|
248
252
|
- lib/forge/generator.rb
|
249
253
|
- lib/forge/guard.rb
|
data/forge-0.1.2.gem
DELETED
Binary file
|
@@ -1,43 +0,0 @@
|
|
1
|
-
## Struts is a simple theme options framework for WordPress.
|
2
|
-
|
3
|
-
The goal of this library is to abstract away as much of the WordPress settings API as possible, and make setting up options a breeze!
|
4
|
-
|
5
|
-
## Basic setup
|
6
|
-
|
7
|
-
* Clone this repository
|
8
|
-
* Symlink the 'classes' folder from this library into your functions folder in your theme
|
9
|
-
* In your functions.php file, use this code to setup your theme's options:
|
10
|
-
|
11
|
-
<?php
|
12
|
-
|
13
|
-
add_action( 'after_setup_theme', 'react_options' );
|
14
|
-
|
15
|
-
function react_options() {
|
16
|
-
require( dirname( __FILE__ ) . '/functions/settings/settings.php' );
|
17
|
-
|
18
|
-
global $react_options;
|
19
|
-
|
20
|
-
$react_options = new Settings_Collection( 'react', 'theme_react_options' );
|
21
|
-
|
22
|
-
$react_options->add_section( 'first_section', 'Text for First Section' );
|
23
|
-
$react_options->add_section( 'second_section', 'Text for Second Section' );
|
24
|
-
|
25
|
-
$react_options->add_option( 'my_first_option', 'text', 'first_section' )
|
26
|
-
->default_value( 'The default text' )
|
27
|
-
->tab( 'general')
|
28
|
-
->label( 'Enable Featured Slider' );
|
29
|
-
|
30
|
-
$react_options->add_option( 'select_this', 'select', 'second_section' )
|
31
|
-
->valid_values( array(
|
32
|
-
'one' => 'ONE',
|
33
|
-
'two' => 'TWO',
|
34
|
-
'three' => 'THREE' ) )
|
35
|
-
->default_value( 'two' )
|
36
|
-
->label( 'Select Your Character' );
|
37
|
-
|
38
|
-
/* More options go here... */
|
39
|
-
|
40
|
-
$react_options->initialize();
|
41
|
-
}
|
42
|
-
|
43
|
-
Bam! You have theme options!
|
@@ -1,11 +0,0 @@
|
|
1
|
-
<?php
|
2
|
-
|
3
|
-
require( dirname( __FILE__ ) . '/settings/collection.php' );
|
4
|
-
require( dirname( __FILE__ ) . '/settings/option.php' );
|
5
|
-
require( dirname( __FILE__ ) . '/settings/section.php' );
|
6
|
-
require( dirname( __FILE__ ) . '/settings/option/text.php' );
|
7
|
-
require( dirname( __FILE__ ) . '/settings/option/select.php' );
|
8
|
-
|
9
|
-
class Settings {
|
10
|
-
|
11
|
-
}
|
@@ -1,190 +0,0 @@
|
|
1
|
-
<?php
|
2
|
-
|
3
|
-
class Settings_Collection {
|
4
|
-
protected $_sections, $_options, $_name, $_slug;
|
5
|
-
|
6
|
-
public function __construct( $slug, $name ) {
|
7
|
-
$this->sections( array() );
|
8
|
-
$this->options( array() );
|
9
|
-
$this->slug( $slug );
|
10
|
-
$this->name( $name );
|
11
|
-
$this->register_hooks();
|
12
|
-
}
|
13
|
-
|
14
|
-
/***** Attribute accessors *****/
|
15
|
-
public function sections( $sections = NULL ) {
|
16
|
-
if ( NULL === $sections )
|
17
|
-
return $this->_sections;
|
18
|
-
|
19
|
-
$this->_sections = $sections;
|
20
|
-
|
21
|
-
return $this;
|
22
|
-
}
|
23
|
-
|
24
|
-
public function options( $options = NULL ) {
|
25
|
-
if ( NULL === $options )
|
26
|
-
return $this->_options;
|
27
|
-
|
28
|
-
$this->_options = $options;
|
29
|
-
|
30
|
-
return $this;
|
31
|
-
}
|
32
|
-
|
33
|
-
public function slug( $slug = NULL ) {
|
34
|
-
if ( NULL === $slug )
|
35
|
-
return $this->_slug;
|
36
|
-
|
37
|
-
$this->_slug = $slug;
|
38
|
-
|
39
|
-
return $this;
|
40
|
-
}
|
41
|
-
|
42
|
-
public function name( $name = NULL ) {
|
43
|
-
if ( NULL === $name )
|
44
|
-
return $this->_name;
|
45
|
-
|
46
|
-
$this->_name = $name;
|
47
|
-
|
48
|
-
return $this;
|
49
|
-
}
|
50
|
-
|
51
|
-
/***** WordPress setup *****/
|
52
|
-
|
53
|
-
public function register_hooks() {
|
54
|
-
// Load the Admin Options page
|
55
|
-
add_action( 'admin_menu', array( &$this, 'add_options_page' ) );
|
56
|
-
// Register the sections and options
|
57
|
-
add_action( 'admin_init', array( &$this, 'register' ) );
|
58
|
-
}
|
59
|
-
|
60
|
-
public function initialize() {
|
61
|
-
$option_values = get_option( $this->name() );
|
62
|
-
|
63
|
-
if ( false === $option_values || empty( $option_values ) ) {
|
64
|
-
$option_values = $this->defaults();
|
65
|
-
}
|
66
|
-
update_option( $this->name(), $option_values );
|
67
|
-
|
68
|
-
foreach ( $option_values as $name => $value ) {
|
69
|
-
foreach ( $this->_options as $option ) {
|
70
|
-
if ( $option->name() == $name ){
|
71
|
-
$option->value($value);
|
72
|
-
}
|
73
|
-
}
|
74
|
-
}
|
75
|
-
}
|
76
|
-
|
77
|
-
public function add_options_page() {
|
78
|
-
add_theme_page(
|
79
|
-
'Theme Options',
|
80
|
-
'Theme Options',
|
81
|
-
'edit_theme_options',
|
82
|
-
$this->slug() . '-settings',
|
83
|
-
array( &$this, 'echo_form_html' ) );
|
84
|
-
}
|
85
|
-
|
86
|
-
public function register() {
|
87
|
-
register_setting( $this->name(), $this->name(), array( &$this, 'validate' ) );
|
88
|
-
$this->register_sections();
|
89
|
-
$this->register_options();
|
90
|
-
}
|
91
|
-
|
92
|
-
protected function register_options() {
|
93
|
-
foreach( $this->options() as $option ) {
|
94
|
-
$option->register();
|
95
|
-
}
|
96
|
-
}
|
97
|
-
|
98
|
-
protected function register_sections() {
|
99
|
-
foreach( $this->sections() as $section ) {
|
100
|
-
$section->register();
|
101
|
-
}
|
102
|
-
}
|
103
|
-
|
104
|
-
public function validate( $inputs ) {
|
105
|
-
$validated_input = array();
|
106
|
-
|
107
|
-
foreach ( $inputs as $key => $value ) {
|
108
|
-
$option = $this->_options[$key];
|
109
|
-
$validated_input[$key] = $option->validate( $value );
|
110
|
-
}
|
111
|
-
|
112
|
-
return $validated_input;
|
113
|
-
}
|
114
|
-
|
115
|
-
/**
|
116
|
-
*
|
117
|
-
*/
|
118
|
-
public function add_section( $id, $title, $description = NULL ) {
|
119
|
-
$this->_sections[] = new Settings_Section( $id, $title, $description, $this->name() );
|
120
|
-
}
|
121
|
-
|
122
|
-
/**
|
123
|
-
* Adds an option with the given name and type to this collection
|
124
|
-
* Sets the option's parent_name to this collection's name, and returns the option
|
125
|
-
*
|
126
|
-
* @param $name - unique (within the collection ) name for this option
|
127
|
-
* @param $type - type of option (text/select/checkbox/etc)
|
128
|
-
* @param $section - name of the section this option goes in
|
129
|
-
*
|
130
|
-
* @return Settings_Option
|
131
|
-
*/
|
132
|
-
public function add_option( $name, $type, $section = NULL ) {
|
133
|
-
$option_class = 'Settings_Option_' . ucfirst( $type );
|
134
|
-
|
135
|
-
$option = new $option_class;
|
136
|
-
$option->name( $name );
|
137
|
-
$option->parent_name( $this->name() );
|
138
|
-
$option->section( $section );
|
139
|
-
|
140
|
-
$this->_options[$name] = $option;
|
141
|
-
|
142
|
-
return $option;
|
143
|
-
}
|
144
|
-
|
145
|
-
public function get_value( $option_name ) {
|
146
|
-
$options = $this->options();
|
147
|
-
$option = $options[$option_name];
|
148
|
-
return $option->value();
|
149
|
-
}
|
150
|
-
|
151
|
-
/**
|
152
|
-
* Returns the default values of all options in this collection as a hash
|
153
|
-
*
|
154
|
-
* @return array
|
155
|
-
*/
|
156
|
-
public function defaults() {
|
157
|
-
$defaults = array();
|
158
|
-
|
159
|
-
$options = $this->options();
|
160
|
-
|
161
|
-
foreach( $options as $option ) {
|
162
|
-
$defaults[ $option->name() ] = $option->default_value();
|
163
|
-
}
|
164
|
-
|
165
|
-
return $defaults;
|
166
|
-
}
|
167
|
-
|
168
|
-
/***** HTML Output *****/
|
169
|
-
|
170
|
-
public function echo_form_html() { ?>
|
171
|
-
<div class="wrap">
|
172
|
-
<?php echo $this->settings_updated_html(); ?>
|
173
|
-
<form action="options.php" method="post">
|
174
|
-
<?php
|
175
|
-
settings_fields( $this->name() );
|
176
|
-
do_settings_sections( $this->name() );
|
177
|
-
?>
|
178
|
-
<input type="submit" class="button-primary" value="<?php esc_attr_e('Save Settings'); ?>" />
|
179
|
-
<input type="submit" class="button-secondary" value="<?php esc_attr_e('Reset Defaults'); ?>" />
|
180
|
-
</form>
|
181
|
-
</div>
|
182
|
-
<?php }
|
183
|
-
|
184
|
-
public function settings_updated_html() {
|
185
|
-
if ( isset( $_GET['settings-updated'] ) )
|
186
|
-
return "<div class='updated'><p>Theme settings updated successfully.</p></div>";
|
187
|
-
}
|
188
|
-
}
|
189
|
-
|
190
|
-
class SectionNotFoundException extends Exception { }
|
@@ -1,125 +0,0 @@
|
|
1
|
-
<?php
|
2
|
-
|
3
|
-
abstract class Settings_Option {
|
4
|
-
protected $_name, $_valid_values, $_value, $_type, $_default_value,
|
5
|
-
$_tab, $_label, $_description, $_parent_name, $_validation_function;
|
6
|
-
|
7
|
-
public function name( $name = NULL ) {
|
8
|
-
if ( NULL === $name )
|
9
|
-
return $this->_name;
|
10
|
-
|
11
|
-
$this->_name = $name;
|
12
|
-
return $this;
|
13
|
-
}
|
14
|
-
|
15
|
-
public function valid_values( $valid_values = NULL ) {
|
16
|
-
if ( NULL === $valid_values )
|
17
|
-
return $this->_valid_values;
|
18
|
-
|
19
|
-
$this->_valid_values = $valid_values;
|
20
|
-
return $this;
|
21
|
-
}
|
22
|
-
|
23
|
-
public function value( $value = NULL ) {
|
24
|
-
if ( NULL === $value ) {
|
25
|
-
return $this->_value;
|
26
|
-
}
|
27
|
-
|
28
|
-
$this->_value = $value;
|
29
|
-
return $this;
|
30
|
-
}
|
31
|
-
|
32
|
-
public function type( $type = NULL ) {
|
33
|
-
if ( NULL === $type )
|
34
|
-
return $this->_type;
|
35
|
-
|
36
|
-
$this->_type = $type;
|
37
|
-
return $this;
|
38
|
-
}
|
39
|
-
|
40
|
-
public function default_value( $default_value = NULL ) {
|
41
|
-
if ( NULL === $default_value )
|
42
|
-
return $this->_default_value;
|
43
|
-
|
44
|
-
$this->_default_value = $default_value;
|
45
|
-
return $this;
|
46
|
-
}
|
47
|
-
|
48
|
-
public function tab( $tab = NULL ) {
|
49
|
-
if ( NULL === $tab )
|
50
|
-
return $this->_tab;
|
51
|
-
|
52
|
-
$this->_tab = $tab;
|
53
|
-
return $this;
|
54
|
-
}
|
55
|
-
|
56
|
-
public function label( $label = NULL ) {
|
57
|
-
if ( NULL === $label )
|
58
|
-
return $this->_label;
|
59
|
-
|
60
|
-
$this->_label = $label;
|
61
|
-
return $this;
|
62
|
-
}
|
63
|
-
|
64
|
-
public function description( $description = NULL ) {
|
65
|
-
if ( NULL === $description )
|
66
|
-
return $this->_description;
|
67
|
-
|
68
|
-
$this->_description = $description;
|
69
|
-
return $this;
|
70
|
-
}
|
71
|
-
|
72
|
-
public function parent_name( $parent_name = NULL ) {
|
73
|
-
if ( NULL === $parent_name )
|
74
|
-
return $this->_parent_name;
|
75
|
-
|
76
|
-
$this->_parent_name = $parent_name;
|
77
|
-
return $this;
|
78
|
-
}
|
79
|
-
|
80
|
-
public function section( $section = NULL ) {
|
81
|
-
if ( NULL === $section )
|
82
|
-
return $this->_section;
|
83
|
-
|
84
|
-
$this->_section = $section;
|
85
|
-
return $this;
|
86
|
-
}
|
87
|
-
|
88
|
-
public function validation_function( $validation_function = NULL ) {
|
89
|
-
if ( NULL === $validation_function )
|
90
|
-
return $this->_validation_function;
|
91
|
-
|
92
|
-
$this->_validation_function = $validation_function;
|
93
|
-
return $this;
|
94
|
-
}
|
95
|
-
|
96
|
-
// The HTML ID takes the form 'parentname-optionname'
|
97
|
-
protected function html_id() {
|
98
|
-
return $this->parent_name() . '-' . $this->name();
|
99
|
-
}
|
100
|
-
|
101
|
-
// Name takes the form 'parentname[optionname]'
|
102
|
-
protected function html_name() {
|
103
|
-
return $this->parent_name() . '[' . $this->name() . ']';
|
104
|
-
}
|
105
|
-
|
106
|
-
public function register() {
|
107
|
-
add_settings_field(
|
108
|
-
$this->name(),
|
109
|
-
$this->label(),
|
110
|
-
array( &$this, 'to_html' ),
|
111
|
-
$this->parent_name(),
|
112
|
-
$this->section() );
|
113
|
-
}
|
114
|
-
|
115
|
-
public function validate( $value ) {
|
116
|
-
if ( $validation_function = $this->validation_function() ) {
|
117
|
-
return $validation_function( $value );
|
118
|
-
} else {
|
119
|
-
return $this->standard_validation( $value );
|
120
|
-
}
|
121
|
-
}
|
122
|
-
|
123
|
-
abstract public function to_html();
|
124
|
-
abstract protected function standard_validation( $value );
|
125
|
-
}
|
@@ -1,30 +0,0 @@
|
|
1
|
-
<?php
|
2
|
-
|
3
|
-
class Settings_Option_Select extends Settings_Option {
|
4
|
-
public function to_html() {
|
5
|
-
$id = $this->html_id();
|
6
|
-
$name = $this->html_name();
|
7
|
-
|
8
|
-
$output = "<select id='$id' name='$name'>";
|
9
|
-
|
10
|
-
foreach ( $this->valid_values() as $value => $text ) {
|
11
|
-
// If this value is selected, mark it so
|
12
|
-
$selected = selected( $this->value(), $value, false );
|
13
|
-
|
14
|
-
$output .= "<option value='$value' $selected >$text</option>";
|
15
|
-
}
|
16
|
-
|
17
|
-
$output .= "</select>";
|
18
|
-
|
19
|
-
echo $output;
|
20
|
-
}
|
21
|
-
|
22
|
-
protected function standard_validation( $value ) {
|
23
|
-
$valid_values = $this->valid_values();
|
24
|
-
if ( array_key_exists( $value, $valid_values ) ) {
|
25
|
-
return $value;
|
26
|
-
}
|
27
|
-
|
28
|
-
return $this->default_value();
|
29
|
-
}
|
30
|
-
}
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<?php
|
2
|
-
|
3
|
-
class Settings_Option_Text extends Settings_Option {
|
4
|
-
public function to_html() {
|
5
|
-
$id = $this->html_id();
|
6
|
-
$name = $this->html_name();
|
7
|
-
$value = $this->value();
|
8
|
-
|
9
|
-
echo "<input type='text' id='$id' name='$name' value='$value' />";
|
10
|
-
}
|
11
|
-
|
12
|
-
protected function standard_validation( $value ) {
|
13
|
-
return trim( $value );
|
14
|
-
}
|
15
|
-
}
|
@@ -1,56 +0,0 @@
|
|
1
|
-
<?php
|
2
|
-
|
3
|
-
class Settings_Section {
|
4
|
-
protected $_id, $_title, $_description, $_parent_name;
|
5
|
-
|
6
|
-
public function __construct( $id, $title, $description, $parent_name ) {
|
7
|
-
$this->id( $id );
|
8
|
-
$this->title( $title );
|
9
|
-
$this->description( $description );
|
10
|
-
$this->parent_name( $parent_name );
|
11
|
-
}
|
12
|
-
|
13
|
-
public function id( $id = NULL ) {
|
14
|
-
if ( NULL === $id )
|
15
|
-
return $this->_id;
|
16
|
-
|
17
|
-
$this->_id = $id;
|
18
|
-
return $this;
|
19
|
-
}
|
20
|
-
|
21
|
-
public function title( $title = NULL ) {
|
22
|
-
if ( NULL === $title )
|
23
|
-
return $this->_title;
|
24
|
-
|
25
|
-
$this->_title = $title;
|
26
|
-
return $this;
|
27
|
-
}
|
28
|
-
|
29
|
-
public function description( $description = NULL ) {
|
30
|
-
if ( NULL === $description )
|
31
|
-
return $this->_description;
|
32
|
-
|
33
|
-
$this->_description = $description;
|
34
|
-
return $this;
|
35
|
-
}
|
36
|
-
|
37
|
-
public function parent_name( $parent_name = NULL ) {
|
38
|
-
if ( NULL === $parent_name )
|
39
|
-
return $this->_parent_name;
|
40
|
-
|
41
|
-
$this->_parent_name = $parent_name;
|
42
|
-
return $this;
|
43
|
-
}
|
44
|
-
|
45
|
-
public function description_html() {
|
46
|
-
echo "<p>{$this->description()}</p>";
|
47
|
-
}
|
48
|
-
|
49
|
-
public function register() {
|
50
|
-
add_settings_section(
|
51
|
-
$this->id(),
|
52
|
-
$this->title(),
|
53
|
-
array( &$this, 'description_html' ),
|
54
|
-
$this->parent_name() );
|
55
|
-
}
|
56
|
-
}
|