zen 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (178) hide show
  1. data/.gems +34 -0
  2. data/.travis.yml +7 -0
  3. data/AUTHORS +5 -0
  4. data/CHANGELOG +14 -0
  5. data/{license.txt → LICENSE} +0 -0
  6. data/MANIFEST +67 -51
  7. data/README.md +18 -25
  8. data/Rakefile +2 -3
  9. data/bin/zen +2 -2
  10. data/lib/zen.rb +93 -57
  11. data/lib/zen/asset.rb +7 -8
  12. data/lib/zen/bin/app.rb +0 -2
  13. data/lib/zen/controller/admin_controller.rb +4 -9
  14. data/lib/zen/controller/base_controller.rb +0 -25
  15. data/lib/zen/controller/main_controller.rb +5 -5
  16. data/lib/zen/controller/preview.rb +50 -0
  17. data/lib/zen/helper/common.rb +4 -68
  18. data/lib/zen/helper/message.rb +82 -0
  19. data/lib/zen/helper/theme.rb +2 -2
  20. data/lib/zen/language.rb +68 -38
  21. data/lib/zen/language/en/zen_general.yml +1 -4
  22. data/lib/zen/language/nl/zen_general.yml +28 -0
  23. data/lib/zen/language/nl/zen_models.yml +13 -0
  24. data/lib/zen/layout/admin.xhtml +1 -1
  25. data/lib/zen/layout/login.xhtml +1 -1
  26. data/lib/zen/model/settings.rb +2 -0
  27. data/lib/zen/package.rb +29 -25
  28. data/lib/zen/package/all.rb +1 -1
  29. data/lib/zen/package/categories/lib/categories/controller/categories.rb +51 -63
  30. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +45 -52
  31. data/lib/zen/package/categories/lib/categories/language/en/categories.yml +2 -2
  32. data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +39 -0
  33. data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +33 -0
  34. data/lib/zen/package/categories/lib/categories/plugin/categories.rb +2 -2
  35. data/lib/zen/package/comments/lib/comments.rb +31 -2
  36. data/lib/zen/package/comments/lib/comments/controller/comments.rb +42 -57
  37. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +36 -51
  38. data/lib/zen/package/comments/lib/comments/language/en/comments.yml +7 -3
  39. data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +48 -0
  40. data/lib/zen/package/comments/lib/comments/model/comment.rb +45 -4
  41. data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +152 -0
  42. data/lib/zen/package/comments/lib/comments/plugin/comments.rb +5 -6
  43. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +2 -2
  44. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +43 -52
  45. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +68 -67
  46. data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +1 -1
  47. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +32 -0
  48. data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +52 -0
  49. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +3 -3
  50. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +4 -7
  51. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +3 -3
  52. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +37 -44
  53. data/lib/zen/package/menus/lib/menus/controller/menus.rb +33 -43
  54. data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +5 -10
  55. data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +41 -0
  56. data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +39 -0
  57. data/lib/zen/package/menus/lib/menus/model/menu.rb +3 -3
  58. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +3 -3
  59. data/lib/zen/package/menus/lib/menus/plugin/menus.rb +5 -6
  60. data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +1 -1
  61. data/lib/zen/package/sections/lib/sections.rb +20 -0
  62. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +85 -79
  63. data/lib/zen/package/sections/lib/sections/controller/sections.rb +58 -66
  64. data/lib/zen/package/sections/lib/sections/language/en/sections.yml +0 -1
  65. data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +43 -0
  66. data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +47 -0
  67. data/lib/zen/package/sections/lib/sections/model/section.rb +11 -15
  68. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +9 -5
  69. data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +7 -8
  70. data/lib/zen/package/sections/lib/sections/plugin/sections.rb +3 -4
  71. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +0 -4
  72. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +8 -2
  73. data/lib/zen/package/sections/migrations/1306772479_remove_unique_slug.rb +28 -0
  74. data/lib/zen/package/settings/lib/settings.rb +21 -34
  75. data/lib/zen/package/settings/lib/settings/controller/settings.rb +29 -22
  76. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +7 -5
  77. data/lib/zen/package/settings/lib/settings/language/nl/settings.yml +39 -0
  78. data/lib/zen/package/settings/lib/settings/model/setting.rb +3 -5
  79. data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +3 -4
  80. data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +3 -5
  81. data/lib/zen/package/settings/lib/settings/plugin/settings.rb +11 -4
  82. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +5 -5
  83. data/lib/zen/package/settings/migrations/1299538742_add_language_key.rb +8 -8
  84. data/lib/zen/package/settings/migrations/1303196915_settings_plugin.rb +2 -5
  85. data/lib/zen/package/users/lib/users/controller/access_rules.rb +54 -61
  86. data/lib/zen/package/users/lib/users/controller/user_groups.rb +49 -57
  87. data/lib/zen/package/users/lib/users/controller/users.rb +58 -73
  88. data/lib/zen/package/users/lib/users/language/en/users.yml +6 -0
  89. data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +37 -0
  90. data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +31 -0
  91. data/lib/zen/package/users/lib/users/language/nl/users.yml +56 -0
  92. data/lib/zen/package/users/lib/users/model/user.rb +16 -1
  93. data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +27 -2
  94. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +15 -3
  95. data/lib/zen/package/users/migrations/1304939855_user_settings.rb +15 -0
  96. data/lib/zen/plugin.rb +7 -9
  97. data/lib/zen/public/admin/css/{buttons.css → zen/buttons.css} +11 -7
  98. data/lib/zen/public/admin/css/{datepicker.css → zen/datepicker.css} +0 -0
  99. data/lib/zen/public/admin/css/{editor.css → zen/editor.css} +10 -5
  100. data/lib/zen/public/admin/css/{forms.css → zen/forms.css} +1 -1
  101. data/lib/zen/public/admin/css/{general.css → zen/general.css} +7 -7
  102. data/lib/zen/public/admin/css/{grid.css → zen/grid.css} +0 -0
  103. data/lib/zen/public/admin/css/{layout.css → zen/layout.css} +4 -5
  104. data/lib/zen/public/admin/css/zen/messages.css +61 -0
  105. data/lib/zen/public/admin/css/{notifications.css → zen/notifications.css} +4 -4
  106. data/lib/zen/public/admin/css/{reset.css → zen/reset.css} +0 -0
  107. data/lib/zen/public/admin/css/{tables.css → zen/tables.css} +3 -3
  108. data/lib/zen/public/admin/css/{tabs.css → zen/tabs.css} +5 -5
  109. data/lib/zen/public/admin/css/zen/window.css +79 -0
  110. data/lib/zen/public/admin/images/{icons → zen/icons}/accept.png +0 -0
  111. data/lib/zen/public/admin/images/{icons → zen/icons}/add.png +0 -0
  112. data/lib/zen/public/admin/images/{icons → zen/icons}/back.png +0 -0
  113. data/lib/zen/public/admin/images/{icons → zen/icons}/bold.png +0 -0
  114. data/lib/zen/public/admin/images/zen/icons/close.png +0 -0
  115. data/lib/zen/public/admin/images/{icons → zen/icons}/delete.png +0 -0
  116. data/lib/zen/public/admin/images/{icons → zen/icons}/edit.png +0 -0
  117. data/lib/zen/public/admin/images/{icons → zen/icons}/error.png +0 -0
  118. data/lib/zen/public/admin/images/{icons → zen/icons}/help.png +0 -0
  119. data/lib/zen/public/admin/images/{icons → zen/icons}/info.png +0 -0
  120. data/lib/zen/public/admin/images/{icons → zen/icons}/italic.png +0 -0
  121. data/lib/zen/public/admin/images/{icons → zen/icons}/large/error.png +0 -0
  122. data/lib/zen/public/admin/images/{icons → zen/icons}/large/notice.png +0 -0
  123. data/lib/zen/public/admin/images/{icons → zen/icons}/large/success.png +0 -0
  124. data/lib/zen/public/admin/images/{icons → zen/icons}/link.png +0 -0
  125. data/lib/zen/public/admin/images/{icons → zen/icons}/logout.png +0 -0
  126. data/lib/zen/public/admin/images/{icons → zen/icons}/ol.png +0 -0
  127. data/lib/zen/public/admin/images/{icons → zen/icons}/pdf.png +0 -0
  128. data/lib/zen/public/admin/images/zen/icons/preview.png +0 -0
  129. data/lib/zen/public/admin/images/{icons → zen/icons}/ul.png +0 -0
  130. data/lib/zen/public/admin/images/{icons → zen/icons}/user.png +0 -0
  131. data/lib/zen/public/admin/images/{icons → zen/icons}/view.png +0 -0
  132. data/lib/zen/public/admin/js/zen/core.js +73 -0
  133. data/lib/zen/public/admin/js/zen/editor.js +527 -0
  134. data/lib/zen/public/admin/js/zen/editor/markdown.js +84 -0
  135. data/lib/zen/public/admin/js/zen/editor/textile.js +84 -0
  136. data/lib/zen/public/admin/js/zen/init.js +12 -66
  137. data/lib/zen/public/admin/js/zen/tabs.js +5 -0
  138. data/lib/zen/public/admin/js/zen/window.js +206 -0
  139. data/lib/zen/task/build.rake +23 -6
  140. data/lib/zen/task/clean.rake +6 -7
  141. data/lib/zen/task/db.rake +7 -9
  142. data/lib/zen/task/package.rake +6 -6
  143. data/lib/zen/task/test.rake +6 -0
  144. data/lib/zen/task/theme.rake +3 -3
  145. data/lib/zen/theme.rb +3 -4
  146. data/lib/zen/validation.rb +7 -9
  147. data/lib/zen/version.rb +3 -4
  148. data/lib/zen/view/bottom.xhtml +0 -5
  149. data/lib/zen/view/main.xhtml +2 -0
  150. data/proto/app/app.rb +6 -4
  151. data/proto/app/config/config.rb +1 -7
  152. data/proto/app/config/database.rb +47 -43
  153. data/proto/app/config/middlewares.rb +0 -40
  154. data/proto/app/start.rb +1 -6
  155. data/proto/app/{vendor → theme}/.gitkeep +0 -0
  156. data/proto/migration.rb +3 -3
  157. data/proto/package/lib/package.rb +0 -1
  158. data/proto/package/lib/package/controller/controllers.rb +7 -40
  159. data/proto/package/lib/package/model/model.rb +3 -3
  160. metadata +106 -79
  161. data/CHANGELOG.md +0 -27
  162. data/ROADMAP.md +0 -53
  163. data/lib/zen/database.rb +0 -112
  164. data/lib/zen/logger.rb +0 -56
  165. data/lib/zen/public/admin/css/modals.css +0 -63
  166. data/lib/zen/public/admin/images/icons/close.png +0 -0
  167. data/lib/zen/public/admin/js/vendor/yepnope.js +0 -1
  168. data/lib/zen/public/admin/js/zen/editor/base.js +0 -262
  169. data/lib/zen/public/admin/js/zen/editor/drivers/html.js +0 -89
  170. data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +0 -87
  171. data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +0 -87
  172. data/lib/zen/public/admin/js/zen/modal.js +0 -146
  173. data/lib/zen/public/admin/js/zen/notification.js +0 -211
  174. data/proto/app/config/requires.rb +0 -10
  175. data/proto/app/vendor/theme/.gitkeep +0 -0
  176. data/proto/package/lib/package/view/admin/package/edit.xhtml +0 -0
  177. data/proto/package/lib/package/view/admin/package/form.xhtml +0 -0
  178. data/proto/package/lib/package/view/admin/package/new.xhtml +0 -0
