uzuuzu-core 0.0.4 → 0.0.5

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 (56) hide show
  1. data/.redcar/tags +145 -0
  2. data/Gemfile +10 -6
  3. data/Gemfile.lock +14 -10
  4. data/VERSION +1 -1
  5. data/lib/uzuuzu-core.rb +5 -1
  6. data/lib/uzuuzu/controller/admin.rb +11 -0
  7. data/lib/uzuuzu/controller/contents.rb +11 -0
  8. data/lib/uzuuzu/controller/crud.rb +235 -0
  9. data/lib/uzuuzu/controller/css.rb +11 -0
  10. data/lib/uzuuzu/controller/error.rb +11 -0
  11. data/lib/uzuuzu/controller/index.rb +25 -0
  12. data/lib/uzuuzu/controller/initialize.rb +52 -0
  13. data/lib/uzuuzu/controller/javascript.rb +11 -0
  14. data/lib/uzuuzu/controller/oauth.rb +10 -0
  15. data/lib/uzuuzu/controller/openid.rb +40 -0
  16. data/lib/uzuuzu/controller/page.rb +14 -0
  17. data/lib/uzuuzu/controller/plugin.rb +11 -0
  18. data/lib/uzuuzu/controller/user.rb +22 -0
  19. data/lib/uzuuzu/controller/view/admin/index.xhtml +0 -0
  20. data/lib/uzuuzu/controller/view/crud/destroy.rhtml +28 -0
  21. data/lib/uzuuzu/controller/view/crud/edit.rhtml +52 -0
  22. data/lib/uzuuzu/controller/view/crud/index.rhtml +45 -0
  23. data/lib/uzuuzu/controller/view/crud/new.rhtml +48 -0
  24. data/lib/uzuuzu/controller/view/crud/show.rhtml +47 -0
  25. data/lib/uzuuzu/controller/view/error/404.tenjin +0 -0
  26. data/lib/uzuuzu/controller/view/initialize/step1.xhtml +30 -0
  27. data/lib/uzuuzu/controller/view/initialize/step2.xhtml +1 -0
  28. data/lib/uzuuzu/controller/view/initialize/step3.xhtml +0 -0
  29. data/lib/uzuuzu/controller/view/openid/index.xhtml +14 -0
  30. data/lib/uzuuzu/controller/view/page.xhtml +17 -0
  31. data/lib/uzuuzu/controller/view/user/entry.xhtml +13 -0
  32. data/lib/uzuuzu/fixture/layout.yaml +110 -0
  33. data/lib/uzuuzu/helper/controller.rb +135 -0
  34. data/lib/uzuuzu/helper/fixture.rb +9 -0
  35. data/lib/uzuuzu/helper/localize.rb +15 -0
  36. data/lib/uzuuzu/helper/renderer.rb +158 -0
  37. data/lib/uzuuzu/helper/route.rb +62 -0
  38. data/lib/uzuuzu/helper/uzuuzu_page.rb +61 -0
  39. data/lib/uzuuzu/helper/xhtml.rb +44 -0
  40. data/lib/uzuuzu/model/.DS_Store +0 -0
  41. data/lib/uzuuzu/model/remote_user.rb +70 -0
  42. data/lib/uzuuzu/uzuuzu-core.rb +10 -1
  43. data/lib/uzuuzu/wrapper/application.rb +282 -0
  44. data/lib/uzuuzu/wrapper/controller.rb +28 -80
  45. data/lib/uzuuzu/wrapper/datastore.rb +17 -0
  46. data/lib/uzuuzu/wrapper/environments.rb +129 -0
  47. data/lib/uzuuzu/wrapper/helper.rb +13 -0
  48. data/lib/uzuuzu/wrapper/lang/en.yaml +19 -0
  49. data/lib/uzuuzu/wrapper/lang/ja.yaml +19 -0
  50. data/lib/uzuuzu/wrapper/logger.rb +95 -21
  51. data/lib/uzuuzu/wrapper/object.rb +9 -0
  52. data/lib/uzuuzu/wrapper/request.rb +26 -0
  53. data/lib/uzuuzu/wrapper/response.rb +16 -0
  54. data/lib/uzuuzu/wrapper/uzuuzu.rb +26 -146
  55. data/uzuuzu-core.gemspec +71 -14
  56. metadata +104 -15
