nitro 0.31.0 → 0.40.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/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
|