@@ -18,14 +18,9 @@ module Ramaze
18
18
  # @since 0.2a
19
19
  # @param [Integer] menu_id The ID of the menu to validate.
20
20
  #
21
- def validate_menu(menu_id = nil)
21
+ def validate_menu(menu_id)
22
22
  if !menu_id or ::Menus::Model::Menu[menu_id].nil?
23
- notification(
24
- :error,
25
- @menu_items_lang.titles[:index],
26
- @menu_items_lang.errors[:invalid_menu]
27
- )
28
-
23
+ message(:error, @menu_items_lang.errors[:invalid_menu])
29
24
  redirect(::Menus::Controller::Menus.r(:index))
30
25
  end
31
26
  end
@@ -88,6 +83,6 @@ module Ramaze
88
83
  end
89
84
  end
90
85
  end
91
- end
92
- end
93
- end
86
+ end # MenuItem
87
+ end # Helper
88
+ end # Ramaze
@@ -0,0 +1,41 @@
1
+ ---
2
+ titles:
3
+ index: 'Menu items'
4
+ edit : 'Menu item aanpassen'
5
+ new : 'Menu item aanmaken'
6
+
7
+ labels:
8
+ id : '#'
9
+ parent_id: 'Hoofd item'
10
+ name : 'Naam'
11
+ url : 'URL'
12
+ order : 'Volgorde'
13
+ css_class: 'CSS klasse'
14
+ css_id : 'CSS ID'
15
+
16
+ placeholders:
17
+ name : 'De naam/label van het menu item.'
18
+ url : 'De URL van het menu item.'
19
+ order : 'De sorteer volgorde.'
20
+ css_class: 'Een klasse die gebruikt kan worden in CSS bestanden.'
21
+ css_id : 'Een ID die gebruikt kan worden in CSS bestanden.'
22
+
23
+ messages:
24
+ no_items: 'Er zijn nog geen menu items aangemaakt.'
25
+
26
+ buttons:
27
+ new : 'Menu item toevoegen'
28
+ save : 'Menu item opslaan'
29
+ delete: 'Geselecteerde menu items verwijderen'
30
+
31
+ success:
32
+ new : 'Het menu item is aangemaakt.'
33
+ save : 'Het menu item is aangepast.'
34
+ delete: 'De menu items zijn verwijderd.'
35
+
36
+ errors:
37
+ new : 'Het menu item kon niet worden aangemaakt.'
38
+ save : 'Het menu item kon niet worden aangepast.'
39
+ delete : 'Het menu item met ID #%s kon niet worden verwijderd.'
40
+ no_delete : 'U moet ten minste 1 item specificeren om te verwijderen.'
41
+ invalid_menu: 'Het opgegeven menu is ongeldig of bestaat niet meer.'
@@ -0,0 +1,39 @@
1
+ ---
2
+ titles:
3
+ index: "Menu's"
4
+ edit : 'Menu aanpassen'
5
+ new : 'Menu aanmaken'
6
+
7
+ labels:
8
+ id : '#'
9
+ name : 'Naam'
10
+ slug : 'Slug'
11
+ description : 'Beschrijving'
12
+ css_class : 'CSS klasse'
13
+ css_id : 'CSS ID'
14
+ manage_items: 'Menu items beheren'
15
+
16
+ placeholders:
17
+ name : 'De naam van het menu.'
18
+ slug : 'Een URL vriendelijke versie van de menu naam.'
19
+ css_class: 'Een klasse die gebruikt kan worden in CSS bestanden.'
20
+ css_id : 'Een ID die gebruikt kan worden in CSS bestanden.'
21
+
22
+ messages:
23
+ no_menus: "Er zijn nog geen menu's aangemaakt."
24
+
25
+ buttons:
26
+ new : 'Menu toevoegen'
27
+ save : 'Menu opslaan'
28
+ delete: "Geselecteerde menu's verwijderen"
29
+
30
+ success:
31
+ new : 'Het menu is aangemaakt.'
32
+ save : 'Het menu is aangepast.'
33
+ delete: "De geselecteerde menu's zijn verwijderd."
34
+
35
+ errors:
36
+ new : 'Het menu kon niet worden aangemaakt.'
37
+ save : 'Het menu kon niet worden aangepast.'
38
+ delete : 'Het menu met ID #%s kon niet worden verwijderd.'
39
+ no_delete: 'U moet ten minste 1 menu specificeren om te verwijderen.'
@@ -33,6 +33,6 @@ module Menus
33
33
  # Prevent people from entering random crap for class and ID names
