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.
Files changed (174) hide show
  1. data/bin/nitro +135 -37
  2. data/doc/CHANGELOG.1 +108 -108
  3. data/doc/CHANGELOG.2 +89 -89
  4. data/doc/CHANGELOG.3 +105 -105
  5. data/{CHANGELOG → doc/CHANGELOG.4} +509 -509
  6. data/doc/{AUTHORS → CONTRIBUTORS} +49 -37
  7. data/doc/LIBRARIES +13 -0
  8. data/doc/LICENSE +2 -3
  9. data/doc/MIGRATION +45 -0
  10. data/doc/RELEASES +131 -11
  11. data/doc/TODO +67 -0
  12. data/lib/glue/magick.rb +0 -3
  13. data/lib/glue/sweeper.rb +30 -15
  14. data/lib/glue/thumbnails.rb +0 -2
  15. data/lib/glue/webfile.rb +23 -11
  16. data/lib/nitro.rb +37 -44
  17. data/lib/nitro/adapter/cgi.rb +0 -3
  18. data/lib/nitro/adapter/console.rb +0 -2
  19. data/lib/nitro/adapter/fastcgi.rb +6 -3
  20. data/lib/nitro/adapter/mongrel.rb +97 -58
  21. data/lib/nitro/adapter/script.rb +4 -6
  22. data/lib/nitro/adapter/webrick.rb +33 -87
  23. data/lib/nitro/adapter/webrick/vcr.rb +85 -0
  24. data/lib/nitro/caching.rb +0 -2
  25. data/lib/nitro/caching/actions.rb +0 -2
  26. data/lib/nitro/caching/fragments.rb +0 -2
  27. data/lib/nitro/caching/output.rb +45 -16
  28. data/lib/nitro/caching/proxy.rb +49 -0
  29. data/lib/nitro/cgi.rb +3 -6
  30. data/lib/nitro/cgi/cookie.rb +0 -3
  31. data/lib/nitro/cgi/request.rb +67 -24
  32. data/lib/nitro/cgi/response.rb +0 -2
  33. data/lib/nitro/cgi/{sendfile.rb → send_file.rb} +7 -6
  34. data/lib/nitro/compiler.rb +62 -55
  35. data/lib/nitro/compiler/cleanup.rb +0 -3
  36. data/lib/nitro/compiler/elements.rb +31 -28
  37. data/lib/nitro/compiler/errors.rb +2 -5
  38. data/lib/nitro/compiler/include.rb +10 -8
  39. data/lib/nitro/compiler/layout.rb +0 -2
  40. data/lib/nitro/compiler/localization.rb +0 -2
  41. data/lib/nitro/compiler/markup.rb +14 -6
  42. data/lib/nitro/compiler/morphing.rb +1 -5
  43. data/lib/nitro/compiler/script.rb +2 -4
  44. data/lib/nitro/compiler/squeeze.rb +0 -2
  45. data/lib/nitro/compiler/xslt.rb +0 -2
  46. data/lib/nitro/context.rb +10 -5
  47. data/lib/nitro/control.rb +18 -0
  48. data/lib/nitro/control/attribute.rb +88 -0
  49. data/lib/nitro/control/attribute/checkbox.rb +19 -0
  50. data/lib/nitro/control/attribute/datetime.rb +21 -0
  51. data/lib/nitro/control/attribute/file.rb +20 -0
  52. data/lib/nitro/control/attribute/fixnum.rb +26 -0
  53. data/lib/nitro/control/attribute/float.rb +26 -0
  54. data/lib/nitro/control/attribute/options.rb +38 -0
  55. data/lib/nitro/control/attribute/password.rb +16 -0
  56. data/lib/nitro/control/attribute/text.rb +16 -0
  57. data/lib/nitro/control/attribute/textarea.rb +16 -0
  58. data/lib/nitro/control/none.rb +16 -0
  59. data/lib/nitro/control/relation.rb +53 -0
  60. data/lib/nitro/control/relation/belongs_to.rb +0 -0
  61. data/lib/nitro/control/relation/has_many.rb +97 -0
  62. data/lib/nitro/control/relation/joins_many.rb +0 -0
  63. data/lib/nitro/control/relation/many_to_many.rb +0 -0
  64. data/lib/nitro/control/relation/refers_to.rb +29 -0
  65. data/lib/nitro/controller.rb +7 -296
  66. data/lib/nitro/dispatcher.rb +72 -34
  67. data/lib/nitro/element.rb +36 -10
  68. data/lib/nitro/element/javascript.rb +0 -2
  69. data/lib/nitro/flash.rb +23 -10
  70. data/lib/nitro/global.rb +36 -11
  71. data/lib/nitro/helper.rb +22 -8
  72. data/lib/nitro/helper/benchmark.rb +0 -2
  73. data/lib/nitro/helper/buffer.rb +0 -3
  74. data/lib/nitro/helper/css.rb +12 -0
  75. data/lib/nitro/helper/debug.rb +1 -3
  76. data/lib/nitro/helper/default.rb +1 -0
  77. data/lib/nitro/helper/feed.rb +400 -386
  78. data/lib/nitro/helper/form.rb +246 -116
  79. data/lib/nitro/helper/javascript.rb +28 -2
  80. data/lib/nitro/helper/javascript/morphing.rb +0 -2
  81. data/lib/nitro/helper/javascript/prototype.rb +0 -2
  82. data/lib/nitro/helper/javascript/scriptaculous.rb +0 -1
  83. data/lib/nitro/helper/layout.rb +0 -2
  84. data/lib/nitro/helper/navigation.rb +87 -0
  85. data/lib/nitro/helper/pager.rb +11 -22
  86. data/lib/nitro/helper/table.rb +9 -32
  87. data/lib/nitro/helper/url.rb +104 -0
  88. data/lib/nitro/helper/xhtml.rb +20 -4
  89. data/lib/nitro/helper/xml.rb +0 -2
  90. data/lib/nitro/markup.rb +131 -0
  91. data/lib/nitro/part.rb +52 -7
  92. data/lib/nitro/publishable.rb +328 -0
  93. data/lib/nitro/render.rb +30 -61
  94. data/lib/nitro/router.rb +12 -4
  95. data/lib/nitro/sanitize.rb +48 -0
  96. data/lib/nitro/scaffold.rb +9 -11
  97. data/lib/nitro/scaffold/controller.rb +25 -0
  98. data/lib/nitro/scaffold/model.rb +150 -0
  99. data/lib/nitro/scaffolding.rb +1 -3
  100. data/lib/nitro/server.rb +57 -32
  101. data/lib/nitro/server/drb.rb +16 -2
  102. data/lib/nitro/server/runner.rb +80 -102
  103. data/lib/nitro/service.rb +0 -1
  104. data/lib/nitro/service/xmlrpc.rb +0 -2
  105. data/lib/nitro/session.rb +26 -18
  106. data/lib/nitro/session/drb.rb +2 -16
  107. data/lib/nitro/session/memory.rb +0 -2
  108. data/lib/nitro/template.rb +219 -0
  109. data/lib/nitro/test/assertions.rb +1 -3
  110. data/lib/nitro/test/context.rb +0 -1
  111. data/lib/nitro/test/testcase.rb +0 -1
  112. data/lib/nitro/version.rb +6 -0
  113. data/lib/part/admin.rb +16 -0
  114. data/lib/part/admin/controller.rb +19 -0
  115. data/lib/part/admin/helper.rb +30 -0
  116. data/lib/part/admin/og/controller.rb +114 -0
  117. data/lib/part/admin/og/customize.rb +4 -0
  118. data/lib/part/admin/og/template/index.xhtml +27 -0
  119. data/lib/part/admin/og/template/list.xhtml +38 -0
  120. data/lib/part/admin/og/template/search.xhtml +20 -0
  121. data/lib/part/admin/og/template/update.xhtml +25 -0
  122. data/lib/part/admin/skin.rb +207 -0
  123. data/lib/part/admin/template/denied.xhtml +13 -0
  124. data/lib/part/admin/template/index.xhtml +12 -0
  125. data/lib/part/admin/todo.txt +2 -0
  126. data/proto/public/error.xhtml +4 -2
  127. data/proto/run.rb +0 -2
  128. data/test/glue/tc_webfile.rb +1 -0
  129. data/test/nitro/cgi/tc_request.rb +23 -0
  130. data/test/nitro/helper/tc_feed.rb +0 -3
  131. data/test/nitro/helper/tc_navbar.rb +74 -0
  132. data/test/nitro/helper/tc_table.rb +2 -0
  133. data/test/nitro/tc_cgi.rb +72 -19
  134. data/test/nitro/tc_controller.rb +35 -26
  135. data/test/nitro/tc_controller_aspect.rb +1 -0
  136. data/test/nitro/tc_controller_params.rb +864 -0
  137. data/test/nitro/tc_dispatcher.rb +2 -2
  138. data/test/nitro/tc_element.rb +16 -16
  139. data/test/nitro/tc_flash.rb +3 -3
  140. data/test/nitro/tc_markup.rb +31 -0
  141. data/test/nitro/tc_render.rb +12 -14
  142. data/test/nitro/tc_session.rb +9 -7
  143. data/test/nitro/tc_template.rb +34 -0
  144. metadata +217 -198
  145. data/INSTALL +0 -121
  146. data/ProjectInfo +0 -74
  147. data/README +0 -555
  148. data/doc/apache.txt +0 -9
  149. data/doc/config.txt +0 -28
  150. data/doc/faq.txt +0 -7
  151. data/doc/lhttpd.txt +0 -7
  152. data/lib/nitro/adapter/scgi.rb +0 -239
  153. data/lib/nitro/helper/form/builder.rb +0 -144
  154. data/lib/nitro/helper/form/controls.rb +0 -389
  155. data/lib/nitro/helper/rss.rb +0 -72
  156. data/proto/conf/apache.conf +0 -51
  157. data/proto/public/scaffold/advanced_search.xhtml +0 -30
  158. data/proto/public/scaffold/edit.xhtml +0 -11
  159. data/proto/public/scaffold/form.xhtml +0 -1
  160. data/proto/public/scaffold/index.xhtml +0 -20
  161. data/proto/public/scaffold/list.xhtml +0 -32
  162. data/proto/public/scaffold/new.xhtml +0 -11
  163. data/proto/public/scaffold/search.xhtml +0 -29
  164. data/proto/public/scaffold/view.xhtml +0 -8
  165. data/proto/script/scgi_ctl +0 -221
  166. data/proto/script/scgi_service +0 -128
  167. data/setup.rb +0 -1585
  168. data/src/part/admin.rb +0 -16
  169. data/src/part/admin/controller.rb +0 -81
  170. data/src/part/admin/skin.rb +0 -21
  171. data/src/part/admin/system.css +0 -135
  172. data/src/part/admin/template/denied.xhtml +0 -1
  173. data/src/part/admin/template/index.xhtml +0 -43
  174. data/test/nitro/helper/tc_rss.rb +0 -24
@@ -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>
@@ -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
@@ -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>
@@ -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