zen 0.4.2 → 0.4.3

Sign up to get free protection for your applications and to get access to all the features.
Files changed (131) hide show
  1. data/.gems +17 -15
  2. data/.gitignore +1 -1
  3. data/.travis.yml +1 -1
  4. data/MANIFEST +470 -0
  5. data/README.md +5 -3
  6. data/Rakefile +8 -6
  7. data/bin/zen +2 -7
  8. data/guide/asset_management.md +1 -0
  9. data/guide/autosaving_forms.md +1 -0
  10. data/guide/changelog.md +22 -0
  11. data/guide/faq.md +1 -0
  12. data/guide/getting_started.md +1 -0
  13. data/guide/hacking.md +1 -0
  14. data/guide/images/sections/revisions.png +0 -0
  15. data/guide/images/sections/revisions_diff.png +0 -0
  16. data/guide/images/sections/revisions_diff_multiple.png +0 -0
  17. data/guide/installation.md +4 -3
  18. data/guide/javascript.md +1 -0
  19. data/guide/javascript/zen_autosave.md +1 -0
  20. data/guide/javascript/zen_editor.md +1 -0
  21. data/guide/javascript/zen_form.md +1 -0
  22. data/guide/javascript/zen_hash.md +1 -0
  23. data/guide/javascript/zen_htmltable.md +1 -0
  24. data/guide/javascript/zen_tabs.md +1 -0
  25. data/guide/javascript/zen_window.md +1 -0
  26. data/guide/zen_compared.md +1 -0
  27. data/lib/zen.rb +10 -12
  28. data/lib/zen/event.rb +2 -2
  29. data/lib/zen/helper/controller.rb +13 -13
  30. data/lib/zen/helper/message.rb +3 -3
  31. data/lib/zen/helper/search.rb +4 -4
  32. data/lib/zen/helper/stacked_aspect.rb +9 -9
  33. data/lib/zen/html_diff.rb +151 -0
  34. data/lib/zen/language.rb +9 -7
  35. data/lib/zen/language/translation.rb +8 -8
  36. data/lib/zen/markup.rb +1 -1
  37. data/lib/zen/migrator.rb +2 -2
  38. data/lib/zen/model/helper.rb +4 -4
  39. data/lib/zen/model/plugin/events.rb +16 -16
  40. data/lib/zen/package.rb +2 -2
  41. data/lib/zen/package/all.rb +1 -1
  42. data/lib/zen/package/categories/lib/categories/controller/categories.rb +4 -4
  43. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +4 -4
  44. data/lib/zen/package/categories/lib/categories/helper/category.rb +3 -3
  45. data/lib/zen/package/categories/lib/categories/model/category.rb +9 -9
  46. data/lib/zen/package/categories/lib/categories/model/category_group.rb +9 -9
  47. data/lib/zen/package/comments/lib/comments/controller/comments.rb +4 -4
  48. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +2 -2
  49. data/lib/zen/package/comments/lib/comments/helper/comment.rb +1 -1
  50. data/lib/zen/package/comments/lib/comments/model/comment.rb +13 -13
  51. data/lib/zen/package/custom_fields/lib/custom_fields/blue_form_parameters.rb +1 -1
  52. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +4 -4
  53. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_types.rb +6 -6
  54. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +5 -5
  55. data/lib/zen/package/custom_fields/lib/custom_fields/helper/custom_field.rb +3 -3
  56. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +9 -9
  57. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +9 -9
  58. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_type.rb +9 -9
  59. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +8 -3
  60. data/lib/zen/package/custom_fields/migrations/1336171490_revisions.rb +41 -0
  61. data/lib/zen/package/dashboard/lib/dashboard/controller/dashboard.rb +6 -6
  62. data/lib/zen/package/dashboard/lib/dashboard/model/widget.rb +3 -3
  63. data/lib/zen/package/dashboard/lib/dashboard/widget.rb +12 -12
  64. data/lib/zen/package/extensions/lib/extensions/controller/extensions.rb +3 -3
  65. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +5 -5
  66. data/lib/zen/package/menus/lib/menus/controller/menus.rb +4 -4
  67. data/lib/zen/package/menus/lib/menus/helper/menu.rb +4 -4
  68. data/lib/zen/package/menus/lib/menus/model/menu.rb +11 -11
  69. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +10 -10
  70. data/lib/zen/package/menus/lib/menus/public/admin/menus/js/lib/nested_sortables.js +13 -13
  71. data/lib/zen/package/menus/lib/menus/public/admin/menus/js/menu_items.js +1 -1
  72. data/lib/zen/package/sections/lib/sections.rb +19 -0
  73. data/lib/zen/package/sections/lib/sections/controller/revisions.rb +184 -0
  74. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +5 -5
  75. data/lib/zen/package/sections/lib/sections/controller/sections.rb +9 -6
  76. data/lib/zen/package/sections/lib/sections/helper/revision.rb +124 -0
  77. data/lib/zen/package/sections/lib/sections/helper/section.rb +17 -15
  78. data/lib/zen/package/sections/lib/sections/helper/section_frontend.rb +104 -6
  79. data/lib/zen/package/sections/lib/sections/language/en/revisions.rb +34 -0
  80. data/lib/zen/package/sections/lib/sections/language/en/sections.rb +1 -0
  81. data/lib/zen/package/sections/lib/sections/language/nl/revisions.rb +35 -0
  82. data/lib/zen/package/sections/lib/sections/language/nl/sections.rb +1 -0
  83. data/lib/zen/package/sections/lib/sections/model/revision.rb +76 -0
  84. data/lib/zen/package/sections/lib/sections/model/section.rb +9 -9
  85. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +47 -12
  86. data/lib/zen/package/sections/lib/sections/view/admin/revisions/index.xhtml +89 -0
  87. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +1 -1
  88. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +14 -0
  89. data/lib/zen/package/sections/migrations/1335711557_revisions.rb +40 -0
  90. data/lib/zen/package/settings/lib/settings/controller/settings.rb +12 -4
  91. data/lib/zen/package/settings/lib/settings/setting.rb +6 -6
  92. data/lib/zen/package/users/lib/users/controller/user_groups.rb +4 -4
  93. data/lib/zen/package/users/lib/users/controller/users.rb +12 -12
  94. data/lib/zen/package/users/lib/users/helper/access.rb +1 -1
  95. data/lib/zen/package/users/lib/users/helper/acl.rb +4 -4
  96. data/lib/zen/package/users/lib/users/helper/users.rb +2 -2
  97. data/lib/zen/package/users/lib/users/model/permission.rb +1 -1
  98. data/lib/zen/package/users/lib/users/model/user.rb +11 -11
  99. data/lib/zen/package/users/lib/users/model/user_group.rb +9 -9
  100. data/lib/zen/package/users/lib/users/model/user_status.rb +2 -2
  101. data/lib/zen/public/admin/zen/css/general.css +54 -0
  102. data/lib/zen/public/admin/zen/css/messages.css +6 -3
  103. data/lib/zen/public/admin/zen/css/tables.css +10 -0
  104. data/lib/zen/public/admin/zen/images/icons/undo.png +0 -0
  105. data/lib/zen/public/admin/zen/js/lib/autosave.js +8 -8
  106. data/lib/zen/public/admin/zen/js/lib/base.js +2 -2
  107. data/lib/zen/public/admin/zen/js/lib/events.js +2 -2
  108. data/lib/zen/public/admin/zen/js/lib/form.js +7 -7
  109. data/lib/zen/public/admin/zen/js/lib/hash.js +7 -7
  110. data/lib/zen/public/admin/zen/js/lib/tabs.js +3 -3
  111. data/lib/zen/public/admin/zen/js/lib/window.js +1 -1
  112. data/lib/zen/security.rb +2 -2
  113. data/lib/zen/spec/helper.rb +3 -9
  114. data/lib/zen/spec/helper/capybara.rb +4 -4
  115. data/lib/zen/spec/helper/general.rb +1 -1
  116. data/lib/zen/spec/simplecov.rb +1 -5
  117. data/lib/zen/task/build.rake +22 -16
  118. data/lib/zen/task/db.rake +3 -2
  119. data/lib/zen/task/spelling.rake +10 -10
  120. data/lib/zen/task/test.rake +27 -19
  121. data/lib/zen/theme.rb +6 -6
  122. data/lib/zen/version.rb +1 -1
  123. data/spec/zen/all.rb +4 -0
  124. data/spec/zen/package/sections/controller/revisions.rb +235 -0
  125. data/spec/zen/package/sections/model/revision.rb +76 -0
  126. data/zen.gemspec +23 -21
  127. metadata +88 -29
  128. data/lib/zen/model/methods.rb +0 -27
  129. data/lib/zen/task/clean.rake +0 -20
  130. data/lib/zen/task/setup.rake +0 -4
  131. data/pkg/.gitkeep +0 -0