34
34
  validates_format(/^[a-zA-Z\-_0-9]*/, [:css_class, :css_id])
35
35
  end
36
- end
37
- end
38
- end
36
+ end # Menu
37
+ end # Model
38
+ end # Menus
@@ -31,6 +31,6 @@ module Menus
31
31
  # Prevent people from entering random crap for class and ID names
32
32
  validates_format(/^[a-zA-Z\-_0-9]*/, [:css_class, :css_id])
33
33
  end
34
- end
35
- end
36
- end
34
+ end # MenuItem
35
+ end # Model
36
+ end # Menus
@@ -75,8 +75,8 @@ module Menus
75
75
  return if !menu
76
76
 
77
77
  # Get all menu items
78
- menu_items = MenuItem.filter(:menu_id => menu.id, :parent_id => nil)
79
- .limit(@options[:limit], @options[:offset])
78
+ menu_items = MenuItem.filter(:menu_id => menu.id, :parent_id => nil) \
79
+ .limit(@options[:limit], @options[:offset]) \
80
80
  .all
81
81
 
82
82
  @g = Ramaze::Gestalt.new
@@ -146,7 +146,6 @@ module Menus
146
146
  end
147
147
  end
148
148
  end
149
-
150
- end
151
- end
152
- end
149
+ end # Menus
150
+ end # Plugin
151
+ end # Menus
@@ -21,7 +21,7 @@ Sequel.migration do
21
21
  String :css_class
