zen 0.2.5 → 0.2.6
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/.gems +34 -0
- data/.travis.yml +7 -0
- data/AUTHORS +5 -0
- data/CHANGELOG +14 -0
- data/{license.txt → LICENSE} +0 -0
- data/MANIFEST +67 -51
- data/README.md +18 -25
- data/Rakefile +2 -3
- data/bin/zen +2 -2
- data/lib/zen.rb +93 -57
- data/lib/zen/asset.rb +7 -8
- data/lib/zen/bin/app.rb +0 -2
- data/lib/zen/controller/admin_controller.rb +4 -9
- data/lib/zen/controller/base_controller.rb +0 -25
- data/lib/zen/controller/main_controller.rb +5 -5
- data/lib/zen/controller/preview.rb +50 -0
- data/lib/zen/helper/common.rb +4 -68
- data/lib/zen/helper/message.rb +82 -0
- data/lib/zen/helper/theme.rb +2 -2
- data/lib/zen/language.rb +68 -38
- data/lib/zen/language/en/zen_general.yml +1 -4
- data/lib/zen/language/nl/zen_general.yml +28 -0
- data/lib/zen/language/nl/zen_models.yml +13 -0
- data/lib/zen/layout/admin.xhtml +1 -1
- data/lib/zen/layout/login.xhtml +1 -1
- data/lib/zen/model/settings.rb +2 -0
- data/lib/zen/package.rb +29 -25
- data/lib/zen/package/all.rb +1 -1
- data/lib/zen/package/categories/lib/categories/controller/categories.rb +51 -63
- data/lib/zen/package/categories/lib/categories/controller/category_groups.rb +45 -52
- data/lib/zen/package/categories/lib/categories/language/en/categories.yml +2 -2
- data/lib/zen/package/categories/lib/categories/language/nl/categories.yml +39 -0
- data/lib/zen/package/categories/lib/categories/language/nl/category_groups.yml +33 -0
- data/lib/zen/package/categories/lib/categories/plugin/categories.rb +2 -2
- data/lib/zen/package/comments/lib/comments.rb +31 -2
- data/lib/zen/package/comments/lib/comments/controller/comments.rb +42 -57
- data/lib/zen/package/comments/lib/comments/controller/comments_form.rb +36 -51
- data/lib/zen/package/comments/lib/comments/language/en/comments.yml +7 -3
- data/lib/zen/package/comments/lib/comments/language/nl/comments.yml +48 -0
- data/lib/zen/package/comments/lib/comments/model/comment.rb +45 -4
- data/lib/zen/package/comments/lib/comments/plugin/anti_spam.rb +152 -0
- data/lib/zen/package/comments/lib/comments/plugin/comments.rb +5 -6
- data/lib/zen/package/comments/lib/comments/view/admin/comments/index.xhtml +2 -2
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_field_groups.rb +43 -52
- data/lib/zen/package/custom_fields/lib/custom_fields/controller/custom_fields.rb +68 -67
- data/lib/zen/package/custom_fields/lib/custom_fields/language/en/custom_fields.yml +1 -1
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_field_groups.yml +32 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/language/nl/custom_fields.yml +52 -0
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field.rb +3 -3
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_group.rb +4 -7
- data/lib/zen/package/custom_fields/lib/custom_fields/model/custom_field_value.rb +3 -3
- data/lib/zen/package/menus/lib/menus/controller/menu_items.rb +37 -44
- data/lib/zen/package/menus/lib/menus/controller/menus.rb +33 -43
- data/lib/zen/package/menus/lib/menus/helper/menu_item.rb +5 -10
- data/lib/zen/package/menus/lib/menus/language/nl/menu_items.yml +41 -0
- data/lib/zen/package/menus/lib/menus/language/nl/menus.yml +39 -0
- data/lib/zen/package/menus/lib/menus/model/menu.rb +3 -3
- data/lib/zen/package/menus/lib/menus/model/menu_item.rb +3 -3
- data/lib/zen/package/menus/lib/menus/plugin/menus.rb +5 -6
- data/lib/zen/package/menus/migrations/1297184342_create_schema.rb +1 -1
- data/lib/zen/package/sections/lib/sections.rb +20 -0
- data/lib/zen/package/sections/lib/sections/controller/section_entries.rb +85 -79
- data/lib/zen/package/sections/lib/sections/controller/sections.rb +58 -66
- data/lib/zen/package/sections/lib/sections/language/en/sections.yml +0 -1
- data/lib/zen/package/sections/lib/sections/language/nl/section_entries.yml +43 -0
- data/lib/zen/package/sections/lib/sections/language/nl/sections.yml +47 -0
- data/lib/zen/package/sections/lib/sections/model/section.rb +11 -15
- data/lib/zen/package/sections/lib/sections/model/section_entry.rb +9 -5
- data/lib/zen/package/sections/lib/sections/plugin/section_entries.rb +7 -8
- data/lib/zen/package/sections/lib/sections/plugin/sections.rb +3 -4
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/form.xhtml +0 -4
- data/lib/zen/package/sections/lib/sections/view/admin/section-entries/index.xhtml +8 -2
- data/lib/zen/package/sections/migrations/1306772479_remove_unique_slug.rb +28 -0
- data/lib/zen/package/settings/lib/settings.rb +21 -34
- data/lib/zen/package/settings/lib/settings/controller/settings.rb +29 -22
- data/lib/zen/package/settings/lib/settings/language/en/settings.yml +7 -5
- data/lib/zen/package/settings/lib/settings/language/nl/settings.yml +39 -0
- data/lib/zen/package/settings/lib/settings/model/setting.rb +3 -5
- data/lib/zen/package/settings/lib/settings/plugin/group_base.rb +3 -4
- data/lib/zen/package/settings/lib/settings/plugin/setting_base.rb +3 -5
- data/lib/zen/package/settings/lib/settings/plugin/settings.rb +11 -4
- data/lib/zen/package/settings/lib/settings/view/admin/settings/index.xhtml +5 -5
- data/lib/zen/package/settings/migrations/1299538742_add_language_key.rb +8 -8
- data/lib/zen/package/settings/migrations/1303196915_settings_plugin.rb +2 -5
- data/lib/zen/package/users/lib/users/controller/access_rules.rb +54 -61
- data/lib/zen/package/users/lib/users/controller/user_groups.rb +49 -57
- data/lib/zen/package/users/lib/users/controller/users.rb +58 -73
- data/lib/zen/package/users/lib/users/language/en/users.yml +6 -0
- data/lib/zen/package/users/lib/users/language/nl/access_rules.yml +37 -0
- data/lib/zen/package/users/lib/users/language/nl/user_groups.yml +31 -0
- data/lib/zen/package/users/lib/users/language/nl/users.yml +56 -0
- data/lib/zen/package/users/lib/users/model/user.rb +16 -1
- data/lib/zen/package/users/lib/users/view/admin/users/form.xhtml +27 -2
- data/lib/zen/package/users/lib/users/view/admin/users/index.xhtml +15 -3
- data/lib/zen/package/users/migrations/1304939855_user_settings.rb +15 -0
- data/lib/zen/plugin.rb +7 -9
- data/lib/zen/public/admin/css/{buttons.css → zen/buttons.css} +11 -7
- data/lib/zen/public/admin/css/{datepicker.css → zen/datepicker.css} +0 -0
- data/lib/zen/public/admin/css/{editor.css → zen/editor.css} +10 -5
- data/lib/zen/public/admin/css/{forms.css → zen/forms.css} +1 -1
- data/lib/zen/public/admin/css/{general.css → zen/general.css} +7 -7
- data/lib/zen/public/admin/css/{grid.css → zen/grid.css} +0 -0
- data/lib/zen/public/admin/css/{layout.css → zen/layout.css} +4 -5
- data/lib/zen/public/admin/css/zen/messages.css +61 -0
- data/lib/zen/public/admin/css/{notifications.css → zen/notifications.css} +4 -4
- data/lib/zen/public/admin/css/{reset.css → zen/reset.css} +0 -0
- data/lib/zen/public/admin/css/{tables.css → zen/tables.css} +3 -3
- data/lib/zen/public/admin/css/{tabs.css → zen/tabs.css} +5 -5
- data/lib/zen/public/admin/css/zen/window.css +79 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/accept.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/add.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/back.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/bold.png +0 -0
- data/lib/zen/public/admin/images/zen/icons/close.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/delete.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/edit.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/error.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/help.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/info.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/italic.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/large/error.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/large/notice.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/large/success.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/link.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/logout.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/ol.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/pdf.png +0 -0
- data/lib/zen/public/admin/images/zen/icons/preview.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/ul.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/user.png +0 -0
- data/lib/zen/public/admin/images/{icons → zen/icons}/view.png +0 -0
- data/lib/zen/public/admin/js/zen/core.js +73 -0
- data/lib/zen/public/admin/js/zen/editor.js +527 -0
- data/lib/zen/public/admin/js/zen/editor/markdown.js +84 -0
- data/lib/zen/public/admin/js/zen/editor/textile.js +84 -0
- data/lib/zen/public/admin/js/zen/init.js +12 -66
- data/lib/zen/public/admin/js/zen/tabs.js +5 -0
- data/lib/zen/public/admin/js/zen/window.js +206 -0
- data/lib/zen/task/build.rake +23 -6
- data/lib/zen/task/clean.rake +6 -7
- data/lib/zen/task/db.rake +7 -9
- data/lib/zen/task/package.rake +6 -6
- data/lib/zen/task/test.rake +6 -0
- data/lib/zen/task/theme.rake +3 -3
- data/lib/zen/theme.rb +3 -4
- data/lib/zen/validation.rb +7 -9
- data/lib/zen/version.rb +3 -4
- data/lib/zen/view/bottom.xhtml +0 -5
- data/lib/zen/view/main.xhtml +2 -0
- data/proto/app/app.rb +6 -4
- data/proto/app/config/config.rb +1 -7
- data/proto/app/config/database.rb +47 -43
- data/proto/app/config/middlewares.rb +0 -40
- data/proto/app/start.rb +1 -6
- data/proto/app/{vendor → theme}/.gitkeep +0 -0
- data/proto/migration.rb +3 -3
- data/proto/package/lib/package.rb +0 -1
- data/proto/package/lib/package/controller/controllers.rb +7 -40
- data/proto/package/lib/package/model/model.rb +3 -3
- metadata +106 -79
- data/CHANGELOG.md +0 -27
- data/ROADMAP.md +0 -53
- data/lib/zen/database.rb +0 -112
- data/lib/zen/logger.rb +0 -56
- data/lib/zen/public/admin/css/modals.css +0 -63
- data/lib/zen/public/admin/images/icons/close.png +0 -0
- data/lib/zen/public/admin/js/vendor/yepnope.js +0 -1
- data/lib/zen/public/admin/js/zen/editor/base.js +0 -262
- data/lib/zen/public/admin/js/zen/editor/drivers/html.js +0 -89
- data/lib/zen/public/admin/js/zen/editor/drivers/markdown.js +0 -87
- data/lib/zen/public/admin/js/zen/editor/drivers/textile.js +0 -87
- data/lib/zen/public/admin/js/zen/modal.js +0 -146
- data/lib/zen/public/admin/js/zen/notification.js +0 -211
- data/proto/app/config/requires.rb +0 -10
- data/proto/app/vendor/theme/.gitkeep +0 -0
- data/proto/package/lib/package/view/admin/package/edit.xhtml +0 -0
- data/proto/package/lib/package/view/admin/package/form.xhtml +0 -0
- data/proto/package/lib/package/view/admin/package/new.xhtml +0 -0
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Markdown driver for the text editor that ships with Zen.
|
|
3
|
+
*
|
|
4
|
+
* @author Yorick Peterse
|
|
5
|
+
* @since 0.2.6
|
|
6
|
+
* @namespace Zen
|
|
7
|
+
* @extend Editor
|
|
8
|
+
*/
|
|
9
|
+
Zen.Editor.Markdown = new Class(
|
|
10
|
+
{
|
|
11
|
+
Extends: Zen.Editor,
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Overrides Zen.Editor.bold.
|
|
15
|
+
*
|
|
16
|
+
* @author Yorick Peterse
|
|
17
|
+
* @since 0.2.6
|
|
18
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
19
|
+
*/
|
|
20
|
+
bold: function(editor)
|
|
21
|
+
{
|
|
22
|
+
editor.insertAroundCursor({before: '**', after: '**'});
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Overrides Zen.Editor.italic.
|
|
27
|
+
*
|
|
28
|
+
* @author Yorick Peterse
|
|
29
|
+
* @since 0.2.6
|
|
30
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
31
|
+
*/
|
|
32
|
+
italic: function(editor)
|
|
33
|
+
{
|
|
34
|
+
editor.insertAroundCursor({before: '*', after: '*'});
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Overrides Zen.Editor.link.
|
|
39
|
+
*
|
|
40
|
+
* @author Yorick Peterse
|
|
41
|
+
* @since 0.2.6
|
|
42
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
43
|
+
*/
|
|
44
|
+
link: function(editor)
|
|
45
|
+
{
|
|
46
|
+
var link = prompt('URL', 'http://');
|
|
47
|
+
|
|
48
|
+
editor.insertAroundCursor(
|
|
49
|
+
{
|
|
50
|
+
before: '[',
|
|
51
|
+
after: '](' + link + ')'
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Overrides Zen.Editor.ul.
|
|
57
|
+
*
|
|
58
|
+
* @author Yorick Peterse
|
|
59
|
+
* @since 0.2.6
|
|
60
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
61
|
+
*/
|
|
62
|
+
ul: function(editor)
|
|
63
|
+
{
|
|
64
|
+
editor.insertAroundCursor(
|
|
65
|
+
{
|
|
66
|
+
before: "\n* "
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Overrides Zen.Editor.ol.
|
|
72
|
+
*
|
|
73
|
+
* @author Yorick Peterse
|
|
74
|
+
* @since 0.2.6
|
|
75
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
76
|
+
*/
|
|
77
|
+
ol: function(editor)
|
|
78
|
+
{
|
|
79
|
+
editor.insertAroundCursor(
|
|
80
|
+
{
|
|
81
|
+
before: "\n1. "
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Textile driver for the text editor that ships with Zen.
|
|
3
|
+
*
|
|
4
|
+
* @author Yorick Peterse
|
|
5
|
+
* @since 0.2.6
|
|
6
|
+
* @namespace Zen
|
|
7
|
+
* @extend Editor
|
|
8
|
+
*/
|
|
9
|
+
Zen.Editor.Textile = new Class(
|
|
10
|
+
{
|
|
11
|
+
Extends: Zen.Editor,
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Overrides Zen.Editor.bold.
|
|
15
|
+
*
|
|
16
|
+
* @author Yorick Peterse
|
|
17
|
+
* @since 0.2.6
|
|
18
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
19
|
+
*/
|
|
20
|
+
bold: function(editor)
|
|
21
|
+
{
|
|
22
|
+
editor.insertAroundCursor({before: '*', after: '*'});
|
|
23
|
+
},
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Overrides Zen.Editor.italic.
|
|
27
|
+
*
|
|
28
|
+
* @author Yorick Peterse
|
|
29
|
+
* @since 0.2.6
|
|
30
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
31
|
+
*/
|
|
32
|
+
italic: function(editor)
|
|
33
|
+
{
|
|
34
|
+
editor.insertAroundCursor({before: '_', after: '_'});
|
|
35
|
+
},
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Overrides Zen.Editor.link.
|
|
39
|
+
*
|
|
40
|
+
* @author Yorick Peterse
|
|
41
|
+
* @since 0.2.6
|
|
42
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
43
|
+
*/
|
|
44
|
+
link: function(editor)
|
|
45
|
+
{
|
|
46
|
+
var link = prompt('URL', 'http://');
|
|
47
|
+
|
|
48
|
+
editor.insertAroundCursor(
|
|
49
|
+
{
|
|
50
|
+
before: '"',
|
|
51
|
+
after: '":' + link
|
|
52
|
+
});
|
|
53
|
+
},
|
|
54
|
+
|
|
55
|
+
/**
|
|
56
|
+
* Overrides Zen.Editor.ul.
|
|
57
|
+
*
|
|
58
|
+
* @author Yorick Peterse
|
|
59
|
+
* @since 0.2.6
|
|
60
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
61
|
+
*/
|
|
62
|
+
ul: function(editor)
|
|
63
|
+
{
|
|
64
|
+
editor.insertAroundCursor(
|
|
65
|
+
{
|
|
66
|
+
before: "\n* "
|
|
67
|
+
});
|
|
68
|
+
},
|
|
69
|
+
|
|
70
|
+
/**
|
|
71
|
+
* Overrides Zen.Editor.ol.
|
|
72
|
+
*
|
|
73
|
+
* @author Yorick Peterse
|
|
74
|
+
* @since 0.2.6
|
|
75
|
+
* @param [Element] editor The textarea to insert the tags into.
|
|
76
|
+
*/
|
|
77
|
+
ol: function(editor)
|
|
78
|
+
{
|
|
79
|
+
editor.insertAroundCursor(
|
|
80
|
+
{
|
|
81
|
+
before: "\n# "
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
});
|
|
@@ -1,20 +1,5 @@
|
|
|
1
1
|
window.addEvent('domready', function()
|
|
2
2
|
{
|
|
3
|
-
/**
|
|
4
|
-
* Show a notification whenever we find an error, success or notice hash in the
|
|
5
|
-
* Zen.Flash object.
|
|
6
|
-
*/
|
|
7
|
-
if ( Zen.Flash.notification )
|
|
8
|
-
{
|
|
9
|
-
new Zen.Notification(
|
|
10
|
-
{
|
|
11
|
-
title: Zen.Flash.notification.title,
|
|
12
|
-
content: Zen.Flash.notification.content,
|
|
13
|
-
image: Zen.Flash.notification.image,
|
|
14
|
-
sticky: Zen.Flash.notification.sticky
|
|
15
|
-
});
|
|
16
|
-
}
|
|
17
|
-
|
|
18
3
|
/**
|
|
19
4
|
* Enable the automatic checking of all checkboxes in a table with a class of "table".
|
|
20
5
|
* Perhaps I'll use a class for this in the future but for now this is good enough.
|
|
@@ -50,19 +35,11 @@ window.addEvent('domready', function()
|
|
|
50
35
|
var tab_selector = 'div.tabs ul';
|
|
51
36
|
var tab_elements = $$(tab_selector).length;
|
|
52
37
|
|
|
53
|
-
|
|
38
|
+
// Double check there are any elements
|
|
39
|
+
if ( tab_elements > 0 )
|
|
54
40
|
{
|
|
55
|
-
|
|
56
|
-
|
|
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
|
-
});
|
|
41
|
+
new Zen.Tabs(tab_selector);
|
|
42
|
+
}
|
|
66
43
|
|
|
67
44
|
/**
|
|
68
45
|
* Initialize our editor for all elements with a class of "visual_editor" and
|
|
@@ -72,39 +49,16 @@ window.addEvent('domready', function()
|
|
|
72
49
|
|
|
73
50
|
if ( editor_elements.length > 0 )
|
|
74
51
|
{
|
|
75
|
-
var editor_files = ['/admin/css/editor.css', '/admin/js/zen/editor/base.js'];
|
|
76
|
-
|
|
77
|
-
// Determine what drivers to load
|
|
78
52
|
editor_elements.each(function(editor)
|
|
79
53
|
{
|
|
80
|
-
var
|
|
54
|
+
var markup = editor.get('data-format');
|
|
81
55
|
|
|
82
|
-
|
|
83
|
-
if ( !driver )
|
|
56
|
+
if ( typeOf(markup) === 'undefined' )
|
|
84
57
|
{
|
|
85
|
-
|
|
86
|
-
"Missing attribute data-format for the editor with ID "
|
|
87
|
-
+ editor.get('id')
|
|
88
|
-
);
|
|
58
|
+
markup = 'html';
|
|
89
59
|
}
|
|
90
60
|
|
|
91
|
-
|
|
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
|
-
}
|
|
61
|
+
Zen.Editor.init(markup, editor);
|
|
108
62
|
});
|
|
109
63
|
}
|
|
110
64
|
|
|
@@ -116,19 +70,11 @@ window.addEvent('domready', function()
|
|
|
116
70
|
|
|
117
71
|
if ( date_elements.length > 0 )
|
|
118
72
|
{
|
|
119
|
-
|
|
73
|
+
new Picker.Date(date_elements,
|
|
120
74
|
{
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
{
|
|
125
|
-
new Picker.Date(date_elements,
|
|
126
|
-
{
|
|
127
|
-
timePicker: true,
|
|
128
|
-
pickerClass: 'datepicker',
|
|
129
|
-
format: '%Y-%m-%d %H:%M:%S'
|
|
130
|
-
});
|
|
131
|
-
}
|
|
75
|
+
timePicker: true,
|
|
76
|
+
pickerClass: 'datepicker',
|
|
77
|
+
format: '%Y-%m-%d %H:%M:%S'
|
|
132
78
|
});
|
|
133
79
|
}
|
|
134
80
|
});
|
|
@@ -0,0 +1,206 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The Window class can be used to create basic windows with a title and a set of buttons.
|
|
3
|
+
* These windows can be used for a preview of an article, showing an image or asking for a
|
|
4
|
+
* confirmation.
|
|
5
|
+
*
|
|
6
|
+
* ## Usage
|
|
7
|
+
*
|
|
8
|
+
* In order to create a new window you simply need to create a new instance of the class.
|
|
9
|
+
* The first parameter is the content to display and is required, the second parameter is
|
|
10
|
+
* an object containing all custom options to use such as the title.
|
|
11
|
+
*
|
|
12
|
+
* var modal = new Zen.Window('Hello, world!');
|
|
13
|
+
*
|
|
14
|
+
* If you want to set a title you'd do the following:
|
|
15
|
+
*
|
|
16
|
+
* var modal = new Zen.Window('Hello, world!', {title: 'My Window'});
|
|
17
|
+
*
|
|
18
|
+
* For a full list of options see Zen.Window.options.
|
|
19
|
+
*
|
|
20
|
+
* ## Buttons
|
|
21
|
+
*
|
|
22
|
+
* Buttons can be added by setting the "buttons" key in the options object to an array of
|
|
23
|
+
* objects. Each object should have the following three keys:
|
|
24
|
+
*
|
|
25
|
+
* * name: the name of the button, also used as the class (should be unique).
|
|
26
|
+
* * label: the text to display in the button.
|
|
27
|
+
* * onClick: a function that will be called whenever the button is clicked. This function
|
|
28
|
+
* takes a single parameter which is set to the instance of the window the button belongs
|
|
29
|
+
* to.
|
|
30
|
+
*
|
|
31
|
+
* An example of setting a button can be seen below.
|
|
32
|
+
*
|
|
33
|
+
* var modal = new Zen.Window(
|
|
34
|
+
* 'A window with buttons',
|
|
35
|
+
* {
|
|
36
|
+
* buttons:
|
|
37
|
+
* [
|
|
38
|
+
* {
|
|
39
|
+
* name: 'close',
|
|
40
|
+
* label: 'Close',
|
|
41
|
+
* onClick: function(instance)
|
|
42
|
+
* {
|
|
43
|
+
* instance.destroy();
|
|
44
|
+
* }
|
|
45
|
+
* }
|
|
46
|
+
* ]
|
|
47
|
+
* }
|
|
48
|
+
* );
|
|
49
|
+
*
|
|
50
|
+
* @author Yorick Peterse
|
|
51
|
+
* @since 0.2.6
|
|
52
|
+
*/
|
|
53
|
+
Zen.Window = new Class(
|
|
54
|
+
{
|
|
55
|
+
Implements: Options,
|
|
56
|
+
|
|
57
|
+
Depends:
|
|
58
|
+
{
|
|
59
|
+
stylesheet: ['zen/window']
|
|
60
|
+
},
|
|
61
|
+
|
|
62
|
+
/**
|
|
63
|
+
* Object containing all the custom options as well as the ones specified by the user.
|
|
64
|
+
*
|
|
65
|
+
* @author Yorick Peterse
|
|
66
|
+
* @since 0.2.6
|
|
67
|
+
*/
|
|
68
|
+
options:
|
|
69
|
+
{
|
|
70
|
+
// The height of the window
|
|
71
|
+
height: null,
|
|
72
|
+
|
|
73
|
+
// The width of the window
|
|
74
|
+
width: 400,
|
|
75
|
+
|
|
76
|
+
// The title of the window, set to null for no title
|
|
77
|
+
title: null,
|
|
78
|
+
|
|
79
|
+
// When set to true the window can be resized
|
|
80
|
+
resize: false,
|
|
81
|
+
|
|
82
|
+
// When set to true the user can drag the window around
|
|
83
|
+
move: false,
|
|
84
|
+
|
|
85
|
+
// A collection of buttons to display inside the window
|
|
86
|
+
buttons: []
|
|
87
|
+
},
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* DOM element for the current window instance.
|
|
91
|
+
*
|
|
92
|
+
* @author Yorick Peterse
|
|
93
|
+
* @since 0.2.6
|
|
94
|
+
* @var [Element]
|
|
95
|
+
*/
|
|
96
|
+
element: null,
|
|
97
|
+
|
|
98
|
+
/**
|
|
99
|
+
* Creates a new instance of the class and displays the window.
|
|
100
|
+
*
|
|
101
|
+
* @author Yorick Peterse
|
|
102
|
+
* @since 0.2.6
|
|
103
|
+
* @param [String] content The content to display inside the window.
|
|
104
|
+
* @param [Object] options Object containing a collection of custom options for the
|
|
105
|
+
* window.
|
|
106
|
+
*/
|
|
107
|
+
initialize: function(content, options)
|
|
108
|
+
{
|
|
109
|
+
if ( !content )
|
|
110
|
+
{
|
|
111
|
+
throw new SyntaxError("You need to specify the content to display.");
|
|
112
|
+
}
|
|
113
|
+
|
|
114
|
+
this.setOptions(options);
|
|
115
|
+
|
|
116
|
+
// Create the HTML for the window
|
|
117
|
+
var container = new Element(
|
|
118
|
+
'article',
|
|
119
|
+
{
|
|
120
|
+
'class': 'window',
|
|
121
|
+
styles:
|
|
122
|
+
{
|
|
123
|
+
width: this.options.width,
|
|
124
|
+
height: this.options.height
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
);
|
|
128
|
+
|
|
129
|
+
var header = new Element('header', {'class': 'clearfix'});
|
|
130
|
+
var close = new Element('div' , {'class': 'close'});
|
|
131
|
+
var body = new Element('div' , {'class': 'body', html: content});
|
|
132
|
+
var current = this;
|
|
133
|
+
|
|
134
|
+
// Do we have a title?
|
|
135
|
+
if ( this.options.title !== null )
|
|
136
|
+
{
|
|
137
|
+
var title = new Element('h1', {html: this.options.title});
|
|
138
|
+
title.inject(header);
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
close.addEvent('click', function()
|
|
142
|
+
{
|
|
143
|
+
current.destroy();
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// Inject the base elements
|
|
147
|
+
close.inject(header);
|
|
148
|
+
header.inject(container);
|
|
149
|
+
body.inject(container);
|
|
150
|
+
|
|
151
|
+
// Add all the buttons
|
|
152
|
+
if ( this.options.buttons.length > 0 )
|
|
153
|
+
{
|
|
154
|
+
var buttons_container = new Element('div', {'class': 'buttons clearfix'});
|
|
155
|
+
|
|
156
|
+
this.options.buttons.each(function(button)
|
|
157
|
+
{
|
|
158
|
+
var div = new Element('div' , {'class': 'button ' + button.name});
|
|
159
|
+
var btn = new Element('button', {text: button.label});
|
|
160
|
+
|
|
161
|
+
btn.addEvent('click', function()
|
|
162
|
+
{
|
|
163
|
+
button.onClick(current);
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
btn.inject(div);
|
|
167
|
+
div.inject(buttons_container);
|
|
168
|
+
});
|
|
169
|
+
|
|
170
|
+
buttons_container.inject(container);
|
|
171
|
+
}
|
|
172
|
+
|
|
173
|
+
// Allow the window to be resized if this has been specified
|
|
174
|
+
if ( this.options.resize === true )
|
|
175
|
+
{
|
|
176
|
+
container.addClass('resize');
|
|
177
|
+
container.makeResizable();
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
if ( this.options.move === true )
|
|
181
|
+
{
|
|
182
|
+
container.addClass('move');
|
|
183
|
+
container.makeDraggable();
|
|
184
|
+
}
|
|
185
|
+
|
|
186
|
+
// Set a negative margin so that the window can be aligned when positioning it
|
|
187
|
+
// absolute.
|
|
188
|
+
var margin = this.options.width - ( this.options.width * 1.5 );
|
|
189
|
+
container.setStyle('margin-left', margin);
|
|
190
|
+
|
|
191
|
+
// Last step: inject the HTML into the DOM
|
|
192
|
+
this.element = container;
|
|
193
|
+
this.element.inject(document.body);
|
|
194
|
+
},
|
|
195
|
+
|
|
196
|
+
/**
|
|
197
|
+
* Removes the window from the DOM.
|
|
198
|
+
*
|
|
199
|
+
* @author Yorick Peterse
|
|
200
|
+
* @since 0.2.6
|
|
201
|
+
*/
|
|
202
|
+
destroy: function()
|
|
203
|
+
{
|
|
204
|
+
this.element.destroy();
|
|
205
|
+
}
|
|
206
|
+
});
|