nitro 0.14.0 → 0.15.0
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/CHANGELOG +117 -0
- data/INSTALL +4 -0
- data/README +30 -31
- data/Rakefile +2 -2
- data/bin/nitro +10 -1
- data/bin/{new_app.rb → nitrogen} +12 -22
- data/doc/AUTHORS +4 -13
- data/doc/RELEASES +98 -0
- data/examples/ajax/run.rb +1 -3
- data/examples/blog/cache/entriesadmin +1 -1
- data/examples/blog/conf/locales/de.yml +4 -0
- data/examples/blog/conf/locales/en.yml +4 -0
- data/examples/blog/public/fcgi.rb +2 -3
- data/examples/blog/run.rb +10 -5
- data/examples/blog/src/controller.rb +21 -10
- data/examples/blog/src/mailer.rb +1 -1
- data/examples/blog/src/views/index.xhtml +2 -2
- data/examples/blog/src/xsl/style.xsl +6 -1
- data/examples/flash/run.rb +1 -3
- data/examples/no_xsl_blog/conf/locales/de.yml +4 -0
- data/examples/no_xsl_blog/conf/locales/en.yml +4 -0
- data/examples/no_xsl_blog/lib/blog/controller.rb +10 -0
- data/examples/no_xsl_blog/lib/blog/template.rb +4 -0
- data/examples/no_xsl_blog/public/fcgi.rb +2 -1
- data/examples/no_xsl_blog/public/index.xhtml +1 -1
- data/examples/no_xsl_blog/run.rb +8 -4
- data/examples/tiny/public/deep/dir/hello.xhtml +1 -0
- data/examples/tiny/public/fcgi.rb +2 -1
- data/examples/tiny/public/index.xhtml +5 -2
- data/examples/tiny/run.rb +1 -3
- data/examples/wee_style/run.rb +1 -3
- data/examples/why_wiki/run.rb +1 -3
- data/lib/nitro.rb +5 -2
- data/lib/nitro/builders/form.rb +8 -3
- data/lib/nitro/caching/stores.rb +3 -3
- data/lib/nitro/controller.rb +26 -6
- data/lib/nitro/dispatcher.rb +21 -13
- data/lib/nitro/environment.rb +23 -0
- data/lib/nitro/filters.rb +10 -8
- data/lib/nitro/localization.rb +127 -13
- data/lib/nitro/part.rb +24 -0
- data/lib/nitro/render.rb +19 -15
- data/lib/nitro/runner.rb +2 -1
- data/lib/nitro/scaffold.rb +69 -17
- data/lib/nitro/shaders.rb +54 -83
- data/lib/nitro/template.rb +7 -1
- data/proto/README +11 -0
- data/proto/conf/apache.conf +51 -0
- data/proto/conf/lhttpd.conf +107 -0
- data/proto/public/error.xhtml +56 -0
- data/proto/public/fcgi.rb +5 -0
- data/proto/public/index.xhtml +83 -0
- data/proto/public/js/ajax.js +63 -0
- data/proto/public/media/nitro.png +0 -0
- data/proto/run.rb +11 -0
- data/test/nitro/tc_controller.rb +1 -4
- data/test/nitro/tc_dispatcher.rb +8 -0
- data/test/nitro/tc_localization.rb +49 -0
- metadata +34 -6
- data/bin/new_form.rb +0 -54
data/examples/ajax/run.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
<div class="entry"><h2 class="date">March 28, 2005</h2><div class="post"><h3 class="title">kokok</h3>lalal<div class="footer">posted by George Moschovitis at <a href="view_entry/14">11:32 AM</a> | <a href="view_entry/14#comments">
|
1
|
+
<div class="entry"><h2 class="date">March 28, 2005</h2><div class="post"><h3 class="title">kokok</h3>lalal<div class="footer">posted by George Moschovitis at <a href="view_entry/14">11:32 AM</a> | <a href="view_entry/14#comments">4 comments</a>.</div></div></div><div class="entry"><h2 class="date">March 28, 2005</h2><div class="post"><h3 class="title">UNCACHE</h3>it bastard<div class="footer">posted by at <a href="view_entry/13">11:31 AM</a> | <a href="view_entry/13#comments">0 comments</a>.</div></div></div><div class="entry"><h2 class="date">March 28, 2005</h2><div class="post"><h3 class="title">UNCACHE</h3>it bastard<div class="footer">posted by George Moschovitis at <a href="view_entry/12">11:26 AM</a> | <a href="view_entry/12#comments">0 comments</a>.</div></div></div><div class="pager">
|
2
2
|
<div class="last"><a href="/?__pgentries=4">Last</a></div>
|
3
3
|
<div class="next"><a href="/?__pgentries=2">Next</a></div>
|
4
4
|
<ul>
|
data/examples/blog/run.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# * George Moschovitis <gm@navel.gr>
|
2
2
|
# (c) 2004-2005 Navel, all rights reserved.
|
3
|
-
# $Id: run.rb
|
4
|
-
|
5
|
-
Dir.chdir File.dirname(__FILE__); $:.unshift 'src'
|
3
|
+
# $Id: run.rb 339 2005-04-01 14:02:14Z gmosx $
|
6
4
|
|
7
5
|
require 'nitro'
|
8
6
|
require 'og'
|
@@ -16,6 +14,11 @@ include N
|
|
16
14
|
# Session.store_type = :drb
|
17
15
|
Caching::Fragments.store = Caching::FileStore.new
|
18
16
|
|
17
|
+
Localization.add(
|
18
|
+
:en => 'conf/locales/en.yml',
|
19
|
+
:de => 'conf/locales/de.yml'
|
20
|
+
)
|
21
|
+
|
19
22
|
runner = Runner.new.setup
|
20
23
|
|
21
24
|
db = Og::Database.new(
|
@@ -30,8 +33,10 @@ db = Og::Database.new(
|
|
30
33
|
)
|
31
34
|
|
32
35
|
Rendering.shader = XSLTShader.new('src/xsl/style.xsl',
|
33
|
-
|
34
|
-
|
36
|
+
LocalizationShader.new(
|
37
|
+
RubyShader.new(
|
38
|
+
CompressShader.new
|
39
|
+
)
|
35
40
|
)
|
36
41
|
)
|
37
42
|
|
@@ -1,9 +1,10 @@
|
|
1
1
|
# * George Moschovitis <gm@navel.gr>
|
2
2
|
# (c) 2004-2005 Navel, all rights reserved.
|
3
|
-
# $Id: controller.rb
|
3
|
+
# $Id: controller.rb 335 2005-03-31 14:02:02Z gmosx $
|
4
4
|
|
5
5
|
require 'nitro/controller'
|
6
6
|
require 'nitro/ui/pager'
|
7
|
+
require 'nitro/localization'
|
7
8
|
|
8
9
|
require 'mailer'
|
9
10
|
require 'models/blog'
|
@@ -11,20 +12,20 @@ require 'models/blog'
|
|
11
12
|
# The controller of the Blog part.
|
12
13
|
|
13
14
|
class BlogController < N::Controller
|
14
|
-
|
15
|
+
|
16
|
+
before_filter LocalizationFilter
|
15
17
|
before_filter :get_errors
|
16
|
-
after_filter :
|
18
|
+
after_filter :cache_invalidate, :only => [ :new_entry, :new_comment ]
|
17
19
|
|
18
20
|
scaffold BlogEntry, :name => 'entry', :index => true # , :nosuffix => true
|
19
21
|
scaffold Comment
|
20
22
|
|
21
23
|
# as an example of full page caching.
|
22
24
|
# cache_output :index
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
end
|
25
|
+
|
26
|
+
# Override the template root for this controller.
|
27
|
+
|
28
|
+
@template_root = 'src/views'
|
28
29
|
|
29
30
|
def list_entry
|
30
31
|
@pager = UI::Pager.new('entries', request, 3)
|
@@ -99,7 +100,17 @@ class BlogController < N::Controller
|
|
99
100
|
session.delete(:owner)
|
100
101
|
session.delete(:username)
|
101
102
|
end
|
102
|
-
|
103
|
+
|
104
|
+
def toggle_locale
|
105
|
+
cache_invalidate
|
106
|
+
|
107
|
+
if session[:LOCALE] == :de
|
108
|
+
session[:LOCALE] = :en
|
109
|
+
else
|
110
|
+
session[:LOCALE] = :de
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
103
114
|
private
|
104
115
|
|
105
116
|
# A helper prefilter, autocleans session errors.
|
@@ -114,7 +125,7 @@ private
|
|
114
125
|
|
115
126
|
# Invalidates the cache.
|
116
127
|
|
117
|
-
def
|
128
|
+
def cache_invalidate
|
118
129
|
# gmosx: will be improved.
|
119
130
|
expire_fragment('entriesadmin')
|
120
131
|
expire_fragment('entriesadmintrue')
|
data/examples/blog/src/mailer.rb
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
<h3 class="title">#{entry.title}</h3>
|
15
15
|
#{entry.body}
|
16
16
|
<div class="footer">
|
17
|
-
posted by #{entry.author} at <a href="#{entry.view_uri}">#{entry.create_time.strftime('%R %p')}</a> |
|
17
|
+
[[posted by]] #{entry.author} at <a href="#{entry.view_uri}">#{entry.create_time.strftime('%R %p')}</a> |
|
18
18
|
<a href="#{entry.view_uri}#comments">#{entry.comments_count} comments</a>.
|
19
19
|
<?r if session[:owner] ?>
|
20
20
|
[<a href="del_entry?oid=#{entry.oid}">del</a>]
|
@@ -36,7 +36,7 @@
|
|
36
36
|
|
37
37
|
<?r end ?>
|
38
38
|
|
39
|
-
<?r
|
39
|
+
<?r if session[:owner] ?>
|
40
40
|
<render href="entry_form" />
|
41
41
|
<?r end ?>
|
42
42
|
|
@@ -5,7 +5,7 @@ A Simple Shader
|
|
5
5
|
|
6
6
|
* George Moschovitis <gm@navel.gr>
|
7
7
|
(c) 2004-2005 Navel, all rights reserved.
|
8
|
-
$Id: style.xsl
|
8
|
+
$Id: style.xsl 335 2005-03-31 14:02:02Z gmosx $
|
9
9
|
-->
|
10
10
|
|
11
11
|
<!DOCTYPE shader
|
@@ -88,11 +88,16 @@ $Id: style.xsl 313 2005-03-16 19:18:09Z gmosx $
|
|
88
88
|
This is a simple blog powered by <a href="http://www.navel.gr/nitro">
|
89
89
|
Nitro</a> Web Engine. Have a look at the source code and enjoy the
|
90
90
|
power of Ruby.
|
91
|
+
|
91
92
|
<ruby>unless session[:owner]</ruby>
|
92
93
|
<p><a href="login">Login</a> as owner.</p>
|
93
94
|
<ruby>else</ruby>
|
94
95
|
<p><a href="logout">Logout</a>.</p>
|
95
96
|
<ruby>end</ruby>
|
97
|
+
|
98
|
+
<p>
|
99
|
+
<b>[[Language]]</b>: #{session[:LOCALE] || :en} (<a href="toggle_locale">change</a>)
|
100
|
+
</p>
|
96
101
|
|
97
102
|
<xsl:apply-templates select="x:cell[@id='side']" />
|
98
103
|
|
data/examples/flash/run.rb
CHANGED
@@ -5,6 +5,7 @@
|
|
5
5
|
require 'nitro/controller'
|
6
6
|
require 'nitro/builders/rss'
|
7
7
|
require 'nitro/ui/pager'
|
8
|
+
require 'nitro/localization'
|
8
9
|
|
9
10
|
require 'lib/blog/model'
|
10
11
|
require 'lib/blog/template'
|
@@ -14,6 +15,7 @@ require 'lib/blog/template'
|
|
14
15
|
class BlogController < N::Controller
|
15
16
|
include BlogTemplate
|
16
17
|
|
18
|
+
before_filter LocalizationFilter
|
17
19
|
before_filter :get_errors
|
18
20
|
# after_filter :cache
|
19
21
|
|
@@ -78,6 +80,14 @@ class BlogController < N::Controller
|
|
78
80
|
session.delete(:username)
|
79
81
|
end
|
80
82
|
|
83
|
+
def toggle_locale
|
84
|
+
if session[:LOCALE] == :de
|
85
|
+
session[:LOCALE] = :en
|
86
|
+
else
|
87
|
+
session[:LOCALE] = :de
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
81
91
|
private
|
82
92
|
|
83
93
|
# A helper prefilter, autocleans session errors.
|
@@ -93,6 +93,10 @@ module BlogTemplate
|
|
93
93
|
<p><a href="logout">Logout</a>.</p>
|
94
94
|
} end + %{
|
95
95
|
|
96
|
+
<p>
|
97
|
+
<b>Language</b>: #{session[:LOCALE] || :en} (<a href="toggle_locale">change</a>)
|
98
|
+
</p>
|
99
|
+
|
96
100
|
<h2>Linkage</h2>
|
97
101
|
<ul>
|
98
102
|
<li><a target="_new" href="http://www.navel.gr">Navel Ltd</a></li>
|
@@ -12,7 +12,7 @@
|
|
12
12
|
<h3 class="title">#{entry.title}</h3>
|
13
13
|
#{entry.body}
|
14
14
|
<div class="footer">
|
15
|
-
posted by #{entry.author} at <a href="#{entry.view_uri}">#{entry.create_time.strftime('%R %p')}</a> |
|
15
|
+
[[posted by]] #{entry.author} at <a href="#{entry.view_uri}">#{entry.create_time.strftime('%R %p')}</a> |
|
16
16
|
<a href="#{entry.view_uri}#comments">#{entry.comments_count} comments</a>.
|
17
17
|
<?r if session[:owner] ?>
|
18
18
|
[<a href="del_entry?oid=#{entry.oid}">del</a>]
|
data/examples/no_xsl_blog/run.rb
CHANGED
@@ -1,16 +1,20 @@
|
|
1
1
|
# * George Moschovitis <gm@navel.gr>
|
2
2
|
# (c) 2004-2005 Navel, all rights reserved.
|
3
|
-
# $Id: run.rb
|
4
|
-
|
5
|
-
Dir.chdir File.dirname(__FILE__)
|
3
|
+
# $Id: run.rb 339 2005-04-01 14:02:14Z gmosx $
|
6
4
|
|
7
5
|
require 'nitro'; include N
|
8
6
|
require 'og'
|
9
7
|
|
8
|
+
require 'nitro/localization'
|
10
9
|
require 'lib/blog'
|
11
10
|
|
12
11
|
runner = Runner.new.setup
|
13
12
|
|
13
|
+
Localization.add(
|
14
|
+
:en => 'conf/locales/en.yml',
|
15
|
+
:de => 'conf/locales/de.yml'
|
16
|
+
)
|
17
|
+
|
14
18
|
db = Og::Database.new(
|
15
19
|
# :address => 'localhost',
|
16
20
|
:adapter => 'mysql',
|
@@ -25,7 +29,7 @@ db = Og::Database.new(
|
|
25
29
|
|
26
30
|
dispatcher = Dispatcher.new(BlogController, :xml => 'text/xml')
|
27
31
|
|
28
|
-
Rendering.shader = RubyShader.new(CompressShader.new)
|
32
|
+
Rendering.shader = LocalizationShader.new(RubyShader.new(CompressShader.new))
|
29
33
|
|
30
34
|
conf = Conf.new(
|
31
35
|
:name => 'Blog sans XSLT',
|
@@ -0,0 +1 @@
|
|
1
|
+
<b>This is another include (deep).</b>
|
@@ -33,16 +33,19 @@
|
|
33
33
|
Counter: #{session[:counter]}
|
34
34
|
</p>
|
35
35
|
<render href="include" />
|
36
|
+
<p>
|
37
|
+
</p>
|
38
|
+
<render href="deep/dir/hello" />
|
36
39
|
<p>
|
37
40
|
<h3>Upload a picture</h3>
|
38
41
|
|
39
42
|
<form action="upload" method="post" enctype="multipart/form-data">
|
40
43
|
<p>
|
41
|
-
<b>Title
|
44
|
+
<b>Title:</b><br />
|
42
45
|
<input type="text" name="title" />
|
43
46
|
</p>
|
44
47
|
<p>
|
45
|
-
<b>File
|
48
|
+
<b>File:</b><br />
|
46
49
|
<input type="file" name="file" />
|
47
50
|
</p>
|
48
51
|
<input type="submit" value="Upload" />
|
data/examples/tiny/run.rb
CHANGED
data/examples/wee_style/run.rb
CHANGED
@@ -1,8 +1,6 @@
|
|
1
1
|
# * George Moschovitis <gm@navel.gr>
|
2
2
|
# (c) 2004-2005 Navel, all rights reserved.
|
3
|
-
# $Id: run.rb
|
4
|
-
|
5
|
-
Dir.chdir File.dirname(__FILE__)
|
3
|
+
# $Id: run.rb 339 2005-04-01 14:02:14Z gmosx $
|
6
4
|
|
7
5
|
require 'nitro'; include N
|
8
6
|
require 'nitro/adapters/webrick'
|
data/examples/why_wiki/run.rb
CHANGED
data/lib/nitro.rb
CHANGED
@@ -12,7 +12,7 @@
|
|
12
12
|
#
|
13
13
|
# * George Moschovitis <gm@navel.gr>
|
14
14
|
# (c) 2004-2005 Navel, all rights reserved.
|
15
|
-
# $Id: nitro.rb
|
15
|
+
# $Id: nitro.rb 340 2005-04-04 08:26:58Z gmosx $
|
16
16
|
|
17
17
|
require 'glue'
|
18
18
|
require 'glue/logger'
|
@@ -23,7 +23,7 @@ module Nitro
|
|
23
23
|
|
24
24
|
# The version.
|
25
25
|
|
26
|
-
Version = '0.
|
26
|
+
Version = '0.15.0'
|
27
27
|
|
28
28
|
# Library path.
|
29
29
|
|
@@ -39,3 +39,6 @@ require 'nitro/render'
|
|
39
39
|
require 'nitro/conf'
|
40
40
|
require 'nitro/runner'
|
41
41
|
require 'nitro/component'
|
42
|
+
require 'nitro/part'
|
43
|
+
|
44
|
+
require 'nitro/environment' unless $NITRO_NO_ENVIRONMENT
|
data/lib/nitro/builders/form.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# * George Moschovitis <gm@navel.gr>
|
2
2
|
# (c) 2004-2005 Navel, all rights reserved.
|
3
|
-
# $Id: form.rb
|
3
|
+
# $Id: form.rb 335 2005-03-31 14:02:02Z gmosx $
|
4
4
|
|
5
5
|
require 'glue/hash'
|
6
6
|
require 'nitro/markup'
|
@@ -67,9 +67,14 @@ module FormBuilderMixin
|
|
67
67
|
<input type="checkbox" id="#{p.name}" name="#{p.name}" />
|
68
68
|
</dd>
|
69
69
|
}
|
70
|
-
=begin
|
71
70
|
elsif p.klass.ancestors.include?(Time)
|
72
|
-
|
71
|
+
str << %{
|
72
|
+
<dt><label for="#{p.name}">#{p.name}</label></dt>
|
73
|
+
<dd>
|
74
|
+
<input type="text" id="#{p.name}" name="#{p.name}" value="#{obj.send(p.symbol)}" />
|
75
|
+
</dd>
|
76
|
+
}
|
77
|
+
=begin
|
73
78
|
elsif p.klass.ancestors.include?(Date)
|
74
79
|
return %|#\{@#{p.symbol} ? "'#\{Og::Utils.date(@#{p.symbol})\}'" : 'NULL'\}|
|
75
80
|
else
|
data/lib/nitro/caching/stores.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
# * George Moschovitis <gm@navel.gr>
|
2
2
|
# (c) 2004-2005 Navel, all rights reserved.
|
3
|
-
# $Id: stores.rb
|
3
|
+
# $Id: stores.rb 335 2005-03-31 14:02:02Z gmosx $
|
4
4
|
|
5
5
|
require 'fileutils'
|
6
6
|
|
@@ -36,8 +36,8 @@ module Caching
|
|
36
36
|
class FileStore
|
37
37
|
cattr_accessor :cache_root, 'cache'
|
38
38
|
|
39
|
-
def initialize(cache_root =
|
40
|
-
@cache_root =
|
39
|
+
def initialize(cache_root = FileStore.cache_root)
|
40
|
+
@cache_root = cache_root
|
41
41
|
end
|
42
42
|
|
43
43
|
def read(name, options = {})
|