22
22
  String :css_id
23
23
 
24
- foreign_key :menu_id, :menus, :update => :on_cascade, :on_delete => :cascade, :key => :id,
24
+ foreign_key :menu_id, :menus, :update => :on_cascade, :on_delete => :cascade, :key => :id
25
25
  end
26
26
  end
27
27
 
@@ -46,3 +46,23 @@ Zen::Plugin.add do |p|
46
46
  p.url = 'http://yorickpeterse.com/'
47
47
  p.plugin = Sections::Plugin::SectionEntries
48
48
  end
49
+
50
+ # Register all the settings
51
+ section_hash = {}
52
+
53
+ begin
54
+ Sections::Model::Section.select(:name, :slug).each do |s|
55
+ section_hash[s.slug] = s.name
56
+ end
57
+ rescue => e
58
+ Ramaze::Log.warn("The settings plugin failed to retrieve all sections: #{e.message}")
59
+ end
60
+
61
+ plugin(:settings, :register) do |setting|
62
+ setting.title = lang('settings.labels.default_section')
63
+ setting.description = lang('settings.placeholders.default_section')
64
+ setting.name = 'default_section'
65
+ setting.group = 'general'
66
+ setting.type = 'select'
67
+ setting.values = section_hash
68
+ end
@@ -10,16 +10,22 @@ module Sections
10
10
  # @since 0.1
