nitro 0.3.0 → 0.4.1
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +284 -0
- data/{LICENCE → LICENSE} +1 -1
- data/README +13 -17
- data/RELEASES +13 -1
- data/Rakefile +1 -9
- data/bin/cluster.rb +5 -5
- data/examples/blog/README +45 -0
- data/examples/blog/apache.conf +0 -0
- data/examples/blog/app.rb +21 -0
- data/examples/blog/config.rb +88 -0
- data/examples/blog/lib/blog.rb +104 -0
- data/examples/blog/log/app.log +117 -0
- data/examples/blog/root/comments.xhtml +38 -0
- data/examples/blog/root/entry_form.xhtml +18 -0
- data/examples/blog/root/index.xhtml +43 -0
- data/examples/blog/root/login.xhtml +24 -0
- data/examples/blog/root/m/bubbles.gif +0 -0
- data/examples/blog/root/m/comments_curve.gif +0 -0
- data/examples/blog/root/m/down.gif +0 -0
- data/examples/blog/root/m/footer_bg.gif +0 -0
- data/examples/blog/root/m/garrow.gif +0 -0
- data/examples/blog/root/m/gbull.gif +0 -0
- data/examples/blog/root/m/grbull.gif +0 -0
- data/examples/blog/root/m/h1_bg.gif +0 -0
- data/examples/blog/root/m/header_bg.gif +0 -0
- data/examples/blog/root/m/obull.gif +0 -0
- data/examples/blog/root/m/page_bg.gif +0 -0
- data/examples/blog/root/m/side_title_bg.gif +0 -0
- data/examples/blog/root/m/sidebar_bg.gif +0 -0
- data/examples/blog/root/recent_posts.xhtml +14 -0
- data/examples/blog/root/style.css +201 -0
- data/examples/blog/root/style.xsl +118 -0
- data/examples/blog/root/view_entry.xhtml +29 -0
- data/examples/og/run.rb +27 -29
- data/examples/tiny/README +3 -4
- data/examples/tiny/app.rb +6 -16
- data/examples/tiny/config.rb +30 -0
- data/examples/tiny/log/app.log +23 -0
- data/examples/tiny/root/{index.sx → index.xhtml} +3 -6
- data/lib/{n/std.rb → nitro.rb} +9 -4
- data/lib/{n → nitro}/application.rb +13 -7
- data/lib/{n → nitro}/config.rb +38 -8
- data/lib/{n → nitro}/events.rb +1 -1
- data/lib/{n → nitro}/l10n.rb +1 -1
- data/lib/{n → nitro}/logger.rb +8 -8
- data/lib/{n → nitro}/macros.rb +3 -3
- data/lib/{n → nitro}/mixins.rb +1 -1
- data/lib/nitro/properties.rb +301 -0
- data/lib/{n → nitro}/server.rb +2 -2
- data/lib/{n → nitro}/server/appserver.rb +14 -5
- data/lib/{n → nitro}/server/cluster.rb +5 -5
- data/lib/{n → nitro}/server/cookie.rb +1 -1
- data/lib/nitro/server/dispatcher.rb +66 -0
- data/lib/{n → nitro}/server/filters.rb +7 -7
- data/lib/{n → nitro}/server/filters/autologin.rb +3 -3
- data/lib/{n → nitro}/server/fragment.rb +3 -3
- data/lib/{n → nitro}/server/handlers.rb +3 -3
- data/lib/nitro/server/render.rb +200 -0
- data/lib/{n → nitro}/server/request.rb +6 -6
- data/lib/{n → nitro}/server/requestpart.rb +5 -5
- data/lib/{n → nitro}/server/script.rb +3 -3
- data/lib/{n → nitro}/server/server.rb +4 -4
- data/lib/{n → nitro}/server/session.rb +3 -3
- data/lib/nitro/server/shaders.rb +165 -0
- data/lib/{n → nitro}/server/user.rb +1 -1
- data/lib/nitro/server/webrick.rb +175 -0
- data/lib/nitro/service.rb +25 -0
- data/lib/{n → nitro}/sitemap.rb +2 -2
- data/lib/{n → nitro}/ui/date-select.rb +0 -0
- data/lib/{n → nitro}/ui/pager.rb +1 -1
- data/lib/{n → nitro}/ui/popup.rb +1 -1
- data/lib/{n → nitro}/ui/select.rb +1 -1
- data/lib/{n → nitro}/ui/tabs.rb +1 -1
- data/lib/{n → nitro}/utils/array.rb +1 -1
- data/lib/{n → nitro}/utils/cache.rb +1 -1
- data/lib/{n → nitro}/utils/gfx.rb +1 -1
- data/lib/{n → nitro}/utils/hash.rb +1 -1
- data/lib/{n → nitro}/utils/html.rb +1 -1
- data/lib/{n → nitro}/utils/http.rb +1 -1
- data/lib/{n → nitro}/utils/mail.rb +1 -1
- data/lib/{n → nitro}/utils/number.rb +1 -1
- data/lib/{n → nitro}/utils/pool.rb +1 -1
- data/lib/{n → nitro}/utils/string.rb +19 -95
- data/lib/{n → nitro}/utils/template.rb +0 -0
- data/lib/{n → nitro}/utils/time.rb +1 -1
- data/lib/{n → nitro}/utils/uri.rb +3 -3
- data/lib/nitro/version.rb +11 -0
- data/lib/{n/og.rb → og.rb} +61 -31
- data/lib/{n/og → og}/backend.rb +13 -7
- data/lib/{n/og → og}/backends/mysql.rb +43 -39
- data/lib/{n/og → og}/backends/psql.rb +42 -38
- data/lib/{n/og → og}/connection.rb +21 -9
- data/lib/{n/og → og}/meta.rb +18 -12
- data/lib/xsl/base.xsl +11 -88
- data/test/n/server/tc_cookie.rb +1 -1
- data/test/n/server/tc_filters.rb +1 -1
- data/test/n/server/tc_request.rb +3 -3
- data/test/n/server/tc_requestpart.rb +2 -2
- data/test/n/server/tc_session.rb +1 -1
- data/test/n/tc_events.rb +1 -1
- data/test/n/tc_og.rb +16 -18
- data/test/n/tc_properties.rb +22 -18
- data/test/n/tc_sitemap.rb +2 -2
- data/test/n/ui/tc_pager.rb +4 -4
- data/test/n/utils/tc_cache.rb +1 -1
- data/test/n/utils/tc_hash.rb +1 -1
- data/test/n/utils/tc_html.rb +1 -1
- data/test/n/utils/tc_http.rb +1 -1
- data/test/n/utils/tc_number.rb +1 -1
- data/test/n/utils/tc_strings.rb +1 -46
- data/test/n/utils/tc_uri.rb +1 -1
- metadata +101 -108
- data/examples/simple/README +0 -42
- data/examples/simple/app.rb +0 -31
- data/examples/simple/conf/apache.conf +0 -100
- data/examples/simple/conf/config.rb +0 -72
- data/examples/simple/conf/debug-config.rb +0 -26
- data/examples/simple/conf/live-config.rb +0 -26
- data/examples/simple/conf/requires.rb +0 -43
- data/examples/simple/ctl +0 -32
- data/examples/simple/env.rb +0 -32
- data/examples/simple/install.rb +0 -12
- data/examples/simple/lib/articles/entities.rb +0 -37
- data/examples/simple/lib/articles/lc-en.rb +0 -36
- data/examples/simple/lib/articles/methods.rb +0 -55
- data/examples/simple/lib/articles/part.rb +0 -57
- data/examples/simple/root/add-article.sx +0 -15
- data/examples/simple/root/article-form.ss +0 -20
- data/examples/simple/root/comments-form.ss +0 -16
- data/examples/simple/root/comments.si +0 -30
- data/examples/simple/root/index.sx +0 -44
- data/examples/simple/root/shader/shader.xsl +0 -100
- data/examples/simple/root/shader/style.css +0 -9
- data/examples/simple/root/view-article.sx +0 -29
- data/examples/tiny/conf/config.rb +0 -62
- data/examples/tiny/conf/requires.rb +0 -33
- data/examples/tiny/ctl +0 -16
- data/lib/n/parts.rb +0 -157
- data/lib/n/properties.rb +0 -199
- data/lib/n/server/dispatcher.rb +0 -55
- data/lib/n/server/handlers/code-handler.rb +0 -182
- data/lib/n/server/handlers/page-handler.rb +0 -612
- data/lib/n/server/webrick.rb +0 -283
- data/lib/n/shaders.rb +0 -166
- data/lib/n/sync/clc.rb +0 -110
- data/lib/n/sync/handler.rb +0 -229
- data/lib/n/sync/server.rb +0 -176
- data/lib/p/README +0 -1
@@ -1,26 +0,0 @@
|
|
1
|
-
# = Debug Configuration
|
2
|
-
#
|
3
|
-
# Configuration to use while debugging, this is slow.
|
4
|
-
#
|
5
|
-
# code:
|
6
|
-
# * George Moschovitis <gm@navel.gr>
|
7
|
-
#
|
8
|
-
# (c) 2004 Navel, all rights reserved.
|
9
|
-
# $Id: debug-config.rb 118 2004-11-01 10:13:42Z gmosx $
|
10
|
-
|
11
|
-
require "simple/conf/config"
|
12
|
-
|
13
|
-
# Database
|
14
|
-
|
15
|
-
$og = N::Og.new(
|
16
|
-
:address => "localhost",
|
17
|
-
:database => "simple",
|
18
|
-
:user => "postgres",
|
19
|
-
:password => "navelrulez",
|
20
|
-
:connection_count => 2
|
21
|
-
)
|
22
|
-
|
23
|
-
$og.get_connection
|
24
|
-
$og.manage(N::Article)
|
25
|
-
$og.manage(N::Comment)
|
26
|
-
|
@@ -1,26 +0,0 @@
|
|
1
|
-
# = Live Configuration
|
2
|
-
#
|
3
|
-
# Configuration to use in the live server, optimized for speed.
|
4
|
-
#
|
5
|
-
# code:
|
6
|
-
# * George Moschovitis <gm@navel.gr>
|
7
|
-
#
|
8
|
-
# (c) 2004 Navel, all rights reserved.
|
9
|
-
# $Id: live-config.rb 118 2004-11-01 10:13:42Z gmosx $
|
10
|
-
|
11
|
-
require "simple/conf/config"
|
12
|
-
|
13
|
-
# Logger
|
14
|
-
|
15
|
-
$log = Logger.new("simple/logs/app.log", 10);
|
16
|
-
$log.level = Logger::INFO
|
17
|
-
|
18
|
-
# Database
|
19
|
-
|
20
|
-
$og = N::Og.new(
|
21
|
-
:address => "localhost",
|
22
|
-
:database => "simple",
|
23
|
-
:user => "postgres",
|
24
|
-
:password => "navelrulez",
|
25
|
-
:connection_count => 20
|
26
|
-
)
|
@@ -1,43 +0,0 @@
|
|
1
|
-
# = Requires all needed files
|
2
|
-
#
|
3
|
-
# Collect all requires in one file includable
|
4
|
-
# in multiple executable scripts. Moreover, it
|
5
|
-
# makes the main script file more readable.
|
6
|
-
#
|
7
|
-
# code:
|
8
|
-
# * George Moschovitis <gm@navel.gr>
|
9
|
-
#
|
10
|
-
# (c) 2004 Navel, all rights reserved.
|
11
|
-
# $Id: requires.rb 118 2004-11-01 10:13:42Z gmosx $
|
12
|
-
|
13
|
-
require "n/std"
|
14
|
-
require "n/properties"
|
15
|
-
|
16
|
-
require "n/og"
|
17
|
-
require "n/l10n"
|
18
|
-
require "n/logger"
|
19
|
-
require "n/parts"
|
20
|
-
require "n/events"
|
21
|
-
require "n/shaders"
|
22
|
-
require "n/mixins"
|
23
|
-
require "n/sitemap"
|
24
|
-
|
25
|
-
require "n/utils/number"
|
26
|
-
require "n/utils/string"
|
27
|
-
require "n/utils/gfx"
|
28
|
-
require "n/utils/html"
|
29
|
-
require "n/utils/hash"
|
30
|
-
require "n/utils/array"
|
31
|
-
|
32
|
-
require "n/ui/popup"
|
33
|
-
require "n/ui/select"
|
34
|
-
require "n/ui/pager"
|
35
|
-
require "n/ui/tabs"
|
36
|
-
require "n/ui/date-select"
|
37
|
-
|
38
|
-
require "n/server/cluster"
|
39
|
-
require "n/server/handlers/page-handler"
|
40
|
-
require "n/server/handlers/code-handler"
|
41
|
-
|
42
|
-
require "articles/part"
|
43
|
-
|
data/examples/simple/ctl
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
#! /bin/sh
|
2
|
-
|
3
|
-
ARGV="$@"
|
4
|
-
|
5
|
-
case $ARGV in
|
6
|
-
start)
|
7
|
-
/usr/sbin/httpd -d `pwd` -f conf/apache.conf
|
8
|
-
ruby -C../.. bin/cluster.rb --daemon
|
9
|
-
ruby -C.. simple/app.rb --start # --daemon
|
10
|
-
ERROR=$?
|
11
|
-
;;
|
12
|
-
restart)
|
13
|
-
# restart appserver only!
|
14
|
-
export ASPID= `ps ax | grep app.rb | grep ruby | cut -d" " -f1`
|
15
|
-
if [ -n "$ASPID" ]; then
|
16
|
-
echo $ASPID
|
17
|
-
kill -9 $ASPID
|
18
|
-
fi
|
19
|
-
ruby -C.. simple/app.rb --restart # --daemon
|
20
|
-
ERROR=$?
|
21
|
-
;;
|
22
|
-
stop)
|
23
|
-
killall -9 ruby httpd
|
24
|
-
ERROR=$?
|
25
|
-
;;
|
26
|
-
*)
|
27
|
-
echo "NOP"
|
28
|
-
ERROR=$?
|
29
|
-
esac
|
30
|
-
|
31
|
-
exit $ERROR
|
32
|
-
|
data/examples/simple/env.rb
DELETED
@@ -1,32 +0,0 @@
|
|
1
|
-
# = Environment
|
2
|
-
#
|
3
|
-
# Require this file in your script to gain access to the full
|
4
|
-
# AppServer environment.
|
5
|
-
#
|
6
|
-
# code:
|
7
|
-
# * George Moschovitis <gm@navel.gr>
|
8
|
-
#
|
9
|
-
# (c) 2004 Navel, all rights reserved.
|
10
|
-
# $Id: env.rb 124 2004-11-01 12:34:17Z gmosx $
|
11
|
-
|
12
|
-
$:.unshift ".."
|
13
|
-
$:.unshift "simple/lib"
|
14
|
-
$:.unshift "../lib"
|
15
|
-
|
16
|
-
$DBG = true
|
17
|
-
$DBG ? (require "simple/conf/debug-config") : (require "simple/conf/live-config")
|
18
|
-
|
19
|
-
require "n/server/server"
|
20
|
-
|
21
|
-
$drb_lm_server = "druby://:10000"
|
22
|
-
|
23
|
-
module App
|
24
|
-
|
25
|
-
class Server < N::AppServer
|
26
|
-
include App::Config
|
27
|
-
end
|
28
|
-
|
29
|
-
end # module
|
30
|
-
|
31
|
-
$app = App::Server.new.exec()
|
32
|
-
|
data/examples/simple/install.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
# code:
|
2
|
-
# * George Moschovitis <gm@navel.gr>
|
3
|
-
#
|
4
|
-
# (c) 2004 Navel, all rights reserved.
|
5
|
-
# $Id: entities.rb 118 2004-11-01 10:13:42Z gmosx $
|
6
|
-
|
7
|
-
module N
|
8
|
-
|
9
|
-
# gmosx: forward declaration, can we avoid this?
|
10
|
-
class Comment; end
|
11
|
-
|
12
|
-
# = Article
|
13
|
-
#
|
14
|
-
class Article
|
15
|
-
prop_accessor String, :title
|
16
|
-
prop_accessor String, :body
|
17
|
-
prop_accessor Time, :create_time
|
18
|
-
has_many N::Comment, :comments
|
19
|
-
|
20
|
-
def initialize
|
21
|
-
@create_time = Time.now
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
# = Comment
|
26
|
-
#
|
27
|
-
class Comment
|
28
|
-
prop_accessor String, :body
|
29
|
-
prop_accessor Time, :create_time
|
30
|
-
belongs_to N::Article, :article
|
31
|
-
|
32
|
-
def initialize
|
33
|
-
@create_time = Time.now
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
end # module
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# = Base English Localization Dictionary
|
2
|
-
#
|
3
|
-
#--
|
4
|
-
# code:
|
5
|
-
# George Moschovitis <gm@navel.gr>
|
6
|
-
#
|
7
|
-
# (c) 2004 Navel, all rights reserved.
|
8
|
-
# $Id: lc-en.rb 84 2004-10-19 13:57:01Z gmosx $
|
9
|
-
#++
|
10
|
-
|
11
|
-
$lc_en.update({
|
12
|
-
|
13
|
-
:general => "General",
|
14
|
-
:edit => "Edit",
|
15
|
-
:add => "Add",
|
16
|
-
:del => "Delete",
|
17
|
-
:cancel => "Cancel",
|
18
|
-
:preview => "Preview",
|
19
|
-
:store => "Store",
|
20
|
-
:update => "Update",
|
21
|
-
:submit => "Submit",
|
22
|
-
:title => "Title",
|
23
|
-
:body => "Body",
|
24
|
-
:description => "Description",
|
25
|
-
:answer => "Answer",
|
26
|
-
:refresh => "Refresh",
|
27
|
-
:select_all => "Select all",
|
28
|
-
:clear_all => "Clear all",
|
29
|
-
|
30
|
-
# search
|
31
|
-
|
32
|
-
:search => "Search",
|
33
|
-
:search_results => "Search results",
|
34
|
-
:results_found => proc { |count| "#{count} results found" }
|
35
|
-
|
36
|
-
})
|
@@ -1,55 +0,0 @@
|
|
1
|
-
# code:
|
2
|
-
# * George Moschovitis <gm@navel.gr>
|
3
|
-
#
|
4
|
-
# (c) 2004 Navel, all rights reserved.
|
5
|
-
# $Id: methods.rb 118 2004-11-01 10:13:42Z gmosx $
|
6
|
-
|
7
|
-
module P
|
8
|
-
|
9
|
-
# = ArticlesMethods
|
10
|
-
#
|
11
|
-
# Methods for the Articles part.
|
12
|
-
#
|
13
|
-
module ArticlesMethods
|
14
|
-
|
15
|
-
# Add an article
|
16
|
-
#
|
17
|
-
def add_article(request)
|
18
|
-
if request["add_article"]
|
19
|
-
article = N::Article.new
|
20
|
-
request.update_entity(article)
|
21
|
-
article.save!
|
22
|
-
request.redirect("index.sx")
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# Delete an article
|
27
|
-
#
|
28
|
-
def del_article(request)
|
29
|
-
if oid = request["del_article_oid"]
|
30
|
-
N::Article.delete(oid)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
# Add a comment
|
35
|
-
#
|
36
|
-
def add_comment(request)
|
37
|
-
if pid = request["add_comment_pid"]
|
38
|
-
comment = N::Comment.new
|
39
|
-
comment.article = pid
|
40
|
-
request.update_entity(comment)
|
41
|
-
comment.save!
|
42
|
-
end
|
43
|
-
end
|
44
|
-
|
45
|
-
# Delete a comment
|
46
|
-
#
|
47
|
-
def del_comment(request)
|
48
|
-
if oid = request["del_comment_oid"]
|
49
|
-
N::Comment.delete(oid)
|
50
|
-
end
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
end # module
|
@@ -1,57 +0,0 @@
|
|
1
|
-
# code:
|
2
|
-
# * George Moschovitis <gm@navel.gr>
|
3
|
-
#
|
4
|
-
# (c) 2004 Navel, all rights reserved.
|
5
|
-
# $Id: part.rb 118 2004-11-01 10:13:42Z gmosx $
|
6
|
-
|
7
|
-
require "articles/lc-en"
|
8
|
-
require "articles/entities"
|
9
|
-
require "articles/methods"
|
10
|
-
|
11
|
-
module P
|
12
|
-
|
13
|
-
# = Articles
|
14
|
-
#
|
15
|
-
# A simple articles part.
|
16
|
-
#
|
17
|
-
class Articles < N::Part
|
18
|
-
extend P::ArticlesMethods
|
19
|
-
|
20
|
-
#
|
21
|
-
#
|
22
|
-
def initialize
|
23
|
-
@name = "articles"
|
24
|
-
@title = "Articles"
|
25
|
-
@body = "Simple articles management"
|
26
|
-
@version = "$Id: part.rb 118 2004-11-01 10:13:42Z gmosx $"
|
27
|
-
@path = ""
|
28
|
-
super
|
29
|
-
end
|
30
|
-
|
31
|
-
# Updates the sitemap by attaching site specific nodes.
|
32
|
-
#
|
33
|
-
def sitemap
|
34
|
-
n1 = N::SitePage.new "#@path/index.sx", "Articles"
|
35
|
-
n2 = N::SitePage.new "#@path/add-article.sx", "Add", n1
|
36
|
-
n2 = N::SitePage.new "#@path/view-article.sx", "View", n1
|
37
|
-
end
|
38
|
-
|
39
|
-
#
|
40
|
-
#
|
41
|
-
def rewrites
|
42
|
-
$rewrites["articles"] = {
|
43
|
-
/\/articles\/(.*?)\/index.sx/ => '/view-article.sx?oid=\1'
|
44
|
-
}
|
45
|
-
end
|
46
|
-
|
47
|
-
#
|
48
|
-
#
|
49
|
-
def roles
|
50
|
-
$roles.concat %w{articles.moderator}
|
51
|
-
end
|
52
|
-
|
53
|
-
end
|
54
|
-
|
55
|
-
end # module
|
56
|
-
|
57
|
-
a = P::Articles.instance
|
@@ -1,15 +0,0 @@
|
|
1
|
-
<?xml version="1.0"?>
|
2
|
-
|
3
|
-
<root
|
4
|
-
xmlns:x="http://www.navel.gr/xml/shader.xsd"
|
5
|
-
xmlns:xl="http://www.w3.org/1999/xlink">
|
6
|
-
|
7
|
-
|
8
|
-
<x:page>
|
9
|
-
|
10
|
-
<!-- include the form at compile time -->
|
11
|
-
<?include xl:href="article-form.ss" ?>
|
12
|
-
|
13
|
-
</x:page>
|
14
|
-
|
15
|
-
</root>
|
@@ -1,20 +0,0 @@
|
|
1
|
-
<?r
|
2
|
-
# methods:
|
3
|
-
P::Articles.add_article(request)
|
4
|
-
?>
|
5
|
-
|
6
|
-
<form id="add_article" method="post">
|
7
|
-
<input type="hidden" name="add_article" value="*" />
|
8
|
-
|
9
|
-
<p>
|
10
|
-
<label for="title">|:title|</label><br />
|
11
|
-
<input type="text" name="title" style="width: 250px" />
|
12
|
-
</p>
|
13
|
-
<p>
|
14
|
-
<label for="body">|:body|</label><br />
|
15
|
-
<textarea name="body" style="width: 90%; height: 100px">#{}</textarea>
|
16
|
-
</p>
|
17
|
-
|
18
|
-
<input type="submit" value="|:store|" />
|
19
|
-
</form>
|
20
|
-
|
@@ -1,16 +0,0 @@
|
|
1
|
-
<?xml version="1.0"?>
|
2
|
-
|
3
|
-
<!-- the <?xml declaration is optional, but lets be strict. -->
|
4
|
-
|
5
|
-
<form id="comments_form" method="post">
|
6
|
-
<input type="hidden" name="add_comment_pid" value="#{request[:comments_parent].oid}" />
|
7
|
-
<input type="hidden" name="oid" value="#{request[:comments_parent].oid}" />
|
8
|
-
|
9
|
-
<p>
|
10
|
-
<!-- the |:...| construct is a localization macro. -->
|
11
|
-
<label for="body">|:body|</label><br />
|
12
|
-
<textarea name="body" style="width: 90%; height: 100px">#{}</textarea>
|
13
|
-
</p>
|
14
|
-
|
15
|
-
<input type="submit" value="|:store|" />
|
16
|
-
</form>
|
@@ -1,30 +0,0 @@
|
|
1
|
-
<?xml version="1.0"?>
|
2
|
-
|
3
|
-
<!-- the <?xml declaration is optional, but lets be strict. -->
|
4
|
-
|
5
|
-
<p>
|
6
|
-
|
7
|
-
<?r
|
8
|
-
# methods:
|
9
|
-
P::Articles.add_comment(request)
|
10
|
-
P::Articles.del_comment(request)
|
11
|
-
|
12
|
-
parent = request[:comments_parent]
|
13
|
-
comments = parent.comments
|
14
|
-
?>
|
15
|
-
|
16
|
-
<?r if comments ?>
|
17
|
-
<ul>
|
18
|
-
<?r for comment in comments ?>
|
19
|
-
<li>
|
20
|
-
<b>#{N::TimeUtils.date_time(comment.create_time)}:</b> #{comment.body}
|
21
|
-
[<a href="@?del_comment_oid=#{comment.oid}">del</a>]
|
22
|
-
</li>
|
23
|
-
<?r end ?>
|
24
|
-
</ul>
|
25
|
-
<?r end ?>
|
26
|
-
|
27
|
-
<!-- include at compile time (static include) -->
|
28
|
-
<?include xl:href="comments-form.ss" ?>
|
29
|
-
|
30
|
-
</p>
|