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.
- data/MANIFEST +42 -33
- data/README.md +14 -27
- data/ROADMAP.md +20 -2
- data/{Thorfile → Rakefile} +2 -3
- data/bin/zen +27 -5
- data/lib/zen.rb +70 -52
- data/lib/zen/asset.rb +258 -0
- data/lib/zen/bin/app.rb +42 -0
- data/lib/zen/controller/admin_controller.rb +53 -36
- data/lib/zen/controller/base_controller.rb +13 -8
- data/lib/zen/controller/frontend_controller.rb +4 -3
- data/lib/zen/controller/main_controller.rb +17 -33
- data/lib/zen/error/validation_error.rb +10 -0
- data/lib/zen/ext/string.rb +185 -0
- data/lib/zen/helper/acl.rb +120 -92
- data/lib/zen/helper/common.rb +1 -3
- data/lib/zen/helper/theme.rb +73 -0
- data/lib/zen/language.rb +66 -57
- data/lib/zen/layout/admin.xhtml +5 -48
- data/lib/zen/layout/login.xhtml +4 -44
- data/lib/zen/model/methods.rb +1 -1
- data/lib/zen/model/settings.rb +0 -3
- data/lib/zen/package.rb +101 -83
- data/lib/zen/package/base.rb +62 -0
- data/lib/zen/package/categories/lib/categories.rb +29 -10
- data/lib/zen/package/categories/lib/categories/controller/categories.rb +4 -5
- data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +4 -5
- data/lib/zen/package/categories/lib/categories/language/en/category_groups.yml +4 -3
- data/lib/zen/package/categories/lib/categories/model/category.rb +2 -2
- data/lib/zen/package/categories/lib/categories/model/category_group.rb +3 -3
- data/lib/zen/package/categories/lib/categories/plugin/categories.rb +130 -0
- data/lib/zen/package/categories/lib/categories/view/admin/categories/form.xhtml +1 -1
- data/lib/zen/package/categories/lib/categories/view/admin/categories/index.xhtml +2 -2
- data/lib/zen/package/categories/lib/categories/view/admin/category-groups/index.xhtml +11 -6
- data/lib/zen/package/comments/lib/comments.rb +23 -13
- data/lib/zen/package/comments/lib/comments/controller/comments.rb +4 -5
- data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +7 -8
- data/lib/zen/package/comments/lib/comments/model/comment.rb +4 -4
- data/lib/zen/package/comments/lib/comments/plugin/comments.rb +111 -0
- data/lib/zen/package/comments/lib/comments/view/admin/comments/form.xhtml +2 -2
- data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +3 -3
- data/lib/zen/package/custom_fields/lib/custom_fields.rb +18 -11
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +4 -5
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +4 -5
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +2 -2
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +3 -3
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +3 -3
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-field-groups/index.xhtml +9 -5
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/form.xhtml +1 -1
- data/lib/zen/package/custom_fields/lib/custom_fields/view/admin/custom-fields/index.xhtml +3 -3
- data/lib/zen/package/menus/lib/menus.rb +25 -43
- data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +5 -6
- data/lib/zen/package/menus/lib/menus/controller/menus.rb +9 -5
- data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +4 -4
- data/lib/zen/package/menus/lib/menus/model/menu.rb +2 -2
- data/lib/zen/package/menus/lib/menus/model/menu_item.rb +4 -1
- data/lib/zen/package/menus/lib/menus/plugin/menus.rb +152 -0
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/form.xhtml +1 -1
- data/lib/zen/package/menus/lib/menus/view/admin/menu-items/index.xhtml +3 -3
- data/lib/zen/package/menus/lib/menus/view/admin/menus/index.xhtml +7 -7
- data/lib/zen/package/sections/lib/sections.rb +32 -16
- data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +9 -18
- data/lib/zen/package/sections/lib/sections/controller/sections.rb +8 -9
- data/lib/zen/package/sections/lib/sections/language/en/section_entries.yml +1 -1
- data/lib/zen/package/sections/lib/sections/model/section.rb +4 -4
- data/lib/zen/package/sections/lib/sections/model/section_entry.rb +9 -10
- data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +224 -0
- data/lib/zen/package/sections/lib/sections/plugin/sections.rb +85 -0
- data/lib/zen/package/sections/lib/sections/view/admin/form.xhtml +1 -1
- data/lib/zen/package/sections/lib/sections/view/admin/index.xhtml +9 -5
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +2 -2
- data/lib/zen/package/settings/lib/settings.rb +145 -10
- data/lib/zen/package/settings/lib/settings/controller/settings.rb +28 -24
- data/lib/zen/package/settings/lib/settings/language/en/settings.yml +10 -0
- data/lib/zen/package/settings/lib/settings/model/setting.rb +3 -64
- data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +40 -0
- data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +76 -0
- data/lib/zen/package/settings/lib/settings/plugin/settings.rb +236 -0
- data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +20 -49
- data/lib/zen/package/settings/migrations/1295597111_create_schema.rb +0 -12
- data/lib/zen/package/settings/migrations/1303196915_settings_plugin.rb +31 -0
- data/lib/zen/package/users/lib/users.rb +18 -15
- data/lib/zen/package/users/lib/users/controller/access_rules.rb +44 -8
- data/lib/zen/package/users/lib/users/controller/user_groups.rb +4 -5
- data/lib/zen/package/users/lib/users/controller/users.rb +5 -6
- data/lib/zen/package/users/lib/users/language/en/access_rules.yml +11 -9
- data/lib/zen/package/users/lib/users/model/access_rule.rb +7 -6
- data/lib/zen/package/users/lib/users/model/user.rb +4 -4
- data/lib/zen/package/users/lib/users/model/user_group.rb +3 -3
- data/lib/zen/package/users/lib/users/public/admin/js/users/access_rules.js +50 -0
- data/lib/zen/package/users/lib/users/view/admin/access-rules/form.xhtml +32 -29
- data/lib/zen/package/users/lib/users/view/admin/access-rules/index.xhtml +8 -6
- data/lib/zen/package/users/lib/users/view/admin/user-groups/index.xhtml +3 -3
- data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +2 -2
- data/lib/zen/package/users/migrations/1303510943_class_rules.rb +13 -0
- data/lib/zen/plugin.rb +110 -104
- data/lib/zen/plugin/base.rb +46 -0
- data/lib/zen/{liquid/controller_behavior.rb → plugin/controller.rb} +9 -7
- data/lib/zen/plugin/helper.rb +47 -0
- data/lib/zen/plugin/markup/lib/markup.rb +14 -0
- data/lib/zen/plugin/markup/lib/markup/language/en/markup.yml +6 -0
- data/lib/zen/plugin/markup/lib/markup/markup.rb +154 -0
- data/lib/zen/public/admin/css/forms.css +4 -0
- data/lib/zen/public/admin/css/general.css +15 -15
- data/lib/zen/public/admin/css/layout.css +10 -10
- data/lib/zen/public/admin/css/reset.css +123 -0
- data/lib/zen/public/admin/images/icons/accept.png +0 -0
- data/lib/zen/public/admin/images/icons/add.png +0 -0
- data/lib/zen/public/admin/images/icons/back.png +0 -0
- data/lib/zen/public/admin/images/icons/bold.png +0 -0
- data/lib/zen/public/admin/images/icons/close.png +0 -0
- data/lib/zen/public/admin/images/icons/delete.png +0 -0
- data/lib/zen/public/admin/images/icons/edit.png +0 -0
- data/lib/zen/public/admin/images/icons/error.png +0 -0
- data/lib/zen/public/admin/images/icons/help.png +0 -0
- data/lib/zen/public/admin/images/icons/info.png +0 -0
- data/lib/zen/public/admin/images/icons/italic.png +0 -0
- data/lib/zen/public/admin/images/icons/large/error.png +0 -0
- data/lib/zen/public/admin/images/icons/large/notice.png +0 -0
- data/lib/zen/public/admin/images/icons/large/success.png +0 -0
- data/lib/zen/public/admin/images/icons/link.png +0 -0
- data/lib/zen/public/admin/images/icons/logout.png +0 -0
- data/lib/zen/public/admin/images/icons/ol.png +0 -0
- data/lib/zen/public/admin/images/icons/pdf.png +0 -0
- data/lib/zen/public/admin/images/icons/ul.png +0 -0
- data/lib/zen/public/admin/images/icons/user.png +0 -0
- data/lib/zen/public/admin/images/icons/view.png +0 -0
- data/lib/zen/public/admin/js/mootools/core.js +384 -333
- data/lib/zen/public/admin/js/mootools/more.js +256 -231
- data/lib/zen/public/admin/js/vendor/{datepicker/Picker.Date.js → datepicker.js} +447 -0
- data/lib/zen/public/admin/js/vendor/yepnope.js +1 -0
- data/lib/zen/public/admin/js/zen/editor/base.js +8 -1
- data/lib/zen/public/admin/js/zen/init.js +89 -26
- data/lib/zen/public/favicon.ico +0 -0
- data/lib/zen/task.rb +7 -0
- data/lib/zen/task/build.rake +60 -0
- data/lib/zen/task/clean.rake +27 -0
- data/lib/zen/task/db.rake +111 -0
- data/lib/zen/task/package.rake +67 -0
- data/lib/zen/task/plugin.rake +24 -0
- data/lib/zen/task/proto.rake +95 -0
- data/lib/zen/task/theme.rake +68 -0
- data/lib/zen/theme.rb +28 -55
- data/lib/zen/theme/base.rb +64 -0
- data/lib/zen/validation.rb +149 -0
- data/lib/zen/version.rb +1 -1
- data/lib/zen/view/bottom.xhtml +6 -0
- data/lib/zen/view/main.xhtml +32 -0
- data/proto/app/Rakefile +12 -0
- data/proto/app/app.rb +6 -6
- data/proto/app/config/config.rb +7 -14
- data/proto/app/config/database.rb +0 -20
- data/proto/app/start.rb +0 -1
- data/proto/app/{vendor/themes → task}/.gitkeep +0 -0
- data/proto/app/vendor/theme/.gitkeep +0 -0
- data/proto/package/lib/package.rb +8 -17
- data/proto/package/lib/package/controller/controllers.rb +4 -4
- data/proto/package/lib/package/language/en/languages.yml +3 -3
- data/proto/package/lib/package/model/model.rb +1 -1
- metadata +73 -73
- data/lib/zen/bin/base.rb +0 -109
- data/lib/zen/helper/asset.rb +0 -106
- data/lib/zen/liquid/general.rb +0 -94
- data/lib/zen/liquid/redirect.rb +0 -70
- data/lib/zen/liquid/strip.rb +0 -60
- data/lib/zen/package/categories/lib/categories/liquid/categories.rb +0 -16
- data/lib/zen/package/comments/lib/comments/liquid/comment_form.rb +0 -127
- data/lib/zen/package/comments/lib/comments/liquid/comments.rb +0 -115
- data/lib/zen/package/menus/lib/menus/liquid/menus.rb +0 -152
- data/lib/zen/package/sections/lib/sections/liquid/section_entries.rb +0 -228
- data/lib/zen/package/sections/lib/sections/liquid/sections.rb +0 -77
- data/lib/zen/package/settings/lib/settings/liquid/setting.rb +0 -58
- data/lib/zen/package/users/lib/users/liquid/user.rb +0 -77
- data/lib/zen/package/users/lib/users/liquid/users.rb +0 -82
- data/lib/zen/plugin/markup.rb +0 -30
- data/lib/zen/public/admin/css/boilerplate.css +0 -176
- data/lib/zen/public/admin/images/general/noise.jpg +0 -0
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.Attach.js +0 -137
- data/lib/zen/public/admin/js/vendor/datepicker/Picker.js +0 -291
- data/lib/zen/public/admin/js/vendor/datepicker/README.md +0 -325
- data/lib/zen/public/admin/js/vendor/datepicker/locale.js +0 -16
- data/lib/zen/strict_struct.rb +0 -36
- data/lib/zen/task/build.rb +0 -123
- data/lib/zen/task/clean.rb +0 -46
- data/lib/zen/task/db.rb +0 -130
- data/lib/zen/task/package.rb +0 -87
- data/lib/zen/task/proto.rb +0 -116
- data/lib/zen/task/theme.rb +0 -88
- 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
|
-
});
|
data/lib/zen/strict_struct.rb
DELETED
@@ -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
|
data/lib/zen/task/build.rb
DELETED
@@ -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
|
data/lib/zen/task/clean.rb
DELETED
@@ -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
|
data/lib/zen/task/db.rb
DELETED
@@ -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
|
data/lib/zen/task/package.rb
DELETED
@@ -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
|
data/lib/zen/task/proto.rb
DELETED
@@ -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
|