11
11
  #
12
12
  class SectionEntries < Zen::Controller::AdminController
13
- include ::Sections::Model
14
-
15
- map('/admin/section-entries')
13
+ include ::Sections::Model
14
+
15
+ map '/admin/section-entries'
16
+
17
+ # Load all required Javascript files
18
+ javascript ['zen/tabs', 'zen/editor', 'vendor/datepicker']
19
+
20
+ # Load all required CSS files
21
+ stylesheet ['zen/datepicker']
16
22
 
17
23
  before_all do
18
24
  csrf_protection(:save, :delete) do
19
25
  respond(lang('zen_general.errors.csrf'), 403)
20
26
  end
21
27
  end
22
-
28
+
23
29
  ##
24
30
  # Constructor method, called upon initialization. It's used to set the
25
31
  # URL to which forms send their data and load the language pack.
@@ -35,13 +41,13 @@ module Sections
35
41
  #
36
42
  def initialize
37
43
  super
38
-
44
+
39
45
  @form_save_url = SectionEntries.r(:save)
40
46
  @form_delete_url = SectionEntries.r(:delete)
41
-
47
+
42
48
  Zen::Language.load('section_entries')
43
49
  Zen::Language.load('sections')
44
-
50
+
45
51
  # Set the page title
46
52
  if !action.method.nil?
47
53
  method = action.method.to_sym
@@ -53,14 +59,14 @@ module Sections
53
59
  'published' => lang('section_entries.special.status_hash.published')
54
60
  }
55
61
  end
56
-
62
+
57
63
  ##
58
64
  # Show an overview of all entries for the current section.
59
65
  #
60
66
  # This method requires the following permissions:
61
67
  #
62
68
  # * read
63
- #
69
+ #
64
70
  # @author Yorick Peterse
65
71
  # @param [Integer] section_id The ID of the current section.
66
72
  # @since 0.1
@@ -69,17 +75,17 @@ module Sections
69
75
  if !user_authorized?([:read])
70
76
  respond(lang('zen_general.errors.not_authorized'), 403)
71
77
  end
72
-
78
+
73
79
  set_breadcrumbs(
74
80
  anchor_to(lang('sections.titles.index'), Sections.r(:index)),
75
81
  lang('section_entries.titles.index')
76
82
  )
77
-
83
+
78
84
  section = Section[section_id.to_i]
79
85
  @section_id = section_id
80
86
  @entries = section.section_entries
