nitro 0.3.0 → 0.4.1
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 +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>
|