nitro 0.31.0 → 0.40.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/nitro +135 -37
- data/doc/CHANGELOG.1 +108 -108
- data/doc/CHANGELOG.2 +89 -89
- data/doc/CHANGELOG.3 +105 -105
- data/{CHANGELOG → doc/CHANGELOG.4} +509 -509
- data/doc/{AUTHORS → CONTRIBUTORS} +49 -37
- data/doc/LIBRARIES +13 -0
- data/doc/LICENSE +2 -3
- data/doc/MIGRATION +45 -0
- data/doc/RELEASES +131 -11
- data/doc/TODO +67 -0
- data/lib/glue/magick.rb +0 -3
- data/lib/glue/sweeper.rb +30 -15
- data/lib/glue/thumbnails.rb +0 -2
- data/lib/glue/webfile.rb +23 -11
- data/lib/nitro.rb +37 -44
- data/lib/nitro/adapter/cgi.rb +0 -3
- data/lib/nitro/adapter/console.rb +0 -2
- data/lib/nitro/adapter/fastcgi.rb +6 -3
- data/lib/nitro/adapter/mongrel.rb +97 -58
- data/lib/nitro/adapter/script.rb +4 -6
- data/lib/nitro/adapter/webrick.rb +33 -87
- data/lib/nitro/adapter/webrick/vcr.rb +85 -0
- data/lib/nitro/caching.rb +0 -2
- data/lib/nitro/caching/actions.rb +0 -2
- data/lib/nitro/caching/fragments.rb +0 -2
- data/lib/nitro/caching/output.rb +45 -16
- data/lib/nitro/caching/proxy.rb +49 -0
- data/lib/nitro/cgi.rb +3 -6
- data/lib/nitro/cgi/cookie.rb +0 -3
- data/lib/nitro/cgi/request.rb +67 -24
- data/lib/nitro/cgi/response.rb +0 -2
- data/lib/nitro/cgi/{sendfile.rb → send_file.rb} +7 -6
- data/lib/nitro/compiler.rb +62 -55
- data/lib/nitro/compiler/cleanup.rb +0 -3
- data/lib/nitro/compiler/elements.rb +31 -28
- data/lib/nitro/compiler/errors.rb +2 -5
- data/lib/nitro/compiler/include.rb +10 -8
- data/lib/nitro/compiler/layout.rb +0 -2
- data/lib/nitro/compiler/localization.rb +0 -2
- data/lib/nitro/compiler/markup.rb +14 -6
- data/lib/nitro/compiler/morphing.rb +1 -5
- data/lib/nitro/compiler/script.rb +2 -4
- data/lib/nitro/compiler/squeeze.rb +0 -2
- data/lib/nitro/compiler/xslt.rb +0 -2
- data/lib/nitro/context.rb +10 -5
- data/lib/nitro/control.rb +18 -0
- data/lib/nitro/control/attribute.rb +88 -0
- data/lib/nitro/control/attribute/checkbox.rb +19 -0
- data/lib/nitro/control/attribute/datetime.rb +21 -0
- data/lib/nitro/control/attribute/file.rb +20 -0
- data/lib/nitro/control/attribute/fixnum.rb +26 -0
- data/lib/nitro/control/attribute/float.rb +26 -0
- data/lib/nitro/control/attribute/options.rb +38 -0
- data/lib/nitro/control/attribute/password.rb +16 -0
- data/lib/nitro/control/attribute/text.rb +16 -0
- data/lib/nitro/control/attribute/textarea.rb +16 -0
- data/lib/nitro/control/none.rb +16 -0
- data/lib/nitro/control/relation.rb +53 -0
- data/lib/nitro/control/relation/belongs_to.rb +0 -0
- data/lib/nitro/control/relation/has_many.rb +97 -0
- data/lib/nitro/control/relation/joins_many.rb +0 -0
- data/lib/nitro/control/relation/many_to_many.rb +0 -0
- data/lib/nitro/control/relation/refers_to.rb +29 -0
- data/lib/nitro/controller.rb +7 -296
- data/lib/nitro/dispatcher.rb +72 -34
- data/lib/nitro/element.rb +36 -10
- data/lib/nitro/element/javascript.rb +0 -2
- data/lib/nitro/flash.rb +23 -10
- data/lib/nitro/global.rb +36 -11
- data/lib/nitro/helper.rb +22 -8
- data/lib/nitro/helper/benchmark.rb +0 -2
- data/lib/nitro/helper/buffer.rb +0 -3
- data/lib/nitro/helper/css.rb +12 -0
- data/lib/nitro/helper/debug.rb +1 -3
- data/lib/nitro/helper/default.rb +1 -0
- data/lib/nitro/helper/feed.rb +400 -386
- data/lib/nitro/helper/form.rb +246 -116
- data/lib/nitro/helper/javascript.rb +28 -2
- data/lib/nitro/helper/javascript/morphing.rb +0 -2
- data/lib/nitro/helper/javascript/prototype.rb +0 -2
- data/lib/nitro/helper/javascript/scriptaculous.rb +0 -1
- data/lib/nitro/helper/layout.rb +0 -2
- data/lib/nitro/helper/navigation.rb +87 -0
- data/lib/nitro/helper/pager.rb +11 -22
- data/lib/nitro/helper/table.rb +9 -32
- data/lib/nitro/helper/url.rb +104 -0
- data/lib/nitro/helper/xhtml.rb +20 -4
- data/lib/nitro/helper/xml.rb +0 -2
- data/lib/nitro/markup.rb +131 -0
- data/lib/nitro/part.rb +52 -7
- data/lib/nitro/publishable.rb +328 -0
- data/lib/nitro/render.rb +30 -61
- data/lib/nitro/router.rb +12 -4
- data/lib/nitro/sanitize.rb +48 -0
- data/lib/nitro/scaffold.rb +9 -11
- data/lib/nitro/scaffold/controller.rb +25 -0
- data/lib/nitro/scaffold/model.rb +150 -0
- data/lib/nitro/scaffolding.rb +1 -3
- data/lib/nitro/server.rb +57 -32
- data/lib/nitro/server/drb.rb +16 -2
- data/lib/nitro/server/runner.rb +80 -102
- data/lib/nitro/service.rb +0 -1
- data/lib/nitro/service/xmlrpc.rb +0 -2
- data/lib/nitro/session.rb +26 -18
- data/lib/nitro/session/drb.rb +2 -16
- data/lib/nitro/session/memory.rb +0 -2
- data/lib/nitro/template.rb +219 -0
- data/lib/nitro/test/assertions.rb +1 -3
- data/lib/nitro/test/context.rb +0 -1
- data/lib/nitro/test/testcase.rb +0 -1
- data/lib/nitro/version.rb +6 -0
- data/lib/part/admin.rb +16 -0
- data/lib/part/admin/controller.rb +19 -0
- data/lib/part/admin/helper.rb +30 -0
- data/lib/part/admin/og/controller.rb +114 -0
- data/lib/part/admin/og/customize.rb +4 -0
- data/lib/part/admin/og/template/index.xhtml +27 -0
- data/lib/part/admin/og/template/list.xhtml +38 -0
- data/lib/part/admin/og/template/search.xhtml +20 -0
- data/lib/part/admin/og/template/update.xhtml +25 -0
- data/lib/part/admin/skin.rb +207 -0
- data/lib/part/admin/template/denied.xhtml +13 -0
- data/lib/part/admin/template/index.xhtml +12 -0
- data/lib/part/admin/todo.txt +2 -0
- data/proto/public/error.xhtml +4 -2
- data/proto/run.rb +0 -2
- data/test/glue/tc_webfile.rb +1 -0
- data/test/nitro/cgi/tc_request.rb +23 -0
- data/test/nitro/helper/tc_feed.rb +0 -3
- data/test/nitro/helper/tc_navbar.rb +74 -0
- data/test/nitro/helper/tc_table.rb +2 -0
- data/test/nitro/tc_cgi.rb +72 -19
- data/test/nitro/tc_controller.rb +35 -26
- data/test/nitro/tc_controller_aspect.rb +1 -0
- data/test/nitro/tc_controller_params.rb +864 -0
- data/test/nitro/tc_dispatcher.rb +2 -2
- data/test/nitro/tc_element.rb +16 -16
- data/test/nitro/tc_flash.rb +3 -3
- data/test/nitro/tc_markup.rb +31 -0
- data/test/nitro/tc_render.rb +12 -14
- data/test/nitro/tc_session.rb +9 -7
- data/test/nitro/tc_template.rb +34 -0
- metadata +217 -198
- data/INSTALL +0 -121
- data/ProjectInfo +0 -74
- data/README +0 -555
- data/doc/apache.txt +0 -9
- data/doc/config.txt +0 -28
- data/doc/faq.txt +0 -7
- data/doc/lhttpd.txt +0 -7
- data/lib/nitro/adapter/scgi.rb +0 -239
- data/lib/nitro/helper/form/builder.rb +0 -144
- data/lib/nitro/helper/form/controls.rb +0 -389
- data/lib/nitro/helper/rss.rb +0 -72
- data/proto/conf/apache.conf +0 -51
- data/proto/public/scaffold/advanced_search.xhtml +0 -30
- data/proto/public/scaffold/edit.xhtml +0 -11
- data/proto/public/scaffold/form.xhtml +0 -1
- data/proto/public/scaffold/index.xhtml +0 -20
- data/proto/public/scaffold/list.xhtml +0 -32
- data/proto/public/scaffold/new.xhtml +0 -11
- data/proto/public/scaffold/search.xhtml +0 -29
- data/proto/public/scaffold/view.xhtml +0 -8
- data/proto/script/scgi_ctl +0 -221
- data/proto/script/scgi_service +0 -128
- data/setup.rb +0 -1585
- data/src/part/admin.rb +0 -16
- data/src/part/admin/controller.rb +0 -81
- data/src/part/admin/skin.rb +0 -21
- data/src/part/admin/system.css +0 -135
- data/src/part/admin/template/denied.xhtml +0 -1
- data/src/part/admin/template/index.xhtml +0 -43
- data/test/nitro/helper/tc_rss.rb +0 -24
data/src/part/admin.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
require 'nitro/server'
|
2
|
-
|
3
|
-
require 'part/admin/controller'
|
4
|
-
require 'part/admin/skin'
|
5
|
-
|
6
|
-
Nitro::Server.map['/admin'] = AdminController
|
7
|
-
|
8
|
-
# The admin part.
|
9
|
-
|
10
|
-
class AdminPart
|
11
|
-
# The charset used in the admin pages.
|
12
|
-
|
13
|
-
setting :charset, :default => 'utf-8', :doc => 'The charset used in the admin pages'
|
14
|
-
end
|
15
|
-
|
16
|
-
# * George Moschovitis <gm@navel.gr>
|
@@ -1,81 +0,0 @@
|
|
1
|
-
require 'facet/kernel/constant'
|
2
|
-
require 'facet/time/stamp'
|
3
|
-
|
4
|
-
require 'nitro/controller'
|
5
|
-
|
6
|
-
# Provides an automatically generated Administration
|
7
|
-
# interface.
|
8
|
-
|
9
|
-
class AdminController < Nitro::Controller
|
10
|
-
|
11
|
-
# Run a simple security check function before each action
|
12
|
-
|
13
|
-
before :check_security, :except => [ :denied ]
|
14
|
-
|
15
|
-
# scaffold all the classes
|
16
|
-
|
17
|
-
scaffold_all
|
18
|
-
|
19
|
-
def self.setup_template_root(path)
|
20
|
-
super
|
21
|
-
@template_root << File.join(File.dirname(__FILE__), 'template')
|
22
|
-
end
|
23
|
-
|
24
|
-
# default method for controller
|
25
|
-
|
26
|
-
def index
|
27
|
-
@class_names = self.class.scaffolding_classes.keys.sort { |c1, c2| c1.name <=> c2.name }
|
28
|
-
@classes = self.class.scaffolding_classes
|
29
|
-
@settings = Configuration.settings.sort { |s1, s2| "#{s1.owner}.#{s1.name}" <=> "#{s2.owner}.#{s2.name}" }
|
30
|
-
end
|
31
|
-
|
32
|
-
# Delete all instances of the class.
|
33
|
-
# Useful in development mode.
|
34
|
-
|
35
|
-
def delete_all(klass)
|
36
|
-
constant(klass).delete_all
|
37
|
-
redirect_to_referer
|
38
|
-
end
|
39
|
-
|
40
|
-
# Drop the schema (typically the DB tables) used to
|
41
|
-
# store the class instances.
|
42
|
-
|
43
|
-
def destroy(klass)
|
44
|
-
constant(klass).destroy
|
45
|
-
redirect_to_referer
|
46
|
-
end
|
47
|
-
|
48
|
-
# fetch the css for this controller
|
49
|
-
# checks for a /system.css file and uses that if available
|
50
|
-
# otherwise uses system.css from the part/admin dir
|
51
|
-
|
52
|
-
def stylesheet(sheet='system')
|
53
|
-
sheet << ".css"
|
54
|
-
[Nitro::Server.public_root, File.dirname(__FILE__)].each do |path|
|
55
|
-
css_file = File.join(path, sheet)
|
56
|
-
if File.exists? css_file
|
57
|
-
response.content_type = 'text/css'
|
58
|
-
@out << File.read(css_file)
|
59
|
-
raise Nitro::RenderExit
|
60
|
-
end
|
61
|
-
end
|
62
|
-
raise RenderExit
|
63
|
-
end
|
64
|
-
alias_action :stylesheets, :stylesheet
|
65
|
-
|
66
|
-
private
|
67
|
-
|
68
|
-
# Overload in your application to suit your
|
69
|
-
# needs. The default implementation does NOT apply security
|
70
|
-
# in debug mode.The default implementation requires the
|
71
|
-
# existense of an :ADMIN key in the session, so you can
|
72
|
-
# easily integrate this in your user/roles management code.
|
73
|
-
|
74
|
-
def check_security
|
75
|
-
return true if Nitro::Runner.mode == :debug
|
76
|
-
redirect 'denied' unless session[:ADMIN]
|
77
|
-
end
|
78
|
-
|
79
|
-
end
|
80
|
-
|
81
|
-
# * George Moschovitis <gm@navel.gr>
|
data/src/part/admin/skin.rb
DELETED
@@ -1,21 +0,0 @@
|
|
1
|
-
require 'nitro/element'
|
2
|
-
|
3
|
-
class SystemPage < Nitro::Element
|
4
|
-
def render
|
5
|
-
%~
|
6
|
-
<html>
|
7
|
-
<head>
|
8
|
-
<title>System</title>
|
9
|
-
<base href="\#{context.host_url}\#{base}/" />
|
10
|
-
<meta http-equiv="content-type" content="text/html; charset=#{AdminPart.charset}" />
|
11
|
-
<link rel="stylesheet" href="stylesheet/system" type="text/css" media="screen" />
|
12
|
-
</head>
|
13
|
-
<body>
|
14
|
-
<h1>#@title</h1>
|
15
|
-
#{content}
|
16
|
-
<p>Powered by <a href="http://www.nitroproject.org">Nitro</a> version #{Nitro::Version}</p>
|
17
|
-
</body>
|
18
|
-
</html>
|
19
|
-
~
|
20
|
-
end
|
21
|
-
end
|
data/src/part/admin/system.css
DELETED
@@ -1,135 +0,0 @@
|
|
1
|
-
img {
|
2
|
-
border: none;
|
3
|
-
}
|
4
|
-
|
5
|
-
input {
|
6
|
-
border: 1px solid #ccc;
|
7
|
-
font-size: 12px;
|
8
|
-
background: #fff;
|
9
|
-
padding: 2px;
|
10
|
-
}
|
11
|
-
|
12
|
-
textarea {
|
13
|
-
border: 1px solid #ccc;
|
14
|
-
background: #fff;
|
15
|
-
padding: 2px;
|
16
|
-
}
|
17
|
-
|
18
|
-
input:hover, textarea:hover {
|
19
|
-
border: 1px solid #999;
|
20
|
-
}
|
21
|
-
|
22
|
-
input:focus, textarea:focus {
|
23
|
-
border: 1px solid #f00;
|
24
|
-
}
|
25
|
-
|
26
|
-
input.button {
|
27
|
-
color: #fff;
|
28
|
-
background: #999;
|
29
|
-
border: 1px solid #999;
|
30
|
-
font-weight: bold;
|
31
|
-
}
|
32
|
-
|
33
|
-
input.button:hover {
|
34
|
-
background: #f00;
|
35
|
-
border: 1px solid #f00;
|
36
|
-
}
|
37
|
-
|
38
|
-
select {
|
39
|
-
border: 1px solid #ccc;
|
40
|
-
}
|
41
|
-
|
42
|
-
table {
|
43
|
-
width: 100%;
|
44
|
-
border-collapse: collapse;
|
45
|
-
}
|
46
|
-
|
47
|
-
table th {
|
48
|
-
padding: 5px;
|
49
|
-
background: #eee;
|
50
|
-
border: 1px solid #ccc;
|
51
|
-
}
|
52
|
-
|
53
|
-
table td {
|
54
|
-
padding: 5px;
|
55
|
-
border: 1px solid #ccc;
|
56
|
-
}
|
57
|
-
|
58
|
-
/* --- forms --- */
|
59
|
-
|
60
|
-
form dl {
|
61
|
-
width: 100%;
|
62
|
-
margin: 0px;
|
63
|
-
}
|
64
|
-
|
65
|
-
form dt {
|
66
|
-
display: block;
|
67
|
-
margin: 0px;
|
68
|
-
margin-right: 10px;
|
69
|
-
padding-bottom: 10px;
|
70
|
-
font-weight: bold;
|
71
|
-
}
|
72
|
-
|
73
|
-
form dd {
|
74
|
-
display: block;
|
75
|
-
margin: 0px;
|
76
|
-
padding-bottom: 10px;
|
77
|
-
}
|
78
|
-
|
79
|
-
input {
|
80
|
-
border: 1px solid #ccc;
|
81
|
-
}
|
82
|
-
|
83
|
-
textarea {
|
84
|
-
width: 90%;
|
85
|
-
height: 200px;
|
86
|
-
}
|
87
|
-
|
88
|
-
/* --- pager --- */
|
89
|
-
|
90
|
-
.pager {
|
91
|
-
margin-top: 40px; margin-bottom: 50px;
|
92
|
-
border-top: 1px solid #ccc;
|
93
|
-
background-color: #f0f0f0;
|
94
|
-
}
|
95
|
-
|
96
|
-
.pager .first {
|
97
|
-
float: left;
|
98
|
-
padding: 5px;
|
99
|
-
}
|
100
|
-
|
101
|
-
.pager .previous {
|
102
|
-
float: left;
|
103
|
-
padding: 5px;
|
104
|
-
margin-left: 5px;
|
105
|
-
}
|
106
|
-
|
107
|
-
.pager .next {
|
108
|
-
float: right;
|
109
|
-
padding: 5px;
|
110
|
-
margin-right: 5px;
|
111
|
-
}
|
112
|
-
|
113
|
-
.pager .last {
|
114
|
-
float: right;
|
115
|
-
padding: 5px;
|
116
|
-
}
|
117
|
-
|
118
|
-
.pager ul {
|
119
|
-
float: left;
|
120
|
-
margin: 0px;
|
121
|
-
padding: 0px;
|
122
|
-
}
|
123
|
-
|
124
|
-
.pager li {
|
125
|
-
float: left;
|
126
|
-
display: inline;
|
127
|
-
padding: 5px;
|
128
|
-
padding-left: 10px;
|
129
|
-
padding-right: 10px;
|
130
|
-
background: none;
|
131
|
-
}
|
132
|
-
|
133
|
-
.pager li.active {
|
134
|
-
background-color: #ffa;
|
135
|
-
}
|
@@ -1 +0,0 @@
|
|
1
|
-
<strong>Access denied</strong>
|
@@ -1,43 +0,0 @@
|
|
1
|
-
<SystemPage>
|
2
|
-
<?r base = "#{@base}/%base%" ?>
|
3
|
-
<h1><a href='/'>Home</a> > System</h1>
|
4
|
-
|
5
|
-
<h2>Og managed classes</h2>
|
6
|
-
|
7
|
-
<table>
|
8
|
-
<tr>
|
9
|
-
<th>Class</th>
|
10
|
-
<th>Count</th>
|
11
|
-
<th colspan="2">Cleanup</th>
|
12
|
-
<th>Properties</th>
|
13
|
-
</tr>
|
14
|
-
<?r for c in @class_names ?>
|
15
|
-
<tr>
|
16
|
-
<td><a href="#@base/#{@classes[c][:plural_name]}/list">#{c.name}</a></td>
|
17
|
-
<td>#{c.count}</td>
|
18
|
-
<td><a href="delete_all/#{c.name}" onclick="return confirm('Delete all instances?')">delete</a></td>
|
19
|
-
<td><a href="destroy/#{c.name}" onclick="return confirm('Drop the schema?')">destroy</a></td>
|
20
|
-
<td width="100%">#{c.properties.values.join(', ')}</td>
|
21
|
-
</tr>
|
22
|
-
<?r end ?>
|
23
|
-
</table>
|
24
|
-
|
25
|
-
<h2>System configuration</h2>
|
26
|
-
|
27
|
-
<table width="100%">
|
28
|
-
<tr>
|
29
|
-
<th>Name</th>
|
30
|
-
<th>Value</th>
|
31
|
-
<th>Type</th>
|
32
|
-
<th>Description</th>
|
33
|
-
</tr>
|
34
|
-
<?r for s in @settings ?>
|
35
|
-
<tr>
|
36
|
-
<td>#{s.owner}.<strong>#{s.name}</strong></td>
|
37
|
-
<td>#{s.value.inspect}</td>
|
38
|
-
<td>#{s.type}</td>
|
39
|
-
<td>#{s.options[:doc]}</td>
|
40
|
-
</tr>
|
41
|
-
<?r end ?>
|
42
|
-
</table>
|
43
|
-
</SystemPage>
|
data/test/nitro/helper/tc_rss.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
require File.join(File.dirname(__FILE__), '..', 'CONFIG.rb')
|
2
|
-
|
3
|
-
require 'test/unit'
|
4
|
-
require 'nitro/helper/rss'
|
5
|
-
|
6
|
-
class TC_RssHelper < Test::Unit::TestCase # :nodoc: all
|
7
|
-
include Nitro
|
8
|
-
include RssHelper
|
9
|
-
|
10
|
-
Blog = Struct.new(:title, :body, :to_href)
|
11
|
-
|
12
|
-
def test_render
|
13
|
-
blogs = []
|
14
|
-
blogs << Blog.new('Hello1', 'World1', 'uri1');
|
15
|
-
blogs << Blog.new('Hello2', 'World2', 'uri2');
|
16
|
-
blogs << Blog.new('Hello3', 'World3', 'uri3');
|
17
|
-
|
18
|
-
rss = build_rss(blogs, :link => 'http://www.navel.gr')
|
19
|
-
|
20
|
-
assert_match %r{<link>http://www.navel.gr/uri1</link>}, rss
|
21
|
-
assert_match %r{<link>http://www.navel.gr/uri2</link>}, rss
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|