81
87
  end
82
-
88
+
83
89
  ##
84
90
  # Show a form that lets the user edit an existing section entry.
85
91
  #
@@ -97,13 +103,19 @@ module Sections
97
103
  if !user_authorized?([:read, :update])
98
104
  respond(lang('zen_general.errors.not_authorized'), 403)
99
105
  end
100
-
106
+
101
107
  set_breadcrumbs(
102
- anchor_to(lang('sections.titles.index'), Sections.r(:index)),
103
- anchor_to(lang('section_entries.titles.index'), SectionEntries.r(:index, section_id)),
108
+ anchor_to(
109
+ lang('sections.titles.index'),
110
+ Sections.r(:index)
111
+ ),
112
+ anchor_to(
113
+ lang('section_entries.titles.index'),
114
+ SectionEntries.r(:index, section_id)
115
+ ),
104
116
  lang('section_entries.titles.edit')
105
117
  )
106
-
118
+
107
119
  @section_id = section_id
108
120
 
109
121
  if flash[:form_data]
@@ -113,10 +125,10 @@ module Sections
113
125
  end
114
126
 
115
127
  @users_hash = {}
116
-
128
+
117
129
  Users::Model::User.each { |u| @users_hash[u.id] = u.name }
118
130
  end
119
-
131
+
120
132
  ##
121
133
  # Show a form that lets the user create a new section entry.
122
134
  #
@@ -129,24 +141,30 @@ module Sections
129
141
  # @param [Integer] section_id The ID of the current section.
130
142
  # @since 0.1
131
143
  #
132
- def new section_id
144
+ def new(section_id)
133
145
  if !user_authorized?([:read, :create])
134
146
  respond(lang('zen_general.errors.not_authorized'), 403)
135
147
  end
136
-
148
+
137
149
  set_breadcrumbs(
138
- anchor_to(lang('sections.titles.index'), Sections.r(:index)),
139
- anchor_to(lang('section_entries.titles.index'), SectionEntries.r(:index, section_id)),
150
+ anchor_to(
151
+ lang('sections.titles.index'),
152
+ Sections.r(:index)
153
+ ),
154
+ anchor_to(
155
+ lang('section_entries.titles.index'),
156
+ SectionEntries.r(:index, section_id)
157
+ ),
140
158
  lang('section_entries.titles.new')
141
159
  )
142
-
160
+
143
161
  @section_id = section_id
144
162
  @entry = SectionEntry.new(:section_id => @section_id)
145
163
  @users_hash = {}
146
-
164
+
147
165
  Users::Model::User.each { |u| @users_hash[u.id] = u.name }
148
166
  end
149
-
167
+
150
168
  ##
151
169
  # Method used for processing the form data and redirecting the user back to
152
170
  # the proper URL. Based on the value of a hidden field named "id" we'll determine
@@ -166,15 +184,15 @@ module Sections
166
184
  if !user_authorized?([:create, :update])
167
185
  respond(lang('zen_general.errors.not_authorized'), 403)
168
186
  end
169
-
187
+
170
188
  post = request.params.dup
171
189
  section_id = post['section_id']
172
190
  field_values = post['custom_field_values']
173
191
  custom_field_errors = {}
174
-
175
- post.delete("custom_field_values")
192
+
193
+ post.delete('custom_field_values')
176
194
  post.delete('slug') if post['slug'].empty?
177
-
195
+
178
196
  if !post['category_pks'].nil?
179
197
  post['category_pks'].map! { |value| value.to_i }
180
198
  else
@@ -184,7 +202,7 @@ module Sections
184
202
  if post['id'] and !post['id'].empty?
185
203
  @entry = SectionEntry[post['id']]
186
204
  save_action = :save
187
-
205
+
188
206
  # Section entries aren't considered to be updated whenever a custom field value
189
207
  # is modified, this solves that problem
190
208
  post['updated_at'] = Time.new
@@ -192,70 +210,70 @@ module Sections
192
210
  @entry = SectionEntry.new
193
211
  save_action = :new
194
212
  end
195
-
213
+
214
+ post.delete('id')
215
+
196
216
  flash_success = lang("section_entries.success.#{save_action}")
197
217
  flash_error = lang("section_entries.errors.#{save_action}")
198
-
218
+
199
219
  # Transactions ahoy!
200
220
  begin
