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.
- 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
|
@@ -162,7 +162,14 @@ Zen.Editor.Base = new Class(
|
|
|
162
162
|
{
|
|
163
163
|
this.setOptions(options);
|
|
164
164
|
|
|
165
|
-
|
|
165
|
+
if ( typeof css_selector === 'string' )
|
|
166
|
+
{
|
|
167
|
+
this.elements = $$(css_selector);
|
|
168
|
+
}
|
|
169
|
+
else
|
|
170
|
+
{
|
|
171
|
+
this.elements = [css_selector];
|
|
172
|
+
}
|
|
166
173
|
|
|
167
174
|
// Load our driver
|
|
168
175
|
var driver = this.options.format.capitalize().camelCase();
|
|
@@ -1,15 +1,8 @@
|
|
|
1
1
|
window.addEvent('domready', function()
|
|
2
2
|
{
|
|
3
3
|
/**
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* the CSS selector "div.tabs ul".
|
|
7
|
-
*/
|
|
8
|
-
new Zen.Tabs('div.tabs ul');
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Show a notification whenever we find an error, success
|
|
12
|
-
* or notice hash in the Zen.Flash object.
|
|
4
|
+
* Show a notification whenever we find an error, success or notice hash in the
|
|
5
|
+
* Zen.Flash object.
|
|
13
6
|
*/
|
|
14
7
|
if ( Zen.Flash.notification )
|
|
15
8
|
{
|
|
@@ -23,9 +16,8 @@ window.addEvent('domready', function()
|
|
|
23
16
|
}
|
|
24
17
|
|
|
25
18
|
/**
|
|
26
|
-
* Enable the automatic checking of all checkboxes in a table with a class
|
|
27
|
-
*
|
|
28
|
-
* this is good enough.
|
|
19
|
+
* Enable the automatic checking of all checkboxes in a table with a class of "table".
|
|
20
|
+
* Perhaps I'll use a class for this in the future but for now this is good enough.
|
|
29
21
|
*/
|
|
30
22
|
var tables = $$('.table');
|
|
31
23
|
|
|
@@ -33,39 +25,110 @@ window.addEvent('domready', function()
|
|
|
33
25
|
{
|
|
34
26
|
tables.each(function(table)
|
|
35
27
|
{
|
|
36
|
-
var check_all = table.getElement(
|
|
28
|
+
var check_all = table.getElement(
|
|
29
|
+
'thead tr th:first-child input[type=checkbox]'
|
|
30
|
+
);
|
|
37
31
|
|
|
38
32
|
check_all.addEvent('click', function()
|
|
39
33
|
{
|
|
40
34
|
var check_all_status = check_all.get('checked');
|
|
41
35
|
|
|
42
|
-
tables.getElements(
|
|
36
|
+
tables.getElements(
|
|
37
|
+
'tbody tr td:first-child input[type=checkbox]'
|
|
38
|
+
).each(function(c)
|
|
43
39
|
{
|
|
44
40
|
c.set('checked', check_all_status);
|
|
45
41
|
});
|
|
46
42
|
});
|
|
47
43
|
});
|
|
48
44
|
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Create a new instance of the Tabs class. This will create a regular tab system for
|
|
48
|
+
* the CSS selector "div.tabs ul".
|
|
49
|
+
*/
|
|
50
|
+
var tab_selector = 'div.tabs ul';
|
|
51
|
+
var tab_elements = $$(tab_selector).length;
|
|
52
|
+
|
|
53
|
+
yepnope(
|
|
54
|
+
{
|
|
55
|
+
test: !Zen.Tabs && tab_elements > 0,
|
|
56
|
+
yep: ['/admin/css/tabs.css', '/admin/js/zen/tabs.js'],
|
|
57
|
+
complete: function()
|
|
58
|
+
{
|
|
59
|
+
// Double check there are any elements
|
|
60
|
+
if ( tab_elements > 0 )
|
|
61
|
+
{
|
|
62
|
+
new Zen.Tabs(tab_selector);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
});
|
|
49
66
|
|
|
50
67
|
/**
|
|
51
|
-
* Initialize our editor for all elements with a class of "visual_editor" and
|
|
52
|
-
* the editor format from the attribute "data-format".
|
|
68
|
+
* Initialize our editor for all elements with a class of "visual_editor" and
|
|
69
|
+
* retrieve the editor format from the attribute "data-format".
|
|
53
70
|
*/
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
71
|
+
var editor_elements = $$('.visual_editor');
|
|
72
|
+
|
|
73
|
+
if ( editor_elements.length > 0 )
|
|
74
|
+
{
|
|
75
|
+
var editor_files = ['/admin/css/editor.css', '/admin/js/zen/editor/base.js'];
|
|
76
|
+
|
|
77
|
+
// Determine what drivers to load
|
|
78
|
+
editor_elements.each(function(editor)
|
|
79
|
+
{
|
|
80
|
+
var driver = editor.get('data-format');
|
|
81
|
+
|
|
82
|
+
// Screw you, you should've set the attribute!
|
|
83
|
+
if ( !driver )
|
|
84
|
+
{
|
|
85
|
+
return console.error(
|
|
86
|
+
"Missing attribute data-format for the editor with ID "
|
|
87
|
+
+ editor.get('id')
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
editor_files.include('/admin/js/zen/editor/drivers/' + driver + '.js');
|
|
92
|
+
});
|
|
93
|
+
|
|
94
|
+
// Load all the files we need
|
|
95
|
+
yepnope(
|
|
96
|
+
{
|
|
97
|
+
test: Zen.Editor,
|
|
98
|
+
nope: editor_files,
|
|
99
|
+
complete: function()
|
|
100
|
+
{
|
|
101
|
+
editor_elements.each(function(editor)
|
|
102
|
+
{
|
|
103
|
+
new Zen.Editor.Base(
|
|
104
|
+
editor, {format: editor.get('data-format')}
|
|
105
|
+
).display();
|
|
106
|
+
});
|
|
107
|
+
}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
57
110
|
|
|
58
111
|
/**
|
|
59
|
-
* Initializes a datepicker object whenever it's loaded and the correct element was
|
|
112
|
+
* Initializes a datepicker object whenever it's loaded and the correct element was
|
|
113
|
+
* found.
|
|
60
114
|
*/
|
|
61
|
-
|
|
115
|
+
var date_elements = $$('input[type="text"].date');
|
|
116
|
+
|
|
117
|
+
if ( date_elements.length > 0 )
|
|
62
118
|
{
|
|
63
|
-
|
|
119
|
+
yepnope(
|
|
64
120
|
{
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
121
|
+
test : typeof Picker === 'undefined',
|
|
122
|
+
yep : ['/admin/css/datepicker.css', '/admin/js/vendor/datepicker.js'],
|
|
123
|
+
complete: function()
|
|
124
|
+
{
|
|
125
|
+
new Picker.Date(date_elements,
|
|
126
|
+
{
|
|
127
|
+
timePicker: true,
|
|
128
|
+
pickerClass: 'datepicker',
|
|
129
|
+
format: '%Y-%m-%d %H:%M:%S'
|
|
130
|
+
});
|
|
131
|
+
}
|
|
69
132
|
});
|
|
70
133
|
}
|
|
71
134
|
});
|
|
Binary file
|
data/lib/zen/task.rb
ADDED
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
##
|
|
2
|
+
# Task group used for building various elements such as the Gem and the documentation.
|
|
3
|
+
#
|
|
4
|
+
# @author Yorick Peterse
|
|
5
|
+
# @since 0.2.5
|
|
6
|
+
#
|
|
7
|
+
namespace :build do
|
|
8
|
+
|
|
9
|
+
desc 'Builds the documentation using YARD'
|
|
10
|
+
task :doc do
|
|
11
|
+
zen_path = File.expand_path('../../../../', __FILE__)
|
|
12
|
+
command = "yard doc #{zen_path}/lib -m markdown -M rdiscount -o #{zen_path}/doc "
|
|
13
|
+
command += "-r #{zen_path}/README.md --private --protected "
|
|
14
|
+
command += "--files #{zen_path}/license.txt,#{zen_path}/CHANGELOG.md,"
|
|
15
|
+
command += "#{zen_path}/ROADMAP.md"
|
|
16
|
+
|
|
17
|
+
sh(command)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
desc 'Builds a new Gem'
|
|
21
|
+
task :gem do
|
|
22
|
+
zen_path = File.expand_path('../../../../', __FILE__)
|
|
23
|
+
|
|
24
|
+
# Build and install the gem
|
|
25
|
+
sh("gem build #{zen_path}/zen.gemspec")
|
|
26
|
+
sh("mv #{zen_path}/zen-#{Zen::Version}.gem #{zen_path}/pkg")
|
|
27
|
+
sh("gem install #{zen_path}/pkg/zen-#{Zen::Version}.gem")
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
desc 'Builds the MANIFEST file'
|
|
31
|
+
task :manifest do
|
|
32
|
+
zen_path = File.expand_path('../../../../', __FILE__)
|
|
33
|
+
ignore_exts = ['.gem', '.gemspec']
|
|
34
|
+
ignore_files = ['.DS_Store', '.gitignore']
|
|
35
|
+
ignore_dirs = ['.git', '.yardoc', 'spec', 'pkg', 'doc']
|
|
36
|
+
files = ''
|
|
37
|
+
|
|
38
|
+
Find.find(zen_path) do |f|
|
|
39
|
+
f[zen_path] = ''
|
|
40
|
+
f.gsub!(/^\//, '')
|
|
41
|
+
|
|
42
|
+
# Ignore directories
|
|
43
|
+
if !File.directory?(f) and !ignore_exts.include?(File.extname(f)) and !ignore_files.include?(File.basename(f))
|
|
44
|
+
files += "#{f}\n"
|
|
45
|
+
else
|
|
46
|
+
Find.prune if ignore_dirs.include?(f)
|
|
47
|
+
end
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Time to write the MANIFEST file
|
|
51
|
+
begin
|
|
52
|
+
handle = File.open 'MANIFEST', 'w'
|
|
53
|
+
handle.write files.strip
|
|
54
|
+
puts "The MANIFEST file has been updated."
|
|
55
|
+
rescue
|
|
56
|
+
abort "The MANIFEST file could not be written."
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'fileutils'
|
|
2
|
+
|
|
3
|
+
##
|
|
4
|
+
# Task group used to remove various files that aren't needed when releasing gems and such.
|
|
5
|
+
#
|
|
6
|
+
# @author Yorick Peterse
|
|
7
|
+
# @since 0.2.5
|
|
8
|
+
#
|
|
9
|
+
namespace :clean do
|
|
10
|
+
|
|
11
|
+
desc 'Removes all log files'
|
|
12
|
+
task :log do
|
|
13
|
+
zen_path = File.expand_path('../../../../', __FILE__)
|
|
14
|
+
|
|
15
|
+
log_files = Dir.glob("#{zen_path}/spec/log/**/*.log")
|
|
16
|
+
log_files.each { |file| File.unlink(file) }
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
desc 'Removes all YARD files'
|
|
20
|
+
task :yard do
|
|
21
|
+
zen_path = File.expand_path('../../../../', __FILE__)
|
|
22
|
+
|
|
23
|
+
FileUtils.rm_rf("#{zen_path}/doc")
|
|
24
|
+
FileUtils.rm_rf("#{zen_path}/.yardoc")
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
end
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
Sequel.extension(:migration)
|
|
2
|
+
|
|
3
|
+
##
|
|
4
|
+
# Task group for database related tasks such as migrating and removing the database.
|
|
5
|
+
#
|
|
6
|
+
# @author Yorick Peterse
|
|
7
|
+
# @since 0.2.5
|
|
8
|
+
#
|
|
9
|
+
namespace :db do
|
|
10
|
+
|
|
11
|
+
desc 'Migrates the database to the newest version'
|
|
12
|
+
task :migrate do
|
|
13
|
+
if Zen::Package::Registered.empty?
|
|
14
|
+
abort "No packages have been registered."
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# Get the details required to run a migration
|
|
18
|
+
Zen::Package::Registered.each do |name, pkg|
|
|
19
|
+
# Get the migration directory
|
|
20
|
+
if pkg.respond_to?(:migration_dir) and !pkg.migration_dir.nil?
|
|
21
|
+
dir = pkg.migration_dir
|
|
22
|
+
else
|
|
23
|
+
dir = pkg.directory + '/../../migrations'
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
if !File.directory?(dir)
|
|
27
|
+
abort "The migration directory #{dir} doesn't exist."
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
table = 'migrations_package_' + pkg.name.to_s
|
|
31
|
+
|
|
32
|
+
# Migration time
|
|
33
|
+
Zen::Database.handle.transaction do
|
|
34
|
+
Sequel::Migrator.run(Zen::Database.handle, dir, :table => table)
|
|
35
|
+
puts "Successfully migrated \"#{pkg.name}\""
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
desc 'Deletes the entire database'
|
|
41
|
+
task :delete do
|
|
42
|
+
if Zen::Package::Registered.empty?
|
|
43
|
+
abort "No packages have been registered."
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
packages = Zen::Package::Registered.map { |name, pkg| [name, pkg] }.reverse
|
|
47
|
+
|
|
48
|
+
# Get the details required to run a migration
|
|
49
|
+
packages.each do |name, pkg|
|
|
50
|
+
# Get the migration directory
|
|
51
|
+
if pkg.respond_to?(:migration_dir) and !pkg.migration_dir.nil?
|
|
52
|
+
dir = pkg.migration_dir
|
|
53
|
+
else
|
|
54
|
+
dir = pkg.directory + '/../../migrations'
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
if !File.directory?(dir)
|
|
58
|
+
abort "The migration directory #{dir} doesn't exist."
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
table = 'migrations_package_' + pkg.name.to_s
|
|
62
|
+
|
|
63
|
+
# Migration time
|
|
64
|
+
Zen::Database.handle.transaction do
|
|
65
|
+
Sequel::Migrator.run(Zen::Database.handle, dir, :table => table, :target => 0)
|
|
66
|
+
Zen::Database.handle.drop_table(table)
|
|
67
|
+
|
|
68
|
+
puts "Successfully uninstalled \"#{pkg.name}\""
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
desc 'Creates a default administrator with a random password'
|
|
74
|
+
task :user do
|
|
75
|
+
password = (0..12).map do
|
|
76
|
+
letter = ('a'..'z').to_a[rand(26)]
|
|
77
|
+
number = (0..9).to_a[rand(26)]
|
|
78
|
+
letter + number.to_s
|
|
79
|
+
end.join
|
|
80
|
+
|
|
81
|
+
# Only insert the user if it isn't there yet.
|
|
82
|
+
user = Users::Model::User[:email => 'admin@website.tld']
|
|
83
|
+
group = Users::Model::UserGroup[:slug => 'administrators']
|
|
84
|
+
|
|
85
|
+
if group.nil?
|
|
86
|
+
group = Users::Model::UserGroup.new(
|
|
87
|
+
:name => 'Administrators',
|
|
88
|
+
:slug => 'administrators', :super_group => true
|
|
89
|
+
).save
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
if !user.nil?
|
|
93
|
+
abort "The default user has already been inserted."
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
user = Users::Model::User.new(
|
|
97
|
+
:email => 'admin@website.tld', :name => 'Administrator',
|
|
98
|
+
:password => password, :status => 'open'
|
|
99
|
+
).save
|
|
100
|
+
|
|
101
|
+
user.user_group_pks = [group.id]
|
|
102
|
+
|
|
103
|
+
puts "Default administrator account has been created.
|
|
104
|
+
|
|
105
|
+
Email: admin@website.tld
|
|
106
|
+
Passowrd: #{password}
|
|
107
|
+
|
|
108
|
+
You can login by going to http://domain.tld/admin/users/login/
|
|
109
|
+
"
|
|
110
|
+
end
|
|
111
|
+
end
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
##
|
|
2
|
+
# Task group for managing packages.
|
|
3
|
+
#
|
|
4
|
+
# @author Yorick Peterse
|
|
5
|
+
# @since 0.2.5
|
|
6
|
+
#
|
|
7
|
+
namespace :package do
|
|
8
|
+
|
|
9
|
+
desc 'Lists all installed packages'
|
|
10
|
+
task :list do
|
|
11
|
+
Zen::Package::Registered.each do |name, pkg|
|
|
12
|
+
message = <<-MSG
|
|
13
|
+
--------------------------
|
|
14
|
+
Name: #{name}
|
|
15
|
+
Author: #{pkg.author}
|
|
16
|
+
|
|
17
|
+
#{pkg.about}
|
|
18
|
+
MSG
|
|
19
|
+
|
|
20
|
+
puts message
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
desc 'Migrates a package to a certain version'
|
|
25
|
+
task :migrate, :name, :version do |task, args|
|
|
26
|
+
if !args[:name]
|
|
27
|
+
abort "You need to specify the name of a package to migrate"
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
if !args[:version]
|
|
31
|
+
version = nil
|
|
32
|
+
else
|
|
33
|
+
version = args[:version].to_i
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Validate the package name
|
|
37
|
+
if !Zen::Packages::Registered[args[:name].to_sym]
|
|
38
|
+
abort "The package name \"#{args[:name]}\" is invalid."
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
package = Zen::Packages::Registered[args[:name].to_sym]
|
|
42
|
+
|
|
43
|
+
# Get the migrations directory
|
|
44
|
+
if package.respond_to?(:migration_dir) and !package.migration_dir.nil?
|
|
45
|
+
dir = package.migration_dir
|
|
46
|
+
else
|
|
47
|
+
dir = package.directory + '/../../migrations'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
# Validate the directory
|
|
51
|
+
if !File.directory?(dir)
|
|
52
|
+
abort "The directory #{dir} does not exist."
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
table = 'migrations_package_' + package.name.to_s
|
|
56
|
+
|
|
57
|
+
puts "Migrating package..."
|
|
58
|
+
|
|
59
|
+
# Run all migrations
|
|
60
|
+
Zen::Database.handle.transaction do
|
|
61
|
+
Sequel.migrator.run(
|
|
62
|
+
Zen::Database.handle, dir, :table => table, :target => version
|
|
63
|
+
)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
end
|