zen 0.4 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.aspell.en.pws +31 -0
- data/.gems +1 -1
- data/.mailmap +1 -0
- data/.travis.yml +13 -7
- data/.yardopts +1 -1
- data/Rakefile +2 -2
- data/guide/changelog.md +23 -5
- data/guide/css/common.css +48 -0
- data/guide/javascript.md +1 -0
- data/guide/javascript/zen_form.md +46 -0
- data/guide/zen_compared.md +104 -0
- data/lib/zen.rb +21 -12
- data/lib/zen/helper/breadcrumb.rb +1 -1
- data/lib/zen/helper/message.rb +4 -5
- data/lib/zen/language.rb +75 -10
- data/lib/zen/markup.rb +20 -8
- data/lib/zen/model/init.rb +14 -9
- data/lib/zen/model/plugin/events.rb +1 -1
- data/lib/zen/package.rb +71 -14
- data/lib/zen/package/categories/lib/categories/controller/categories.rb +39 -12
- data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +26 -5
- data/lib/zen/package/categories/lib/categories/helper/category.rb +37 -6
- data/lib/zen/package/categories/lib/categories/helper/category_frontend.rb +2 -2
- data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +26 -29
- data/lib/zen/package/comments/lib/comments.rb +9 -1
- data/lib/zen/package/comments/lib/comments/anti_spam.rb +1 -1
- data/lib/zen/package/comments/lib/comments/controller/comments.rb +59 -14
- data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +49 -11
- data/lib/zen/package/comments/lib/comments/helper/comment.rb +14 -2
- data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +3 -3
- data/lib/zen/package/comments/migrations/1308774099_comment_status.rb +1 -1
- data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +12 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +24 -6
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +68 -20
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +106 -26
- data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +50 -11
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +2 -2
- data/lib/zen/package/dashboard/lib/dashboard/controller/dashboard.rb +1 -1
- data/lib/zen/package/menu.rb +6 -1
- data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +44 -9
- data/lib/zen/package/menus/lib/menus/controller/menus.rb +53 -13
- data/lib/zen/package/menus/lib/menus/helper/menu.rb +30 -4
- data/lib/zen/package/menus/lib/menus/model/menu.rb +4 -2
- data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +48 -9
- data/lib/zen/package/sections/lib/sections/controller/sections.rb +77 -21
- data/lib/zen/package/sections/lib/sections/helper/section.rb +32 -4
- data/lib/zen/package/sections/lib/sections/model/section_entry.rb +1 -1
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +5 -4
- data/lib/zen/package/sections/lib/sections/view/admin/sections/form.xhtml +3 -3
- data/lib/zen/package/sections/migrations/1308813320_section_entry_statuses.rb +1 -1
- data/lib/zen/package/settings/lib/settings/blue_form_parameters.rb +2 -2
- data/lib/zen/package/settings/lib/settings/controller/settings.rb +60 -15
- data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +1 -1
- data/lib/zen/package/users/lib/users/controller/user_groups.rb +42 -7
- data/lib/zen/package/users/lib/users/controller/users.rb +78 -16
- data/lib/zen/package/users/lib/users/helper/users.rb +29 -4
- data/lib/zen/package/users/lib/users/view/admin/user-groups/form.xhtml +2 -2
- data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +2 -2
- data/lib/zen/public/admin/zen/css/general.css +5 -0
- data/lib/zen/public/admin/zen/css/messages.css +1 -0
- data/lib/zen/public/admin/zen/css/tables.css +33 -0
- data/lib/zen/public/admin/zen/css/tabs.css +8 -0
- data/lib/zen/public/admin/zen/js/index.js +21 -2
- data/lib/zen/public/admin/zen/js/lib/events.js +45 -0
- data/lib/zen/public/admin/zen/js/lib/form.js +229 -0
- data/lib/zen/public/admin/zen/js/lib/hash.js +0 -27
- data/lib/zen/task/spelling.rake +97 -0
- data/lib/zen/task/test.rake +21 -0
- data/lib/zen/theme.rb +80 -24
- data/lib/zen/validation.rb +1 -1
- data/lib/zen/version.rb +1 -1
- data/proto/app/config/config.rb.erb +9 -4
- data/proto/app/config/middlewares.rb +1 -2
- data/spec/README.md +56 -0
- data/spec/zen/controller/admin_controller.rb +0 -1
- data/spec/zen/controller/preview.rb +0 -1
- data/spec/zen/package.rb +32 -0
- data/spec/zen/package/categories/controller/categories.rb +7 -0
- data/spec/zen/package/categories/controller/category_groups.rb +7 -0
- data/spec/zen/package/comments/controller/comments.rb +7 -0
- data/spec/zen/package/custom_fields/controller/custom_field_groups.rb +7 -0
- data/spec/zen/package/custom_fields/controller/custom_field_types.rb +7 -0
- data/spec/zen/package/custom_fields/controller/custom_fields.rb +7 -0
- data/spec/zen/package/menus/controller/menu_items.rb +7 -0
- data/spec/zen/package/menus/controller/menus.rb +7 -0
- data/spec/zen/package/menus/helper/menu_frontend.rb +1 -1
- data/spec/zen/package/sections/controller/section_entries.rb +39 -0
- data/spec/zen/package/sections/controller/sections.rb +14 -0
- data/spec/zen/package/users/controller/user_groups.rb +7 -0
- data/spec/zen/package/users/controller/users.rb +7 -0
- data/zen.gemspec +6 -5
- metadata +142 -40
data/lib/zen/helper/message.rb
CHANGED
@@ -5,10 +5,9 @@ module Ramaze
|
|
5
5
|
#:nodoc:
|
6
6
|
module Helper
|
7
7
|
##
|
8
|
-
#
|
9
|
-
#
|
10
|
-
#
|
11
|
-
# https://github.com/yorickpeterse/stumpert/
|
8
|
+
# Helper that wraps around Ramaze's flash helper and provides an easy way of
|
9
|
+
# setting messages (errors, informal messages, etc) as well as rendering the
|
10
|
+
# required HTML.
|
12
11
|
#
|
13
12
|
# ## Usage
|
14
13
|
#
|
@@ -52,7 +51,7 @@ module Ramaze
|
|
52
51
|
gestalt = ::Ramaze::Gestalt.new
|
53
52
|
|
54
53
|
return if flash[:messages].nil?
|
55
|
-
|
54
|
+
|
56
55
|
gestalt.div(:id => 'message_container', :class => 'container') do
|
57
56
|
# Render each individual group
|
58
57
|
types.each do |type|
|
data/lib/zen/language.rb
CHANGED
@@ -20,18 +20,55 @@ module Zen
|
|
20
20
|
#
|
21
21
|
# When adding a language you **must** set the following items:
|
22
22
|
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
23
|
+
# <table class="table full">
|
24
|
+
# <thead>
|
25
|
+
# <tr>
|
26
|
+
# <th>Attribute</th>
|
27
|
+
# <th>Description</th>
|
28
|
+
# </tr>
|
29
|
+
# </thead>
|
30
|
+
# <tbody>
|
31
|
+
# <tr>
|
32
|
+
# <td>name</td>
|
33
|
+
# <td>
|
34
|
+
# The language code as defined in
|
35
|
+
# <a href="https://en.wikipedia.org/wiki/ISO_639">ISO 369</a>.
|
36
|
+
# Examples of these codes are "en-GB", "nl", etc.
|
37
|
+
# </td>
|
38
|
+
# </tr>
|
39
|
+
# <tr>
|
40
|
+
# <td>title</td>
|
41
|
+
# <td>
|
42
|
+
# A human friendly version of the name of the language. This
|
43
|
+
# name should be set in the specific language. For example,
|
44
|
+
# for Dutch the title should be "Nederlands" instead of
|
45
|
+
# "Dutch".
|
46
|
+
# </td>
|
47
|
+
# </tr>
|
48
|
+
# </tbody>
|
49
|
+
# </table>
|
29
50
|
#
|
30
51
|
# Optionally you can also set the following attributes:
|
31
52
|
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
53
|
+
# <table class="table full">
|
54
|
+
# <thead>
|
55
|
+
# <tr>
|
56
|
+
# <th>Attribute</th>
|
57
|
+
# <th>Description</th>
|
58
|
+
# </tr>
|
59
|
+
# </thead>
|
60
|
+
# <tbody>
|
61
|
+
# <tr>
|
62
|
+
# <td>rtl</td>
|
63
|
+
# <td>
|
64
|
+
# indicates that the language reads from right to left. When
|
65
|
+
# set to true the html tag will have an extra "dir" attribute
|
66
|
+
# so that browsers can properly display the text from right to
|
67
|
+
# left.
|
68
|
+
# </td>
|
69
|
+
# </tr>
|
70
|
+
# </tbody>
|
71
|
+
# </table>
|
35
72
|
#
|
36
73
|
# ## Adding Translations
|
37
74
|
#
|
@@ -118,7 +155,7 @@ module Zen
|
|
118
155
|
# namespace).
|
119
156
|
#
|
120
157
|
# In the last case missing language files will be loaded if possible. However,
|
121
|
-
# it is recommended that you
|
158
|
+
# it is recommended that you load your language files before starting the
|
122
159
|
# application. By doing this these translations don't have to be loaded during
|
123
160
|
# an HTTP request which could potentially slow down the application.
|
124
161
|
#
|
@@ -127,6 +164,25 @@ module Zen
|
|
127
164
|
#
|
128
165
|
# Zen::Language.load('foobar')
|
129
166
|
#
|
167
|
+
# Due to the way the language system works it's impossible to load these
|
168
|
+
# before {Zen.start} is called. The recommended way of loading a language file
|
169
|
+
# is by wrapping it in an event listener for the "post_start" event:
|
170
|
+
#
|
171
|
+
# Zen::Event.listen :post_start do
|
172
|
+
# Zen::Language.load('example')
|
173
|
+
# end
|
174
|
+
#
|
175
|
+
# The reason for this requirement is that language files are stored in a cache
|
176
|
+
# (Ramaze::Cache::LRU by default) and this cache isn't set up until
|
177
|
+
# {Zen.start} is called.
|
178
|
+
#
|
179
|
+
# <div class="note todo">
|
180
|
+
# <p>
|
181
|
+
# This can't be stressed enough: always load language files using the
|
182
|
+
# post_start event.
|
183
|
+
# </p>
|
184
|
+
# </div>
|
185
|
+
#
|
130
186
|
# ## Using Translations
|
131
187
|
#
|
132
188
|
# Once the entire process of adding and loading a language file has been
|
@@ -148,6 +204,15 @@ module Zen
|
|
148
204
|
# lang('foobar')
|
149
205
|
# lang('foo bar')
|
150
206
|
#
|
207
|
+
# <div class="note todo">
|
208
|
+
# <p>
|
209
|
+
# Because language files aren't loaded until Zen.start is called you
|
210
|
+
# should never use or rely on translations before the application has
|
211
|
+
# started. Most of the core code works around this by loading
|
212
|
+
# translations using blocks whenever they're needed.
|
213
|
+
# </p>
|
214
|
+
# </div>
|
215
|
+
#
|
151
216
|
# [iso 639]: https://en.wikipedia.org/wiki/ISO_639
|
152
217
|
#
|
153
218
|
# @since 0.2
|
data/lib/zen/markup.rb
CHANGED
@@ -11,7 +11,7 @@ module Zen
|
|
11
11
|
# html = Zen::Markup.convert(:markdown, 'Hello **world**')
|
12
12
|
#
|
13
13
|
# When converting Markdown or Textile Zen will automatically install the
|
14
|
-
# required gems. For Markdown
|
14
|
+
# required gems. For Markdown Redcarpet is used, for Textile RedCloth is used.
|
15
15
|
#
|
16
16
|
# You may be tempted to call the various methods directly but it is not
|
17
17
|
# recommended to do so. For example, you might have the following code:
|
@@ -36,12 +36,12 @@ module Zen
|
|
36
36
|
# Adding a new engine is relatively easy and is done in two steps. First you
|
37
37
|
# should add the name of your engine and it's label to
|
38
38
|
# {Zen::Markup::REGISTERED}. The keys of this hash should be the methods to
|
39
|
-
# call,
|
39
|
+
# call, the values will be displayed in various ``<select>`` elements in the
|
40
40
|
# administration interface.
|
41
41
|
#
|
42
42
|
# Zen::Markup::REGISTERED['my_markup'] = 'My Markup'
|
43
43
|
#
|
44
|
-
# In this example the label is
|
44
|
+
# In this example the label is hard coded but it's recommended to use
|
45
45
|
# {Zen::Language.lang} instead.
|
46
46
|
#
|
47
47
|
# Once the engine has been added to the list you'll have to add a
|
@@ -83,6 +83,13 @@ module Zen
|
|
83
83
|
'html' => 'zen_general.markup.html'
|
84
84
|
}
|
85
85
|
|
86
|
+
# Hash containing the configuration options to use for Redcarpet.
|
87
|
+
REDCARPET_OPTIONS = {
|
88
|
+
:tables => true,
|
89
|
+
:fenced_code_blocks => true,
|
90
|
+
:strikethrough => true
|
91
|
+
}
|
92
|
+
|
86
93
|
class << self
|
87
94
|
include ::Ramaze::Helper::CGI
|
88
95
|
|
@@ -123,23 +130,28 @@ module Zen
|
|
123
130
|
private
|
124
131
|
|
125
132
|
##
|
126
|
-
# Converts the Markdown markup to HTML using
|
133
|
+
# Converts the Markdown markup to HTML using Redcarpet.
|
127
134
|
#
|
128
135
|
# @example
|
129
136
|
# Zen::Markup.markdown('Hello **world**')
|
130
137
|
#
|
131
138
|
# @since 0.2.5
|
132
139
|
# @param [String] markup The Markdown string to convert to HTML.
|
133
|
-
# @return [String] The HTML returned by
|
140
|
+
# @return [String] The HTML returned by Redcarpet.
|
134
141
|
#
|
135
142
|
def markdown(markup)
|
136
|
-
unless Kernel.const_defined?(:
|
143
|
+
unless Kernel.const_defined?(:Redcarpet)
|
137
144
|
Ramaze.setup(:verbose => false) do
|
138
|
-
gem '
|
145
|
+
gem 'redcarpet', ['>= 2.1.1']
|
139
146
|
end
|
140
147
|
end
|
141
148
|
|
142
|
-
|
149
|
+
@markdown ||= Redcarpet::Markdown.new(
|
150
|
+
Redcarpet::Render::HTML,
|
151
|
+
REDCARPET_OPTIONS,
|
152
|
+
)
|
153
|
+
|
154
|
+
return @markdown.render(markup)
|
143
155
|
end
|
144
156
|
|
145
157
|
##
|
data/lib/zen/model/init.rb
CHANGED
@@ -1,5 +1,3 @@
|
|
1
|
-
Zen::Language.load('zen_models')
|
2
|
-
|
3
1
|
Sequel::Model.strict_param_setting = false
|
4
2
|
|
5
3
|
Sequel::Model.plugin(:validation_helpers)
|
@@ -9,6 +7,13 @@ Sequel.extension(:migration)
|
|
9
7
|
Sequel.extension(:pagination)
|
10
8
|
Sequel.extension(:inflector)
|
11
9
|
|
10
|
+
Zen::Event.listen :post_start do
|
11
|
+
Zen::Language.load('zen_models')
|
12
|
+
end
|
13
|
+
|
14
|
+
# Note that the values for the :message keys should always be wrapped in
|
15
|
+
# lambdas. Doing so means the call to lang() won't be executed until it is
|
16
|
+
# actually needed.
|
12
17
|
Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS.merge!(
|
13
18
|
{
|
14
19
|
:exact_length => {
|
@@ -16,7 +21,7 @@ Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS.merge!(
|
|
16
21
|
},
|
17
22
|
|
18
23
|
:format => {
|
19
|
-
:message => lang('zen_models.format')
|
24
|
+
:message => lambda { lang('zen_models.format') }
|
20
25
|
},
|
21
26
|
|
22
27
|
:includes => {
|
@@ -25,12 +30,12 @@ Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS.merge!(
|
|
25
30
|
},
|
26
31
|
|
27
32
|
:integer => {
|
28
|
-
:message => lang('zen_models.integer'),
|
33
|
+
:message => lambda { lang('zen_models.integer') },
|
29
34
|
:allow_nil => true
|
30
35
|
},
|
31
36
|
|
32
37
|
:length_range => {
|
33
|
-
:message => lang('zen_models.length_range')
|
38
|
+
:message => lambda { lang('zen_models.length_range') }
|
34
39
|
},
|
35
40
|
|
36
41
|
:max_length => {
|
@@ -43,11 +48,11 @@ Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS.merge!(
|
|
43
48
|
},
|
44
49
|
|
45
50
|
:not_string => {
|
46
|
-
:message => lang('zen_models.not_string')
|
51
|
+
:message => lambda { lang('zen_models.not_string') }
|
47
52
|
},
|
48
53
|
|
49
54
|
:numeric => {
|
50
|
-
:message => lang('zen_models.numeric')
|
55
|
+
:message => lambda { lang('zen_models.numeric') }
|
51
56
|
},
|
52
57
|
|
53
58
|
:type => {
|
@@ -55,10 +60,10 @@ Sequel::Plugins::ValidationHelpers::DEFAULT_OPTIONS.merge!(
|
|
55
60
|
},
|
56
61
|
|
57
62
|
:presence => {
|
58
|
-
:message => lang('zen_models.presence')
|
63
|
+
:message => lambda { lang('zen_models.presence') }
|
59
64
|
},
|
60
65
|
|
61
66
|
:unique => {
|
62
|
-
:message => lang('zen_models.unique')
|
67
|
+
:message => lambda { lang('zen_models.unique') }
|
63
68
|
}
|
64
69
|
})
|
data/lib/zen/package.rb
CHANGED
@@ -19,17 +19,55 @@ module Zen
|
|
19
19
|
#
|
20
20
|
# When adding a package you must **always** set the following attributes:
|
21
21
|
#
|
22
|
-
#
|
23
|
-
#
|
24
|
-
#
|
25
|
-
#
|
26
|
-
#
|
27
|
-
#
|
28
|
-
#
|
29
|
-
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
22
|
+
# <table class="table full">
|
23
|
+
# <thead>
|
24
|
+
# <tr>
|
25
|
+
# <th>Attribute</th>
|
26
|
+
# <th>Description</th>
|
27
|
+
# </tr>
|
28
|
+
# </thead>
|
29
|
+
# <tbody>
|
30
|
+
# <tr>
|
31
|
+
# <td>name</td>
|
32
|
+
# <td>The name of the package, should be a symbol.</td>
|
33
|
+
# </tr>
|
34
|
+
# <tr>
|
35
|
+
# <td>title</td>
|
36
|
+
# <td>
|
37
|
+
# The title of the package. This should be a language key such
|
38
|
+
# as "users.titles.index' as it allows users to view the
|
39
|
+
# package name in their chosen language.
|
40
|
+
# </td>
|
41
|
+
# </tr>
|
42
|
+
# <tr>
|
43
|
+
# <td>author</td>
|
44
|
+
# <td>The name of the package's author.</td>
|
45
|
+
# </tr>
|
46
|
+
# <tr>
|
47
|
+
# <td>about</td>
|
48
|
+
# <td>
|
49
|
+
# A description of the package. Just like the title attribute
|
50
|
+
# this should be a language key.
|
51
|
+
# </td>
|
52
|
+
# </tr>
|
53
|
+
# <tr>
|
54
|
+
# <td>root</td>
|
55
|
+
# <td>
|
56
|
+
# The root directory of the package. This path should point to
|
57
|
+
# the directory containing your helper, language and other
|
58
|
+
# directories.
|
59
|
+
# </td>
|
60
|
+
# </tr>
|
61
|
+
# <tr>
|
62
|
+
# <td>env</td>
|
63
|
+
# <td>
|
64
|
+
# A special object (an instance of OpenStruct) that can be
|
65
|
+
# used for storing arbitrary data that might be needed by
|
66
|
+
# the package.
|
67
|
+
# </td>
|
68
|
+
# </tr>
|
69
|
+
# </tbody>
|
70
|
+
# </table>
|
33
71
|
#
|
34
72
|
# Setting these (and other) attributes is very easy:
|
35
73
|
#
|
@@ -43,8 +81,27 @@ module Zen
|
|
43
81
|
# Besides the required attributes listed above you can also set the following
|
44
82
|
# ones:
|
45
83
|
#
|
46
|
-
#
|
47
|
-
#
|
84
|
+
# <table class="table full">
|
85
|
+
# <thead>
|
86
|
+
# <tr>
|
87
|
+
# <th>Attribute</th>
|
88
|
+
# <th>Description</th>
|
89
|
+
# </tr>
|
90
|
+
# </thead>
|
91
|
+
# <tbody>
|
92
|
+
# <tr>
|
93
|
+
# <td>url</td>
|
94
|
+
# <td>A URL that points to the website of the package author.</td>
|
95
|
+
# </tr>
|
96
|
+
# <tr>
|
97
|
+
# <td>migrations</td>
|
98
|
+
# <td>
|
99
|
+
# A directory containing the Sequel migrations for the
|
100
|
+
# package.
|
101
|
+
# </td>
|
102
|
+
# </tr>
|
103
|
+
# </tbody>
|
104
|
+
# </table>
|
48
105
|
#
|
49
106
|
# ## Package Structure
|
50
107
|
#
|
@@ -95,7 +152,7 @@ module Zen
|
|
95
152
|
# Permissions allow you to restrict access to certain actions to specific
|
96
153
|
# users/user groups. A permission can be added by calling ``permission()`` on
|
97
154
|
# the object passed to the block. Again the title of the permission should be
|
98
|
-
# a
|
155
|
+
# a language key so it can be displayed in a custom language:
|
99
156
|
#
|
100
157
|
# Zen::Package.add do |p|
|
101
158
|
# p.permission(:show_some_package, 'packages.titles.index')
|
@@ -27,18 +27,45 @@ module Categories
|
|
27
27
|
#
|
28
28
|
# In this form you can specify the following fields:
|
29
29
|
#
|
30
|
-
#
|
31
|
-
#
|
32
|
-
#
|
33
|
-
#
|
34
|
-
#
|
35
|
-
#
|
36
|
-
#
|
37
|
-
#
|
38
|
-
#
|
39
|
-
#
|
40
|
-
#
|
41
|
-
#
|
30
|
+
# <table class="table full">
|
31
|
+
# <thead>
|
32
|
+
# <tr>
|
33
|
+
# <th class="field_name">Field</th>
|
34
|
+
# <th>Required</th>
|
35
|
+
# <th>Maximum Length</th>
|
36
|
+
# <th>Description</th>
|
37
|
+
# </tr>
|
38
|
+
# </thead>
|
39
|
+
# <tbody>
|
40
|
+
# <tr>
|
41
|
+
# <td>Name</td>
|
42
|
+
# <td>Yes</td>
|
43
|
+
# <td>255</td>
|
44
|
+
# <td>The name of the category.</td>
|
45
|
+
# </tr>
|
46
|
+
# <tr>
|
47
|
+
# <td>Slug</td>
|
48
|
+
# <td>No</td>
|
49
|
+
# <td>255</td>
|
50
|
+
# <td>
|
51
|
+
# A URL friendly version of the name. If no custom slug is
|
52
|
+
# given one will be generated automatically.
|
53
|
+
# </td>
|
54
|
+
# </tr>
|
55
|
+
# <tr>
|
56
|
+
# <td>Parent</td>
|
57
|
+
# <td>No</td>
|
58
|
+
# <td></td>
|
59
|
+
# <td>The parent category.</td>
|
60
|
+
# </tr>
|
61
|
+
# <tr>
|
62
|
+
# <td>Description</td>
|
63
|
+
# <td>No</td>
|
64
|
+
# <td>Unlimited</td>
|
65
|
+
# <td>A short description of the category.</td>
|
66
|
+
# </tr>
|
67
|
+
# </tbody>
|
68
|
+
# </table>
|
42
69
|
#
|
43
70
|
# ## Used Permissions
|
44
71
|
#
|