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
@@ -1,16 +0,0 @@
1
- /*
2
- ---
3
- name: Locale.en-US.DatePicker
4
- description: English Language File for DatePicker
5
- authors: Arian Stolwijk
6
- requires: [More/Locale]
7
- provides: Locale.en-US.DatePicker
8
- ...
9
- */
10
-
11
-
12
- Locale.define('en-US', 'DatePicker', {
13
- select_a_time: 'Select a time',
14
- use_mouse_wheel: 'Use the mouse wheel to quickly change value',
15
- time_confirm_button: 'OK'
16
- });
@@ -1,36 +0,0 @@
1
- #:nodoc:
2
- module Zen
3
- ##
4
- # StrictStruct is a simple extension of the Struct class, it provides a method that
5
- # checks if all getters/setters have a value and if one doesn't it will call the
6
- # appropriate block.
7
- #
8
- # @author Yorick Peterse
9
- # @since 0.2.4
10
- #
11
- class StrictStruct < Struct
12
-
13
- ##
14
- # Validates all getter/setters in the current class to see if all values are set.
15
- #
16
- # @example
17
- # struct = Zen::StrictStruct.new(:name, :age).new
18
- # struct.validate([:name, :age]) do |k|
19
- # puts "The key #{k} is required!"
20
- # end
21
- #
22
- # @author Yorick Peterse
23
- # @since 0.2.4
24
- # @param [Array] required Array of getters that should return a value.
25
- # @param [Block] block The block to call whenever an item doesn't have a value.
26
- #
27
- def validate(required, &block)
28
- required.each do |k|
29
- if !self.respond_to?(k) or self.send(k).nil?
30
- block.call(k)
31
- end
32
- end
33
- end
34
-
35
- end
36
- end
@@ -1,123 +0,0 @@
1
- require 'fileutils'
2
- require 'find'
3
-
4
- module Zen
5
- module Task
6
- ##
7
- # The Build class/task can be used to create the documentation, manifest, etc.
8
- #
9
- # @author Yorick Peterse
10
- # @since 0.2
11
- #
12
- class Build < Thor
13
- include Thor::Actions
14
-
15
- namespace :build
16
-
17
- desc 'gem', 'Builds a new RubyGem'
18
-
19
- ##
20
- # Builds a new version of the RubyGem and places it in ./pkg
21
- #
22
- # @author Yorick Peterse
23
- # @since 0.2
24
- #
25
- def gem
26
- zen_path = File.expand_path('../../../../', __FILE__)
27
-
28
- # Build and install the gem
29
- run("gem build #{zen_path}/zen.gemspec")
30
- run("mv #{zen_path}/zen-#{Zen::Version}.gem #{zen_path}/pkg")
31
- run("gem install #{zen_path}/pkg/zen-#{Zen::Version}.gem")
32
- end
33
-
34
- desc 'gem_clean', 'Builds a new RubyGem and uninstalls any current versions of Zen'
35
-
36
- ##
37
- # Builds a new version of the RubyGem and uninstalls any current versions of Zen.
38
- #
39
- # @author Yorick Peterse
40
- # @since 0.2
41
- #
42
- def gem_clean
43
- zen_path = File.expand_path('../../../../', __FILE__)
44
-
45
- begin
46
- run('gem uninstall zen')
47
- rescue
48
- puts "Failed to uninstall the gem, most likely it wasn't installed in the first place."
49
- end
50
-
51
- # Remove all logs files
52
- log_dirs = Dir.glob(zen_path + '/spec/zen/log/**/*')
53
-
54
- if !log_dirs.empty?
55
- log_dirs.each do |dir|
56
- # Ignore non-directory files
57
- if File.directory?(dir)
58
- FileUtils.rm_rf(dir)
59
- end
60
- end
61
- end
62
-
63
- self.gem
64
- end
65
-
66
- desc 'manifest', 'Builds the MANIFEST file'
67
-
68
- ##
69
- # Builds the MANIFEST file and places it in ./
70
- #
71
- # @author Yorick Peterse
72
- # @since 0.2
73
- #
74
- def manifest
75
- zen_path = File.expand_path('../../../../', __FILE__)
76
-
77
- ignore_exts = ['.gem', '.gemspec']
78
- ignore_files = ['.DS_Store', '.gitignore']
79
- ignore_dirs = ['.git', '.yardoc', 'spec', 'pkg', 'doc']
80
- files = ''
81
-
82
- Find.find(zen_path) do |f|
83
- f[zen_path] = ''
84
- f.gsub!(/^\//, '')
85
-
86
- # Ignore directories
87
- if !File.directory?(f) and !ignore_exts.include?(File.extname(f)) and !ignore_files.include?(File.basename(f))
88
- files += "#{f}\n"
89
- else
90
- Find.prune if ignore_dirs.include?(f)
91
- end
92
- end
93
-
94
- # Time to write the MANIFEST file
95
- begin
96
- handle = File.open 'MANIFEST', 'w'
97
- handle.write files.strip
98
- abort "The MANIFEST file has been updated."
99
- rescue
100
- abort "The MANIFEST file could not be written."
101
- end
102
- end
103
-
104
- desc 'doc', 'Builds the documentation using YARD'
105
-
106
- ##
107
- # Builds the documentation using YARD.
108
- #
109
- # @author Yorick Peterse
110
- # @since 0.2
111
- #
112
- def doc
113
- zen_path = File.expand_path('../../../../', __FILE__)
114
- command = "yard doc #{zen_path}/lib -m markdown -M rdiscount -o #{zen_path}/doc "
115
- command += "-r #{zen_path}/README.md --private --protected "
116
- command += "--files #{zen_path}/license.txt,#{zen_path}/CHANGELOG.md,"
117
- command += "#{zen_path}/ROADMAP.md"
118
-
119
- run(command)
120
- end
121
- end
122
- end
123
- end
@@ -1,46 +0,0 @@
1
- require 'fileutils'
2
-
3
- module Zen
4
- module Task
5
- ##
6
- # The Clean task can be used to remove various files from the repository.
7
- #
8
- # @author Yorick Peterse
9
- # @since 0.2
10
- #
11
- class Clean < Thor
12
- include Thor::Actions
13
-
14
- namespace :clean
15
-
16
- ##
17
- # Removes all log files from the spec directory.
18
- #
19
- # @author Yorick Peterse
20
- # @since 0.2
21
- #
22
- desc 'log', 'Removes all log files from the spec directory'
23
- def log
24
- zen_path = File.expand_path('../../../../', __FILE__)
25
-
26
- log_files = Dir.glob("#{zen_path}/spec/log/**/*.log")
27
- log_files.each { |file| File.unlink(file) }
28
- end
29
-
30
- ##
31
- # Removes all files generated by YARD.
32
- #
33
- # @author Yorick Peterse
34
- # @since 0.2
35
- #
36
- desc 'yard', 'Removes all files generated by YARD'
37
- def yard
38
- zen_path = File.expand_path('../../../../', __FILE__)
39
-
40
- FileUtils.rm_rf("#{zen_path}/doc")
41
- FileUtils.rm_rf("#{zen_path}/.yardoc")
42
- end
43
-
44
- end
45
- end
46
- end
@@ -1,130 +0,0 @@
1
- Sequel.extension(:migration)
2
-
3
- module Zen
4
- module Task
5
- ##
6
- # Task that can be used for various database related operations such as creating
7
- # a default user and migrating the entire database.
8
- #
9
- # @author Yorick Peterse
10
- # @since 0.2
11
- #
12
- class DB < Thor
13
- namespace :db
14
-
15
- desc('migrate', 'Migrates the entire database to the latest version')
16
-
17
- ##
18
- # Migrates the entire database to the latest version.
19
- #
20
- # @author Yorick Peterse
21
- # @param [Boolean] show_output When set to false no output will be shown.
22
- # @since 0.2
23
- #
24
- def migrate(show_output = true)
25
- exts = Zen::Package.packages
26
-
27
- puts "Migrating..." if show_output === true
28
-
29
- exts.each do |ident, ext|
30
- if ext.respond_to?(:migration_dir) and !ext.migration_dir.nil?
31
- dir = ext.migration_dir
32
- else
33
- dir = ext.directory + '/../../migrations'
34
- end
35
-
36
- table = ext.identifier.gsub('.', '_').to_sym
37
-
38
- if File.directory?(dir)
39
- Zen::Database.handle.transaction do
40
- Sequel::Migrator.run(Zen::Database.handle, dir, :table => table)
41
-
42
- puts "Successfully migrated \"#{ext.name}\"" if show_output === true
43
- end
44
- end
45
- end
46
- end
47
-
48
- desc('delete', 'Deletes all database tables')
49
-
50
- ##
51
- # Deletes all database tables.
52
- #
53
- # @author Yorick Peterse
54
- # @since 0.2
55
- #
56
- def delete
57
- exts = Zen::Package.packages.map { |ident, ext| [ident, ext] }
58
-
59
- exts.reverse.each do |ident, ext|
60
- if ext.respond_to?(:migration_dir) and !ext.migration_dir.nil?
61
- dir = ext.migration_dir
62
- else
63
- dir = ext.directory + '/../../migrations'
64
- end
65
-
66
- table = ext.identifier.gsub('.', '_').to_sym
67
-
68
- if File.directory?(dir)
69
- Zen::Database.handle.transaction do
70
- puts "Uninstalling \"#{ext.name}\""
71
-
72
- Sequel::Migrator.run(Zen::Database.handle, dir, :table => table, :target => 0)
73
-
74
- # Remove the migrations table
75
- Zen::Database.handle.drop_table table
76
- end
77
- end
78
- end
79
- end
80
-
81
- desc('user', 'Creates a default administrator account')
82
-
83
- ##
84
- # Creates a default administrator account.
85
- #
86
- # @author Yorick Peterse
87
- # @since 0.2
88
- #
89
- def user
90
- password = (0..12).map do
91
- letter = ('a'..'z').to_a[rand(26)]
92
- number = (0..9).to_a[rand(26)]
93
-
94
- letter + number.to_s
95
- end.join
96
-
97
- # Only insert the user if it isn't there yet.
98
- user = Users::Models::User[:email => 'admin@website.tld']
99
- group = Users::Models::UserGroup[:slug => 'administrators']
100
-
101
- if group.nil?
102
- group = Users::Models::UserGroup.new(
103
- :name => 'Administrators',
104
- :slug => 'administrators', :super_group => true
105
- ).save
106
- end
107
-
108
- if !user.nil?
109
- abort "The default user has already been inserted."
110
- end
111
-
112
- user = Users::Models::User.new(
113
- :email => 'admin@website.tld', :name => 'Administrator',
114
- :password => password, :status => 'open'
115
- ).save
116
-
117
- user.user_group_pks = [group.id]
118
-
119
- puts "Default administrator account has been created.
120
-
121
- Email: admin@website.tld
122
- Passowrd: #{password}
123
-
124
- You can login by going to http://domain.tld/admin/users/login/
125
- "
126
-
127
- end
128
- end
129
- end
130
- end
@@ -1,87 +0,0 @@
1
- Sequel.extension(:migration)
2
-
3
- module Zen
4
- module Task
5
- ##
6
- # The Package task is used to install, delete and manage Zen packages.
7
- #
8
- # @author Yorick Peterse
9
- # @since 0.2
10
- #
11
- class Package < Thor
12
- namespace :package
13
-
14
- desc('list', 'Lists all installed packages')
15
-
16
- ##
17
- # Lists all installed packages
18
- #
19
- # @author Yorick Peterse
20
- # @since 0.2
21
- #
22
- def list
23
- table = []
24
- table.push(['Name', 'Author', 'Identifier', 'Directory'])
25
- table.push(['------', '------', '------', '------'])
26
-
27
- Zen::Package.packages.each do |ident, ext|
28
- table.push([ext.name, ext.author, ext.identifier, ext.directory])
29
- end
30
-
31
- print_table(table)
32
- end
33
-
34
- desc('migrate', 'Migrates a package to the given version')
35
-
36
- method_option(:version , :type => :numeric, :default => nil)
37
- method_option(:identifier, :type => :string , :default => nil, :required => true)
38
-
39
- ##
40
- # Migrates a package to the given version.
41
- #
42
- # @author Yorick Peterse
43
- # @since 0.2
44
- #
45
- def migrate
46
- version = options[:version]
47
- ident = options[:identifier]
48
-
49
- if Zen::Package.packages.nil? or Zen::Package.extensions.empty?
50
- abort "No packages have been loaded. Be sure to add them to config/requires.rb."
51
- end
52
-
53
- if version.nil?
54
- puts "No version specified with --version, choosing the most recent version..."
55
- end
56
-
57
- install_ext = Zen::Package[ident]
58
-
59
- if ident.nil? or ident.empty?
60
- abort "You specified an invalid identifier."
61
- end
62
-
63
- # Get the directory from the migration_dir getter, generate it if it isn't there.
64
- if install_ext.respond_to?(:migration_dir) and !install_ext.migration_dir.nil?
65
- dir = install_ext.migration_dir
66
- else
67
- dir = install_ext.directory + '/../../migrations'
68
- end
69
-
70
- table = install_ext.identifier.gsub('.', '_').to_sym
71
-
72
- puts "Migrating package..."
73
- if File.directory?(dir)
74
- Zen::Database.handle.transaction do
75
- Sequel::Migrator.run(Zen::Database.handle, dir, :table => table, :target => version)
76
-
77
- if version == 0
78
- # Remove the migrations table
79
- Zen::Database.handle.drop_table table
80
- end
81
- end
82
- end
83
- end
84
-
85
- end
86
- end
87
- end
@@ -1,116 +0,0 @@
1
- require 'fileutils'
2
- require 'ruby-extensions'
3
-
4
- module Zen
5
- module Task
6
- ##
7
- # The Proto task can be used to create migrations, packages and full blown applications.
8
- #
9
- # @author Yorick Peterse
10
- # @since 0.2
11
- #
12
- class Proto < Thor
13
- namespace :proto
14
-
15
- desc 'migration', 'Creates a new migration'
16
- method_option :directory, :type => :string, :required => true
17
-
18
- ##
19
- # Creates a new (blank) migration.
20
- #
21
- # @author Yorick Peterse
22
- # @since 0.2
23
- #
24
- def migration
25
- dir = options[:directory]
26
- proto_path = File.expand_path('../../../../proto/migration.rb', __FILE__)
27
-
28
- # Get the name
29
- name = ask("Migration name:")
30
-
31
- # If no directory is specified we'll store the migrations under ./migrations
32
- if dir.nil? or dir == ''
33
- if !File.directory?('./migrations')
34
- abort "No directory specified and ./migrations doesn't exist"
35
- else
36
- dir = './migrations'
37
- puts "Using ./migrations"
38
- end
39
- else
40
- puts "Using #{dir}"
41
- end
42
-
43
- # Generate the prototype
44
- puts "Generating..."
45
-
46
- proto = File.open(proto_path, 'r').read
47
- path = "#{dir}/#{Time.new.to_i}_#{name}.rb"
48
-
49
- begin
50
- File.open(path, 'w').write(proto)
51
- puts "Done!"
52
- rescue => e
53
- puts "Failed to generate the migration: #{e}"
54
- end
55
- end
56
-
57
- desc 'package', 'Creates a new package'
58
- method_option :directory, :type => :string, :required => true
59
-
60
- ##
61
- # Creates a new package.
62
- #
63
- # @author Yorick Peterse
64
- # @since 0.2
65
- #
66
- def package
67
- name = ask("Package name:").strip.downcase.gsub(' ', '_')
68
- proto = File.expand_path('../../../../proto/package', __FILE__)
69
- klass = name.camel_case
70
- extension_path = options[:directory] + '/' + name
71
-
72
- FileUtils.rm_rf(extension_path)
73
-
74
- # Rename all files and folders
75
- begin
76
- FileUtils.cp_r(proto, extension_path)
77
-
78
- lib_path = "#{extension_path}/lib/#{name}"
79
-
80
- # Rename the base file and directory
81
- FileUtils.mv("#{extension_path}/lib/package" , lib_path)
82
- FileUtils.mv("#{extension_path}/lib/package.rb", "#{extension_path}/lib/#{name}.rb")
83
-
84
- # ------------------------------------------------
85
-
86
- controller_filename = klass.snake_case.pluralize
87
- model_filename = klass.snake_case.singularize
88
-
89
- # Generate the controller
90
- controller = File.open("#{lib_path}/controller/controllers.rb", 'r').read
91
- controller.gsub!('CONTROLLER', klass.pluralize)
92
- controller.gsub!('EXTENSION' , klass.pluralize)
93
-
94
- FileUtils.mv("#{lib_path}/controller/controllers.rb", "#{lib_path}/controller/#{controller_filename}.rb")
95
- File.open("#{lib_path}/controller/#{controller_filename}.rb", 'w').write(controller)
96
-
97
- # Move the view directory
98
- FileUtils.mv("#{lib_path}/view/admin/package", "#{lib_path}/view/admin/#{controller_filename}")
99
-
100
- # Generate the model
101
- model = File.open("#{lib_path}/model/model.rb", 'r').read
102
- model.gsub!('MODEL' , klass.singularize)
103
- model.gsub!('EXTENSION' , klass.pluralize)
104
-
105
- FileUtils.mv("#{lib_path}/model/model.rb", "#{lib_path}/model/#{model_filename}.rb")
106
- File.open("#{lib_path}/model/#{model_filename}.rb", 'w').write(model)
107
-
108
- puts "Done! Don't forget to rename the controllers/models/etc"
109
- rescue => e
110
- abort "Failed to generate the extesion: #{e}"
111
- end
112
- end
113
-
114
- end
115
- end
116
- end