nitro 0.31.0 → 0.40.0

Sign up to get free protection for your applications and to get access to all the features.
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