zen 0.2.4.1 → 0.2.5
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/MANIFEST +42 -33
- data/README.md +14 -27
- data/ROADMAP.md +20 -2
- data/{Thorfile → Rakefile} +2 -3
- data/bin/zen +27 -5
- data/lib/zen.rb +70 -52
- data/lib/zen/asset.rb +258 -0
- data/lib/zen/bin/app.rb +42 -0
- data/lib/zen/controller/admin_controller.rb +53 -36
- data/lib/zen/controller/base_controller.rb +13 -8
- data/lib/zen/controller/frontend_controller.rb +4 -3
- data/lib/zen/controller/main_controller.rb +17 -33
- data/lib/zen/error/validation_error.rb +10 -0
- data/lib/zen/ext/string.rb +185 -0
- data/lib/zen/helper/acl.rb +120 -92
- data/lib/zen/helper/common.rb +1 -3
- data/lib/zen/helper/theme.rb +73 -0
- data/lib/zen/language.rb +66 -57
- data/lib/zen/layout/admin.xhtml +5 -48
- data/lib/zen/layout/login.xhtml +4 -44
- data/lib/zen/model/methods.rb +1 -1
- data/lib/zen/model/settings.rb +0 -3
- data/lib/zen/package.rb +101 -83
- data/lib/zen/package/base.rb +62 -0
- data/lib/zen/package/categories/lib/categories.rb +29 -10
- data/lib/zen/package/categories/lib/categories/controller/categories.rb +4 -5
- data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +4 -5
- data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +4 -3
- data/lib/zen/package/categories/lib/categories/model/category.rb +2 -2
- data/lib/zen/package/categories/lib/categories/model/category_group.rb +3 -3
- data/lib/zen/package/categories/lib/categories/plugin/categories.rb +130 -0
- data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +1 -1
- data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +2 -2
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +11 -6
- data/lib/zen/package/comments/lib/comments.rb +23 -13
- data/lib/zen/package/comments/lib/comments/controller/comments.rb +4 -5
- data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +7 -8
- data/lib/zen/package/comments/lib/comments/model/comment.rb +4 -4
- data/lib/zen/package/comments/lib/comments/plugin/comments.rb +111 -0
- data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +2 -2
- data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +3 -3
- data/lib/zen/package/custom_fields/lib/custom_fields.rb +18 -11
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +4 -5
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +4 -5
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +2 -2
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +3 -3
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +3 -3
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +9 -5
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +1 -1
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +3 -3
- data/lib/zen/package/menus/lib/menus.rb +25 -43
- data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +5 -6
- data/lib/zen/package/menus/lib/menus/controller/menus.rb +9 -5
- data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +4 -4
- data/lib/zen/package/menus/lib/menus/model/menu.rb +2 -2
- data/lib/zen/package/menus/lib/menus/model/menu_item.rb +4 -1
- data/lib/zen/package/menus/lib/menus/plugin/menus.rb +152 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +1 -1
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +3 -3
- data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +7 -7
- data/lib/zen/package/sections/lib/sections.rb +32 -16
- data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +9 -18
- data/lib/zen/package/sections/lib/sections/controller/sections.rb +8 -9
- data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +1 -1
- data/lib/zen/package/sections/lib/sections/model/section.rb +4 -4
- data/lib/zen/package/sections/lib/sections/model/section_entry.rb +9 -10
- data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +224 -0
- data/lib/zen/package/sections/lib/sections/plugin/sections.rb +85 -0
- data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +1 -1
- data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +9 -5
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +2 -2
- data/lib/zen/package/settings/lib/settings.rb +145 -10
- data/lib/zen/package/settings/lib/settings/controller/settings.rb +28 -24
- data/lib/zen/package/settings/lib/settings/language/en/settings.yml +10 -0
- data/lib/zen/package/settings/lib/settings/model/setting.rb +3 -64
- data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +40 -0
- data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +76 -0
- data/lib/zen/package/settings/lib/settings/plugin/settings.rb +236 -0
- data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +20 -49
- data/lib/zen/package/settings/migrations/1295597111_create_schema.rb +0 -12
- data/lib/zen/package/settings/migrations/1303196915_settings_plugin.rb +31 -0
- data/lib/zen/package/users/lib/users.rb +18 -15
- data/lib/zen/package/users/lib/users/controller/access_rules.rb +44 -8
- data/lib/zen/package/users/lib/users/controller/user_groups.rb +4 -5
- data/lib/zen/package/users/lib/users/controller/users.rb +5 -6
- data/lib/zen/package/users/lib/users/language/en/access_rules.yml +11 -9
- data/lib/zen/package/users/lib/users/model/access_rule.rb +7 -6
- data/lib/zen/package/users/lib/users/model/user.rb +4 -4
- data/lib/zen/package/users/lib/users/model/user_group.rb +3 -3
- data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +50 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +32 -29
- data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +8 -6
- data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +3 -3
- data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +2 -2
- data/lib/zen/package/users/migrations/1303510943_class_rules.rb +13 -0
- data/lib/zen/plugin.rb +110 -104
- data/lib/zen/plugin/base.rb +46 -0
- data/lib/zen/{liquid/controller_behavior.rb → plugin/controller.rb} +9 -7
- data/lib/zen/plugin/helper.rb +47 -0
- data/lib/zen/plugin/markup/lib/markup.rb +14 -0
- data/lib/zen/plugin/markup/lib/markup/language/en/markup.yml +6 -0
- data/lib/zen/plugin/markup/lib/markup/markup.rb +154 -0
- data/lib/zen/public/admin/css/forms.css +4 -0
- data/lib/zen/public/admin/css/general.css +15 -15
- data/lib/zen/public/admin/css/layout.css +10 -10
- data/lib/zen/public/admin/css/reset.css +123 -0
- data/lib/zen/public/admin/images/icons/accept.png +0 -0
- data/lib/zen/public/admin/images/icons/add.png +0 -0
- data/lib/zen/public/admin/images/icons/back.png +0 -0
- data/lib/zen/public/admin/images/icons/bold.png +0 -0
- data/lib/zen/public/admin/images/icons/close.png +0 -0
- data/lib/zen/public/admin/images/icons/delete.png +0 -0
- data/lib/zen/public/admin/images/icons/edit.png +0 -0
- data/lib/zen/public/admin/images/icons/error.png +0 -0
- data/lib/zen/public/admin/images/icons/help.png +0 -0
- data/lib/zen/public/admin/images/icons/info.png +0 -0
- data/lib/zen/public/admin/images/icons/italic.png +0 -0
- data/lib/zen/public/admin/images/icons/large/error.png +0 -0
- data/lib/zen/public/admin/images/icons/large/notice.png +0 -0
- data/lib/zen/public/admin/images/icons/large/success.png +0 -0
- data/lib/zen/public/admin/images/icons/link.png +0 -0
- data/lib/zen/public/admin/images/icons/logout.png +0 -0
- data/lib/zen/public/admin/images/icons/ol.png +0 -0
- data/lib/zen/public/admin/images/icons/pdf.png +0 -0
- data/lib/zen/public/admin/images/icons/ul.png +0 -0
- data/lib/zen/public/admin/images/icons/user.png +0 -0
- data/lib/zen/public/admin/images/icons/view.png +0 -0
- data/lib/zen/public/admin/js/mootools/core.js +384 -333
- data/lib/zen/public/admin/js/mootools/more.js +256 -231
- data/lib/zen/public/admin/js/vendor/{datepicker/Picker.Date.js → datepicker.js} +447 -0
- data/lib/zen/public/admin/js/vendor/yepnope.js +1 -0
- data/lib/zen/public/admin/js/zen/editor/base.js +8 -1
- data/lib/zen/public/admin/js/zen/init.js +89 -26
- data/lib/zen/public/favicon.ico +0 -0
- data/lib/zen/task.rb +7 -0
- data/lib/zen/task/build.rake +60 -0
- data/lib/zen/task/clean.rake +27 -0
- data/lib/zen/task/db.rake +111 -0
- data/lib/zen/task/package.rake +67 -0
- data/lib/zen/task/plugin.rake +24 -0
- data/lib/zen/task/proto.rake +95 -0
- data/lib/zen/task/theme.rake +68 -0
- data/lib/zen/theme.rb +28 -55
- data/lib/zen/theme/base.rb +64 -0
- data/lib/zen/validation.rb +149 -0
- data/lib/zen/version.rb +1 -1
- data/lib/zen/view/bottom.xhtml +6 -0
- data/lib/zen/view/main.xhtml +32 -0
- data/proto/app/Rakefile +12 -0
- data/proto/app/app.rb +6 -6
- data/proto/app/config/config.rb +7 -14
- data/proto/app/config/database.rb +0 -20
- data/proto/app/start.rb +0 -1
- data/proto/app/{vendor/themes → task}/.gitkeep +0 -0
- data/proto/app/vendor/theme/.gitkeep +0 -0
- data/proto/package/lib/package.rb +8 -17
- data/proto/package/lib/package/controller/controllers.rb +4 -4
- data/proto/package/lib/package/language/en/languages.yml +3 -3
- data/proto/package/lib/package/model/model.rb +1 -1
- metadata +73 -73
- data/lib/zen/bin/base.rb +0 -109
- data/lib/zen/helper/asset.rb +0 -106
- data/lib/zen/liquid/general.rb +0 -94
- data/lib/zen/liquid/redirect.rb +0 -70
- data/lib/zen/liquid/strip.rb +0 -60
- data/lib/zen/package/categories/lib/categories/liquid/categories.rb +0 -16
- data/lib/zen/package/comments/lib/comments/liquid/comment_form.rb +0 -127
- data/lib/zen/package/comments/lib/comments/liquid/comments.rb +0 -115
- data/lib/zen/package/menus/lib/menus/liquid/menus.rb +0 -152
- data/lib/zen/package/sections/lib/sections/liquid/section_entries.rb +0 -228
- data/lib/zen/package/sections/lib/sections/liquid/sections.rb +0 -77
- data/lib/zen/package/settings/lib/settings/liquid/setting.rb +0 -58
- data/lib/zen/package/users/lib/users/liquid/user.rb +0 -77
- data/lib/zen/package/users/lib/users/liquid/users.rb +0 -82
- data/lib/zen/plugin/markup.rb +0 -30
- data/lib/zen/public/admin/css/boilerplate.css +0 -176
- data/lib/zen/public/admin/images/general/noise.jpg +0 -0
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.Attach.js +0 -137
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.js +0 -291
- data/lib/zen/public/admin/js/vendor/datepicker/README.md +0 -325
- data/lib/zen/public/admin/js/vendor/datepicker/locale.js +0 -16
- data/lib/zen/strict_struct.rb +0 -36
- data/lib/zen/task/build.rb +0 -123
- data/lib/zen/task/clean.rb +0 -46
- data/lib/zen/task/db.rb +0 -130
- data/lib/zen/task/package.rb +0 -87
- data/lib/zen/task/proto.rb +0 -116
- data/lib/zen/task/theme.rb +0 -88
- data/proto/app/Thorfile +0 -4
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#:nodoc:
|
|
2
2
|
module Comments
|
|
3
3
|
#:nodoc:
|
|
4
|
-
module
|
|
4
|
+
module Controller
|
|
5
5
|
##
|
|
6
6
|
# Controller used for managing comments. Administrations can't actually
|
|
7
7
|
# add new comments using the backend controller but can edit or delete them.
|
|
@@ -13,11 +13,10 @@ module Comments
|
|
|
13
13
|
# @author Yorick Peterse
|
|
14
14
|
# @since 0.1
|
|
15
15
|
#
|
|
16
|
-
class Comments < Zen::
|
|
17
|
-
include ::Comments::
|
|
16
|
+
class Comments < Zen::Controller::AdminController
|
|
17
|
+
include ::Comments::Model
|
|
18
18
|
|
|
19
|
-
map
|
|
20
|
-
trait :extension_identifier => 'com.zen.comments'
|
|
19
|
+
map('/admin/comments')
|
|
21
20
|
|
|
22
21
|
before_all do
|
|
23
22
|
csrf_protection(:save, :delete) do
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#:nodoc:
|
|
2
2
|
module Comments
|
|
3
3
|
#:nodoc:
|
|
4
|
-
module
|
|
4
|
+
module Controller
|
|
5
5
|
##
|
|
6
6
|
# Frontend controller for the comments system used for saving user-submitted comments.
|
|
7
7
|
# When the anti-spam system is enabled Zen will use Defensio to check if the comment is
|
|
@@ -10,11 +10,10 @@ module Comments
|
|
|
10
10
|
# @author Yorick Peterse
|
|
11
11
|
# @since 0.1
|
|
12
12
|
#
|
|
13
|
-
class CommentsForm < Zen::
|
|
14
|
-
include ::Comments::
|
|
13
|
+
class CommentsForm < Zen::Controller::FrontendController
|
|
14
|
+
include ::Comments::Model
|
|
15
15
|
|
|
16
|
-
map
|
|
17
|
-
trait :extension_identifier => 'com.zen.comments'
|
|
16
|
+
map('/comments-form')
|
|
18
17
|
|
|
19
18
|
before_all do
|
|
20
19
|
csrf_protection(:save) do
|
|
@@ -34,7 +33,7 @@ module Comments
|
|
|
34
33
|
|
|
35
34
|
comment = Comment.new
|
|
36
35
|
post = request.params.dup
|
|
37
|
-
entry = ::Sections::
|
|
36
|
+
entry = ::Sections::Model::SectionEntry[h(post['section_entry']).to_i]
|
|
38
37
|
|
|
39
38
|
# Remove empty values
|
|
40
39
|
post.each { |k, v| post.delete(k) if v.empty? }
|
|
@@ -82,9 +81,9 @@ module Comments
|
|
|
82
81
|
end
|
|
83
82
|
|
|
84
83
|
# Require anti-spam validation?
|
|
85
|
-
if
|
|
84
|
+
if ::Zen::Settings[:enable_antispam] == '1'
|
|
86
85
|
# Validate the comment
|
|
87
|
-
api_key =
|
|
86
|
+
api_key = ::Zen::Settings[:defensio_key]
|
|
88
87
|
|
|
89
88
|
if api_key.nil?
|
|
90
89
|
flash[:error] = lang('comments.errors.no_api_key')
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#:nodoc:
|
|
2
2
|
module Comments
|
|
3
3
|
#:nodoc:
|
|
4
|
-
module
|
|
4
|
+
module Model
|
|
5
5
|
##
|
|
6
6
|
# Model that represents a single comment. This model has the following relations:
|
|
7
7
|
#
|
|
@@ -18,8 +18,8 @@ module Comments
|
|
|
18
18
|
class Comment < Sequel::Model
|
|
19
19
|
include ::Zen::Language
|
|
20
20
|
|
|
21
|
-
many_to_one :section_entry, :class => "Sections::
|
|
22
|
-
many_to_one :user, :class => "Users::
|
|
21
|
+
many_to_one :section_entry, :class => "Sections::Model::SectionEntry"
|
|
22
|
+
many_to_one :user, :class => "Users::Model::User"
|
|
23
23
|
|
|
24
24
|
plugin :timestamps, :create => :created_at, :update => :updated_at
|
|
25
25
|
|
|
@@ -38,7 +38,7 @@ module Comments
|
|
|
38
38
|
# Returns a hash containing all available statuses for each comment.
|
|
39
39
|
#
|
|
40
40
|
# @example
|
|
41
|
-
# Comments::
|
|
41
|
+
# Comments::Model::Comment.status_hash
|
|
42
42
|
#
|
|
43
43
|
# @author Yorick Peterse
|
|
44
44
|
# @since 0.2
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#:nodoc
|
|
2
|
+
module Comments
|
|
3
|
+
#:nodoc
|
|
4
|
+
module Plugin
|
|
5
|
+
##
|
|
6
|
+
# The Comments plugin can be used to display a list of comments for a given section
|
|
7
|
+
# entry.
|
|
8
|
+
#
|
|
9
|
+
# ## Usage
|
|
10
|
+
#
|
|
11
|
+
# If we want to retrieve all comments for the entry "hello-world":
|
|
12
|
+
#
|
|
13
|
+
# plugin(:comments, :entry => 'hello-world').each do |comment|
|
|
14
|
+
# comment[:website]
|
|
15
|
+
# end
|
|
16
|
+
#
|
|
17
|
+
# For more information about all available options see
|
|
18
|
+
# Comments::Plugin::Comments#initialize
|
|
19
|
+
#
|
|
20
|
+
# @author Yorick Peterse
|
|
21
|
+
# @since 0.2.5
|
|
22
|
+
#
|
|
23
|
+
class Comments
|
|
24
|
+
include ::Zen::Plugin::Helper
|
|
25
|
+
include ::Sections::Model
|
|
26
|
+
include ::Comments::Model
|
|
27
|
+
|
|
28
|
+
##
|
|
29
|
+
# Creates a new instance of the plugin and saves the specified configuration options.
|
|
30
|
+
#
|
|
31
|
+
# @author Yorick Peterse
|
|
32
|
+
# @since 0.2.5
|
|
33
|
+
# @param [Hash] options Hash with a set of options that determine how the comments
|
|
34
|
+
# should be retrieved.
|
|
35
|
+
# @option options [String/Integer] :entry The slug or ID of the entry for which to
|
|
36
|
+
# retrieve all comments.
|
|
37
|
+
# @option options [Integer] :limit The maximum amount of comments to retrieve.
|
|
38
|
+
# @option options [Integer] :offset The row offset, useful for pagination systems.
|
|
39
|
+
# @option options [Boolean] :markup When set to true (default) the markup used in
|
|
40
|
+
# each comment will be converted to the appropriate format.
|
|
41
|
+
#
|
|
42
|
+
def initialize(options = {})
|
|
43
|
+
@options = {
|
|
44
|
+
:limit => 20,
|
|
45
|
+
:offset => 0,
|
|
46
|
+
:markup => true,
|
|
47
|
+
:entry => nil
|
|
48
|
+
}.merge(options)
|
|
49
|
+
|
|
50
|
+
# Validate the :entry option
|
|
51
|
+
validate_type(@options[:limit] , :limit , [Integer, Fixnum])
|
|
52
|
+
validate_type(@options[:offset], :offset, [Integer, Fixnum])
|
|
53
|
+
validate_type(@options[:entry] , :entry , [Integer, String, Fixnum])
|
|
54
|
+
validate_type(@options[:markup], :markup, [FalseClass, TrueClass])
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
##
|
|
58
|
+
# Retrieves all comments based on the options set in the construct. The comments are
|
|
59
|
+
# returned as an array.
|
|
60
|
+
#
|
|
61
|
+
# @author Yorick Peterse
|
|
62
|
+
# @since 0.2.5
|
|
63
|
+
#
|
|
64
|
+
def call
|
|
65
|
+
# Get the section entry
|
|
66
|
+
if @options[:entry].class == String
|
|
67
|
+
entry = SectionEntry[:slug => @options[:entry]]
|
|
68
|
+
else
|
|
69
|
+
entry = SectionEntry[@options[:entry]]
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
# Now that we have the entry and the section we can start retrieving all the
|
|
73
|
+
# comments.
|
|
74
|
+
comments = Comment.filter(:section_entry_id => entry.id)
|
|
75
|
+
.limit(@options[:limit], @options[:offset])
|
|
76
|
+
.all
|
|
77
|
+
|
|
78
|
+
# Don't bother with all code below this if/end if we don't want to convert the
|
|
79
|
+
# markup of each comment.
|
|
80
|
+
if @options[:markup] === false
|
|
81
|
+
return comments
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
# Get the section for the comments. This is required to determine what markup is
|
|
85
|
+
# used for the comments.
|
|
86
|
+
section = entry.section
|
|
87
|
+
|
|
88
|
+
# Convert the markup of each comment and convert each comment to a hash
|
|
89
|
+
comments.each_with_index do |comment, index|
|
|
90
|
+
user = comment.user
|
|
91
|
+
comment = comment.values
|
|
92
|
+
comment[:comment] = plugin(:markup, section.comment_format, comment[:comment])
|
|
93
|
+
|
|
94
|
+
# Conver the userdata to a hash as well
|
|
95
|
+
comment[:user] = {}
|
|
96
|
+
|
|
97
|
+
if !user.nil?
|
|
98
|
+
user.values.each do |k, v|
|
|
99
|
+
comment[:user][k] = v
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
comments[index] = comment
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
return comments
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
f.input_hidden(:csrf_token, get_csrf_token)
|
|
6
6
|
f.input_hidden(:id , @comment.id)
|
|
7
7
|
|
|
8
|
-
if !@comment.
|
|
8
|
+
if !@comment.user
|
|
9
9
|
name = @comment.name
|
|
10
10
|
website = @comment.website
|
|
11
11
|
email = @comment.email
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
f.select(
|
|
38
38
|
lang('comments.labels.status'),
|
|
39
39
|
:status,
|
|
40
|
-
:values => Comments::
|
|
40
|
+
:values => Comments::Model::Comment.status_hash,
|
|
41
41
|
:selected => @comment.status,
|
|
42
42
|
:size => 1
|
|
43
43
|
)
|
|
@@ -38,7 +38,7 @@
|
|
|
38
38
|
<td>
|
|
39
39
|
#{anchor_to(
|
|
40
40
|
"#{comment.comment[0, 15]}...",
|
|
41
|
-
Comments::
|
|
41
|
+
Comments::Controller::Comments.r(:edit, comment.id)
|
|
42
42
|
)}
|
|
43
43
|
</td>
|
|
44
44
|
<?r else ?>
|
|
@@ -46,9 +46,9 @@
|
|
|
46
46
|
<?r end ?>
|
|
47
47
|
|
|
48
48
|
<td>#{comment.section_entry.title}</td>
|
|
49
|
-
<td>#{Comments::
|
|
49
|
+
<td>#{Comments::Model::Comment.status_hash[comment.status]}</td>
|
|
50
50
|
|
|
51
|
-
<?r if !comment.
|
|
51
|
+
<?r if !comment.user ?>
|
|
52
52
|
<td>#{comment.name}</td>
|
|
53
53
|
<td>#{comment.email}</td>
|
|
54
54
|
<td>#{comment.website}</td>
|
|
@@ -1,23 +1,30 @@
|
|
|
1
|
+
require __DIR__('custom_fields/model/custom_field')
|
|
2
|
+
require __DIR__('custom_fields/model/custom_field_group')
|
|
3
|
+
require __DIR__('custom_fields/model/custom_field_value')
|
|
4
|
+
require __DIR__('custom_fields/controller/custom_field_groups')
|
|
5
|
+
require __DIR__('custom_fields/controller/custom_fields')
|
|
1
6
|
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
require __DIR__ 'custom_fields/model/custom_field_value'
|
|
6
|
-
|
|
7
|
-
require __DIR__ 'custom_fields/controller/custom_field_groups'
|
|
8
|
-
require __DIR__ 'custom_fields/controller/custom_fields'
|
|
7
|
+
Zen::Language.options.paths.push(__DIR__('custom_fields'))
|
|
8
|
+
Zen::Language.load('custom_fields')
|
|
9
|
+
Zen::Language.load('custom_field_groups')
|
|
9
10
|
|
|
10
11
|
Zen::Package.add do |p|
|
|
11
|
-
p.name = '
|
|
12
|
+
p.name = 'custom_fields'
|
|
12
13
|
p.author = 'Yorick Peterse'
|
|
13
14
|
p.url = 'http://yorickpeterse.com/'
|
|
14
|
-
p.about = "The Custom Fields module is used to manage
|
|
15
|
-
|
|
15
|
+
p.about = "The Custom Fields module is used to manage custom fields and custom
|
|
16
|
+
field groups."
|
|
17
|
+
|
|
16
18
|
p.directory = __DIR__('custom_fields')
|
|
17
19
|
p.migration_dir = __DIR__('../migrations')
|
|
18
20
|
|
|
19
21
|
p.menu = [{
|
|
20
|
-
:title =>
|
|
22
|
+
:title => lang('custom_fields.titles.index'),
|
|
21
23
|
:url => "admin/custom-field-groups"
|
|
22
24
|
}]
|
|
25
|
+
|
|
26
|
+
p.controllers = {
|
|
27
|
+
lang('custom_fields.titles.index') => CustomFields::Controller::CustomFields,
|
|
28
|
+
lang('custom_field_groups.titles.index') => CustomFields::Controller::CustomFieldGroups
|
|
29
|
+
}
|
|
23
30
|
end
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#:nodoc:
|
|
2
2
|
module CustomFields
|
|
3
3
|
#:nodoc:
|
|
4
|
-
module
|
|
4
|
+
module Controller
|
|
5
5
|
##
|
|
6
6
|
# Controller for managing custom field groups. These groups are used
|
|
7
7
|
# to organize individual fields into a larger group which in turn will
|
|
@@ -10,11 +10,10 @@ module CustomFields
|
|
|
10
10
|
# @author Yorick Peterse
|
|
11
11
|
# @since 0.1
|
|
12
12
|
#
|
|
13
|
-
class CustomFieldGroups < Zen::
|
|
14
|
-
include ::CustomFields::
|
|
13
|
+
class CustomFieldGroups < Zen::Controller::AdminController
|
|
14
|
+
include ::CustomFields::Model
|
|
15
15
|
|
|
16
|
-
map
|
|
17
|
-
trait :extension_identifier => 'com.zen.custom_fields'
|
|
16
|
+
map('/admin/custom-field-groups')
|
|
18
17
|
|
|
19
18
|
before_all do
|
|
20
19
|
csrf_protection(:save, :delete) do
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#:nodoc:
|
|
2
2
|
module CustomFields
|
|
3
3
|
#:nodoc:
|
|
4
|
-
module
|
|
4
|
+
module Controller
|
|
5
5
|
##
|
|
6
6
|
# Controller for managing custom fields. Custom fields are one of
|
|
7
7
|
# the most important elements in Zen. Custom fields can be used to
|
|
@@ -12,11 +12,10 @@ module CustomFields
|
|
|
12
12
|
# @author Yorick Peterse
|
|
13
13
|
# @since 0.1
|
|
14
14
|
#
|
|
15
|
-
class CustomFields < Zen::
|
|
16
|
-
include ::CustomFields::
|
|
15
|
+
class CustomFields < Zen::Controller::AdminController
|
|
16
|
+
include ::CustomFields::Model
|
|
17
17
|
|
|
18
|
-
map
|
|
19
|
-
trait :extension_identifier => 'com.zen.custom_fields'
|
|
18
|
+
map('/admin/custom-fields')
|
|
20
19
|
|
|
21
20
|
before_all do
|
|
22
21
|
csrf_protection(:save, :delete) do
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#:nodoc:
|
|
2
2
|
module CustomFields
|
|
3
3
|
#:nodoc:
|
|
4
|
-
module
|
|
4
|
+
module Model
|
|
5
5
|
##
|
|
6
6
|
# Model that represents a single custom field. This model has the following
|
|
7
7
|
# relations:
|
|
@@ -21,7 +21,7 @@ module CustomFields
|
|
|
21
21
|
class CustomField < Sequel::Model
|
|
22
22
|
one_to_many(
|
|
23
23
|
:custom_field_values,
|
|
24
|
-
:class => "CustomFields::
|
|
24
|
+
:class => "CustomFields::Model::CustomFieldValue"
|
|
25
25
|
)
|
|
26
26
|
|
|
27
27
|
plugin :sluggable, :source => :name, :freeze => false
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#:nodoc:
|
|
2
2
|
module CustomFields
|
|
3
3
|
#:nodoc:
|
|
4
|
-
module
|
|
4
|
+
module Model
|
|
5
5
|
##
|
|
6
6
|
# Model that represents a single custom field group. This model has
|
|
7
7
|
# the following relations:
|
|
@@ -18,13 +18,13 @@ module CustomFields
|
|
|
18
18
|
class CustomFieldGroup < Sequel::Model
|
|
19
19
|
one_to_many(
|
|
20
20
|
:custom_fields,
|
|
21
|
-
:class => "CustomFields::
|
|
21
|
+
:class => "CustomFields::Model::CustomField",
|
|
22
22
|
:order => :sort_order
|
|
23
23
|
)
|
|
24
24
|
|
|
25
25
|
many_to_many(
|
|
26
26
|
:sections,
|
|
27
|
-
:class => "Sections::
|
|
27
|
+
:class => "Sections::Model::Section"
|
|
28
28
|
)
|
|
29
29
|
|
|
30
30
|
##
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#:nodoc:
|
|
2
2
|
module CustomFields
|
|
3
3
|
#:nodoc:
|
|
4
|
-
module
|
|
4
|
+
module Model
|
|
5
5
|
##
|
|
6
6
|
# Model that represents a single custom field value. This model
|
|
7
7
|
# has the following relations:
|
|
@@ -15,8 +15,8 @@ module CustomFields
|
|
|
15
15
|
# @since 0.1
|
|
16
16
|
#
|
|
17
17
|
class CustomFieldValue < Sequel::Model
|
|
18
|
-
many_to_one(:custom_field , :class => "CustomFields::
|
|
19
|
-
many_to_one(:section_entry, :class => "Sections::
|
|
18
|
+
many_to_one(:custom_field , :class => "CustomFields::Model::CustomField")
|
|
19
|
+
many_to_one(:section_entry, :class => "Sections::Model::SectionEntry")
|
|
20
20
|
|
|
21
21
|
##
|
|
22
22
|
# Hook that is executed before saving a field's value. This hook is used to clean
|
data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml
CHANGED
|
@@ -21,7 +21,9 @@
|
|
|
21
21
|
<th>#{lang('custom_field_groups.labels.name')}</th>
|
|
22
22
|
<th>#{lang('custom_field_groups.labels.sections')}</th>
|
|
23
23
|
|
|
24
|
-
<?r if user_authorized?(
|
|
24
|
+
<?r if user_authorized?(
|
|
25
|
+
[:read], true, 'CustomFields::Controller::CustomFields'
|
|
26
|
+
) ?>
|
|
25
27
|
<th></th>
|
|
26
28
|
<?r end ?>
|
|
27
29
|
</tr>
|
|
@@ -41,7 +43,7 @@
|
|
|
41
43
|
<td>
|
|
42
44
|
#{anchor_to(
|
|
43
45
|
group.name,
|
|
44
|
-
CustomFields::
|
|
46
|
+
CustomFields::Controller::CustomFieldGroups.r(:edit, group.id),
|
|
45
47
|
:title => group.name
|
|
46
48
|
)}
|
|
47
49
|
</td>
|
|
@@ -58,11 +60,13 @@
|
|
|
58
60
|
<?r end ?>
|
|
59
61
|
</td>
|
|
60
62
|
|
|
61
|
-
<?r if user_authorized?(
|
|
63
|
+
<?r if user_authorized?(
|
|
64
|
+
[:read], true, 'CustomFields::Controller::CustomFields'
|
|
65
|
+
) ?>
|
|
62
66
|
<td>
|
|
63
67
|
#{anchor_to(
|
|
64
68
|
lang('custom_field_groups.labels.manage_fields'),
|
|
65
|
-
CustomFields::
|
|
69
|
+
CustomFields::Controller::CustomFields.r(:index, group.id)
|
|
66
70
|
)}
|
|
67
71
|
</td>
|
|
68
72
|
<?r end ?>
|
|
@@ -84,7 +88,7 @@
|
|
|
84
88
|
<div class="button">
|
|
85
89
|
#{anchor_to(
|
|
86
90
|
lang('custom_field_groups.buttons.new'),
|
|
87
|
-
CustomFields::
|
|
91
|
+
CustomFields::Controller::CustomFieldGroups.r(:new)
|
|
88
92
|
)}
|
|
89
93
|
</div>
|
|
90
94
|
<?r end ?>
|