trusty-cms 4.1.4 → 4.1.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (109) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +1 -1
  3. data/Gemfile.lock +115 -111
  4. data/INSTALL.md +2 -0
  5. data/README.md +1 -1
  6. data/app/assets/javascripts/admin/assets.js +1 -1
  7. data/app/views/admin/assets/edit.html.haml +3 -0
  8. data/config/environments/development.rb +2 -0
  9. data/config/locales/en.yml +1 -0
  10. data/lib/generators/extension/USAGE +30 -0
  11. data/lib/generators/extension/extension_generator.rb +97 -0
  12. data/lib/generators/extension/templates/README.md +6 -0
  13. data/lib/generators/extension/templates/RSpecRakefile +109 -0
  14. data/lib/generators/extension/templates/Rakefile +25 -0
  15. data/lib/generators/extension/templates/cucumber.yml +1 -0
  16. data/lib/generators/extension/templates/cucumber_env.rb +11 -0
  17. data/lib/generators/extension/templates/cucumber_paths.rb +22 -0
  18. data/lib/generators/extension/templates/en.yml +3 -0
  19. data/lib/generators/extension/templates/extension.rb +21 -0
  20. data/lib/generators/extension/templates/functional_test.rb +15 -0
  21. data/lib/generators/extension/templates/gemspec.rb +29 -0
  22. data/lib/generators/extension/templates/lib.rb +8 -0
  23. data/lib/generators/extension/templates/migration.rb +9 -0
  24. data/lib/generators/extension/templates/radiant_config.rb +3 -0
  25. data/lib/generators/extension/templates/routes.rb +5 -0
  26. data/lib/generators/extension/templates/spec.opts +6 -0
  27. data/lib/generators/extension/templates/spec_helper.rb +42 -0
  28. data/lib/generators/extension/templates/tasks.rake +47 -0
  29. data/lib/generators/extension/templates/test_helper.rb +26 -0
  30. data/lib/generators/extension_controller/USAGE +36 -0
  31. data/lib/generators/extension_controller/extension_controller_generator.rb +84 -0
  32. data/lib/generators/extension_controller/templates/controller.rb +10 -0
  33. data/lib/generators/extension_controller/templates/controller_spec.rb +23 -0
  34. data/lib/generators/extension_controller/templates/functional_test.rb +11 -0
  35. data/lib/generators/extension_controller/templates/helper.rb +2 -0
  36. data/lib/generators/extension_controller/templates/helper_spec.rb +11 -0
  37. data/lib/generators/extension_controller/templates/helper_test.rb +4 -0
  38. data/lib/generators/extension_controller/templates/view.html.erb +2 -0
  39. data/lib/generators/extension_controller/templates/view_spec.rb +12 -0
  40. data/lib/generators/extension_mailer/USAGE +17 -0
  41. data/lib/generators/extension_mailer/extension_mailer_generator.rb +68 -0
  42. data/lib/generators/extension_mailer/templates/fixture.erb +3 -0
  43. data/lib/generators/extension_mailer/templates/mailer.rb +15 -0
  44. data/lib/generators/extension_mailer/templates/unit_test.rb +21 -0
  45. data/lib/generators/extension_mailer/templates/view.erb +3 -0
  46. data/lib/generators/extension_migration/USAGE +34 -0
  47. data/lib/generators/extension_migration/extension_migration_generator.rb +25 -0
  48. data/lib/generators/extension_migration/templates/migration.rb +11 -0
  49. data/lib/generators/extension_model/USAGE +35 -0
  50. data/lib/generators/extension_model/extension_model_generator.rb +68 -0
  51. data/lib/generators/extension_model/templates/fixtures.yml +19 -0
  52. data/lib/generators/extension_model/templates/migration.rb +16 -0
  53. data/lib/generators/extension_model/templates/model.rb +2 -0
  54. data/lib/generators/extension_model/templates/model_spec.rb +11 -0
  55. data/lib/generators/extension_model/templates/unit_test.rb +8 -0
  56. data/lib/generators/generator_base_extension.rb +18 -0
  57. data/lib/generators/instance/instance_generator.rb +148 -0
  58. data/lib/generators/instance/templates/databases/db2.yml +40 -0
  59. data/lib/generators/instance/templates/databases/mysql.yml +47 -0
  60. data/lib/generators/instance/templates/databases/postgresql.yml +44 -0
  61. data/lib/generators/instance/templates/databases/sqlite3.yml +16 -0
  62. data/lib/generators/instance/templates/databases/sqlserver.yml +21 -0
  63. data/lib/generators/instance/templates/instance_boot.rb +122 -0
  64. data/lib/generators/instance/templates/instance_config.ru +2 -0
  65. data/lib/generators/instance/templates/instance_environment.rb +93 -0
  66. data/lib/generators/instance/templates/instance_gemfile +78 -0
  67. data/lib/generators/instance/templates/instance_generate +6 -0
  68. data/lib/generators/instance/templates/instance_radiant_config.rb +16 -0
  69. data/lib/generators/instance/templates/instance_rakefile +3 -0
  70. data/lib/generators/instance/templates/instance_routes.rb +1 -0
  71. data/lib/generators/language_extension/USAGE +27 -0
  72. data/lib/generators/language_extension/language_extension_generator.rb +71 -0
  73. data/lib/generators/language_extension/templates/README +3 -0
  74. data/lib/generators/language_extension/templates/RSpecRakefile +123 -0
  75. data/lib/generators/language_extension/templates/Rakefile +25 -0
  76. data/lib/generators/language_extension/templates/available_tags.yml +553 -0
  77. data/lib/generators/language_extension/templates/cucumber.yml +1 -0
  78. data/lib/generators/language_extension/templates/cucumber_env.rb +16 -0
  79. data/lib/generators/language_extension/templates/cucumber_paths.rb +14 -0
  80. data/lib/generators/language_extension/templates/extension.rb +12 -0
  81. data/lib/generators/language_extension/templates/functional_test.rb +15 -0
  82. data/lib/generators/language_extension/templates/gemspec.rb +24 -0
  83. data/lib/generators/language_extension/templates/lang.yml +181 -0
  84. data/lib/generators/language_extension/templates/lib.rb +8 -0
  85. data/lib/generators/language_extension/templates/spec.opts +6 -0
  86. data/lib/generators/language_extension/templates/spec_helper.rb +36 -0
  87. data/lib/generators/language_extension/templates/tasks.rake +28 -0
  88. data/lib/generators/language_extension/templates/test_helper.rb +26 -0
  89. data/lib/generators/trusty_cms/USAGE +8 -0
  90. data/lib/generators/trusty_cms/templates/Rakefile.erb +7 -0
  91. data/lib/generators/trusty_cms/templates/application.rb.erb +149 -0
  92. data/lib/generators/trusty_cms/templates/boot.rb.erb +9 -0
  93. data/lib/generators/trusty_cms/templates/config.ru.erb +4 -0
  94. data/lib/generators/trusty_cms/templates/database.yml.erb +28 -0
  95. data/lib/generators/trusty_cms/templates/environment.rb.erb +5 -0
  96. data/lib/generators/trusty_cms/templates/environments/development.rb.erb +24 -0
  97. data/lib/generators/trusty_cms/templates/environments/production.rb.erb +26 -0
  98. data/lib/generators/trusty_cms/templates/environments/test.rb.erb +35 -0
  99. data/lib/generators/trusty_cms/templates/initializers/secret_token.rb.erb +13 -0
  100. data/lib/generators/trusty_cms/templates/initializers/session_store.rb.erb +8 -0
  101. data/lib/generators/trusty_cms/templates/initializers/trusty_cms_config.rb.erb +16 -0
  102. data/lib/generators/trusty_cms/templates/preinitializer.rb.erb +18 -0
  103. data/lib/generators/trusty_cms/templates/routes.rb.erb +0 -0
  104. data/lib/generators/trusty_cms/trusty_cms_generator.rb +32 -0
  105. data/lib/trusty_cms.rb +1 -1
  106. data/lib/trusty_cms/setup.rb +7 -7
  107. data/trusty_cms.gemspec +3 -3
  108. data/yarn.lock +6 -6
  109. metadata +7635 -70
