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
data/lib/zen/bin/base.rb
DELETED
|
@@ -1,109 +0,0 @@
|
|
|
1
|
-
require 'fileutils'
|
|
2
|
-
require 'ruby-extensions'
|
|
3
|
-
|
|
4
|
-
#:nodoc:
|
|
5
|
-
module Zen
|
|
6
|
-
#:nodoc:
|
|
7
|
-
module Bin
|
|
8
|
-
##
|
|
9
|
-
# Main binary class that contains a few methods that can be used
|
|
10
|
-
# to generate new applications, extensions and so on.
|
|
11
|
-
#
|
|
12
|
-
# @author Yorick Peterse
|
|
13
|
-
# @since 0.1
|
|
14
|
-
#
|
|
15
|
-
class Base < Thor
|
|
16
|
-
|
|
17
|
-
map ["-v", "--version"] => :version
|
|
18
|
-
|
|
19
|
-
# ------------------------------------------------
|
|
20
|
-
|
|
21
|
-
desc "app [NAME]", "Creates a new Zen application"
|
|
22
|
-
method_option :force, :type => :boolean, :aliases => "-f",
|
|
23
|
-
:desc => "Overwrites any existing directories"
|
|
24
|
-
|
|
25
|
-
##
|
|
26
|
-
# Creates a new Zen application using a prototype extracted from the
|
|
27
|
-
# Rubygem package.
|
|
28
|
-
#
|
|
29
|
-
# @author Yorick Peterse
|
|
30
|
-
# @param [String] name The name of the new application
|
|
31
|
-
# @since 0.1
|
|
32
|
-
#
|
|
33
|
-
def app(name)
|
|
34
|
-
# Do we have an application name?
|
|
35
|
-
if name.nil?
|
|
36
|
-
abort "You need to specify a name for your application"
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
app = './' + name
|
|
40
|
-
proto = __DIR__('../../../proto/app')
|
|
41
|
-
|
|
42
|
-
if File.directory?(app) and !options.force?
|
|
43
|
-
abort "Application already exists, use -f to overwrite it"
|
|
44
|
-
else
|
|
45
|
-
FileUtils.rm_rf(app)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# Copy the prototype
|
|
49
|
-
begin
|
|
50
|
-
FileUtils.cp_r(proto, app)
|
|
51
|
-
|
|
52
|
-
puts "Application generated, now do the following:
|
|
53
|
-
1. edit the following configuration files:
|
|
54
|
-
* config/database.rb
|
|
55
|
-
* config/config.rb
|
|
56
|
-
2. run thor db:migrate to install all extensions and create a default user
|
|
57
|
-
3. have fun!"
|
|
58
|
-
rescue => e
|
|
59
|
-
abort "Failed to generate the application: #{e}"
|
|
60
|
-
end
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
# ------------------------------------------------
|
|
64
|
-
|
|
65
|
-
desc "version", "Shows the current version of Zen"
|
|
66
|
-
|
|
67
|
-
##
|
|
68
|
-
# Shows the current version of Zen
|
|
69
|
-
#
|
|
70
|
-
# @author Yorick Peterse
|
|
71
|
-
# @since 0.1
|
|
72
|
-
#
|
|
73
|
-
def version
|
|
74
|
-
puts "Zen v#{Zen::Version}"
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
# ------------------------------------------------
|
|
78
|
-
|
|
79
|
-
##
|
|
80
|
-
# Override the help method provided by Thor
|
|
81
|
-
# so we can show our custom banner.
|
|
82
|
-
#
|
|
83
|
-
# @author Yorick Peterse
|
|
84
|
-
# @see Thor.help()
|
|
85
|
-
# @since 0.1
|
|
86
|
-
#
|
|
87
|
-
def help(task = nil, subcommand = false)
|
|
88
|
-
if task.nil?
|
|
89
|
-
puts "Zen is a modular CMS written using Ramaze.
|
|
90
|
-
|
|
91
|
-
Usage:
|
|
92
|
-
$ zen [command] [arguments] [flags]
|
|
93
|
-
|
|
94
|
-
Example:
|
|
95
|
-
$ zen app blog
|
|
96
|
-
|
|
97
|
-
Project Details:
|
|
98
|
-
* website: http://zen-cms.com/
|
|
99
|
-
* github: https://github.com/zen-cms/
|
|
100
|
-
* version: v#{Zen::Version}
|
|
101
|
-
|
|
102
|
-
"
|
|
103
|
-
end
|
|
104
|
-
|
|
105
|
-
super(task, subcommand)
|
|
106
|
-
end
|
|
107
|
-
end
|
|
108
|
-
end
|
|
109
|
-
end
|
data/lib/zen/helper/asset.rb
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
require 'ramaze/gestalt'
|
|
2
|
-
|
|
3
|
-
#:nodoc:
|
|
4
|
-
module Ramaze
|
|
5
|
-
#:nodoc:
|
|
6
|
-
module Helper
|
|
7
|
-
##
|
|
8
|
-
# The Asset helper can be used to load Javascript and CSS files without
|
|
9
|
-
# having to embedd them in your views. In order to tell the helper that
|
|
10
|
-
# a CSS or Javascript file has to be loaded you'll have to call the
|
|
11
|
-
# require_* method. For example, if we want to require a CSS file named
|
|
12
|
-
# "reset" we'd do the following:
|
|
13
|
-
#
|
|
14
|
-
# register_css('reset')
|
|
15
|
-
#
|
|
16
|
-
# Once you have your files required you can build the HTML by either calling
|
|
17
|
-
# build_css or build_js.
|
|
18
|
-
#
|
|
19
|
-
# @author Yorick Peterse
|
|
20
|
-
# @since 0.1
|
|
21
|
-
# @todo Add support for compressing Javascript and CSS files.
|
|
22
|
-
#
|
|
23
|
-
module Asset
|
|
24
|
-
@css = []
|
|
25
|
-
@js = []
|
|
26
|
-
|
|
27
|
-
##
|
|
28
|
-
# Requires a new CSS file.
|
|
29
|
-
#
|
|
30
|
-
# @author Yorick Peterse
|
|
31
|
-
# @param [Symbol] files Paths to the CSS files to require.
|
|
32
|
-
# @since 0.1
|
|
33
|
-
#
|
|
34
|
-
def require_css(*files)
|
|
35
|
-
if @css.nil?
|
|
36
|
-
@css = []
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
files.each do |file|
|
|
40
|
-
file = file.to_sym
|
|
41
|
-
|
|
42
|
-
if !@css.include?(file)
|
|
43
|
-
@css.push(file)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
##
|
|
49
|
-
# Requires a new Javascript file.
|
|
50
|
-
#
|
|
51
|
-
# @author Yorick Peterse
|
|
52
|
-
# @param [Symbol] files Paths to the Javascript files to require.
|
|
53
|
-
# @since 0.1
|
|
54
|
-
#
|
|
55
|
-
def require_js(*files)
|
|
56
|
-
if @js.nil?
|
|
57
|
-
@js = []
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
files.each do |file|
|
|
61
|
-
file = file.to_sym
|
|
62
|
-
|
|
63
|
-
if !@js.include?(file)
|
|
64
|
-
@js.push(file)
|
|
65
|
-
end
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
##
|
|
70
|
-
# Builds the HTML for all CSS tags using Gestalt.
|
|
71
|
-
#
|
|
72
|
-
# @author Yorick Peterse
|
|
73
|
-
# @since 0.1
|
|
74
|
-
# @return [String]
|
|
75
|
-
#
|
|
76
|
-
def build_css
|
|
77
|
-
g = Ramaze::Gestalt.new
|
|
78
|
-
|
|
79
|
-
@css.each do |css|
|
|
80
|
-
css = "/admin/css/#{css}.css"
|
|
81
|
-
g.link :rel => "stylesheet", :href => css, :media => "all", :type => "text/css"
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
return g.to_s
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
##
|
|
88
|
-
# Builds the HTML for all Javascript tags using Gestalt.
|
|
89
|
-
#
|
|
90
|
-
# @author Yorick Peterse
|
|
91
|
-
# @since 0.1
|
|
92
|
-
# @return [String]
|
|
93
|
-
#
|
|
94
|
-
def build_js
|
|
95
|
-
g = Ramaze::Gestalt.new
|
|
96
|
-
|
|
97
|
-
@js.each do |js|
|
|
98
|
-
js = "/admin/js/#{js}.js"
|
|
99
|
-
g.script(:src => js) {}
|
|
100
|
-
end
|
|
101
|
-
|
|
102
|
-
return g.to_s
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
end
|
|
106
|
-
end
|
data/lib/zen/liquid/general.rb
DELETED
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
#:nodoc:
|
|
2
|
-
module Zen
|
|
3
|
-
#:nodoc:
|
|
4
|
-
module Liquid
|
|
5
|
-
##
|
|
6
|
-
# Module that provides several methods that can be used to ease the process of
|
|
7
|
-
# creating Liquid tags.
|
|
8
|
-
#
|
|
9
|
-
# @author Yorick Peterse
|
|
10
|
-
# @since 0.1
|
|
11
|
-
#
|
|
12
|
-
module General
|
|
13
|
-
include ::Ramaze::Helper::CGI
|
|
14
|
-
|
|
15
|
-
##
|
|
16
|
-
# Parses all additional data specified in the tag open block
|
|
17
|
-
# and turns it into a key/value hash. This makes it easier to
|
|
18
|
-
# use tags with key/value variables such as the following:
|
|
19
|
-
#
|
|
20
|
-
# {% my_tag name="yorick" %}
|
|
21
|
-
#
|
|
22
|
-
# @author Yorick Peterse
|
|
23
|
-
# @since 0.1
|
|
24
|
-
# @param [String] string the raw string specified after the tag name.
|
|
25
|
-
# @return [Hash] A key/value hash of all specified arguments.
|
|
26
|
-
#
|
|
27
|
-
def parse_key_values(string)
|
|
28
|
-
key_values = {}
|
|
29
|
-
|
|
30
|
-
# Thanks to Michael Trommer (https://github.com/entropie) for coming up with
|
|
31
|
-
# this way of parsing the key/value string.
|
|
32
|
-
string.split(/["']([^"]*)["']|\s/).reject{ |s| s.empty? }.each_slice(2) do |key, val|
|
|
33
|
-
key_values[ key[0..-2].to_s ] = val
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
# Returns the data in the format of {'key' => 'value'}
|
|
37
|
-
return key_values
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
##
|
|
41
|
-
# Merges the values in the given context with the hash. This means that if the
|
|
42
|
-
# Liquid context has a key that matches a value in the hash that key's value
|
|
43
|
-
# will become the value of the key in the hash. Confused? Assume our context has
|
|
44
|
-
# a key of "username" which is set to "YorickPeterse". If our hash had a key
|
|
45
|
-
# who's value is "username" that value would be replaced with "YorickPeterse".
|
|
46
|
-
#
|
|
47
|
-
# If context was a hash (it's an object) this would result in something like the
|
|
48
|
-
# following:
|
|
49
|
-
#
|
|
50
|
-
# context = {'username' => 'YorickPeterse'}
|
|
51
|
-
# hash = {'selected_user' => 'username'}
|
|
52
|
-
#
|
|
53
|
-
# merge_context(hash, context) # => {'selected_user' => 'YorickPeterse'}
|
|
54
|
-
#
|
|
55
|
-
# This method will also automatically escape all variables using the h() method
|
|
56
|
-
# so you don't have to worry about nasty input.
|
|
57
|
-
#
|
|
58
|
-
# @author Yorick Peterse
|
|
59
|
-
# @since 0.2a
|
|
60
|
-
# @param [Hash] hash The input hash that may contain Liquid variables
|
|
61
|
-
# @param [Liquid::Context] context The Liquid context from which to extract any
|
|
62
|
-
# variables set in the hash.
|
|
63
|
-
# @return [Hash] The merged hash.
|
|
64
|
-
#
|
|
65
|
-
def merge_context(hash, context)
|
|
66
|
-
if hash.class != Hash
|
|
67
|
-
raise(
|
|
68
|
-
TypeError,
|
|
69
|
-
"The first argument of this method should be a hash instead of \"#{hash.class}\""
|
|
70
|
-
)
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
hash.each do |k, v|
|
|
74
|
-
v = v.to_s
|
|
75
|
-
|
|
76
|
-
# Check if the Liquid context has a matching key and extract the value of that key
|
|
77
|
-
# if this is the case.
|
|
78
|
-
if context.respond_to?('key?')
|
|
79
|
-
if context.key?(v)
|
|
80
|
-
hash[k] = h(context[v])
|
|
81
|
-
end
|
|
82
|
-
else
|
|
83
|
-
if context.has_key?(v)
|
|
84
|
-
hash[k] = h(context[v])
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
return hash
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
data/lib/zen/liquid/redirect.rb
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
#:nodoc:
|
|
2
|
-
module Zen
|
|
3
|
-
#:nodoc:
|
|
4
|
-
module Liquid
|
|
5
|
-
##
|
|
6
|
-
# The Redirect tag can be used to redirect a user from one URL to another.
|
|
7
|
-
#
|
|
8
|
-
# @example
|
|
9
|
-
# {% redirect "blog/index" %}
|
|
10
|
-
#
|
|
11
|
-
# Optionally you can redirect a user to a 404 page by doing the following:
|
|
12
|
-
#
|
|
13
|
-
# {% redirect "404" %}
|
|
14
|
-
#
|
|
15
|
-
# This will render the 404 template but without changing the current URL.
|
|
16
|
-
#
|
|
17
|
-
# @author Yorick Peterse
|
|
18
|
-
# @since 0.1
|
|
19
|
-
#
|
|
20
|
-
class Redirect < ::Liquid::Tag
|
|
21
|
-
include ::Ramaze::Helper::Redirect
|
|
22
|
-
include ::Zen::Liquid::ControllerBehavior
|
|
23
|
-
include ::Ramaze::Helper::Render
|
|
24
|
-
|
|
25
|
-
##
|
|
26
|
-
# Creates a new instance of this tag by passing the tag name, arguments and HTML
|
|
27
|
-
# tokens to the construct.
|
|
28
|
-
#
|
|
29
|
-
# @author Yorick Peterse
|
|
30
|
-
# @since 0.1
|
|
31
|
-
# @param [String] tag_name The name of the tag that was called.
|
|
32
|
-
# @param [String] arguments All additional arguments passed as a string.
|
|
33
|
-
# @param [String] tokens All tokens (HTML mostly) inside the tag block.
|
|
34
|
-
#
|
|
35
|
-
def initialize(tag_name = 'redirect', arguments = '', tokens = '')
|
|
36
|
-
super
|
|
37
|
-
|
|
38
|
-
@url = arguments.gsub('"', '').gsub("'", '').strip
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
##
|
|
42
|
-
# Redirects the user to a certain page based on the arguments specified in the
|
|
43
|
-
# constructor method.
|
|
44
|
-
#
|
|
45
|
-
# @author Yorick Peterse
|
|
46
|
-
# @since 0.1
|
|
47
|
-
# @param [Object] context The current Liquid context
|
|
48
|
-
#
|
|
49
|
-
def render(context)
|
|
50
|
-
if @url.nil? or @url.empty?
|
|
51
|
-
raise(ArgumentError, "You need to specify a URL in order to redirect a user")
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
# 404 URLs are treated differently than other URLs
|
|
55
|
-
if @url == '404'
|
|
56
|
-
theme = ::Zen::Package[session[:settings][:theme]]
|
|
57
|
-
not_found = theme.directory + "/templates/404.liquid"
|
|
58
|
-
|
|
59
|
-
if File.exist?(not_found)
|
|
60
|
-
respond(action.instance.render_file(not_found), 404)
|
|
61
|
-
else
|
|
62
|
-
respond("The requested page could not be found", 404)
|
|
63
|
-
end
|
|
64
|
-
else
|
|
65
|
-
redirect(@url)
|
|
66
|
-
end
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
|
-
end
|
data/lib/zen/liquid/strip.rb
DELETED
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
#:nodoc:
|
|
2
|
-
module Zen
|
|
3
|
-
#:nodoc:
|
|
4
|
-
module Liquid
|
|
5
|
-
##
|
|
6
|
-
# Tag block that can be used to strip leading and trailing characters from
|
|
7
|
-
# the text inside of the block. This tag can be extremely useful when you're
|
|
8
|
-
# displaying elements seperated by a comma and want to remove the last comma.
|
|
9
|
-
#
|
|
10
|
-
# @example
|
|
11
|
-
# {% strip end=", " %}
|
|
12
|
-
# Hello, world,
|
|
13
|
-
# {% endstrip %}
|
|
14
|
-
#
|
|
15
|
-
# This tag has the following options:
|
|
16
|
-
#
|
|
17
|
-
# * start
|
|
18
|
-
# * end
|
|
19
|
-
#
|
|
20
|
-
# @author Yorick Peterse
|
|
21
|
-
# @since 0.1
|
|
22
|
-
#
|
|
23
|
-
class Strip < ::Liquid::Block
|
|
24
|
-
include ::Zen::Liquid::General
|
|
25
|
-
|
|
26
|
-
##
|
|
27
|
-
# Creates a new instance of the block and passes the tag name,
|
|
28
|
-
# all additional arguments and the HTML to the constructor method.
|
|
29
|
-
#
|
|
30
|
-
# @author Yorick Peterse
|
|
31
|
-
# @param [String] tag_name The name of the tag that was called.
|
|
32
|
-
# @param [String] arguments All additional arguments passed as a string.
|
|
33
|
-
# @param [String] html The HTML inside the block.
|
|
34
|
-
# @since 0.1
|
|
35
|
-
#
|
|
36
|
-
def initialize(tag_name = 'strip', arguments = '', html = '')
|
|
37
|
-
super
|
|
38
|
-
|
|
39
|
-
@arguments = {'start' => '', 'end' => ''}
|
|
40
|
-
@arguments = @arguments.merge(parse_key_values(arguments))
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
##
|
|
44
|
-
# Renders the tag block. We'll retrieve the content inside the block,
|
|
45
|
-
# trim it and return it.
|
|
46
|
-
#
|
|
47
|
-
# @author Yorick Peterse
|
|
48
|
-
# @since 0.1
|
|
49
|
-
# @param [Object] context The Liquid context for the current tag
|
|
50
|
-
#
|
|
51
|
-
def render context
|
|
52
|
-
html = super
|
|
53
|
-
html = html.join
|
|
54
|
-
html = html.gsub(/^#{@arguments['start']}/, '').gsub(/#{@arguments['end']}$/, '')
|
|
55
|
-
|
|
56
|
-
return html
|
|
57
|
-
end
|
|
58
|
-
end
|
|
59
|
-
end
|
|
60
|
-
end
|