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.
Files changed (189) hide show
  1. data/MANIFEST +42 -33
  2. data/README.md +14 -27
  3. data/ROADMAP.md +20 -2
  4. data/{Thorfile → Rakefile} +2 -3
  5. data/bin/zen +27 -5
  6. data/lib/zen.rb +70 -52
  7. data/lib/zen/asset.rb +258 -0
  8. data/lib/zen/bin/app.rb +42 -0
  9. data/lib/zen/controller/admin_controller.rb +53 -36
  10. data/lib/zen/controller/base_controller.rb +13 -8
  11. data/lib/zen/controller/frontend_controller.rb +4 -3
  12. data/lib/zen/controller/main_controller.rb +17 -33
  13. data/lib/zen/error/validation_error.rb +10 -0
  14. data/lib/zen/ext/string.rb +185 -0
  15. data/lib/zen/helper/acl.rb +120 -92
  16. data/lib/zen/helper/common.rb +1 -3
  17. data/lib/zen/helper/theme.rb +73 -0
  18. data/lib/zen/language.rb +66 -57
  19. data/lib/zen/layout/admin.xhtml +5 -48
  20. data/lib/zen/layout/login.xhtml +4 -44
  21. data/lib/zen/model/methods.rb +1 -1
  22. data/lib/zen/model/settings.rb +0 -3
  23. data/lib/zen/package.rb +101 -83
  24. data/lib/zen/package/base.rb +62 -0
  25. data/lib/zen/package/categories/lib/categories.rb +29 -10
  26. data/lib/zen/package/categories/lib/categories/controller/categories.rb +4 -5
  27. data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +4 -5
  28. data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +4 -3
  29. data/lib/zen/package/categories/lib/categories/model/category.rb +2 -2
  30. data/lib/zen/package/categories/lib/categories/model/category_group.rb +3 -3
  31. data/lib/zen/package/categories/lib/categories/plugin/categories.rb +130 -0
  32. data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +1 -1
  33. data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +2 -2
  34. data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +11 -6
  35. data/lib/zen/package/comments/lib/comments.rb +23 -13
  36. data/lib/zen/package/comments/lib/comments/controller/comments.rb +4 -5
  37. data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +7 -8
  38. data/lib/zen/package/comments/lib/comments/model/comment.rb +4 -4
  39. data/lib/zen/package/comments/lib/comments/plugin/comments.rb +111 -0
  40. data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +2 -2
  41. data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +3 -3
  42. data/lib/zen/package/custom_fields/lib/custom_fields.rb +18 -11
  43. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +4 -5
  44. data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +4 -5
  45. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +2 -2
  46. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +3 -3
  47. data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +3 -3
  48. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +9 -5
  49. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +1 -1
  50. data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +3 -3
  51. data/lib/zen/package/menus/lib/menus.rb +25 -43
  52. data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +5 -6
  53. data/lib/zen/package/menus/lib/menus/controller/menus.rb +9 -5
  54. data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +4 -4
  55. data/lib/zen/package/menus/lib/menus/model/menu.rb +2 -2
  56. data/lib/zen/package/menus/lib/menus/model/menu_item.rb +4 -1
  57. data/lib/zen/package/menus/lib/menus/plugin/menus.rb +152 -0
  58. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +1 -1
  59. data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +3 -3
  60. data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +7 -7
  61. data/lib/zen/package/sections/lib/sections.rb +32 -16
  62. data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +9 -18
  63. data/lib/zen/package/sections/lib/sections/controller/sections.rb +8 -9
  64. data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +1 -1
  65. data/lib/zen/package/sections/lib/sections/model/section.rb +4 -4
  66. data/lib/zen/package/sections/lib/sections/model/section_entry.rb +9 -10
  67. data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +224 -0
  68. data/lib/zen/package/sections/lib/sections/plugin/sections.rb +85 -0
  69. data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +1 -1
  70. data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +9 -5
  71. data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +2 -2
  72. data/lib/zen/package/settings/lib/settings.rb +145 -10
  73. data/lib/zen/package/settings/lib/settings/controller/settings.rb +28 -24
  74. data/lib/zen/package/settings/lib/settings/language/en/settings.yml +10 -0
  75. data/lib/zen/package/settings/lib/settings/model/setting.rb +3 -64
  76. data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +40 -0
  77. data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +76 -0
  78. data/lib/zen/package/settings/lib/settings/plugin/settings.rb +236 -0
  79. data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +20 -49
  80. data/lib/zen/package/settings/migrations/1295597111_create_schema.rb +0 -12
  81. data/lib/zen/package/settings/migrations/1303196915_settings_plugin.rb +31 -0
  82. data/lib/zen/package/users/lib/users.rb +18 -15
  83. data/lib/zen/package/users/lib/users/controller/access_rules.rb +44 -8
  84. data/lib/zen/package/users/lib/users/controller/user_groups.rb +4 -5
  85. data/lib/zen/package/users/lib/users/controller/users.rb +5 -6
  86. data/lib/zen/package/users/lib/users/language/en/access_rules.yml +11 -9
  87. data/lib/zen/package/users/lib/users/model/access_rule.rb +7 -6
  88. data/lib/zen/package/users/lib/users/model/user.rb +4 -4
  89. data/lib/zen/package/users/lib/users/model/user_group.rb +3 -3
  90. data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +50 -0
  91. data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +32 -29
  92. data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +8 -6
  93. data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +3 -3
  94. data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +2 -2
  95. data/lib/zen/package/users/migrations/1303510943_class_rules.rb +13 -0
  96. data/lib/zen/plugin.rb +110 -104
  97. data/lib/zen/plugin/base.rb +46 -0
  98. data/lib/zen/{liquid/controller_behavior.rb → plugin/controller.rb} +9 -7
  99. data/lib/zen/plugin/helper.rb +47 -0
  100. data/lib/zen/plugin/markup/lib/markup.rb +14 -0
  101. data/lib/zen/plugin/markup/lib/markup/language/en/markup.yml +6 -0
  102. data/lib/zen/plugin/markup/lib/markup/markup.rb +154 -0
  103. data/lib/zen/public/admin/css/forms.css +4 -0
  104. data/lib/zen/public/admin/css/general.css +15 -15
  105. data/lib/zen/public/admin/css/layout.css +10 -10
  106. data/lib/zen/public/admin/css/reset.css +123 -0
  107. data/lib/zen/public/admin/images/icons/accept.png +0 -0
  108. data/lib/zen/public/admin/images/icons/add.png +0 -0
  109. data/lib/zen/public/admin/images/icons/back.png +0 -0
  110. data/lib/zen/public/admin/images/icons/bold.png +0 -0
  111. data/lib/zen/public/admin/images/icons/close.png +0 -0
  112. data/lib/zen/public/admin/images/icons/delete.png +0 -0
  113. data/lib/zen/public/admin/images/icons/edit.png +0 -0
  114. data/lib/zen/public/admin/images/icons/error.png +0 -0
  115. data/lib/zen/public/admin/images/icons/help.png +0 -0
  116. data/lib/zen/public/admin/images/icons/info.png +0 -0
  117. data/lib/zen/public/admin/images/icons/italic.png +0 -0
  118. data/lib/zen/public/admin/images/icons/large/error.png +0 -0
  119. data/lib/zen/public/admin/images/icons/large/notice.png +0 -0
  120. data/lib/zen/public/admin/images/icons/large/success.png +0 -0
  121. data/lib/zen/public/admin/images/icons/link.png +0 -0
  122. data/lib/zen/public/admin/images/icons/logout.png +0 -0
  123. data/lib/zen/public/admin/images/icons/ol.png +0 -0
  124. data/lib/zen/public/admin/images/icons/pdf.png +0 -0
  125. data/lib/zen/public/admin/images/icons/ul.png +0 -0
  126. data/lib/zen/public/admin/images/icons/user.png +0 -0
  127. data/lib/zen/public/admin/images/icons/view.png +0 -0
  128. data/lib/zen/public/admin/js/mootools/core.js +384 -333
  129. data/lib/zen/public/admin/js/mootools/more.js +256 -231
  130. data/lib/zen/public/admin/js/vendor/{datepicker/Picker.Date.js → datepicker.js} +447 -0
  131. data/lib/zen/public/admin/js/vendor/yepnope.js +1 -0
  132. data/lib/zen/public/admin/js/zen/editor/base.js +8 -1
  133. data/lib/zen/public/admin/js/zen/init.js +89 -26
  134. data/lib/zen/public/favicon.ico +0 -0
  135. data/lib/zen/task.rb +7 -0
  136. data/lib/zen/task/build.rake +60 -0
  137. data/lib/zen/task/clean.rake +27 -0
  138. data/lib/zen/task/db.rake +111 -0
  139. data/lib/zen/task/package.rake +67 -0
  140. data/lib/zen/task/plugin.rake +24 -0
  141. data/lib/zen/task/proto.rake +95 -0
  142. data/lib/zen/task/theme.rake +68 -0
  143. data/lib/zen/theme.rb +28 -55
  144. data/lib/zen/theme/base.rb +64 -0
  145. data/lib/zen/validation.rb +149 -0
  146. data/lib/zen/version.rb +1 -1
  147. data/lib/zen/view/bottom.xhtml +6 -0
  148. data/lib/zen/view/main.xhtml +32 -0
  149. data/proto/app/Rakefile +12 -0
  150. data/proto/app/app.rb +6 -6
  151. data/proto/app/config/config.rb +7 -14
  152. data/proto/app/config/database.rb +0 -20
  153. data/proto/app/start.rb +0 -1
  154. data/proto/app/{vendor/themes → task}/.gitkeep +0 -0
  155. data/proto/app/vendor/theme/.gitkeep +0 -0
  156. data/proto/package/lib/package.rb +8 -17
  157. data/proto/package/lib/package/controller/controllers.rb +4 -4
  158. data/proto/package/lib/package/language/en/languages.yml +3 -3
  159. data/proto/package/lib/package/model/model.rb +1 -1
  160. metadata +73 -73
  161. data/lib/zen/bin/base.rb +0 -109
  162. data/lib/zen/helper/asset.rb +0 -106
  163. data/lib/zen/liquid/general.rb +0 -94
  164. data/lib/zen/liquid/redirect.rb +0 -70
  165. data/lib/zen/liquid/strip.rb +0 -60
  166. data/lib/zen/package/categories/lib/categories/liquid/categories.rb +0 -16
  167. data/lib/zen/package/comments/lib/comments/liquid/comment_form.rb +0 -127
  168. data/lib/zen/package/comments/lib/comments/liquid/comments.rb +0 -115
  169. data/lib/zen/package/menus/lib/menus/liquid/menus.rb +0 -152
  170. data/lib/zen/package/sections/lib/sections/liquid/section_entries.rb +0 -228
  171. data/lib/zen/package/sections/lib/sections/liquid/sections.rb +0 -77
  172. data/lib/zen/package/settings/lib/settings/liquid/setting.rb +0 -58
  173. data/lib/zen/package/users/lib/users/liquid/user.rb +0 -77
  174. data/lib/zen/package/users/lib/users/liquid/users.rb +0 -82
  175. data/lib/zen/plugin/markup.rb +0 -30
  176. data/lib/zen/public/admin/css/boilerplate.css +0 -176
  177. data/lib/zen/public/admin/images/general/noise.jpg +0 -0
  178. data/lib/zen/public/admin/js/vendor/datepicker/Picker.Attach.js +0 -137
  179. data/lib/zen/public/admin/js/vendor/datepicker/Picker.js +0 -291
  180. data/lib/zen/public/admin/js/vendor/datepicker/README.md +0 -325
  181. data/lib/zen/public/admin/js/vendor/datepicker/locale.js +0 -16
  182. data/lib/zen/strict_struct.rb +0 -36
  183. data/lib/zen/task/build.rb +0 -123
  184. data/lib/zen/task/clean.rb +0 -46
  185. data/lib/zen/task/db.rb +0 -130
  186. data/lib/zen/task/package.rb +0 -87
  187. data/lib/zen/task/proto.rb +0 -116
  188. data/lib/zen/task/theme.rb +0 -88
  189. data/proto/app/Thorfile +0 -4