File without changes
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
3
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml">
5
+ <head>
6
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
7
+ <meta http-equiv="Content-Style-Type" content="text/css" />
8
+ <meta http-equiv="expires" content="-1" />
9
+ <title>初期設定 - UzuUzu</title>
10
+ #{css_for 'jquery-ui'}
11
+ #{js_for 'jquery', 'jquery-ui'}
12
+ </head>
13
+ <body>
14
+ <div id="openid_index">
15
+ <p>
16
+ #{uzuuzu_string(:openid_message)}
17
+ </p>
18
+ <form method="post" action="#{UzuUzu::OpenidController.r(:openid_begin)}">
19
+ <p>
20
+ #{uzuuzu_string(:openid_url)}:
21
+ <input type="text" name="url" />
22
+ </p>
23
+ <p>
24
+ <input type="submit" value="#{uzuuzu_string(:login)}"/>
25
+ </p>
26
+ </form>
27
+ </div>
28
+ </body>
29
+ </html>
30
+
File without changes
@@ -0,0 +1,14 @@
1
+ <div id="openid_index">
2
+ <p>
3
+ #{uzuuzu_string(:openid_message)}
4
+ </p>
5
+ <form method="post" action="#{rs(:openid_begin)}">
6
+ <p>
7
+ #{uzuuzu_string(:openid_url)}:
8
+ <input type="text" name="url" />
9
+ </p>
10
+ <p>
11
+ <input type="submit" value="#{uzuuzu_string(:login)}"/>
12
+ </p>
13
+ </form>
14
+ </div>
@@ -0,0 +1,17 @@
1
+ <?xml version="1.0" ?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN"
3
+ "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml">
5
+ <head>
6
+ <meta http-equiv="Content-Script-Type" content="text/javascript" />
7
+ <meta http-equiv="Content-Style-Type" content="text/css" />
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta http-equiv="expires" content="-1" />
10
+ <title>#{@uzuuzu_title} - #{@info.title}</title>
11
+ #{css_for @uzuuzu_css}
12
+ #{js_for @uzuuzu_js}
13
+ </head>
14
+ <body >
15
+ #{@uzuuzu_body}
16
+ </body>
17
+ </html>
@@ -0,0 +1,13 @@
1
+
2
+ <div id="user_entry">
3
+ <p>#{uzuuzu_string(:user_entry)}"</p>
4
+ <form method="post" action="#{rs(:entry, @user.id)}">
5
+ <p>
6
+ #{uzuuzu_string(:user_entry_name)}:
7
+ <input id="username" name="username" type="text" />
8
+ </p>
9
+ <p>
10
+ <input type="submit" value="#{uzuuzu_string(:entry)}"/>
11
+ </p>
12
+ </form>
13
+ </div>
@@ -0,0 +1,110 @@
1
+ ---
2
+ - :id: 1
3
+ :name: contents_only
4
+ :format: Etanni
5
+ :body: |-
6
+ <div id="contents">
7
+ #{@uzuuzu_contents}
8
+ </div>
9
+ - :id: 2
10
+ :name: noside
11
+ :format: Etanni
12
+ :body: |-
13
+ <div id="contents">
14
+ #{@uzuuzu_contents}
15
+ </div>
16
+ <div id="header">
17
+ #{@uzuuzu_header}
18
+ </div>
19
+ <div id="footer">
20
+ #{@uzuuzu_footer}
21
+ </div>
22
+ - :id: 3
23
+ :name: left
24
+ :format: Etanni
25
+ :body: |-
26
+ <div id="contents">
27
+ #{@uzuuzu_contents}
28
+ </div>
29
+ <div id="left">
30
+ #{@uzuuzu_left}
31
+ </div>
32
+ <div id="header">
33
+ #{@uzuuzu_header}
34
+ </div>
35
+ <div id="footer">
36
+ #{@uzuuzu_footer}
37
+ </div>
38
+ - :id: 4
39
+ :name: right
40
+ :format: Etanni
41
+ :body: |-
42
+ <div id="contents">
43
+ #{@uzuuzu_contents}
44
+ </div>
45
+ <div id="right">
46
+ #{@uzuuzu_right}
47
+ </div>
48
+ <div id="header">
49
+ #{@uzuuzu_header}
50
+ </div>
51
+ <div id="footer">
52
+ #{@uzuuzu_footer}
53
+ </div>
54
+ - :id: 5
55
+ :name: side
56
+ :format: Etanni
57
+ :body: |-
58
+ <div id="contents">
59
+ #{@uzuuzu_contents}
60
+ </div>
61
+ <div id="left">
62
+ #{@uzuuzu_left}
63
+ </div>
64
+ <div id="right">
65
+ #{@uzuuzu_right}
66
+ </div>
67
+ <div id="header">
68
+ #{@uzuuzu_header}
69
+ </div>
70
+ <div id="footer">
71
+ #{@uzuuzu_footer}
72
+ </div>
73
+ - :id: 6
74
+ :name: left2
75
+ :format: Etanni
76
+ :body: |-
77
+ <div id="contents">
78
+ #{@uzuuzu_contents}
79
+ </div>
80
+ <div id="left">
81
+ #{@uzuuzu_left}
82
+ </div>
83
+ <div id="left2">
84
+ #{@uzuuzu_right}
85
+ </div>
86
+ <div id="header">
87
+ #{@uzuuzu_header}
88
+ </div>
89
+ <div id="footer">
90
+ #{@uzuuzu_footer}
91
+ </div>
92
+ - :id: 7
93
+ :name: right2
94
+ :format: Etanni
95
+ :body: |-
96
+ <div id="contents">
97
+ #{@uzuuzu_contents}
98
+ </div>
99
+ <div id="right">
100
+ #{@uzuuzu_left}
101
+ </div>
102
+ <div id="right2">
103
+ #{@uzuuzu_right}
104
+ </div>
105
+ <div id="header">
106
+ #{@uzuuzu_header}
107
+ </div>
108
+ <div id="footer">
109
+ #{@uzuuzu_footer}
110
+ </div>
@@ -0,0 +1,135 @@
1
+ # coding: utf-8
2
+
3
+ module UzuUzu
4
+ #
5
+ #
6
+ #
7
+ module Helper
8
+ #
9
+ #
10
+ #
11
+ module Controller
12
+ #
13
+ #
14
+ #
15
+ def application
16
+ @_application
17
+ end
18
+ #
19
+ #
20
+ #
21
+ def request
22
+ @_request
23
+ end
24
+
25
+ #
26
+ #
27
+ #
28
+ def response
29
+ @_response
30
+ end
31
+
32
+ #
33
+ #
34
+ #
35
+ def action
36
+ @_action
37
+ end
38
+
39
+ #
40
+ #
41
+ #
42
+ def query
43
+ @_query
44
+ end
45
+
46
+ #
47
+ #
48
+ #
49
+ def route
50
+ @_route
51
+ end
52
+
53
+ #
54
+ #
55
+ #
56
+ def info
57
+ @_info ||= UzuUzu::Info.uniq
58
+ end
59
+
60
+ #
61
+ #
62
+ #
63
+ def session
64
+ request.session
65
+ end
66
+
67
+ #
68
+ #
69
+ #
70
+ def logger
71
+ UzuUzu.logger
72
+ end
73
+
74
+ #
75
+ #
76
+ #
77
+ def memcache
78
+ UzuUzu.memcache
79
+ end
80
+
81
+ #
82
+ #
83
+ #
84
+ def remote_user
85
+ nil
86
+ end
87
+
88
+ #
89
+ #
90
+ #
91
+ def h(s)
92
+ Rack::Utils.escape(s)
93
+ end
94
+
95
+ #
96
+ #
97
+ #
98
+ def u(s)
99
+ Rack::Utils.unescape(s)
100
+ end
101
+
102
+ #
103
+ #
104
+ #
105
+ def admin?
106
+ if remote_user
107
+ remote_user.admin?
108
+ end
109
+ end
110
+
111
+ #
112
+ #
113
+ #
114
+ def mime_type(type, value=nil)
115
+ return type if type.nil? || type.to_s.include?('/')
116
+ type = ".#{type}" unless type.to_s[0] == ?.
117
+ return Rack::Mime.mime_type(type, nil) if value.nil?
118
+ Rack::Mime::MIME_TYPES[type] = value
119
+ end
120
+
121
+ #
122
+ #
123
+ #
124
+ def query_string(query_options={})
125
+ return "" if query_options.blank?
126
+ query_string = []
127
+ query_options do |key, value|
128
+ query_string << "#{key}=#{value}"
129
+ end
130
+ return "" if query_string.blank?
131
+ "?#{query_string.join('&')}"
132
+ end
133
+ end # Controller
134
+ end # Helper
135
+ end # UzuUzu
@@ -0,0 +1,9 @@
1
+
2
+ module UzuUzu
3
+ module Helper
4
+ module Fixture
5
+ def import_file(file, overwrite=false)
6
+ end
7
+ end #Fixture
8
+ end # Helper
9
+ end # UzuUzu
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+
3
+ module UzuUzu
4
+ module Helper
5
+ module Localize
6
+ def localize(key, options={})
7
+ #TODO
8
+ end
9
+
10
+ def fix_localize(key, options={})
11
+ UzuUzu.localize[key.to_s]
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,158 @@
1
+ # coding: utf-8
2
+
3
+ module UzuUzu
4
+ module Helper
5
+ module Renderer
6
+ module ExtendClass
7
+ def render(action, options={})
8
+ _request, _response, _controller, _action, _query, _route = UzuUzu.current.get_thread_by_di
9
+ browser = Rack::Test::Session.new(Rack::MockSession.new(UzuUzu.current))
10
+ browser.get self.url_for(action, options)
11
+ browser.last_response.body
12
+ UzuUzu.current.di_thread(_request, _response, _controller, _action, _query, _route)
13
+ end
14
+ end
15
+
16
+ def self.included(clazz)
17
+ clazz.extend ExtendClass
18
+ end
19
+ #
20
+ #
21
+ #
22
+ def respond(string, mime=nil, status=200)
23
+ response.status = 200
24
+ response["Content-Type"] = mime_type(mime) || mime unless mime.nil?
25
+ response.write string
26
+ throw :finish
27
+ end
28
+
29
+ def respond_to
30
+ return unless block_given?
31
+ response.status = 200
32
+ contents = yield(request.wish)
33
+ respond(contents, request.wish) if contents and response.successful?
34
+ end
35
+
36
+ #
37
+ #
38
+ #
39
+ def render(view, options={}, locals={}, &block)
40
+ view_path = nil
41
+ catch(:view_finded) do
42
+ Tilt.mappings.each_key do |key|
43
+ self.application.views.each do |view_route|
44
+ _view_path = "#{view_route}#{self.route}/#{view}.#{key}"
45
+ if ::File.file?(_view_path)
46
+ view_path = _view_path
47
+ throw :view_finded
48
+ end
49
+ end
50
+ end
51
+ end
52
+ if view_path.blank?
53
+ return nil
54
+ end
55
+ render_file(view_path, options={}, locals={}, &block)
56
+ end
57
+
58
+ #
59
+ #
60
+ #
61
+ def render_engine(view_string, engine=UzuUzu.engine, options={}, locals={}, &block)
62
+ template = Tilt[engine].new { |t| view_string }
63
+ contents = template.render(self, locals, &block)
64
+ unless options.blank?
65
+ layout = options[:layout] || options['layout']
66
+ unless layout.blank?
67
+ wrap_layout(layout, contents, options, locals)
68
+ end
69
+ end
70
+ contents
71
+ end
72
+ #
73
+ #
74
+ #
75
+ def render_file(view_path, options={}, locals={}, &block)
76
+ if ::File.file?(view_path)
77
+ view_string = ::File.respond_to?(:binread) ? ::File.binread(view_path) : ::File.read(view_path)
78
+ render_engine(view_string, ::File.extname(view_path), options, locals, &block)
79
+ else
80
+ raise ArgmentError.new("file not found : #{view_path}")
81
+ end
82
+ end
83
+
84
+ #
85
+ #
86
+ #
87
+ def wrap_layout(layout, contents, options={}, locals={})
88
+ if ::File.file?(layout)
89
+ template = Tilt.new(layout)
90
+ contents = template.render(self, locals.merge({:contents => contents})){contents}
91
+ end
92
+ contents
93
+ end
94
+
95
+ def send_file()
96
+
97
+ end
98
+
99
+ def send_binary()
100
+
101
+ end
102
+
103
+ #
104
+ #
105
+ #
106
+ def redirect(uri, options={})
107
+ if not uri =~ /^https?:\/\//
108
+ abs_uri = "#{request.scheme}://#{request.host}"
109
+
110
+ if request.scheme == 'https' && request.port != 443 ||
111
+ request.scheme == 'http' && request.port != 80
112
+ abs_uri << ":#{request.port}"
113
+ end
114
+ uri = (abs_uri << uri)
115
+ end
116
+ uri << query_string(options)
117
+ response.redirect(uri)
118
+ throw :finish
119
+ end # redirect
120
+
121
+ #
122
+ #
123
+ #
124
+ def last_modified(time)
125
+ return unless time
126
+ if time.respond_to?(:to_time)
127
+ time = time.to_time
128
+ else
129
+ time = Time.parse(time.to_s)
130
+ end
131
+ response['Last-Modified'] = time.httpdate
132
+ if Time.httpdate(request.env['HTTP_IF_MODIFIED_SINCE']).to_i >= time.to_i
133
+ response.status = 304
134
+ throw :finish
135
+ end
136
+ end # last_modified
137
+
138
+ #
139
+ #
140
+ #
141
+ def etag(value, kind=:strong)
142
+ raise TypeError, ":strong or :weak expected" if ![:strong,:weak].include?(kind)
143
+ value = '"%s"' % value
144
+ value = 'W/' + value if kind == :weak
145
+ response['ETag'] = value
146
+
147
+ # Conditional GET check
148
+ if etags = env['HTTP_IF_NONE_MATCH']
149
+ etags = etags.split(/\s*,\s*/)
150
+ if etags.include?(value) || etags.include?('*')
151
+ response.status = 304
152
+ throw :finish
153
+ end
154
+ end
155
+ end # etag
156
+ end # Renderer
157
+ end # Helper
158
+ end # UzuUzu