@@ -0,0 +1,3 @@
1
+ = <%= extension_name %>
2
+
3
+ Description goes here
@@ -0,0 +1,123 @@
1
+ # I think this is the one that should be moved to the extension Rakefile template
2
+
3
+ # In rails 1.2, plugins aren't available in the path until they're loaded.
4
+ # Check to see if the rspec plugin is installed first and require
5
+ # it if it is. If not, use the gem version.
6
+
7
+ # Determine where the RSpec plugin is by loading the boot
8
+ unless defined? TRUSTY_CMS_ROOT
9
+ ENV["Rails.env"] = "test"
10
+ case
11
+ when ENV["RADIANT_ENV_FILE"]
12
+ require File.dirname(ENV["RADIANT_ENV_FILE"]) + "/boot"
13
+ when File.dirname(__FILE__) =~ %r{vendor/trusty_cms/vendor/extensions}
14
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../")}/config/boot"
15
+ else
16
+ require "#{File.expand_path(File.dirname(__FILE__) + "/../../../")}/config/boot"
17
+ end
18
+ end
19
+
20
+ require 'rake'
21
+ require 'rdoc/task'
22
+ require 'rake/testtask'
23
+
24
+ rspec_base = File.expand_path(TRUSTY_CMS_ROOT + '/vendor/plugins/rspec/lib')
25
+ $LOAD_PATH.unshift(rspec_base) if File.exist?(rspec_base)
26
+ require 'spec/rake/spectask'
27
+ require 'cucumber'
28
+ require 'cucumber/rake/task'
29
+
30
+ # Cleanup the TRUSTY_CMS_ROOT constant so specs will load the environment
31
+ Object.send(:remove_const, :TRUSTY_CMS_ROOT)
32
+
33
+ extension_root = File.expand_path(File.dirname(__FILE__))
34
+
35
+ task :default => :spec
36
+ task :stats => "spec:statsetup"
37
+
38
+ desc "Run all specs in spec directory"
39
+ Spec::Rake::SpecTask.new(:spec) do |t|
40
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
41
+ t.spec_files = FileList['spec/**/*_spec.rb']
42
+ end
43
+
44
+ task :features => 'spec:integration'
45
+
46
+ namespace :spec do
47
+ desc "Run all specs in spec directory with RCov"
48
+ Spec::Rake::SpecTask.new(:rcov) do |t|
49
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
50
+ t.spec_files = FileList['spec/**/*_spec.rb']
51
+ t.rcov = true
52
+ t.rcov_opts = ['--exclude', 'spec', '--rails']
53
+ end
54
+
55
+ desc "Print Specdoc for all specs"
56
+ Spec::Rake::SpecTask.new(:doc) do |t|
57
+ t.spec_opts = ["--format", "specdoc", "--dry-run"]
58
+ t.spec_files = FileList['spec/**/*_spec.rb']
59
+ end
60
+
61
+ [:models, :controllers, :views, :helpers].each do |sub|
62
+ desc "Run the specs under spec/#{sub}"
63
+ Spec::Rake::SpecTask.new(sub) do |t|
64
+ t.spec_opts = ['--options', "\"#{extension_root}/spec/spec.opts\""]
65
+ t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
66
+ end
67
+ end
68
+
69
+ desc "Run the Cucumber features"
70
+ Cucumber::Rake::Task.new(:integration) do |t|
71
+ t.fork = true
72
+ t.cucumber_opts = ['--format', (ENV['CUCUMBER_FORMAT'] || 'pretty')]
73
+ # t.feature_pattern = "#{extension_root}/features/**/*.feature"
74
+ t.profile = "default"
75
+ end
76
+
77
+ # Setup specs for stats
78
+ task :statsetup do
79
+ require 'code_statistics'
80
+ ::STATS_DIRECTORIES << %w(Model\ specs spec/models)
81
+ ::STATS_DIRECTORIES << %w(View\ specs spec/views)
82
+ ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers)
83
+ ::STATS_DIRECTORIES << %w(Helper\ specs spec/views)
84
+ ::CodeStatistics::TEST_TYPES << "Model specs"
85
+ ::CodeStatistics::TEST_TYPES << "View specs"
86
+ ::CodeStatistics::TEST_TYPES << "Controller specs"
87
+ ::CodeStatistics::TEST_TYPES << "Helper specs"
88
+ ::STATS_DIRECTORIES.delete_if {|a| a[0] =~ /test/}
89
+ end
90
+
91
+ namespace :db do
92
+ namespace :fixtures do
93
+ desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y"
94
+ task :load => :environment do
95
+ require 'active_record/fixtures'
96
+ ActiveRecord::Base.establish_connection(Rails.env.to_sym)
97
+ (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/) : Dir.glob(File.join(Rails.root, 'spec', 'fixtures', '*.{yml,csv}'))).each do |fixture_file|
98
+ Fixtures.create_fixtures('spec/fixtures', File.basename(fixture_file, '.*'))
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
104
+
105
+ desc 'Generate documentation for the <%= file_name %> extension.'
106
+ RDoc:Task.new(:rdoc) do |rdoc|
107
+ rdoc.rdoc_dir = 'rdoc'
108
+ rdoc.title = '<%= class_name %>'
109
+ rdoc.options << '--line-numbers' << '--inline-source'
110
+ rdoc.rdoc_files.include('README')
111
+ rdoc.rdoc_files.include('lib/**/*.rb')
112
+ end
113
+
114
+ # For extensions that are in transition
115
+ desc 'Test the <%= file_name %> extension.'
116
+ Rake::TestTask.new(:test) do |t|
117
+ t.libs << 'lib'
118
+ t.pattern = 'test/**/*_test.rb'
119
+ t.verbose = true
120
+ end
121
+
122
+ # Load any custom rakefiles for extension
123
+ Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }
@@ -0,0 +1,25 @@
1
+ require 'rake'
2
+ require 'rake/testtask'
3
+ require 'rdoc/task'
4
+
5
+ desc 'Default: run unit tests.'
6
+ task :default => :test
7
+
8
+ desc 'Test the <%= file_name %> extension.'
9
+ Rake::TestTask.new(:test) do |t|
10
+ t.libs << 'lib'
11
+ t.pattern = 'test/**/*_test.rb'
12
+ t.verbose = true
13
+ end
14
+
15
+ desc 'Generate documentation for the <%= file_name %> extension.'
16
+ RDoc:Task.new(:rdoc) do |rdoc|
17
+ rdoc.rdoc_dir = 'rdoc'
18
+ rdoc.title = '<%= class_name %>'
19
+ rdoc.options << '--line-numbers' << '--inline-source'
20
+ rdoc.rdoc_files.include('README')
21
+ rdoc.rdoc_files.include('lib/**/*.rb')
22
+ end
23
+
24
+ # Load any custom rakefiles for extension
25
+ Dir[File.dirname(__FILE__) + '/tasks/*.rake'].sort.each { |f| require f }
@@ -0,0 +1,553 @@
1
+ ---
2
+ <%= localization_name %>:
3
+ desc:
4
+ author:
5
+ Renders the name of the author of the current page.
6
+
7
+ breadcrumb:
8
+ Renders the @breadcrumb@ attribute of the current page.
9
+
10
+ breadcrumbs:
11
+ Renders a trail of breadcrumbs to the current page. The separator attribute
12
+ specifies the HTML fragment that is inserted between each of the breadcrumbs. By
13
+ default it is set to @>@. The boolean nolinks attribute can be specified to render
14
+ breadcrumbs in plain text, without any links (useful when generating title tag).
15
+
16
+ *Usage&#58;*
17
+
18
+ <pre><code><r&#58;breadcrumbs [separator="separator_string"] [nolinks="true"] /></code></pre>
19
+
20
+ children-count:
21
+ Renders the total number of children.
22
+
23
+ children-each-child:
24
+ Page attribute tags inside of this tag refer to the current child. This is occasionally
25
+ useful if you are inside of another tag (like &lt;r&#58;find&gt;) and need to refer back to the
26
+ current child.
27
+
28
+ *Usage&#58;*
29
+
30
+ <pre><code><r&#58;children&#58;each>
31
+ <r&#58;child>...</r&#58;child>
32
+ </r&#58;children&#58;each>
33
+ </code></pre>
34
+
35
+ children-each-header:
36
+ Renders the tag contents only if the contents do not match the previous header. This
37
+ is extremely useful for rendering date headers for a list of child pages.
38
+
39
+ If you would like to use several header blocks you may use the @name@ attribute to
40
+ name the header. When a header is named it will not restart until another header of
41
+ the same name is different.
42
+
43
+ Using the @restart@ attribute you can cause other named headers to restart when the
44
+ present header changes. Simply specify the names of the other headers in a semicolon
45
+ separated list.
46
+
47
+ *Usage&#58;*
48
+
49
+ <pre><code><r&#58;children&#58;each>
50
+ <r&#58;header [name="header_name"] [restart="name1[;name2;...]"]>
51
+ ...
52
+ </r&#58;header>
53
+ </r&#58;children&#58;each>
54
+ </code></pre>
55
+
56
+ children-each-if_first:
57
+ Renders the tag contents only if the current page is the first child in the context of
58
+ a children&#58;each tag
59
+
60
+ *Usage&#58;*
61
+
62
+ <pre><code><r&#58;children&#58;each>
63
+ <r&#58;if_first >
64
+ ...
65
+ </r&#58;if_first>
66
+ </r&#58;children&#58;each>
67
+ </code></pre>
68
+
69
+
70
+ children-each-if_last:
71
+ Renders the tag contents only if the current page is the last child in the context of
72
+ a children&#58;each tag
73
+
74
+ *Usage&#58;*
75
+
76
+ <pre><code><r&#58;children&#58;each>
77
+ <r&#58;if_last >
78
+ ...
79
+ </r&#58;if_last>
80
+ </r&#58;children&#58;each>
81
+ </code></pre>
82
+
83
+
84
+ children-each-unless_first:
85
+ Renders the tag contents unless the current page is the first child in the context of
86
+ a children&#58;each tag
87
+
88
+ *Usage&#58;*
89
+
90
+ <pre><code><r&#58;children&#58;each>
91
+ <r&#58;unless_first >
92
+ ...
93
+ </r&#58;unless_first>
94
+ </r&#58;children&#58;each>
95
+ </code></pre>
96
+
97
+
98
+ children-each-unless_last:
99
+ Renders the tag contents unless the current page is the last child in the context of
100
+ a children&#58;each tag
101
+
102
+ *Usage&#58;*
103
+
104
+ <pre><code><r&#58;children&#58;each>
105
+ <r&#58;unless_last >
106
+ ...
107
+ </r&#58;unless_last>
108
+ </r&#58;children&#58;each>
109
+ </code></pre>
110
+
111
+
112
+ children-each:
113
+ Cycles through each of the children. Inside this tag all page attribute tags
114
+ are mapped to the current child page.
115
+
116
+ *Usage&#58;*
117
+
118
+ <pre><code><r&#58;children&#58;each [offset="number"] [limit="number"]
119
+ [by="published_at|updated_at|created_at|slug|title|keywords|description"]
120
+ [order="asc|desc"] [status="draft|reviewed|published|hidden|all"]>
121
+ ...
122
+ </r&#58;children&#58;each>
123
+ </code></pre>
124
+
125
+ children-first:
126
+ Returns the first child. Inside this tag all page attribute tags are mapped to
127
+ the first child. Takes the same ordering options as @<r&#58;children&#58;each>@.
128
+
129
+ *Usage&#58;*
130
+
131
+ <pre><code><r&#58;children&#58;first>...</r&#58;children&#58;first></code></pre>
132
+
133
+ children-last:
134
+ Returns the last child. Inside this tag all page attribute tags are mapped to
135
+ the last child. Takes the same ordering options as @<r&#58;children&#58;each>@.
136
+
137
+ *Usage&#58;*
138
+
139
+ <pre><code><r&#58;children&#58;last>...</r&#58;children&#58;last></code></pre>
140
+
141
+ children:
142
+ Gives access to a page's children.
143
+
144
+ *Usage&#58;*
145
+
146
+ <pre><code><r&#58;children>...</r&#58;children></code></pre>
147
+
148
+ comment:
149
+ Nothing inside a set of comment tags is rendered.
150
+
151
+ *Usage&#58;*
152
+
153
+ <pre><code><r&#58;comment>...</r&#58;comment></code></pre>
154
+
155
+ content:
156
+ Renders the main content of a page. Use the @part@ attribute to select a specific
157
+ page part. By default the @part@ attribute is set to body. Use the @inherit@
158
+ attribute to specify that if a page does not have a content part by that name that
159
+ the tag should render the parent's content part. By default @inherit@ is set to
160
+ @false@. Use the @contextual@ attribute to force a part inherited from a parent
161
+ part to be evaluated in the context of the child page. By default 'contextual'
162
+ is set to true.
163
+
164
+ *Usage&#58;*
165
+
166
+ <pre><code><r&#58;content [part="part_name"] [inherit="true|false"] [contextual="true|false"] /></code></pre>
167
+
168
+ cycle:
169
+ Renders one of the passed values based on a global cycle counter. Use the @reset@
170
+ attribute to reset the cycle to the beginning. Use the @name@ attribute to track
171
+ multiple cycles; the default is @cycle@.
172
+
173
+ *Usage&#58;*
174
+
175
+ <pre><code><r&#58;cycle values="first, second, third" [reset="true|false"] [name="cycle"] /></code></pre>
176
+
177
+ date:
178
+ Renders the date based on the current page (by default when it was published or created).
179
+ The format attribute uses the same formating codes used by the Ruby @strftime@ function. By
180
+ default it's set to @&#37;A, &#37;B &#37;d, &#37;Y@. The @for@ attribute selects which date to render. Valid
181
+ options are @published_at@, @created_at@, @updated_at@, and @now@. @now@ will render the
182
+ current date/time, regardless of the page.
183
+
184
+ *Usage&#58;*
185
+
186
+ <pre><code><r&#58;date [format="&#37;A, &#37;B &#37;d, &#37;Y"] [for="published_at"]/></code></pre>
187
+
188
+ escape_html:
189
+ Escapes angle brackets, etc. for rendering in an HTML document.
190
+
191
+ *Usage&#58;*
192
+
193
+ <pre><code><r&#58;escape_html>...</r&#58;escape_html></code></pre>
194
+
195
+ find:
196
+ Inside this tag all page related tags refer to the page found at the @url@ attribute.
197
+ @url@s may be relative or absolute paths.
198
+
199
+ *Usage&#58;*
200
+
201
+ <pre><code><r&#58;find url="value_to_find">...</r&#58;find></code></pre>
202
+
203
+ if_ancestor_or_self:
204
+ Renders the contained elements if the current contextual page is either the actual page or one of its parents.
205
+
206
+ This is typically used inside another tag (like &lt;r&#58;children&#58;each&gt;) to add conditional mark-up if the child element is or descends from the current page.
207
+
208
+ *Usage&#58;*
209
+
210
+ <pre><code><r&#58;if_ancestor_or_self>...</r&#58;if_ancestor_or_self></code></pre>
211
+
212
+ if_children:
213
+ Renders the contained elements only if the current contextual page has one or
214
+ more child pages. The @status@ attribute limits the status of found child pages
215
+ to the given status, the default is @"published"@. @status="all"@ includes all
216
+ non-virtual pages regardless of status.
217
+
218
+ *Usage&#58;*
219
+
220
+ <pre><code><r&#58;if_children [status="published"]>...</r&#58;if_children></code></pre>
221
+
222
+ if_content:
223
+ Renders the containing elements if all of the listed parts exist on a page.
224
+ By default the @part@ attribute is set to @body@, but you may list more than one
225
+ part by separating them with a comma. Setting the optional @inherit@ to true will
226
+ search ancestors independently for each part. By default @inherit@ is set to @false@.
227
+
228
+ When listing more than one part, you may optionally set the @find@ attribute to @any@
229
+ so that it will render the containing elements if any of the listed parts are found.
230
+ By default the @find@ attribute is set to @all@.
231
+
232
+ *Usage&#58;*
233
+
234
+ <pre><code><r&#58;if_content [part="part_name, other_part"] [inherit="true"] [find="any"]>...</r&#58;if_content></code></pre>
235
+
236
+ if_dev:
237
+ Renders the containing elements only if TrustyCms in is development mode.
238
+
239
+ *Usage&#58;*
240
+
241
+ <pre><code><r&#58;if_dev>...</r&#58;if_dev></code></pre>
242
+
243
+ if_parent:
244
+ Renders the contained elements only if the current contextual page has a parent, i.e.
245
+ is not the root page.
246
+
247
+ *Usage&#58;*
248
+
249
+ <pre><code><r&#58;if_parent>...</r&#58;if_parent></code></pre>
250
+
251
+ if_self:
252
+ Renders the contained elements if the current contextual page is also the actual page.
253
+
254
+ This is typically used inside another tag (like &lt;r&#58;children&#58;each&gt;) to add conditional mark-up if the child element is the current page.
255
+
256
+ *Usage&#58;*
257
+
258
+ <pre><code><r&#58;if_self>...</r&#58;if_self></code></pre>
259
+
260
+ if_url:
261
+ Renders the containing elements only if the page's url matches the regular expression
262
+ given in the @matches@ attribute. If the @ignore_case@ attribute is set to false, the
263
+ match is case sensitive. By default, @ignore_case@ is set to true.
264
+
265
+ *Usage&#58;*
266
+
267
+ <pre><code><r&#58;if_url matches="regexp" [ignore_case="true|false"]>...</r&#58;if_url></code></pre>
268
+
269
+ link:
270
+ Renders a link to the page. When used as a single tag it uses the page's title
271
+ for the link name. When used as a double tag the part in between both tags will
272
+ be used as the link text. The link tag passes all attributes over to the HTML
273
+ @a@ tag. This is very useful for passing attributes like the @class@ attribute
274
+ or @id@ attribute. If the @anchor@ attribute is passed to the tag it will
275
+ append a pound sign (<code>#</code>) followed by the value of the attribute to
276
+ the @href@ attribute of the HTML @a@ tag--effectively making an HTML anchor.
277
+
278
+ *Usage&#58;*
279
+
280
+ <pre><code><r&#58;link [anchor="name"] [other attributes...] /></code></pre>
281
+
282
+ or
283
+
284
+ <pre><code><r&#58;link [anchor="name"] [other attributes...]>link text here</r&#58;link></code></pre>
285
+
286
+ markdown:
287
+ Filters its contents with the Markdown filter.
288
+
289
+ *Usage&#58;*
290
+
291
+ <pre><code><r&#58;markdown>** bold text **</r&#58;markdown></code></pre>
292
+
293
+ produces
294
+
295
+ <pre><code><strong> bold text </strong></code></pre>
296
+
297
+ meta-description:
298
+ Emits the page description field in a meta tag, unless attribute
299
+ 'tag' is set to 'false'.
300
+
301
+ *Usage&#58;*
302
+
303
+ <pre><code> <r&#58;meta&#58;description [tag="false"] /> </code></pre>
304
+
305
+ meta-keywords:
306
+ Emits the page keywords field in a meta tag, unless attribute
307
+ 'tag' is set to 'false'.
308
+
309
+ *Usage&#58;*
310
+
311
+ <pre><code> <r&#58;meta&#58;keywords [tag="false"] /> </code></pre>
312
+
313
+ meta:
314
+ The namespace for 'meta' attributes. If used as a singleton tag, both the description
315
+ and keywords fields will be output as &lt;meta /&gt; tags unless the attribute 'tag' is set to 'false'.
316
+
317
+ *Usage&#58;*
318
+
319
+ <pre><code> <r&#58;meta [tag="false"] />
320
+ <r&#58;meta>
321
+ <r&#58;description [tag="false"] />
322
+ <r&#58;keywords [tag="false"] />
323
+ </r&#58;meta>
324
+ </code></pre>
325
+
326
+ navigation-if_first:
327
+ Renders the containing elements if the element is the first
328
+ in the navigation list
329
+
330
+ *Usage&#58;*
331
+
332
+ <pre><code><r&#58;normal><r&#58;if_first>...</r&#58;if_first></r&#58;normal></code></pre>
333
+
334
+ navigation-if_last:
335
+ Renders the containing elements if the element is the last
336
+ in the navigation list
337
+
338
+ *Usage&#58;*
339
+
340
+ <pre><code><r&#58;normal><r&#58;if_last>...</r&#58;if_last></r&#58;normal></code></pre>
341
+
342
+ navigation:
343
+ Renders a list of links specified in the @urls@ attribute according to three
344
+ states&#58;
345
+
346
+ * @normal@ specifies the normal state for the link
347
+ * @here@ specifies the state of the link when the url matches the current
348
+ page's URL
349
+ * @selected@ specifies the state of the link when the current page matches
350
+ is a child of the specified url
351
+ # @if_last@ renders its contents within a @normal@, @here@ or
352
+ @selected@ tag if the item is the last in the navigation elements
353
+ # @if_first@ renders its contents within a @normal@, @here@ or
354
+ @selected@ tag if the item is the first in the navigation elements
355
+
356
+ The @between@ tag specifies what should be inserted in between each of the links.
357
+
358
+ *Usage&#58;*
359
+
360
+ <pre><code><r&#58;navigation urls="[Title&#58; url | Title&#58; url | ...]">
361
+ <r&#58;normal><a href="<r&#58;url />"><r&#58;title /></a></r&#58;normal>
362
+ <r&#58;here><strong><r&#58;title /></strong></r&#58;here>
363
+ <r&#58;selected><strong><a href="<r&#58;url />"><r&#58;title /></a></strong></r&#58;selected>
364
+ <r&#58;between> | </r&#58;between>
365
+ </r&#58;navigation>
366
+ </code></pre>
367
+
368
+ page:
369
+ Causes the tags referring to a page's attributes to refer to the current page.
370
+
371
+ *Usage&#58;*
372
+
373
+ <pre><code><r&#58;page>...</r&#58;page></code></pre>
374
+
375
+ parent:
376
+ Page attribute tags inside this tag refer to the parent of the current page.
377
+
378
+ *Usage&#58;*
379
+
380
+ <pre><code><r&#58;parent>...</r&#58;parent></code></pre>
381
+
382
+ random:
383
+ Randomly renders one of the options specified by the @option@ tags.
384
+
385
+ *Usage&#58;*
386
+
387
+ <pre><code><r&#58;random>
388
+ <r&#58;option>...</r&#58;option>
389
+ <r&#58;option>...</r&#58;option>
390
+ ...
391
+ <r&#58;random>
392
+ </code></pre>
393
+
394
+ rfc1123_date:
395
+ Outputs the published date using the format mandated by RFC 1123. (Ideal for RSS feeds.)
396
+
397
+ *Usage&#58;*
398
+
399
+ <pre><code><r&#58;rfc1123_date /></code></pre>
400
+
401
+ slug:
402
+ Renders the @slug@ attribute of the current page.
403
+
404
+ smarty_pants:
405
+ Filters its contents with the SmartyPants filter.
406
+
407
+ *Usage&#58;*
408
+
409
+ <pre><code><r&#58;smarty_pants>"A revolutionary quotation."</r&#58;smarty_pants></code></pre>
410
+
411
+ produces
412
+
413
+ <pre><code>&#8220;A revolutionary quotation.&#8221;</code></pre>
414
+
415
+ snippet:
416
+ Renders the snippet specified in the @name@ attribute within the context of a page.
417
+
418
+ *Usage&#58;*
419
+
420
+ <pre><code><r&#58;snippet name="snippet_name" /></code></pre>
421
+
422
+ When used as a double tag, the part in between both tags may be used within the
423
+ snippet itself, being substituted in place of @<r&#58;yield/>@.
424
+
425
+ *Usage&#58;*
426
+
427
+ <pre><code><r&#58;snippet name="snippet_name">Lorem ipsum dolor...</r&#58;snippet></code></pre>
428
+
429
+ status:
430
+ Prints the page's status as a string. Optional attribute 'downcase'
431
+ will cause the status to be all lowercase.
432
+
433
+ *Usage&#58;*
434
+
435
+ <pre><code><r&#58;status [downcase='true'] /></code></pre>
436
+
437
+ textile:
438
+ Filters its contents with the Textile filter.
439
+
440
+ *Usage*&#58;
441
+
442
+ <pre><code><r&#58;textile>
443
+ * First
444
+ * Second
445
+ </r&#58;textile></code></pre>
446
+
447
+ produces&#58;
448
+
449
+ <pre><code><ul>
450
+ <li>First</li>
451
+ <li>Second</li>
452
+ </ul></code></pre>
453
+
454
+ title:
455
+ Renders the @title@ attribute of the current page.
456
+
457
+ unless_ancestor_or_self:
458
+ Renders the contained elements unless the current contextual page is either the actual page or one of its parents.
459
+
460
+ This is typically used inside another tag (like &lt;r&#58;children&#58;each&gt;) to add conditional mark-up unless the child element is or descends from the current page.
461
+
462
+ *Usage&#58;*
463
+
464
+ <pre><code><r&#58;unless_ancestor_or_self>...</r&#58;unless_ancestor_or_self></code></pre>
465
+
466
+ unless_children:
467
+ Renders the contained elements only if the current contextual page has no children.
468
+ The @status@ attribute limits the status of found child pages to the given status,
469
+ the default is @"published"@. @status="all"@ includes all non-virtual pages
470
+ regardless of status.
471
+
472
+ *Usage&#58;*
473
+
474
+ <pre><code><r&#58;unless_children [status="published"]>...</r&#58;unless_children></code></pre>
475
+
476
+ unless_content:
477
+ The opposite of the @if_content@ tag. It renders the contained elements if all of the
478
+ specified parts do not exist. Setting the optional @inherit@ to true will search
479
+ ancestors independently for each part. By default @inherit@ is set to @false@.
480
+
481
+ When listing more than one part, you may optionally set the @find@ attribute to @any@
482
+ so that it will not render the containing elements if any of the listed parts are found.
483
+ By default the @find@ attribute is set to @all@.
484
+
485
+ *Usage&#58;*
486
+
487
+ <pre><code><r&#58;unless_content [part="part_name, other_part"] [inherit="false"] [find="any"]>...</r&#58;unless_content></code></pre>
488
+
489
+ unless_dev:
490
+ The opposite of the @if_dev@ tag.
491
+
492
+ *Usage&#58;*
493
+
494
+ <pre><code><r&#58;unless_dev>...</r&#58;unless_dev></code></pre>
495
+
496
+ unless_parent:
497
+ Renders the contained elements only if the current contextual page has no parent, i.e.
498
+ is the root page.
499
+
500
+ *Usage&#58;*
501
+
502
+ <pre><code><r&#58;unless_parent>...</r&#58;unless_parent></code></pre>
503
+
504
+ unless_self:
505
+ Renders the contained elements unless the current contextual page is also the actual page.
506
+
507
+ This is typically used inside another tag (like &lt;r&#58;children&#58;each&gt;) to add conditional mark-up unless the child element is the current page.
508
+
509
+ *Usage&#58;*
510
+
511
+ <pre><code><r&#58;unless_self>...</r&#58;unless_self></code></pre>
512
+
513
+ unless_url:
514
+ The opposite of the @if_url@ tag.
515
+
516
+ *Usage&#58;*
517
+
518
+ <pre><code><r&#58;unless_url matches="regexp" [ignore_case="true|false"]>...</r&#58;unless_url></code></pre>
519
+
520
+ url:
521
+ Renders the @url@ attribute of the current page.
522
+
523
+ yield:
524
+ Used within a snippet as a placeholder for substitution of child content, when
525
+ the snippet is called as a double tag.
526
+
527
+ *Usage (within a snippet)&#58;*
528
+
529
+ <pre><code>
530
+ <div id="outer">
531
+ <p>before</p>
532
+ <r&#58;yield/>
533
+ <p>after</p>
534
+ </div>
535
+ </code></pre>
536
+
537
+ If the above snippet was named "yielding", you could call it from any Page,
538
+ Layout or Snippet as follows&#58;
539
+
540
+ <pre><code><r&#58;snippet name="yielding">Content within</r&#58;snippet></code></pre>
541
+
542
+ Which would output the following&#58;
543
+
544
+ <pre><code>
545
+ <div id="outer">
546
+ <p>before</p>
547
+ Content within
548
+ <p>after</p>
549
+ </div>
550
+ </code></pre>
551
+
552
+ When called in the context of a Page or a Layout, @<r&#58;yield/>@ outputs nothing.
553
+