201
- Zen::Database.handle.transaction do
221
+ Zen.database.transaction do
202
222
  # Update the entry itself
203
223
  @entry.update(post)
204
- notification(:success, lang('section_entries.titles.index'), flash_success)
205
-
224
+ message(:success, flash_success)
225
+
206
226
  # Update the field values
207
227
  field_values.each do |field_id, value|
208
228
  field_value = CustomFields::Model::CustomFieldValue[
209
- :custom_field_id => field_id,
229
+ :custom_field_id => field_id,
210
230
  :section_entry_id => @entry.id
211
231
  ]
212
-
232
+
213
233
  if field_value.nil?
214
234
  field_value = @entry.add_custom_field_value(
215
- :section_entry_id => @entry.id,
235
+ :section_entry_id => @entry.id,
216
236
  :custom_field_id => field_id
217
237
  )
218
238
  end
219
-
239
+
220
240
  # Get the custom field for the current value
221
241
  custom_field = field_value.custom_field
222
-
242
+
223
243
  if custom_field.required and value.empty?
224
- custom_field_errors[:"custom_field_values[#{field_id}]"] = lang('zen_models.presence')
244
+ custom_field_errors[:"custom_field_values[#{field_id}]"] = \
245
+ lang('zen_models.presence')
225
246
  end
226
-
227
- # Validate the entry
228
- if !custom_field_errors.empty?
229
- # No need for a particular exception as Sequel will undo the changes anyway
230
- raise
231
- end
232
-
247
+
248
+ raise unless custom_field_errors.empty?
249
+
233
250
  field_value.value = value
234
251
  field_value.save
235
252
  end
236
253
  end
237
-
254
+
238
255
  # The rescue statement is called whenever the following happens:
239
- #
256
+ #
240
257
  # 1. The fields for the section entry (title, slug, etc) are invalid
241
258
  # 2. Any custom field marked as required didn't have a value
242
259
  # 3. Something else went wrong, god knows what.
243
- rescue
244
- notification(:error, lang('section_entries.titles.index'), flash_error)
245
-
260
+ rescue => e
261
+ Ramaze::Log.error(e.inspect)
262
+ message(:error, flash_error)
263
+
246
264
  flash[:form_errors] = @entry.errors.merge(custom_field_errors)
247
265
  flash[:form_data] = @entry
248
266
 
249
267
  redirect_referrer
250
268
  end
251
-
269
+
252
270
  if @entry.id
253
271
  redirect(SectionEntries.r(:edit, section_id, @entry.id))
254
272
  else
255
273
  redirect_referrer
256
274
  end
257
275
  end
258
-
276
+
259
277
  ##
260
278
  # Delete a set of section entries based on the supplied POST
261
279
  # field "section_entry_ids".
@@ -271,36 +289,24 @@ module Sections
271
289
  if !user_authorized?([:delete])
272
290
  respond(lang('zen_general.errors.not_authorized'), 403)
273
291
  end
274
-
275
- if !request.params['section_entry_ids'] or request.params['section_entry_ids'].empty?
276
- notification(
277
- :error,
278
- lang('section_entries.titles.index'),
279
- lang('section_entries.errors.no_delete')
280
- )
281
292
 
293
+ if !request.params['section_entry_ids'] or request.params['section_entry_ids'].empty?
294
+ message(:error, lang('section_entries.errors.no_delete'))
282
295
  redirect_referrer
283
296
  end
284
-
297
+
285
298
  request.params['section_entry_ids'].each do |id|
286
299
  begin
287
- SectionEntry[id.to_i].destroy
288
- notification(
289
- :success,
290
- lang('section_entries.titles.index'),
291
- lang('section_entries.success.delete')
292
- )
293
- rescue
294
- notification(
295
- :error,
296
- lang('section_entries.titles.index'),
297
- lang('section_entries.errors.delete') % id
298
- )
300
+ SectionEntry[id].destroy
301
+ message(:success, lang('section_entries.success.delete'))
302
+ rescue => e
303
+ Ramaze::Log.error(e.inspect)
304
+ message(:error,lang('section_entries.errors.delete') % id)
299
305
  end
300
306
  end
301
-
307
+
302
308
  redirect_referrer
303
309
  end
304
- end
305
- end
306
- end
310
+ end # SectionEntries
311
+ end # Controller
312
+ end # Sections