zen 0.2.5 → 0.2.6
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/.gems +34 -0
- data/.travis.yml +7 -0
- data/AUTHORS +5 -0
- data/CHANGELOG +14 -0
- data/{license.txt → LICENSE} +0 -0
- data/MANIFEST +67 -51
- data/README.md +18 -25
- data/Rakefile +2 -3
- data/bin/zen +2 -2
- data/lib/zen.rb +93 -57
- data/lib/zen/asset.rb +7 -8
- data/lib/zen/bin/app.rb +0 -2
- data/lib/zen/controller/admin_controller.rb +4 -9
- data/lib/zen/controller/base_controller.rb +0 -25
- data/lib/zen/controller/main_controller.rb +5 -5
- data/lib/zen/controller/preview.rb +50 -0
- data/lib/zen/helper/common.rb +4 -68
- data/lib/zen/helper/message.rb +82 -0
- data/lib/zen/helper/theme.rb +2 -2
- data/lib/zen/language.rb +68 -38
- data/lib/zen/language/en/zen_general.yml +1 -4
- data/lib/zen/language/nl/zen_general.yml +28 -0
- data/lib/zen/language/nl/zen_models.yml +13 -0
- data/lib/zen/layout/admin.xhtml +1 -1
- data/lib/zen/layout/login.xhtml +1 -1
- data/lib/zen/model/settings.rb +2 -0
- data/lib/zen/package.rb +29 -25
- data/lib/zen/package/all.rb +1 -1
- data/lib/zen/package/categories/lib/categories/controller/categories.rb +51 -63
- data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +45 -52
- data/lib/zen/package/categories/lib/categories/language/en/categories.yml +2 -2
- data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +39 -0
- data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +33 -0
- data/lib/zen/package/categories/lib/categories/plugin/categories.rb +2 -2
- data/lib/zen/package/comments/lib/comments.rb +31 -2
- data/lib/zen/package/comments/lib/comments/controller/comments.rb +42 -57
- data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +36 -51
- data/lib/zen/package/comments/lib/comments/language/en/comments.yml +7 -3
- data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +48 -0
- data/lib/zen/package/comments/lib/comments/model/comment.rb +45 -4
- data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +152 -0
- data/lib/zen/package/comments/lib/comments/plugin/comments.rb +5 -6
- data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +2 -2
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +43 -52
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +68 -67
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +1 -1
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +32 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +52 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +3 -3
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +4 -7
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +3 -3
- data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +37 -44
- data/lib/zen/package/menus/lib/menus/controller/menus.rb +33 -43
- data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +5 -10
- data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +41 -0
- data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +39 -0
- data/lib/zen/package/menus/lib/menus/model/menu.rb +3 -3
- data/lib/zen/package/menus/lib/menus/model/menu_item.rb +3 -3
- data/lib/zen/package/menus/lib/menus/plugin/menus.rb +5 -6
- data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +1 -1
- data/lib/zen/package/sections/lib/sections.rb +20 -0
- data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +85 -79
- data/lib/zen/package/sections/lib/sections/controller/sections.rb +58 -66
- data/lib/zen/package/sections/lib/sections/language/en/sections.yml +0 -1
- data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +43 -0
- data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +47 -0
- data/lib/zen/package/sections/lib/sections/model/section.rb +11 -15
- data/lib/zen/package/sections/lib/sections/model/section_entry.rb +9 -5
- data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +7 -8
- data/lib/zen/package/sections/lib/sections/plugin/sections.rb +3 -4
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +0 -4
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +8 -2
- data/lib/zen/package/sections/migrations/1306772479_remove_unique_slug.rb +28 -0
- data/lib/zen/package/settings/lib/settings.rb +21 -34
- data/lib/zen/package/settings/lib/settings/controller/settings.rb +29 -22
- data/lib/zen/package/settings/lib/settings/language/en/settings.yml +7 -5
- data/lib/zen/package/settings/lib/settings/language/nl/settings.yml +39 -0
- data/lib/zen/package/settings/lib/settings/model/setting.rb +3 -5
- data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +3 -4
- data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +3 -5
- data/lib/zen/package/settings/lib/settings/plugin/settings.rb +11 -4
- data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +5 -5
- data/lib/zen/package/settings/migrations/1299538742_add_language_key.rb +8 -8
- data/lib/zen/package/settings/migrations/1303196915_settings_plugin.rb +2 -5
- data/lib/zen/package/users/lib/users/controller/access_rules.rb +54 -61
- data/lib/zen/package/users/lib/users/controller/user_groups.rb +49 -57
- data/lib/zen/package/users/lib/users/controller/users.rb +58 -73
- data/lib/zen/package/users/lib/users/language/en/users.yml +6 -0
- data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +37 -0
- data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +31 -0
- data/lib/zen/package/users/lib/users/language/nl/users.yml +56 -0
- data/lib/zen/package/users/lib/users/model/user.rb +16 -1
- data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +27 -2
- data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +15 -3
- data/lib/zen/package/users/migrations/1304939855_user_settings.rb +15 -0
- data/lib/zen/plugin.rb +7 -9
- data/lib/zen/public/admin/css/{buttons.css → zen/buttons.css} +11 -7
- data/lib/zen/public/admin/css/{datepicker.css → zen/datepicker.css} +0 -0
- data/lib/zen/public/admin/css/{editor.css → zen/editor.css} +10 -5
- data/lib/zen/public/admin/css/{forms.css → zen/forms.css} +1 -1
- data/lib/zen/public/admin/css/{general.css → zen/general.css} +7 -7
- data/lib/zen/public/admin/css/{grid.css → zen/grid.css} +0 -0
- data/lib/zen/public/admin/css/{layout.css → zen/layout.css} +4 -5
- data/lib/zen/public/admin/css/zen/messages.css +61 -0
- data/lib/zen/public/admin/css/{notifications.css → zen/notifications.css} +4 -4
- data/lib/zen/public/admin/css/{reset.css → zen/reset.css} +0 -0
- data/lib/zen/public/admin/css/{tables.css → zen/tables.css} +3 -3
- data/lib/zen/public/admin/css/{tabs.css → zen/tabs.css} +5 -5
- data/lib/zen/public/admin/css/zen/window.css +79 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/accept.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/add.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/back.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/bold.png +0 -0
- data/lib/zen/public/admin/images/zen/icons/close.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/delete.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/edit.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/error.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/help.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/info.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/italic.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/large/error.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/large/notice.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/large/success.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/link.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/logout.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/ol.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/pdf.png +0 -0
- data/lib/zen/public/admin/images/zen/icons/preview.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/ul.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/user.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/view.png +0 -0
- data/lib/zen/public/admin/js/zen/core.js +73 -0
- data/lib/zen/public/admin/js/zen/editor.js +527 -0
- data/lib/zen/public/admin/js/zen/editor/markdown.js +84 -0
- data/lib/zen/public/admin/js/zen/editor/textile.js +84 -0
- data/lib/zen/public/admin/js/zen/init.js +12 -66
- data/lib/zen/public/admin/js/zen/tabs.js +5 -0
- data/lib/zen/public/admin/js/zen/window.js +206 -0
- data/lib/zen/task/build.rake +23 -6
- data/lib/zen/task/clean.rake +6 -7
- data/lib/zen/task/db.rake +7 -9
- data/lib/zen/task/package.rake +6 -6
- data/lib/zen/task/test.rake +6 -0
- data/lib/zen/task/theme.rake +3 -3
- data/lib/zen/theme.rb +3 -4
- data/lib/zen/validation.rb +7 -9
- data/lib/zen/version.rb +3 -4
- data/lib/zen/view/bottom.xhtml +0 -5
- data/lib/zen/view/main.xhtml +2 -0
- data/proto/app/app.rb +6 -4
- data/proto/app/config/config.rb +1 -7
- data/proto/app/config/database.rb +47 -43
- data/proto/app/config/middlewares.rb +0 -40
- data/proto/app/start.rb +1 -6
- data/proto/app/{vendor → theme}/.gitkeep +0 -0
- data/proto/migration.rb +3 -3
- data/proto/package/lib/package.rb +0 -1
- data/proto/package/lib/package/controller/controllers.rb +7 -40
- data/proto/package/lib/package/model/model.rb +3 -3
- metadata +106 -79
- data/CHANGELOG.md +0 -27
- data/ROADMAP.md +0 -53
- data/lib/zen/database.rb +0 -112
- data/lib/zen/logger.rb +0 -56
- data/lib/zen/public/admin/css/modals.css +0 -63
- data/lib/zen/public/admin/images/icons/close.png +0 -0
- data/lib/zen/public/admin/js/vendor/yepnope.js +0 -1
- data/lib/zen/public/admin/js/zen/editor/base.js +0 -262
- data/lib/zen/public/admin/js/zen/editor/drivers/html.js +0 -89
- data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +0 -87
- data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +0 -87
- data/lib/zen/public/admin/js/zen/modal.js +0 -146
- data/lib/zen/public/admin/js/zen/notification.js +0 -211
- data/proto/app/config/requires.rb +0 -10
- data/proto/app/vendor/theme/.gitkeep +0 -0
- data/proto/package/lib/package/view/admin/package/edit.xhtml +0 -0
- data/proto/package/lib/package/view/admin/package/form.xhtml +0 -0
- data/proto/package/lib/package/view/admin/package/new.xhtml +0 -0
@@ -13,13 +13,13 @@ module Categories
|
|
13
13
|
include ::Categories::Model
|
14
14
|
|
15
15
|
map('/admin/category-groups')
|
16
|
-
|
16
|
+
|
17
17
|
before_all do
|
18
18
|
csrf_protection(:save, :delete) do
|
19
19
|
respond(lang('zen_general.errors.csrf'), 403)
|
20
20
|
end
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
##
|
24
24
|
# The constructor is used to set various options such as the form URLs and load
|
25
25
|
# the language pack for the categories module.
|
@@ -33,19 +33,19 @@ module Categories
|
|
33
33
|
#
|
34
34
|
def initialize
|
35
35
|
super
|
36
|
-
|
36
|
+
|
37
37
|
@form_save_url = CategoryGroups.r(:save)
|
38
38
|
@form_delete_url = CategoryGroups.r(:delete)
|
39
|
-
|
39
|
+
|
40
40
|
Zen::Language.load('category_groups')
|
41
|
-
|
41
|
+
|
42
42
|
# Set the page title
|
43
43
|
if !action.method.nil?
|
44
44
|
method = action.method.to_s
|
45
45
|
@page_title = lang("category_groups.titles.#{method}") rescue nil
|
46
46
|
end
|
47
47
|
end
|
48
|
-
|
48
|
+
|
49
49
|
##
|
50
50
|
# Show an overview of all existing category groups and allow the user
|
51
51
|
# to create new category groups or manage individual categories.
|
@@ -61,12 +61,12 @@ module Categories
|
|
61
61
|
if !user_authorized?([:read])
|
62
62
|
respond(lang('zen_general.errors.not_authorized'), 403)
|
63
63
|
end
|
64
|
-
|
64
|
+
|
65
65
|
set_breadcrumbs(lang('category_groups.titles.index'))
|
66
|
-
|
66
|
+
|
67
67
|
@category_groups = CategoryGroup.all
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
##
|
71
71
|
# Edit an existing category group based on the ID specified in the URL.
|
72
72
|
# This method requires the following permissions:
|
@@ -81,19 +81,19 @@ module Categories
|
|
81
81
|
if !user_authorized?([:read, :update])
|
82
82
|
respond(lang('zen_general.errors.not_authorized'), 403)
|
83
83
|
end
|
84
|
-
|
84
|
+
|
85
85
|
set_breadcrumbs(
|
86
86
|
anchor_to(lang('category_groups.titles.index'), CategoryGroups.r(:index)),
|
87
87
|
lang('category_groups.titles.edit')
|
88
88
|
)
|
89
|
-
|
89
|
+
|
90
90
|
if flash[:form_data]
|
91
91
|
@category_group = flash[:form_data]
|
92
92
|
else
|
93
93
|
@category_group = CategoryGroup[id]
|
94
94
|
end
|
95
95
|
end
|
96
|
-
|
96
|
+
|
97
97
|
##
|
98
98
|
# Create a new category group. This method requires the following permissions:
|
99
99
|
#
|
@@ -107,12 +107,12 @@ module Categories
|
|
107
107
|
if !user_authorized?([:create, :read])
|
108
108
|
respond(lang('zen_general.errors.not_authorized'), 403)
|
109
109
|
end
|
110
|
-
|
110
|
+
|
111
111
|
set_breadcrumbs(
|
112
112
|
anchor_to(lang('category_groups.titles.index'), CategoryGroups.r(:index)),
|
113
113
|
lang('category_groups.titles.new')
|
114
114
|
)
|
115
|
-
|
115
|
+
|
116
116
|
@category_group = CategoryGroup.new
|
117
117
|
end
|
118
118
|
|
@@ -125,42 +125,47 @@ module Categories
|
|
125
125
|
#
|
126
126
|
# @author Yorick Peterse
|
127
127
|
# @since 0.1
|
128
|
-
#
|
128
|
+
#
|
129
129
|
def save
|
130
130
|
if !user_authorized?([:create, :update])
|
131
131
|
respond(lang('zen_general.errors.not_authorized'), 403)
|
132
132
|
end
|
133
|
-
|
134
|
-
post = request.
|
135
|
-
|
133
|
+
|
134
|
+
post = request.subset(:id, :name, :description)
|
135
|
+
|
136
136
|
if post['id'] and !post['id'].empty?
|
137
|
-
@category_group = CategoryGroup[post['id']
|
137
|
+
@category_group = CategoryGroup[post['id']]
|
138
138
|
save_action = :save
|
139
139
|
else
|
140
140
|
@category_group = CategoryGroup.new
|
141
141
|
save_action = :new
|
142
142
|
end
|
143
|
-
|
143
|
+
|
144
|
+
# Set the messages
|
144
145
|
flash_success = lang("category_groups.success.#{save_action}")
|
145
146
|
flash_error = lang("category_groups.errors.#{save_action}")
|
146
|
-
|
147
|
+
|
148
|
+
post.delete('id')
|
149
|
+
|
150
|
+
# Try to run the query
|
147
151
|
begin
|
148
152
|
@category_group.update(post)
|
149
|
-
|
150
|
-
rescue
|
151
|
-
|
153
|
+
message(:success, flash_success)
|
154
|
+
rescue => e
|
155
|
+
message(:error, flash_error)
|
156
|
+
Ramaze::Log.error(e.inspect)
|
152
157
|
|
153
158
|
flash[:form_data] = @category_group
|
154
159
|
flash[:form_errors] = @category_group.errors
|
155
160
|
end
|
156
|
-
|
161
|
+
|
157
162
|
if !@category_group.nil? and @category_group.id
|
158
163
|
redirect(CategoryGroups.r(:edit, @category_group.id))
|
159
|
-
else
|
164
|
+
else
|
160
165
|
redirect(CategoryGroups.r(:new))
|
161
166
|
end
|
162
167
|
end
|
163
|
-
|
168
|
+
|
164
169
|
##
|
165
170
|
# Delete all specified category groups and their categories. In
|
166
171
|
# order to delete a number of groups an array of fields, named "category_group_ids"
|
@@ -179,37 +184,25 @@ module Categories
|
|
179
184
|
respond(lang('zen_general.errors.not_authorized'), 403)
|
180
185
|
end
|
181
186
|
|
182
|
-
post = request.
|
183
|
-
|
184
|
-
if !post['category_group_ids'] or post['category_group_ids'].empty?
|
185
|
-
notification(
|
186
|
-
:error,
|
187
|
-
lang('category_groups.titles.index'),
|
188
|
-
lang('category_groups.errors.no_delete')
|
189
|
-
)
|
187
|
+
post = request.subset(:category_group_ids)
|
190
188
|
|
189
|
+
if !post['category_group_ids'] or post['category_group_ids'].empty?
|
190
|
+
message(:error, lang('category_groups.errors.no_delete'))
|
191
191
|
redirect(CategoryGroups.r(:index))
|
192
192
|
end
|
193
|
-
|
193
|
+
|
194
194
|
post['category_group_ids'].each do |id|
|
195
195
|
begin
|
196
|
-
CategoryGroup[id
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
201
|
-
)
|
202
|
-
rescue
|
203
|
-
notification(
|
204
|
-
:error,
|
205
|
-
lang('category_groups.titles.index'),
|
206
|
-
lang('category_groups.errors.delete') % id
|
207
|
-
)
|
196
|
+
CategoryGroup[id].destroy
|
197
|
+
message(:success, lang('category_groups.success.delete'))
|
198
|
+
rescue => e
|
199
|
+
Ramaze::Log.error(e.inspect)
|
200
|
+
message(:error, lang('category_groups.errors.delete') % id)
|
208
201
|
end
|
209
202
|
end
|
210
|
-
|
203
|
+
|
211
204
|
redirect(CategoryGroups.r(:index))
|
212
205
|
end
|
213
|
-
end
|
214
|
-
end
|
215
|
-
end
|
206
|
+
end # CategoryGroups
|
207
|
+
end # Controller
|
208
|
+
end # Categories
|
@@ -12,8 +12,8 @@ labels:
|
|
12
12
|
slug : 'Slug'
|
13
13
|
|
14
14
|
placeholders:
|
15
|
-
name : 'The name of the category'
|
16
|
-
slug : 'A URL friendly name of the category'
|
15
|
+
name : 'The name of the category.'
|
16
|
+
slug : 'A URL friendly name of the category.'
|
17
17
|
|
18
18
|
messages:
|
19
19
|
no_categories : 'No categories have been created yet.'
|
@@ -0,0 +1,39 @@
|
|
1
|
+
---
|
2
|
+
titles:
|
3
|
+
index: 'Categoriën'
|
4
|
+
edit : 'Categorie aanpassen'
|
5
|
+
new : 'Categorie aanmaken'
|
6
|
+
|
7
|
+
labels:
|
8
|
+
id : '#'
|
9
|
+
name : 'Naam'
|
10
|
+
description: 'Beschrijving'
|
11
|
+
|
12
|
+
# TODO: "Ouder" is a rather uncommon translation of the word "parent" when dealing with
|
13
|
+
# a hierarchy. It should be replaced with a better word once I find out which one to
|
14
|
+
# use.
|
15
|
+
parent: 'Ouder'
|
16
|
+
slug : 'Slug'
|
17
|
+
|
18
|
+
placeholders:
|
19
|
+
name: 'De naam van de categorie.'
|
20
|
+
slug: 'Een URL vriendelijke versie van de naam van de categorie.'
|
21
|
+
|
22
|
+
messages:
|
23
|
+
no_categories: 'Er zijn nog geen categoriën aangemaakt.'
|
24
|
+
|
25
|
+
success:
|
26
|
+
new : 'De categorie is aangemaakt.'
|
27
|
+
save : 'De categorie is aangepast.'
|
28
|
+
delete: 'De categorie is verwijderd.'
|
29
|
+
|
30
|
+
errors:
|
31
|
+
new : 'De categorie kon niet worden aangemaakt.'
|
32
|
+
save : 'De categorie kon niet worden aangepast.'
|
33
|
+
delete : 'De categorie met ID #%s kon niet worden verwijderd.'
|
34
|
+
no_delete: 'U moet ten minste 1 categorie specificeren om te verwijderen.'
|
35
|
+
|
36
|
+
buttons:
|
37
|
+
new : 'Categorie aanmaken'
|
38
|
+
save : 'Categorie opslaan'
|
39
|
+
delete: 'Geselecteerde categoriën verwijderen'
|
@@ -0,0 +1,33 @@
|
|
1
|
+
---
|
2
|
+
titles:
|
3
|
+
index: 'Categorie groepen'
|
4
|
+
edit : 'Categorie groep aanpassen'
|
5
|
+
new : 'Categorie groep aanmaken'
|
6
|
+
|
7
|
+
labels:
|
8
|
+
id : '#'
|
9
|
+
name : 'Naam'
|
10
|
+
description: 'Beschrijving'
|
11
|
+
manage : 'Categoriën beheren'
|
12
|
+
|
13
|
+
placeholders:
|
14
|
+
name: 'De naam van de groep.'
|
15
|
+
|
16
|
+
messages:
|
17
|
+
no_groups: 'Er zijn nog geen groepen aangemaakt.'
|
18
|
+
|
19
|
+
success:
|
20
|
+
new : 'De categorie groep is aangemaakt.'
|
21
|
+
save : 'De categorie groep is aangepast.'
|
22
|
+
delete: 'De categorie groep is verwijderd.'
|
23
|
+
|
24
|
+
errors:
|
25
|
+
new : 'De categorie groep kon niet worden aangemaakt.'
|
26
|
+
save : 'De categorie groep kon niet worden aangepast.'
|
27
|
+
delete : 'De categorie groep met ID #%s kon niet worden verwijderd.'
|
28
|
+
no_delete: 'U moet ten minste 1 groep specificeren om te verwijderen.'
|
29
|
+
|
30
|
+
buttons:
|
31
|
+
new : 'Groep aanmaken'
|
32
|
+
save : 'Groep opslaan'
|
33
|
+
delete: 'Geselecteerde groepen verwijderen'
|
@@ -100,8 +100,8 @@ module Categories
|
|
100
100
|
|
101
101
|
# Get all the categories according to our specified configuration options
|
102
102
|
# and the category group that was retrieved earlier on.
|
103
|
-
categories = Category.filter(:category_group_id => category_group.id)
|
104
|
-
.limit(@options[:limit], @options[:offset])
|
103
|
+
categories = Category.filter(:category_group_id => category_group.id) \
|
104
|
+
.limit(@options[:limit], @options[:offset]) \
|
105
105
|
.all
|
106
106
|
|
107
107
|
# Retrieve the category for the specified ID or slug
|
@@ -2,6 +2,7 @@ require __DIR__('comments/model/comment.rb')
|
|
2
2
|
require __DIR__('comments/controller/comments')
|
3
3
|
require __DIR__('comments/controller/comments_form')
|
4
4
|
require __DIR__('comments/plugin/comments')
|
5
|
+
require __DIR__('comments/plugin/anti_spam')
|
5
6
|
|
6
7
|
Zen::Language.options.paths.push(__DIR__('comments'))
|
7
8
|
Zen::Language.load('comments')
|
@@ -10,12 +11,12 @@ Zen::Package.add do |p|
|
|
10
11
|
p.name = 'comments'
|
11
12
|
p.author = 'Yorick Peterse'
|
12
13
|
p.url = 'http://yorickpeterse.com/'
|
13
|
-
p.about = "Allow users to post comments on any given section entry (as long as
|
14
|
+
p.about = "Allow users to post comments on any given section entry (as long as
|
14
15
|
the section allows it)."
|
15
16
|
|
16
17
|
p.directory = __DIR__('comments')
|
17
18
|
p.migration_dir = __DIR__('../migrations')
|
18
|
-
|
19
|
+
|
19
20
|
p.menu = [{
|
20
21
|
:title => lang('comments.titles.index'),
|
21
22
|
:url => "admin/comments"
|
@@ -33,3 +34,31 @@ Zen::Plugin.add do |p|
|
|
33
34
|
p.about = 'Plugin that can be used to retrieve comments.'
|
34
35
|
p.plugin = Comments::Plugin::Comments
|
35
36
|
end
|
37
|
+
|
38
|
+
Zen::Plugin.add do |p|
|
39
|
+
p.name = 'anti_spam'
|
40
|
+
p.author = 'Yorick Peterse'
|
41
|
+
p.url = 'http://yorickpeterse.com/'
|
42
|
+
p.about = 'Plugin used for checking if a comment is spam or ham.'
|
43
|
+
p.plugin = Comments::Plugin::AntiSpam
|
44
|
+
end
|
45
|
+
|
46
|
+
plugin(:settings, :register) do |setting|
|
47
|
+
setting.title = lang('comments.labels.anti_spam_system')
|
48
|
+
setting.description = lang('comments.placeholders.anti_spam_system')
|
49
|
+
setting.name = 'anti_spam_system'
|
50
|
+
setting.group = 'security'
|
51
|
+
setting.type = 'select'
|
52
|
+
setting.default = 'defensio'
|
53
|
+
setting.values = {
|
54
|
+
'defensio' => lang('comments.labels.defensio')
|
55
|
+
}
|
56
|
+
end
|
57
|
+
|
58
|
+
plugin(:settings, :register) do |setting|
|
59
|
+
setting.title = lang('comments.labels.defensio_key')
|
60
|
+
setting.description = lang('comments.placeholders.defensio_key')
|
61
|
+
setting.name = 'defensio_key'
|
62
|
+
setting.group = 'security'
|
63
|
+
setting.type = 'textbox'
|
64
|
+
end
|
@@ -17,37 +17,37 @@ module Comments
|
|
17
17
|
include ::Comments::Model
|
18
18
|
|
19
19
|
map('/admin/comments')
|
20
|
-
|
20
|
+
|
21
21
|
before_all do
|
22
22
|
csrf_protection(:save, :delete) do
|
23
23
|
respond(lang('zen_general.errors.csrf'), 403)
|
24
24
|
end
|
25
25
|
end
|
26
|
-
|
26
|
+
|
27
27
|
##
|
28
28
|
# Constructor method that pre-loads several variables and language files.
|
29
29
|
# The following language files are loaded:
|
30
30
|
#
|
31
31
|
# * comments
|
32
|
-
#
|
32
|
+
#
|
33
33
|
# @author Yorick Peterse
|
34
34
|
# @since 0.1
|
35
35
|
#
|
36
36
|
def initialize
|
37
37
|
super
|
38
|
-
|
38
|
+
|
39
39
|
@form_save_url = Comments.r(:save)
|
40
40
|
@form_delete_url = Comments.r(:delete)
|
41
|
-
|
41
|
+
|
42
42
|
Zen::Language.load('comments')
|
43
|
-
|
43
|
+
|
44
44
|
# Set the page title
|
45
45
|
if !action.method.nil?
|
46
46
|
method = action.method.to_s
|
47
47
|
@page_title = lang("comments.titles.#{method}") rescue nil
|
48
48
|
end
|
49
49
|
end
|
50
|
-
|
50
|
+
|
51
51
|
##
|
52
52
|
# Shows an overview of all posted comments along with their status,
|
53
53
|
# author and so on.
|
@@ -55,7 +55,7 @@ module Comments
|
|
55
55
|
# This method requires the following permissions:
|
56
56
|
#
|
57
57
|
# * read
|
58
|
-
#
|
58
|
+
#
|
59
59
|
# @author Yorick Peterse
|
60
60
|
# @since 0.1
|
61
61
|
#
|
@@ -63,12 +63,12 @@ module Comments
|
|
63
63
|
if !user_authorized?([:read])
|
64
64
|
respond(lang('zen_general.errors.not_authorized'), 403)
|
65
65
|
end
|
66
|
-
|
66
|
+
|
67
67
|
set_breadcrumbs(lang('comments.titles.index'))
|
68
|
-
|
68
|
+
|
69
69
|
@comments = Comment.all
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
72
|
##
|
73
73
|
# Edits an existing comment based on the ID.
|
74
74
|
#
|
@@ -81,14 +81,13 @@ module Comments
|
|
81
81
|
# @param [Integer] id The ID of the comment to retrieve so that we can edit it.
|
82
82
|
# @since 0.1
|
83
83
|
#
|
84
|
-
def edit
|
84
|
+
def edit(id)
|
85
85
|
if !user_authorized?([:read, :update])
|
86
86
|
respond(lang('zen_general.errors.not_authorized'), 403)
|
87
87
|
end
|
88
|
-
|
88
|
+
|
89
89
|
set_breadcrumbs(
|
90
|
-
anchor_to(lang('comments.titles.index'), Comments.r(:index)),
|
91
|
-
@page_title
|
90
|
+
anchor_to(lang('comments.titles.index'), Comments.r(:index)), @page_title
|
92
91
|
)
|
93
92
|
|
94
93
|
if flash[:form_data]
|
@@ -97,7 +96,7 @@ module Comments
|
|
97
96
|
@comment = Comment[id.to_i]
|
98
97
|
end
|
99
98
|
end
|
100
|
-
|
99
|
+
|
101
100
|
##
|
102
101
|
# Saves a comment based on the current POST data. Note that this
|
103
102
|
# method won't create a new comment as this can't be done using the backend.
|
@@ -113,29 +112,27 @@ module Comments
|
|
113
112
|
if !user_authorized?([:update])
|
114
113
|
respond(lang('zen_general.errors.not_authorized'), 403)
|
115
114
|
end
|
116
|
-
|
115
|
+
|
117
116
|
# Copy the POST data so we can work with it without messing things up
|
118
|
-
post
|
119
|
-
|
117
|
+
post = request.subset(
|
118
|
+
:user_id, :name, :website, :email, :comment, :status, :section_entry_id, :id
|
119
|
+
)
|
120
|
+
|
121
|
+
@comment = Comment[post['id']]
|
122
|
+
|
123
|
+
post.delete('id')
|
120
124
|
|
121
125
|
begin
|
122
126
|
@comment.update(post)
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
rescue
|
129
|
-
notification(
|
130
|
-
:error,
|
131
|
-
lang('comments.titles.index'),
|
132
|
-
lang('comments.errors.save')
|
133
|
-
)
|
134
|
-
|
127
|
+
message(:success, lang('comments.success.save'))
|
128
|
+
rescue => e
|
129
|
+
Ramaze::Log.error(e.inspect)
|
130
|
+
message(:error, lang('comments.errors.save'))
|
131
|
+
|
135
132
|
flash[:form_errors] = @comment.errors
|
136
133
|
flash[:form_data] = @comment
|
137
134
|
end
|
138
|
-
|
135
|
+
|
139
136
|
# Redirect the user to the proper page.
|
140
137
|
if @comment.id
|
141
138
|
redirect(Comments.r(:edit, @comment.id))
|
@@ -143,7 +140,7 @@ module Comments
|
|
143
140
|
redirect_referrer
|
144
141
|
end
|
145
142
|
end
|
146
|
-
|
143
|
+
|
147
144
|
##
|
148
145
|
# Deletes a number of comments based on the comment IDs specified
|
149
146
|
# in the POST array "comment_ids".
|
@@ -159,38 +156,26 @@ module Comments
|
|
159
156
|
if !user_authorized?([:delete])
|
160
157
|
respond(lang('zen_general.errors.not_authorized'), 403)
|
161
158
|
end
|
162
|
-
|
159
|
+
|
163
160
|
# Obviously we'll require some IDs
|
164
161
|
if !request.params['comment_ids'] or request.params['comment_ids'].empty?
|
165
|
-
|
166
|
-
:error,
|
167
|
-
lang('comments.titles.index'),
|
168
|
-
lang('comments.errors.no_delete')
|
169
|
-
)
|
170
|
-
|
162
|
+
message(:error, lang('comments.errors.no_delete'))
|
171
163
|
redirect_referrer
|
172
164
|
end
|
173
|
-
|
165
|
+
|
174
166
|
# Delete each section
|
175
167
|
request.params['comment_ids'].each do |id|
|
176
168
|
begin
|
177
|
-
Comment[id
|
178
|
-
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
)
|
183
|
-
rescue
|
184
|
-
notification(
|
185
|
-
:error,
|
186
|
-
lang('comments.titles.index'),
|
187
|
-
lang('comments.errors.delete') % id
|
188
|
-
)
|
169
|
+
Comment[id].destroy
|
170
|
+
message(:success, lang('comments.success.delete'))
|
171
|
+
rescue => e
|
172
|
+
Ramaze::Log.error(e.inspect)
|
173
|
+
message(:error, lang('comments.errors.delete') % id)
|
189
174
|
end
|
190
175
|
end
|
191
|
-
|
176
|
+
|
192
177
|
redirect_referrer
|
193
178
|
end
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
179
|
+
end # Comments
|
180
|
+
end # Controller
|
181
|
+
end # Comments
|