nitro 0.17.0 → 0.18.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 +124 -0
- data/README +2 -2
- data/Rakefile +4 -12
- data/bin/nitro +1 -1
- data/bin/nitrogen +47 -31
- data/doc/AUTHORS +3 -3
- data/doc/RELEASES +50 -1
- data/examples/README +7 -0
- data/lib/nitro.rb +5 -4
- data/lib/nitro/{adapters → adapter}/cgi.rb +2 -4
- data/lib/nitro/{adapters → adapter}/fastcgi.rb +1 -1
- data/lib/nitro/{adapters → adapter}/webrick.rb +5 -10
- data/lib/nitro/buffering.rb +6 -0
- data/lib/nitro/{builders → builder}/atom.rb +1 -5
- data/lib/nitro/{builders → builder}/form.rb +1 -5
- data/lib/nitro/{builders → builder}/rss.rb +3 -1
- data/lib/nitro/{builders → builder}/table.rb +2 -4
- data/lib/nitro/{builders → builder}/xhtml.rb +3 -5
- data/lib/nitro/{builders → builder}/xml.rb +2 -4
- data/lib/nitro/caching.rb +6 -4
- data/lib/nitro/caching/output.rb +18 -11
- data/lib/nitro/context.rb +3 -1
- data/lib/nitro/controller.rb +29 -18
- data/lib/nitro/dispatcher.rb +2 -4
- data/lib/nitro/element.rb +2 -0
- data/lib/nitro/environment.rb +2 -4
- data/lib/nitro/errors.rb +69 -0
- data/lib/nitro/mail.rb +2 -4
- data/lib/nitro/markup.rb +20 -3
- data/lib/nitro/output.rb +5 -9
- data/lib/nitro/part.rb +2 -3
- data/lib/nitro/render.rb +49 -30
- data/lib/nitro/request.rb +2 -1
- data/lib/nitro/runner.rb +23 -12
- data/lib/nitro/scaffold.rb +5 -3
- data/lib/nitro/service.rb +22 -0
- data/lib/nitro/service/xmlrpc.rb +42 -0
- data/lib/nitro/session.rb +2 -4
- data/lib/nitro/template.rb +8 -10
- data/lib/nitro/testing.rb +0 -4
- data/proto/public/error.xhtml +27 -2
- data/test/nitro/{adapters → adapter}/raw_post1.bin +0 -0
- data/test/nitro/{adapters → adapter}/tc_cgi.rb +1 -1
- data/test/nitro/{adapters → adapter}/tc_webrick.rb +1 -1
- data/test/nitro/{builders → builder}/tc_atom.rb +1 -1
- data/test/nitro/{builders → builder}/tc_rss.rb +1 -1
- data/test/nitro/{builders → builder}/tc_table.rb +1 -1
- data/test/nitro/{builders → builder}/tc_xhtml.rb +1 -1
- data/test/nitro/{builders → builder}/tc_xml.rb +1 -1
- data/test/nitro/tc_caching.rb +18 -0
- data/test/nitro/tc_controller.rb +1 -1
- data/test/nitro/tc_mail.rb +3 -1
- metadata +33 -168
- data/examples/README.windows +0 -9
- data/examples/ajax/controller.rb +0 -21
- data/examples/ajax/public/index.xhtml +0 -72
- data/examples/ajax/public/js/ajax.js +0 -64
- data/examples/ajax/run.rb +0 -14
- data/examples/blog/README +0 -70
- data/examples/blog/conf/apache.conf +0 -30
- data/examples/blog/conf/apache.conf.new +0 -53
- data/examples/blog/conf/lhttpd.conf +0 -79
- data/examples/blog/conf/locales/de.yml +0 -4
- data/examples/blog/conf/locales/en.yml +0 -4
- data/examples/blog/log/README +0 -3
- data/examples/blog/log/apache.error_log +0 -6647
- data/examples/blog/log/rewrite_log +0 -161
- data/examples/blog/public/base.xsl +0 -153
- data/examples/blog/public/fcgi.rb +0 -5
- data/examples/blog/public/m/bubbles.gif +0 -0
- data/examples/blog/public/m/comments_curve.gif +0 -0
- data/examples/blog/public/m/down.gif +0 -0
- data/examples/blog/public/m/footer_bg.gif +0 -0
- data/examples/blog/public/m/garrow.gif +0 -0
- data/examples/blog/public/m/gbull.gif +0 -0
- data/examples/blog/public/m/grbull.gif +0 -0
- data/examples/blog/public/m/h1_bg.gif +0 -0
- data/examples/blog/public/m/header_bg.gif +0 -0
- data/examples/blog/public/m/nitro.gif +0 -0
- data/examples/blog/public/m/obull.gif +0 -0
- data/examples/blog/public/m/page_bg.gif +0 -0
- data/examples/blog/public/m/rss.gif +0 -0
- data/examples/blog/public/m/side_title_bg.gif +0 -0
- data/examples/blog/public/m/sidebar_bg.gif +0 -0
- data/examples/blog/public/style.css +0 -305
- data/examples/blog/run.rb +0 -43
- data/examples/blog/src/blog.rb +0 -21
- data/examples/blog/src/controller.rb +0 -151
- data/examples/blog/src/mailer.rb +0 -23
- data/examples/blog/src/models/blog.rb +0 -33
- data/examples/blog/src/models/content.rb +0 -18
- data/examples/blog/src/views/blog_entry_email.xhtml +0 -16
- data/examples/blog/src/views/comments.xhtml +0 -36
- data/examples/blog/src/views/entry_form.xhtml +0 -22
- data/examples/blog/src/views/error.xhtml +0 -56
- data/examples/blog/src/views/index.xhtml +0 -49
- data/examples/blog/src/views/login.xhtml +0 -26
- data/examples/blog/src/views/recent_posts.xhtml +0 -14
- data/examples/blog/src/views/view_entry.xhtml +0 -37
- data/examples/blog/src/views/view_entry.xml +0 -12
- data/examples/blog/src/xsl/base.xsl +0 -160
- data/examples/blog/src/xsl/style.xsl +0 -143
- data/examples/blog/test/tc_blog.rb +0 -43
- data/examples/flash/log/README +0 -3
- data/examples/flash/root/index.xhtml +0 -16
- data/examples/flash/root/show_inline_text.xhtml +0 -17
- data/examples/flash/run.rb +0 -7
- data/examples/no_xsl_blog/README +0 -24
- data/examples/no_xsl_blog/conf/apache.conf +0 -30
- data/examples/no_xsl_blog/conf/lhttpd.conf +0 -79
- data/examples/no_xsl_blog/conf/locales/de.yml +0 -4
- data/examples/no_xsl_blog/conf/locales/en.yml +0 -4
- data/examples/no_xsl_blog/lib/blog.rb +0 -16
- data/examples/no_xsl_blog/lib/blog/controller.rb +0 -116
- data/examples/no_xsl_blog/lib/blog/model.rb +0 -35
- data/examples/no_xsl_blog/lib/blog/template.rb +0 -138
- data/examples/no_xsl_blog/lib/content.rb +0 -47
- data/examples/no_xsl_blog/log/README +0 -3
- data/examples/no_xsl_blog/log/apache.error_log +0 -473
- data/examples/no_xsl_blog/public/comments.xhtml +0 -36
- data/examples/no_xsl_blog/public/entry_form.xhtml +0 -22
- data/examples/no_xsl_blog/public/fcgi.rb +0 -5
- data/examples/no_xsl_blog/public/index.xhtml +0 -39
- data/examples/no_xsl_blog/public/login.xhtml +0 -21
- data/examples/no_xsl_blog/public/m/bubbles.gif +0 -0
- data/examples/no_xsl_blog/public/m/comments_curve.gif +0 -0
- data/examples/no_xsl_blog/public/m/down.gif +0 -0
- data/examples/no_xsl_blog/public/m/footer_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/garrow.gif +0 -0
- data/examples/no_xsl_blog/public/m/gbull.gif +0 -0
- data/examples/no_xsl_blog/public/m/grbull.gif +0 -0
- data/examples/no_xsl_blog/public/m/h1_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/header_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/nitro.gif +0 -0
- data/examples/no_xsl_blog/public/m/obull.gif +0 -0
- data/examples/no_xsl_blog/public/m/page_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/rss.gif +0 -0
- data/examples/no_xsl_blog/public/m/side_title_bg.gif +0 -0
- data/examples/no_xsl_blog/public/m/sidebar_bg.gif +0 -0
- data/examples/no_xsl_blog/public/recent_posts.xhtml +0 -14
- data/examples/no_xsl_blog/public/style.css +0 -299
- data/examples/no_xsl_blog/public/view_entry.xhtml +0 -25
- data/examples/no_xsl_blog/public/view_entry.xml +0 -12
- data/examples/no_xsl_blog/run.rb +0 -35
- data/examples/tiny/README +0 -14
- data/examples/tiny/conf/apache.conf +0 -30
- data/examples/tiny/conf/lhttpd.conf +0 -79
- data/examples/tiny/log/README +0 -3
- data/examples/tiny/log/apache.error_log +0 -154
- data/examples/tiny/public/deep/dir/hello.xhtml +0 -3
- data/examples/tiny/public/fcgi.rb +0 -5
- data/examples/tiny/public/include.xhtml +0 -3
- data/examples/tiny/public/index.xhtml +0 -55
- data/examples/tiny/public/nitro.png +0 -0
- data/examples/tiny/public/upload.xhtml +0 -21
- data/examples/tiny/run.rb +0 -7
- data/examples/wee_style/README +0 -10
- data/examples/wee_style/run.rb +0 -50
- data/examples/why_wiki/README +0 -5
- data/examples/why_wiki/run.rb +0 -59
- data/proto/public/js/ajax.js +0 -63
data/examples/blog/run.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
1
|
-
require 'nitro'
|
|
2
|
-
require 'og'
|
|
3
|
-
|
|
4
|
-
require 'blog'
|
|
5
|
-
|
|
6
|
-
include Nitro
|
|
7
|
-
|
|
8
|
-
Nitro.run do |conf|
|
|
9
|
-
# Og.create_schema = false
|
|
10
|
-
# Session.store_type = :drb
|
|
11
|
-
Caching::Fragments.store = Caching::FileStore.new
|
|
12
|
-
|
|
13
|
-
Localization.add(
|
|
14
|
-
:en => 'conf/locales/en.yml',
|
|
15
|
-
:de => 'conf/locales/de.yml'
|
|
16
|
-
)
|
|
17
|
-
|
|
18
|
-
Og.setup(
|
|
19
|
-
:store => 'psql',
|
|
20
|
-
:name => 'blog',
|
|
21
|
-
:user => 'postgres',
|
|
22
|
-
:password => 'navelrulez'
|
|
23
|
-
)
|
|
24
|
-
|
|
25
|
-
Rendering.shader = XSLTShader.new('src/xsl/style.xsl',
|
|
26
|
-
LocalizationShader.new(
|
|
27
|
-
RubyShader.new(
|
|
28
|
-
CompressShader.new
|
|
29
|
-
)
|
|
30
|
-
)
|
|
31
|
-
)
|
|
32
|
-
|
|
33
|
-
conf.dispatcher = Dispatcher.new(
|
|
34
|
-
:root => BlogController,
|
|
35
|
-
'xml' => XmlController
|
|
36
|
-
)
|
|
37
|
-
|
|
38
|
-
conf.set(
|
|
39
|
-
:name => 'Nitro Blog',
|
|
40
|
-
:host => '127.0.0.1',
|
|
41
|
-
:port => 9999
|
|
42
|
-
)
|
|
43
|
-
end
|
data/examples/blog/src/blog.rb
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
# * George Moschovitis <gm@navel.gr>
|
|
2
|
-
# (c) 2004-2005 Navel, all rights reserved.
|
|
3
|
-
# $Id: blog.rb 1 2005-04-11 11:04:30Z gmosx $
|
|
4
|
-
|
|
5
|
-
# A simple blog to demonstrate the power of Nitro.
|
|
6
|
-
|
|
7
|
-
class Blog
|
|
8
|
-
|
|
9
|
-
# The administrator username.
|
|
10
|
-
|
|
11
|
-
cattr_accessor :username, 'George Moschovitis'
|
|
12
|
-
|
|
13
|
-
# The administrator password.
|
|
14
|
-
|
|
15
|
-
cattr_accessor :password, 'mypassword'
|
|
16
|
-
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
require 'controller'
|
|
20
|
-
require 'mailer'
|
|
21
|
-
require 'models/blog'
|
|
@@ -1,151 +0,0 @@
|
|
|
1
|
-
require 'nitro/controller'
|
|
2
|
-
require 'nitro/ui/pager'
|
|
3
|
-
require 'nitro/localization'
|
|
4
|
-
|
|
5
|
-
require 'mailer'
|
|
6
|
-
require 'models/blog'
|
|
7
|
-
|
|
8
|
-
# The controller of the Blog part.
|
|
9
|
-
|
|
10
|
-
class BlogController < Nitro::Controller
|
|
11
|
-
|
|
12
|
-
pre :get_errors
|
|
13
|
-
post :cache_invalidate, :on => [ :new_entry, :new_comment, :del_entry, :del_comment ]
|
|
14
|
-
wrap Nitro::LocalizationAspect, :pre => :localize
|
|
15
|
-
|
|
16
|
-
# generate default BlogEntry related actions.
|
|
17
|
-
|
|
18
|
-
scaffold BlogEntry, :name => 'entry', :index => true # , :nosuffix => true
|
|
19
|
-
|
|
20
|
-
# generate default Comment related actions.
|
|
21
|
-
|
|
22
|
-
scaffold Comment
|
|
23
|
-
|
|
24
|
-
# as an example of full page caching.
|
|
25
|
-
# cache_output :index
|
|
26
|
-
|
|
27
|
-
# Override the template root for this controller.
|
|
28
|
-
|
|
29
|
-
@template_root = 'src/views'
|
|
30
|
-
|
|
31
|
-
def list_entry
|
|
32
|
-
@pager = UI::Pager.new('entries', request, 3)
|
|
33
|
-
@entries = BlogEntry.all(:order => 'oid DESC', :extra => @pager.sql_limit)
|
|
34
|
-
@pager.set(BlogEntry.count)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def new_entry
|
|
38
|
-
entry = request.fill(BlogEntry.new)
|
|
39
|
-
entry.author = session[:username]
|
|
40
|
-
|
|
41
|
-
unless entry.valid?
|
|
42
|
-
session[:errors] = entry.errors
|
|
43
|
-
redirect_referer '#new_entry'
|
|
44
|
-
end
|
|
45
|
-
entry.save!
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
# An example route.
|
|
49
|
-
|
|
50
|
-
# Example of action with parameter. The parameter
|
|
51
|
-
# request['oid'] is referenced by the oid method
|
|
52
|
-
# parameter. This also demonstrates implicit routing.
|
|
53
|
-
|
|
54
|
-
def myview
|
|
55
|
-
entry = BlogEntry[@oid]
|
|
56
|
-
@out << entry.title
|
|
57
|
-
end
|
|
58
|
-
action :myview, :route => /view\/(.*)/, 'oid' => 1
|
|
59
|
-
|
|
60
|
-
def mail_entry
|
|
61
|
-
entry = BlogEntry[request['oid']]
|
|
62
|
-
BlogMailer.deliver_blog_entry_email(request['to'], entry)
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def new_comment
|
|
66
|
-
comment = request.fill(Comment.new)
|
|
67
|
-
|
|
68
|
-
unless comment.valid?
|
|
69
|
-
session[:errors] = comment.errors
|
|
70
|
-
redirect_referer '#new_comment'
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
comment.save!
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def login
|
|
77
|
-
if password = request['password']
|
|
78
|
-
if password == Blog.password
|
|
79
|
-
session[:owner] = true
|
|
80
|
-
session[:username] = Blog.username
|
|
81
|
-
request.add_cookie 'nauth', 'just an example, not used :)'
|
|
82
|
-
redirect '/'
|
|
83
|
-
else
|
|
84
|
-
@error = 'Invalid password'
|
|
85
|
-
end
|
|
86
|
-
end
|
|
87
|
-
end
|
|
88
|
-
|
|
89
|
-
def logout
|
|
90
|
-
session.delete(:owner)
|
|
91
|
-
session.delete(:username)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def toggle_locale
|
|
95
|
-
cache_invalidate
|
|
96
|
-
|
|
97
|
-
if session[:LOCALE] == :de
|
|
98
|
-
session[:LOCALE] = :en
|
|
99
|
-
else
|
|
100
|
-
session[:LOCALE] = :de
|
|
101
|
-
end
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
private
|
|
105
|
-
|
|
106
|
-
# A helper prefilter, autocleans session errors.
|
|
107
|
-
# Used as an example.
|
|
108
|
-
|
|
109
|
-
def get_errors
|
|
110
|
-
# gmosx: should better implement top-level filters!
|
|
111
|
-
if errors = session.delete(:errors)
|
|
112
|
-
@errors = errors
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
# Invalidates the cache.
|
|
117
|
-
|
|
118
|
-
def cache_invalidate
|
|
119
|
-
# gmosx: will be improved.
|
|
120
|
-
expire_fragment('entriesadmin')
|
|
121
|
-
expire_fragment('entriesadmintrue')
|
|
122
|
-
end
|
|
123
|
-
end
|
|
124
|
-
|
|
125
|
-
# A special controller for that presents
|
|
126
|
-
# the blog content using XML (RSS). This controller
|
|
127
|
-
# reuses the BlogController actions but adds
|
|
128
|
-
# XML templates.
|
|
129
|
-
|
|
130
|
-
class XmlController < BlogController
|
|
131
|
-
@base = 'xml'
|
|
132
|
-
@content_type = 'text/xml'
|
|
133
|
-
@template_root = 'src/views/xml'
|
|
134
|
-
|
|
135
|
-
# This is the prefered way to add programmatically
|
|
136
|
-
# generated output. The method list_entry_template is
|
|
137
|
-
# called after list_entry.
|
|
138
|
-
|
|
139
|
-
def list_entry_template
|
|
140
|
-
o.build_rss(@entries, :description => 'Blog entries', :link => context.host_url)
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
# Another way to overload the method for RSS output.
|
|
144
|
-
# Not that flexible though.
|
|
145
|
-
|
|
146
|
-
def list_comment
|
|
147
|
-
super
|
|
148
|
-
o.build_rss(@comments, :description => 'Blog comments', :link => context.host_url)
|
|
149
|
-
end
|
|
150
|
-
end
|
|
151
|
-
|
data/examples/blog/src/mailer.rb
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
# * George Moschovitis <gm@navel.gr>
|
|
2
|
-
# (c) 2004-2005 Navel, all rights reserved.
|
|
3
|
-
# $Id: mailer.rb 1 2005-04-11 11:04:30Z gmosx $
|
|
4
|
-
|
|
5
|
-
require 'nitro/mail'
|
|
6
|
-
|
|
7
|
-
# A simple mailer.
|
|
8
|
-
|
|
9
|
-
class BlogMailer < Nitro::Mailer
|
|
10
|
-
|
|
11
|
-
def initialize(*p)
|
|
12
|
-
super(*p)
|
|
13
|
-
@template_root = 'src/views'
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def blog_entry_email(to, entry)
|
|
17
|
-
@from = 'system@blog.com'
|
|
18
|
-
@to = to
|
|
19
|
-
@subject = "Blog Entry: #{entry.title}"
|
|
20
|
-
@body.entry = entry
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
end
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
require 'models/content'
|
|
2
|
-
|
|
3
|
-
# Forward reference to the Comment definition.
|
|
4
|
-
|
|
5
|
-
class Comment; end
|
|
6
|
-
|
|
7
|
-
# Common properties/methods for the other classes.
|
|
8
|
-
# Since markup is required, automatically handles
|
|
9
|
-
# the markup expanding/compacting for the body.
|
|
10
|
-
|
|
11
|
-
module Common
|
|
12
|
-
include BaseContent
|
|
13
|
-
include CreateTime
|
|
14
|
-
|
|
15
|
-
prop_accessor :author, String
|
|
16
|
-
validate_value :body
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
# An entry in the Blog.
|
|
20
|
-
|
|
21
|
-
class BlogEntry
|
|
22
|
-
include Common
|
|
23
|
-
has_many :comments, Comment, :foreign_name => 'entry'
|
|
24
|
-
validate_value :title, :msg => 'Please provide a title'
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
# A comment to the blog entry.
|
|
28
|
-
|
|
29
|
-
class Comment
|
|
30
|
-
include Common
|
|
31
|
-
belongs_to :entry, BlogEntry
|
|
32
|
-
validate_value :author, :msg => 'Please enter your name'
|
|
33
|
-
end
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
require 'nitro/markup'
|
|
2
|
-
|
|
3
|
-
# The foundamental Content Unit.
|
|
4
|
-
|
|
5
|
-
module BaseContent
|
|
6
|
-
include Nitro::Markup
|
|
7
|
-
prop_accessor :title, String
|
|
8
|
-
prop_accessor :body, String, :markup => true, :ui => :textarea
|
|
9
|
-
end
|
|
10
|
-
|
|
11
|
-
# CreateTime mixin.
|
|
12
|
-
|
|
13
|
-
module CreateTime
|
|
14
|
-
prop_accessor :create_time, Time
|
|
15
|
-
prop_accessor :update_time, Time
|
|
16
|
-
pre "@create_time = @update_time = Time.now", :on => :og_insert
|
|
17
|
-
pre "@update_time = Time.now", :on => :og_update
|
|
18
|
-
end
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0"?>
|
|
2
|
-
|
|
3
|
-
<root xmlns:x="http://www.navel.gr/xml/shader.xsd">
|
|
4
|
-
|
|
5
|
-
<h2>#{@entry.comments.size} Comments:</h2>
|
|
6
|
-
<?r if @entry.comments.each do |comment| ?>
|
|
7
|
-
<div class="comment">
|
|
8
|
-
#{comment.body}
|
|
9
|
-
<div class="footer">
|
|
10
|
-
by #{comment.author} at #{comment.create_time.strftime('%R %p')}
|
|
11
|
-
<?r if session[:owner] ?>
|
|
12
|
-
[<a href="del_comment?oid=#{comment.oid}">del</a>]
|
|
13
|
-
<?r end ?>
|
|
14
|
-
</div>
|
|
15
|
-
</div>
|
|
16
|
-
<?r end.empty? then ?>
|
|
17
|
-
no comments.
|
|
18
|
-
<?r end ?>
|
|
19
|
-
|
|
20
|
-
<form id="new_comment" action="new_comment" method="post">
|
|
21
|
-
<input type="hidden" name="entry_oid" value="#{@entry.oid}" />
|
|
22
|
-
<p>
|
|
23
|
-
<b>Your name:</b><br />
|
|
24
|
-
<input type="text" name="author" value="#{session[:username]}" />
|
|
25
|
-
<x:error attr="author" />
|
|
26
|
-
<x:error attr="title" />
|
|
27
|
-
</p>
|
|
28
|
-
<p>
|
|
29
|
-
<b>Write your thoughts:</b><br />
|
|
30
|
-
<textarea name="body" style="width: 90%; height: 100px">#{}</textarea>
|
|
31
|
-
<x:error attr="body"><br /></x:error>
|
|
32
|
-
</p>
|
|
33
|
-
<input type="submit" value="Add comment" />
|
|
34
|
-
</form>
|
|
35
|
-
|
|
36
|
-
</root>
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0"?>
|
|
2
|
-
|
|
3
|
-
<div id="comments" xmlns:x="http://www.navel.gr/xml/shader.xsd">
|
|
4
|
-
|
|
5
|
-
<?r errors = session[:errors] ?>
|
|
6
|
-
|
|
7
|
-
<h2>Post new entry:</h2>
|
|
8
|
-
|
|
9
|
-
<form id="new_entry" action="new_entry" method="post">
|
|
10
|
-
<p>
|
|
11
|
-
<b>Title:</b><br />
|
|
12
|
-
<input type="text" name="title" />
|
|
13
|
-
<x:error attr="title" />
|
|
14
|
-
</p>
|
|
15
|
-
<p>
|
|
16
|
-
<b>Body:</b><br />
|
|
17
|
-
<textarea name="body" style="width: 90%; height: 100px">#{}</textarea>
|
|
18
|
-
<x:error attr="body"><br /></x:error>
|
|
19
|
-
</p>
|
|
20
|
-
<input type="submit" value="Post" />
|
|
21
|
-
</form>
|
|
22
|
-
</div>
|
|
@@ -1,56 +0,0 @@
|
|
|
1
|
-
<html>
|
|
2
|
-
<head>
|
|
3
|
-
<title>Error</title>
|
|
4
|
-
<style>
|
|
5
|
-
.path {
|
|
6
|
-
padding: 5px;
|
|
7
|
-
font-size: 140%;
|
|
8
|
-
background: #ddd;
|
|
9
|
-
}
|
|
10
|
-
.error {
|
|
11
|
-
padding: 5px;
|
|
12
|
-
padding-top: 15px;
|
|
13
|
-
font-size: 140%;
|
|
14
|
-
color: #f00;
|
|
15
|
-
}
|
|
16
|
-
.load {
|
|
17
|
-
padding: 5px;
|
|
18
|
-
color: #555;
|
|
19
|
-
}
|
|
20
|
-
h2 {
|
|
21
|
-
padding-left: 5px;
|
|
22
|
-
background: #eee;
|
|
23
|
-
}
|
|
24
|
-
</style>
|
|
25
|
-
</head>
|
|
26
|
-
<body>
|
|
27
|
-
<h1>Error</h1>
|
|
28
|
-
|
|
29
|
-
<?r for error, path in @context.rendering_errors ?>
|
|
30
|
-
<div class="path"><strong>Path:</strong> #{path}</div>
|
|
31
|
-
<div class="error"><strong>#{error.class.name}:</strong> #{Nitro::Markup.expand(error.to_s)}</div>
|
|
32
|
-
<div class="load">Click here to <strong><a href="#{request.uri}">reload</a></strong>.</div>
|
|
33
|
-
<div class="load">Click here to go to the <strong><a href="#{request.referer}">referer</a></strong>.</div>
|
|
34
|
-
<h2><a href="#" onclick="document.getElementById('trace').style.display = 'block'; return false">Stack Trace</a></h2>
|
|
35
|
-
<p id="trace" style="display: none">#{error.backtrace.join('<br />')}</p>
|
|
36
|
-
<?r end ?>
|
|
37
|
-
|
|
38
|
-
<h2><a href="#" onclick="document.getElementById('request').style.display = 'block'; return false">Request</a></h2>
|
|
39
|
-
<div id="request" style="display: none">
|
|
40
|
-
<p><strong>Parameters:</strong> #{request.params.reject{ |k,v| k == :__RELOADED__ }.inspect}</p>
|
|
41
|
-
<p><strong>Cookies:</strong> #{request.cookies.inspect}</p>
|
|
42
|
-
<p><strong>Headers:</strong><br />#{request.headers.collect { |k, v| "#{k} => #{v}" }.join('<br />')}</p>
|
|
43
|
-
</div>
|
|
44
|
-
|
|
45
|
-
<h2><a href="#" onclick="document.getElementById('response').style.display = 'block'; return false">Response</a></h2>
|
|
46
|
-
<div id="response" style="display: none">
|
|
47
|
-
<p><strong>Headers:</strong> #{request.response_headers.inspect}</p>
|
|
48
|
-
<p><strong>Cookies:</strong> #{request.response_cookies.inspect}</p>
|
|
49
|
-
</div>
|
|
50
|
-
|
|
51
|
-
<h2><a href="#" onclick="document.getElementById('session').style.display = 'block'; return false">Session</a></h2>
|
|
52
|
-
<div id="session" style="display: none">
|
|
53
|
-
<p><strong>Values:</strong> #{session.inspect}</p>
|
|
54
|
-
</div>
|
|
55
|
-
</body>
|
|
56
|
-
</html>
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
<?xml version="1.0"?>
|
|
2
|
-
|
|
3
|
-
<x:page xmlns:x="http://www.navel.gr/xml/shader.xsd">
|
|
4
|
-
|
|
5
|
-
<x:cell id="main">
|
|
6
|
-
<?r cache('entries', :admin => session[:owner]) do ?>
|
|
7
|
-
<?r
|
|
8
|
-
if @entries
|
|
9
|
-
for entry in @entries
|
|
10
|
-
?>
|
|
11
|
-
<div class="entry">
|
|
12
|
-
<h2 class="date">#{entry.create_time.strftime('%B %e, %G')}</h2>
|
|
13
|
-
<div class="post">
|
|
14
|
-
<h3 class="title">#{entry.title}</h3>
|
|
15
|
-
#{entry.body}
|
|
16
|
-
<div class="footer">
|
|
17
|
-
[[posted by]] #{entry.author} at <a href="#{entry.to_href}">#{entry.create_time.strftime('%R %p')}</a> |
|
|
18
|
-
<a href="#{entry.to_href}#comments">#{entry.comments.size} comments</a>.
|
|
19
|
-
<?r if session[:owner] ?>
|
|
20
|
-
[<a href="del_entry?oid=#{entry.oid}">del</a>]
|
|
21
|
-
<?r end ?>
|
|
22
|
-
</div>
|
|
23
|
-
</div>
|
|
24
|
-
</div>
|
|
25
|
-
<?r
|
|
26
|
-
end
|
|
27
|
-
else
|
|
28
|
-
?>
|
|
29
|
-
no entries
|
|
30
|
-
<?r end ?>
|
|
31
|
-
|
|
32
|
-
<div class="pager">
|
|
33
|
-
#{@pager.navigation}
|
|
34
|
-
<div class="clear">.</div>
|
|
35
|
-
</div>
|
|
36
|
-
|
|
37
|
-
<?r end ?>
|
|
38
|
-
|
|
39
|
-
<?r if session[:owner] ?>
|
|
40
|
-
<render href="entry_form" />
|
|
41
|
-
<?r end ?>
|
|
42
|
-
|
|
43
|
-
</x:cell>
|
|
44
|
-
|
|
45
|
-
<x:cell id="side">
|
|
46
|
-
<render href="recent_posts" />
|
|
47
|
-
</x:cell>
|
|
48
|
-
|
|
49
|
-
</x:page>
|