@@ -0,0 +1,40 @@
1
+ #:nodoc:
2
+ module Settings
3
+ #:nodoc:
4
+ module Plugin
5
+ ##
6
+ # Base class used for setting groups.
7
+ #
8
+ # @author Yorick Peterse
9
+ # @since 0.2.5
10
+ #
11
+ class GroupBase
12
+ include ::Zen::Validation
13
+
14
+ # The name of the group
15
+ attr_accessor :name
16
+
17
+ # The title of the group, displayed in the GUI
18
+ attr_accessor :title
19
+
20
+ ##
21
+ # Validates all attributes of this class.
22
+ #
23
+ # @author Yorick Peterse
24
+ # @since 0.2.5
25
+ #
26
+ def validate
27
+ validates_presence([:name, :title])
28
+ validates_format(:name, /[a-z0-9_\-]+/)
29
+
30
+ if ::Settings::Plugin::Settings::Registered[:groups].key?(name)
31
+ raise(
32
+ ::Zen::ValidationError,
33
+ "The setting group #{name} has already been registered."
34
+ )
35
+ end
36
+ end
37
+
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,76 @@
1
+ #:nodoc:
2
+ module Settings
3
+ #:nodoc:
4
+ module Plugin
5
+ ##
6
+ # Base class used for individual settings.
7
+ #
8
+ # @author Yorick Peterse
9
+ # @since 0.2.5
10
+ #
11
+ class SettingBase
12
+ include ::Zen::Validation
13
+
14
+ ##
15
+ # Array containing all possible setting types.
16
+ #
17
+ # @author Yorick Peterse
18
+ # @since 0.2.5
19
+ #
20
+ Types = [
21
+ 'textbox', 'textarea', 'radio', 'checkbox', 'date', 'select', 'select_multiple'
22
+ ]
23
+
24
+ # The name of the setting
25
+ attr_accessor :name
26
+
27
+ # The title of the setting, displayed in the GUI
28
+ attr_accessor :title
29
+
30
+ # A small description about the setting
31
+ attr_accessor :description
32
+
33
+ # The name of the settings group this setting belongs to
34
+ attr_accessor :group
35
+
36
+ # The type of setting (e.g. textbox)
37
+ attr_accessor :type
38
+
39
+ # The possible values for the setting
40
+ attr_accessor :values
41
+
42
+ # The default value of the setting
43
+ attr_accessor :default
44
+
45
+ ##
46
+ # Validates all attributes of this class.
47
+ #
48
+ # @author Yorick Peterse
49
+ # @since 0.2.5
50
+ #
51
+ def validate
52
+ validates_presence([:name, :title, :group, :type])
53
+
54
+ # Validate the setting type
55
+ if !Types.include?(type)
56
+ raise(::Zen::ValidationError, "The setting type #{type} is invalid.")
57
+ end
58
+
59
+ # Check if the setting hasn't been registered yet
60
+ if ::Settings::Plugin::Settings::Registered[:settings].key?(name)
61
+ raise(
62
+ ::Zen::ValidationError,
63
+ "The setting #{name} has already been registered"
64
+ )
65
+ end
66
+
67
+ # Validate the group
68
+ if !::Settings::Plugin::Settings::Registered[:groups].key?(group)
69
+ raise(::Zen::ValidationError, "The settings group #{group} doesn't exist.")
70
+ end
71
+ end
72
+
73
+ end
74
+ end
75
+ end
76
+
@@ -0,0 +1,236 @@
1
+ require __DIR__('group_base')
2
+ require __DIR__('setting_base')
3
+
4
+ #:nodoc:
5
+ module Settings
6
+ #:nodoc:
7
+ module Plugin
8
+ ##
9
+ # The settings plugin is a plugin that can be used to register and migrate settings
10
+ # without having to manually insert the data. Previously you'd have to manually insert
11
+ # the data into the settings table at some point and the process of loading
12
+ # translation keys and possible values was a pain. This this plugin was created to
13
+ # solve most of those problems.
14
+ #
15
+ # ## Adding Settings
16
+ #
17
+ # In order to add a setting you'll first need to ensure there's at least a single
18
+ # setting group available. These groups don't add any extra features or whatsoever but
19
+ # are used to display settings in different tabs in the backend interface. In order to
20
+ # register a new group you'd write the following code:
21
+ #
22
+ # plugin(:settings, :register_group) do |group|
23
+ # group.title = 'My Group'
24
+ # group.name = 'my_group'
25
+ # end
26
+ #
27
+ # When registering a group you only need to specify a title and a name. The name is
28
+ # used to associate a setting with it's group and thus should always be unique. The
29
+ # title is displayed in the tab for the specific settings group.
30
+ #
31
+ # Once a setting group has been added we can add a setting as following:
32
+ #
33
+ # plugin(:settings, :register) do |setting|
34
+ # setting.title = 'My Setting'
35
+ # setting.description = 'This is my setting!'
36
+ # setting.name = 'my_setting'
37
+ # setting.group = 'my_group'
38
+ # setting.type = 'select'
39
+ # setting.values = ['yorick', 'zen']
40
+ # setting.default = 'yorick'
41
+ # end
42
+ #
43
+ # Note that the values array (or hash) is used to determine the possible values for
44
+ # a field. These values will only be used for elements that only allow a user to
45
+ # choose a single value (e.g. a checkbox). For the type getter/setter you can use
46
+ # any of the following values:
47
+ #
48
+ # * textbox
49
+ # * textarea
50
+ # * radio
51
+ # * checkbox
52
+ # * date
53
+ # * select
54
+ # * select_multiple
55
+ #
56
+ # ## Migrating Settings
57
+ #
58
+ # Once a setting has been added you still have to migrate it. Zen takes care of this
59
+ # so usually you don't need to manually migrate your settings. If you do want to
60
+ # migrate them however you can simple execute the following code:
61
+ #
62
+ # plugin(:settings, :migrate)
63
+ #
64
+ # ## Removing Settings
65
+ #
66
+ # If you ever need to remove a setting both from the database and the system you can
67
+ # do so as following:
68
+ #
69
+ # plugin(:settings, :remove, ['name1', 'name2'])
70
+ #
71
+ # You don't have to specify an array of names, you can also specify the name of a
72
+ # single setting to delete.
73
+ #
74
+ # @author Yorick Peterse
75
+ # @since 0.2.5
76
+ #
77
+ class Settings
78
+ include ::Zen::Plugin::Helper
79
+ include ::Settings::Model
80
+
81
+ ##
82
+ # Hash containing all registered settings and setting groups.
83
+ #
84
+ # @author Yorick Peterse
85
+ # @since 0.2.5
86
+ #
87
+ Registered = {
88
+ :groups => {},
89
+ :settings => {}
90
+ }
91
+
92
+ ##
93
+ # Creates a new instance of the plugin and saves the given arguments as instance
94
+ # variables so they can be used by Settings::Plugin::Settings.call.
95
+ #
96
+ # @author Yorick Peterse
97
+ # @since 0.2.5
98
+ # @param [Symbol/String] action The action (method) to execute.
99
+ # @param [Array] args Array containing all additional arguments.
100
+ # @param [Proc] block An optional block containing extra details.
101
+ # a setting.
102
+ #
103
+ def initialize(action, *args, &block)
104
+ # Validate the given action
105
+ if !respond_to?(action)
106
+ raise(ArgumentError, "The action #{action} does not exist.")
107
+ end
108
+
109
+ validate_type(action, :action, [Symbol, String])
110
+
111
+ @action, @args, @block = action, args, block
112
+ end
113
+
114
+ ##
115
+ # Executes the action set in the construct and returns the results.
116
+ #
117
+ # @author Yorick Peterse
118
+ # @since 0.2.5
119
+ # @return [Mixed]
120
+ #
121
+ def call
122
+ return send(@action, *@args, &@block)
123
+ end
124
+
125
+ ##
126
+ # Registers a new setting group using the specified block.
127
+ #
128
+ # @example
129
+ # plugin(:settings, :register_group) do |group|
130
+ # group.name = 'example'
131
+ # group.title = 'Example group'
132
+ # end
133
+ #
134
+ # @author Yorick Peterse
135
+ # @since 0.2.5
136
+ #
137
+ def register_group
138
+ group = GroupBase.new
139
+
140
+ yield group
141
+
142
+ # Validate the group
143
+ group.validate
144
+
145
+ # Store the group
146
+ Registered[:groups][group.name] = group
147
+ end
148
+
149
+ ##
150
+ # Registers a new setting using the specified block.
151
+ #
152
+ # @example
153
+ # plugin(:settings, :register) do |setting|
154
+ # setting.name = 'example'
155
+ # setting.title = 'Example setting'
156
+ # setting.group = 'example'
157
+ # setting.type = 'select'
158
+ # setting.value = ['yorick', 'chuck']
159
+ # end
160
+ #
161
+ # @author Yorick Peterse
162
+ # @since 0.2.5
163
+ #
164
+ def register
165
+ setting = SettingBase.new
166
+
167
+ yield setting
168
+
169
+ # Validate all attributes
170
+ setting.validate
171
+
172
+ Registered[:settings][setting.name] = setting
173
+ end
174
+
175
+ ##
176
+ # Gets the setting for the given name.
177
+ #
178
+ # @author Yorick Peterse
179
+ # @since 0.2.5
180
+ # @param [String] name The name of the setting to retrieve.
181
+ # @return [Zen::StrictStruct]
182
+ #
183
+ def get(name)
184
+ validate_type(name, :name, [String])
185
+
186
+ if !Registered[:settings].key?(name)
187
+ raise(ArgumentError, "The setting #{name} doesn't exist.")
188
+ end
189
+
190
+ return Registered[:settings][name]
191
+ end
192
+
193
+ ##
194
+ # Inserts all settings into the database. This method will ignore the settings that
195
+ # have already been inserted into the database.
196
+ #
197
+ # @author Yorick Peterse
198
+ # @since 0.2.5
199
+ #
200
+ def migrate
201
+ settings = Setting.all.map { |s| s.name }
202
+
203
+ Registered[:settings].each do |name, setting|
204
+ if !settings.include?(name)
205
+ # Insert the new setting
206
+ Setting.new(
207
+ :name => setting.name , :group => setting.group,
208
+ :default => setting.default, :type => setting.type
209
+ ).save
210
+ end
211
+ end
212
+ end
213
+
214
+ ##
215
+ # Removes the settings who's names match those specified in the array. The values
216
+ # of these settings will also be removed from the database.
217
+ #
218
+ # @author Yorick Peterse
219
+ # @since 0.2.5
220
+ # @param [Array] namese An array with setting names to remove.
221
+ #
222
+ def remove(names)
223
+ if names.class != Array
224
+ names = [names]
225
+ end
226
+
227
+ names.each do |i|
228
+ Registered[:settings].delete(i)
229
+ end
230
+
231
+ Setting.filter(:name => names).delete
232
+ end
233
+
234
+ end
235
+ end
236
+ end
@@ -5,99 +5,70 @@
5
5
 
