zen 0.2.4.1 → 0.2.5

Sign up to get free protection for your applications and to get access to all the features.
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