@@ -13,12 +13,12 @@ module Menus
13
13
  # end
14
14
  #
15
15
  # @since 0.2a
16
- # @event before_new_menu_item
17
- # @event after_new_menu_item
18
- # @event before_edit_menu_item
19
- # @event after_edit_menu_item
20
- # @event before_delete_menu_item
21
- # @event after_delete_menu_item
16
+ # @event before\_new\_menu\_item
17
+ # @event after\_new\_menu\_item
18
+ # @event before\_edit\_menu\_item
19
+ # @event after\_edit\_menu\_item
20
+ # @event before\_delete\_menu\_item
21
+ # @event after\_delete\_menu\_item
22
22
  #
23
23
  class MenuItem < Sequel::Model
24
24
  include Zen::Model::Helper
@@ -26,7 +26,7 @@ module Menus
26
26
  ##
27
27
  # Array containing the columns that can be set by the user.
28
28
  #
29
- # @since 17-02-2012
29
+ # @since 2012-02-17
30
30
  #
31
31
  COLUMNS = [
32
32
  :parent_id, :name, :url, :sort_order, :html_class, :html_id, :menu_id
@@ -48,7 +48,7 @@ module Menus
48
48
  ##
49
49
  # Searches for a set of menu items.
50
50
  #
51
- # @since 16-10-2011
51
+ # @since 2011-10-16
52
52
  # @param [String] query The search query.
53
53
  # @return [Mixed]
54
54
  #
@@ -89,7 +89,7 @@ module Menus
89
89
  ##
90
90
  # Hook that is called before creating a new object.
91
91
  #
92
- # @since 28-02-2012
92
+ # @since 2012-02-28
93
93
  #
94
94
  def before_create
95
95
  # Set the sort order based on the order of the last item.
@@ -112,7 +112,7 @@ module Menus
112
112
  ##
113
113
  # Hook that is executed before creating or saving an object.
114
114
  #
115
- # @since 03-01-2012
115
+ # @since 2012-01-03
116
116
  #
117
117
  def before_save
118
118
  sanitize_fields([:name, :url, :html_class, :html_id])
@@ -13,7 +13,7 @@
13
13
  * * Added the methods serializeArray() and serializeItems().
14
14
  * * Replaced various while() loops with calls to getParents() and the like.
15
15
  *
16
- * @since 11-02-2012
16
+ * @since 2012-02-11
17
17
  */
18
18
  var NestedSortables = new Class(
19
19
  {
@@ -23,7 +23,7 @@ var NestedSortables = new Class(
23
23
  * Object containing all the options that can be set in the secondary
24
24
  * parameter of the constructor.
25
25
  *
26
- * @since 11-02-2012
26
+ * @since 2012-02-11
27
27
  */
28
28
  options:
29
29
  {
@@ -76,7 +76,7 @@ var NestedSortables = new Class(
76
76
  /**
77
77
  * Creates a new instance of the class.
78
78
  *
79
- * @since 11-02-2012
79
+ * @since 2012-02-11
80
80
  * @param {string} list The ID of the list container.
81
81
  * @param {object} options Object containing custom options to set. See
82
82
  * NestedSortables.options for all the available options.
@@ -105,7 +105,7 @@ var NestedSortables = new Class(
105
105
  /**
106
106
  * Starts dragging an element.
107
107
  *
108
- * @since 11-02-2012
108
+ * @since 2012-02-11
109
109
  * @param {Event} event
110
110
  */
111
111
  start: function(event)
@@ -175,7 +175,7 @@ var NestedSortables = new Class(
175
175
  /**
176
176
  * Event that is called whenever an element is collapsed.
177
177
  *
178
- * @since 11-02-2012
178
+ * @since 2012-02-11
179
179
  * @param {Event} event
180
180
  */
181
181
  collapse: function(event)
@@ -217,7 +217,7 @@ var NestedSortables = new Class(
217
217
  /**
218
218
  * Stops an event.
219
219
  *
220
- * @since 11-02-2012
220
+ * @since 2012-02-11
221
221
  * @param {Event} event
222
222
  */
223
223
  stop: function(event)
@@ -229,7 +229,7 @@ var NestedSortables = new Class(
229
229
  /**
230
230
  * Gets the depth of an element.
231
231
  *
232
- * @since 11-02-2012
232
+ * @since 2012-02-11
233
233
  * @param {Element} el
234
234
  * @param {boolean} add
235
235
  * @return {number}
@@ -244,7 +244,7 @@ var NestedSortables = new Class(
244
244
  /**
245
245
  * Removes the events of various elements.
246
246
  *
247
- * @since 11-02-2012
247
+ * @since 2012-02-11
248
248
  */
249
249
  detach: function()
250
250
  {
@@ -259,7 +259,7 @@ var NestedSortables = new Class(
259
259
  /**
260
260
  * Stops the process of dragging an element.
261
261
  *
262
- * @since 11-02-2012
262
+ * @since 2012-02-11
263
263
  * @param {Event} event
264
264
  * @param {Element} el
265
265
  */
@@ -289,7 +289,7 @@ var NestedSortables = new Class(
289
289
  /**
290
290
  * Method that is called whenever an element is being moved.
291
291
  *
292
- * @since 11-02-2012
292
+ * @since 2012-02-11
293
293
  * @param {Event} event
294
294
  * @param {Element} el
295
295
  */
@@ -478,7 +478,7 @@ var NestedSortables = new Class(
478
478
  * there are no sub elements or an object of sub elements (with the same
479
479
  * structure).
480
480
  *
481
- * @since 11-02-2012
481
+ * @since 2012-02-11
482
482
  * @param {Function} fn
483
483
  * @param {Element} base
484
484
  * @return {object}
@@ -514,7 +514,7 @@ var NestedSortables = new Class(
514
514
  * Builds an array containing all the menu items and their parent IDs. This
515
515
  * array is sorted based on the sort order specified by the user.
516
516
  *
517
- * @since 11-02-2012
517
+ * @since 2012-02-11
518
518
  * @return {array}
519
519
  */
520
520
  serializeArray: function()
@@ -523,7 +523,7 @@ var NestedSortables = new Class(
523
523
  },
524
524
 
525
525
  /**
526
- * @since 11-02-2012
526
+ * @since 2012-02-11
527
527
  * @see NestedSortables.serializeArray()
528
528
  */
529
529
  serializeItems: function(items, parent_id)
@@ -4,7 +4,7 @@
4
4
  * Allows users to sort menu items and assign them to parent items by dragging
5
5
  * them.
6
6
  *
7
- * @since 09-02-2012
7
+ * @since 2012-02-09
8
8
  */
9
9
  window.addEvent('domready', function()
10
10
  {
@@ -20,13 +20,18 @@ Zen::Package.add do |p|
20
20
  p.permission :edit_section_entry , 'section_entries.permissions.edit'
21
21
  p.permission :new_section_entry , 'section_entries.permissions.new'
22
22
  p.permission :delete_section_entry, 'section_entries.permissions.delete'
23
+
24
+ p.permission :show_revision, 'revisions.permissions.show'
25
+ p.permission :restore_revision, 'revisions.permissions.restore'
23
26
  end
24
27
 
25
28
  require __DIR__('sections/model/section')
29
+ require __DIR__('sections/model/revision')
26
30
  require __DIR__('sections/model/section_entry')
27
31
  require __DIR__('sections/model/section_entry_status')
28
32
  require __DIR__('sections/controller/sections')
29
33
  require __DIR__('sections/controller/section_entries')
34
+ require __DIR__('sections/controller/revisions')
30
35
  require __DIR__('sections/widget/recent_entries')
31
36
 
32
37
  Zen::Controller::FrontendController.helper(:section_frontend)
@@ -35,3 +40,17 @@ Zen::Event.listen :post_start do
35
40
  Zen::Language.load('sections')
36
41
  Zen::Language.load('section_entries')
37
42
  end
43
+
44
+ Settings::SettingsGroup.add do |group|
45
+ group.title = 'sections.tabs.content'
46
+ group.name = :content
47
+ end
48
+
49
+ Settings::Setting.add do |setting|
50
+ setting.title = 'revisions.labels.maximum'
51
+ setting.description = 'revisions.descriptions.maximum'
52
+ setting.name = :maximum_revisions
53
+ setting.group = :content
54
+ setting.type = 'textbox'
55
+ setting.default = 10
56
+ end
@@ -0,0 +1,184 @@
1
+ module Sections
2
+ module Controller
3
+ ##
4
+ # In Zen a section entry's data is saved as a separate revision each time
5
+ # you save it manually or when it's saved automatically (every 10 minutes).
6
+ # Storing entries in separate revisions means you're able to revert to
7
+ # specific revisions by simply clicking the "Restore" link for a specific
8
+ # revision. No longer do you have to worry about accidently removing data
9
+ # without being able to easily revert that change.
10
+ #
11
+ # Revisions can be viewed as well as being restored by clicking on the
12
+ # "Revisions" link in the section entries overview. Once you've clicked this
13
+ # link you'll be presented with an overview similar to this one:
14
+ #
15
+ # ![Revisions Overview](../../images/sections/revisions.png)
16
+ #
17
+ # This overview lets you compare two revisions as well as restoring
18
+ # revisions.
19
+ #
20
+ # ## Comparing Revisions
21
+ #
22
+ # Comparing revisions makes it easy to see what has changed between two
23
+ # given revisions. In order to compare two revisions you must select the
24
+ # old and the new revision to compare. This can be done by checking the
25
+ # checkboxes in the "Old" and "New" column for the revisions you want to
26
+ # compare. Once you've selected the two revisions and have clicked on the
27
+ # "Compare" button you'll be presented with a set of differences between the
28
+ # two revisions.
29
+ #
30
+ # ![Revision Differences](../../images/sections/revisions_diff.png)
31
+ #
32
+ # Each field that had its value changed will be displayed with the changed
33
+ # data next to it. When showing such differences the following information
34
+ # is available for each field:
35
+ #
36
+ # * The line numbers of the old and new data. The numbers on the left are
37
+ # the old line numbers, the numbers on the right are the line numbers for
38
+ # the new revision.
39
+ # * Lines that were deleted. These are displayed in red and are prefixed
40
+ # with a minus (`-`) sign.
41
+ # * Lines that were added. These lines are displayed in green and are
42
+ # prefixed with a plus (`+`) sign.
43
+ #
44
+ # In case of the image above this means that line 1 was not changed and that
45
+ # lines 2 and 3 were added in the revision selected in the "New" column.
46
+ #
47
+ # A more expanded example of comparing differences between revisions:
48
+ #
49
+ # ![Revision Differences With Multiple Fields]
50
+ # (../../images/sections/revisions_diff_multiple.png)
51
+ #
52
+ # This example shows the result of comparing two revisions that contain
53
+ # changes for multiple custom fields.
54
+ #
55
+ # <div class="note todo">
56
+ # <p>
57
+ # <strong>Note:</strong>
58
+ # If there are no differences between a revision a notice will be
59
+ # displayed instead of the set of changes.
60
+ # </p>
61
+ # </div>
62
+ #
63
+ # ## Restoring Revisions
64
+ #
65
+ # Restoring revisions makes it easy to revert a set of changes without
66
+ # having to manually make these changes to a section entry, or worse: fiddle
67
+ # around with database backups.
68
+ #
69
+ # Restoring revisions is quite easy, once you've decided which revision you
70
+ # want to restore all you need to do is click the "Restore" link of the
71
+ # specific revision. Restoring a revision will result in the following two
72
+ # actions:
73
+ #
74
+ # * The revision ID of the entry is set to the ID of the revision you want
75
+ # to restore.
76
+ # * All newer revisions are deleted.
77
+ #
78
+ # ## Revision Limit
79
+ #
80
+ # Every time a section entry is saved a new revision will be created. To
81
+ # prevent the revisions table from filling up with thousands of revisions
82
+ # these revisions will be removed after a certain number has been exceeded.
83
+ #
84
+ # By default the oldest revision will be removed if there are more than 10
85
+ # revisions for a section entry. This limit can be changed by going to the
86
+ # settings manager. For more information about using the settings manager
87
+ # refer to {Settings::Controller::Settings Managing Settings}.
88
+ #
89
+ # @since 2012-04-30
90
+ # @map /admin/revisions
91
+ #
92
+ class Revisions < Zen::Controller::AdminController
93
+ map '/admin/revisions'
94
+ title 'revisions.titles.%s'
95
+ helper :section, :revision
96
+
97
+ ##
98
+ # Shows an overview of the revisions for a given section entry ID.
99
+ #
100
+ # @since 2012-04-30
101
+ # @param [Fixnum|String] section_id The ID of the section the entry
102
+ # belongs to.
103
+ # @param [Fixnum|String] id The ID of the section entry for which to show
104
+ # the revisions.
105
+ # @permission show_revision
106
+ #
107
+ def index(section_id, id)
108
+ authorize_user!(:show_revision)
109
+
110
+ validate_section(section_id)
111
+
112
+ @entry = validate_section_entry(id, section_id)
113
+ @revisions = @entry.revisions
114
+ @entry_url = SectionEntries.a(
115
+ @entry.title,
116
+ :edit,
117
+ @entry.section_id,
118
+ @entry.id
119
+ )
120
+
121
+ # Compare two revisions if both IDs are specified.
122
+ if request.POST['old_revision_id'] and request.POST['new_revision_id']
123
+ @old_rev_id = request.POST['old_revision_id']
124
+ @new_rev_id = request.POST['new_revision_id']
125
+ @diff = revision_diff(@entry, @old_rev_id, @new_rev_id)
126
+ end
127
+
128
+ set_breadcrumbs(
129
+ Sections.a(
130
+ lang('sections.titles.index'),
131
+ :index
132
+ ),
133
+ SectionEntries.a(
134
+ lang('section_entries.titles.index'),
135
+ :index,
136
+ section_id
137
+ ),
138
+ lang('revisions.titles.index')
139
+ )
140
+ end
141
+
142
+ ##
143
+ # Sets the revision ID of a section entry to a specific revision, deleting
144
+ # newer revisions.
145
+ #
146
+ # @since 2012-05-03
147
+ # @param [Fixnum|String] revision_id The ID of the revision to restore.
148
+ # @permission restore_revision
149
+ #
150
+ def restore(revision_id)
151
+ authorize_user!(:restore_revision)
152
+
153
+ revision = validate_revision(revision_id)
154
+
155
+ if revision
156
+ entry = revision.section_entry
157
+
158
+ begin
159
+ entry.update(:revision_id => revision.id)
160
+ rescue => e
161
+ Ramaze::Log.error(e)
162
+
163
+ message(:error, lang('revisions.errors.restore'))
164
+ redirect_referer
165
+ end
166
+
167
+ begin
168
+ Model::Revision \
169
+ .filter(:section_entry_id => entry.id) { id > revision.id } \
170
+ .delete
171
+
172
+ message(:success, lang('revisions.success.restore'))
173
+ rescue => e
174
+ Ramaze::Log.error(e)
175
+
176
+ message(:error, lang('revisions.errors.restore'))
177
+ end
178
+
179
+ redirect_referer
180
+ end
181
+ end
182
+ end # Revisions
183
+ end # Controller
184
+ end # Sections
@@ -90,10 +90,10 @@ module Sections
90
90
  #
91
91
  # This controller uses the following permissions:
92
92
  #
93
- # * show_section_entry
94
- # * new_section_entry
95
- # * edit_section_entry
96
- # * delete_section_entry
93
+ # * show\_section\_entry
94
+ # * new\_section\_entry
95
+ # * edit\_section\_entry
96
+ # * delete\_section\_entry
97
97
  #
98
98
  # @since 0.1
99
99
  # @map /admin/section-entries
@@ -267,7 +267,7 @@ module Sections
267
267
  # Automatically saves a section entry. This is needed to take care of the
268
268
  # custom fields, something the helper method itself can not do.
269
269
  #
270
- # @since 17-02-2012
270
+ # @since 2012-02-17
271
271
  #
272
272
  def autosave
273
273
  entry = Model::SectionEntry[request.params['id']]
@@ -5,17 +5,20 @@
5
5
  #
6
6
  # * {Sections::Controller::Sections}
7
7
  # * {Sections::Controller::SectionEntries}
8
+ # * {Sections::Controller::Revisions}
8
9
  #
9
10
  # ## Helpers
10
11
  #
11
12
  # * {Ramaze::Helper::Section}
12
13
  # * {Ramaze::Helper::SectionFrontend}
14
+ # * {Ramaze::Helper::Revision}
13
15
  #
14
16
  # ## Models
15
17
  #
16
18
  # * {Sections::Model::Section}
17
19
  # * {Sections::Model::SectionEntry}
18
20
  # * {Sections::Model::SectionEntryStatus}
21
+ # * {Sections::Model::Revision}
19
22
  #
20
23
  module Sections
21
24
  #:nodoc:
@@ -127,10 +130,10 @@ module Sections
127
130
  #
128
131
  # ## Used Permissions
129
132
  #
130
- # * show_section
131
- # * new_section
132
- # * edit_section
133
- # * delete_section
133
+ # * show\_section
134
+ # * new\_section
135
+ # * edit\_section
136
+ # * delete\_section
134
137
  #
135
138
  # @since 0.1
136
139
  # @map /admin/sections
@@ -152,10 +155,10 @@ module Sections
152
155
  }
153
156
 
154
157
  @custom_field_group_pk_hash = ::CustomFields::Model::CustomFieldGroup \
155
- .pk_hash(:name).invert
158
+ .to_hash(:id, :name).invert
156
159
 
157
160
  @category_group_pk_hash = ::Categories::Model::CategoryGroup \
158
- .pk_hash(:name).invert
161
+ .to_hash(:id, :name).invert
159
162
  end
160
163
 
161
164
  ##