6
6
  <div class="tabs">
7
7
  <ul>
8
- <?r @settings.each do |group, items| ?>
9
- <?r
10
- begin
11
- group_label = lang(items[0].language_group_key)
12
- rescue
13
- group_label = group
14
- end
15
- ?>
8
+ <?r @groups.each do |name, group| ?>
16
9
  <li>
17
- <a href="#group_#{group}">#{group_label}</a>
10
+ <a href="#group_#{group.name}">#{group.title}</a>
18
11
  </li>
19
12
  <?r end ?>
20
13
  </ul>
21
14
  </div>
22
-
23
15
  #{
24
- form_for(@settings, :method => :post, :action => @form_save_url, :id => :setting_form) do |f|
16
+ form_for(@settings_ordered, :method => :post, :action => @form_save_url, :id => :setting_form) do |f|
25
17
  f.input_hidden(:csrf_token, get_csrf_token)
26
18
 
27
- @settings.each do |group, items|
28
-
19
+ @settings_ordered.each do |group, items|
29
20
  f.g.div(:id => "group_#{group}") do
30
-
31
21
  items.each do |s|
32
- # Get the label from the language pack
33
- name = s.key.to_sym
34
-
35
- begin
36
- label = lang(s.language_key)
37
- rescue
38
- label = s.key
39
- end
40
-
41
22
  # Get the value from either the value or default getter
42
- if s.value.nil?
23
+ if ::Zen::Settings[s.name.to_sym].nil?
43
24
  value = s.default
44
25
  else
45
- value = s.value
46
- end
47
-
48
- # Get all possible values for the current setting from the language pack
49
- begin
50
- values = Settings::Models::Setting.send("get_#{s.key}_values")
51
- rescue
52
- values = {}
26
+ value = ::Zen::Settings[s.name.to_sym]
53
27
  end
54
28
 
55
29
  case s.type
56
30
  when 'textbox'
57
31
  f.input_text(
58
- label,
59
- name,
32
+ s.title,
33
+ s.name,
60
34
  :value => value
61
35
  )
62
36
 
63
37
  when 'textarea'
64
38
  f.textarea(
65
- label,
66
- name,
39
+ s.title,
40
+ s.name,
67
41
  :value => value,
68
42
  :rows => 8
69
43
  )
70
44
 
71
45
  when 'radio'
72
46
  f.input_radio(
73
- label,
74
- name,
47
+ s.title,
48
+ s.name,
75
49
  value,
76
- :values => values
50
+ :values => s.values
77
51
  )
78
52
 
79
53
  when 'checkbox'
80
54
  f.input_checkbox(
81
- label,
82
- name,
55
+ s.title,
56
+ s.name,
83
57
  value,
84
- :values => values
58
+ :values => s.values
85
59
  )
86
60
 
87
61
  when 'select'
88
62
  f.select(
89
- label,
90
- name,
91
- :values => values,
63
+ s.title,
64
+ s.name,
65
+ :values => s.values,
92
66
  :size => 1,
93
67
  :selected => value
94
- )
95
-
68
+ )
96
69
  end
97
70
  end
98
-
99
71
  end
100
-
101
72
  end
102
73
 
103
74
  f.g.div(:class => 'clearfix') do