uzuuzu-cms 0.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (95) hide show
  1. data/.document +5 -0
  2. data/.project +17 -0
  3. data/.rspec +1 -0
  4. data/Gemfile +15 -0
  5. data/Gemfile.lock +99 -0
  6. data/LICENSE.txt +20 -0
  7. data/README.rdoc +19 -0
  8. data/Rakefile +49 -0
  9. data/VERSION +1 -0
  10. data/lib/uzuuzu-cms/controller/admin.rb +16 -0
  11. data/lib/uzuuzu-cms/controller/contents.rb +16 -0
  12. data/lib/uzuuzu-cms/controller/crud.rb +245 -0
  13. data/lib/uzuuzu-cms/controller/index.rb +108 -0
  14. data/lib/uzuuzu-cms/controller/initialize.rb +53 -0
  15. data/lib/uzuuzu-cms/controller/oauth.rb +10 -0
  16. data/lib/uzuuzu-cms/controller/openid.rb +105 -0
  17. data/lib/uzuuzu-cms/controller/page.rb +20 -0
  18. data/lib/uzuuzu-cms/controller/plugin.rb +16 -0
  19. data/lib/uzuuzu-cms/controller/user.rb +27 -0
  20. data/lib/uzuuzu-cms/controller/view/admin/index.rhtml +0 -0
  21. data/lib/uzuuzu-cms/controller/view/crud/destroy.rhtml +28 -0
  22. data/lib/uzuuzu-cms/controller/view/crud/edit.rhtml +52 -0
  23. data/lib/uzuuzu-cms/controller/view/crud/index.rhtml +45 -0
  24. data/lib/uzuuzu-cms/controller/view/crud/new.rhtml +48 -0
  25. data/lib/uzuuzu-cms/controller/view/crud/show.rhtml +47 -0
  26. data/lib/uzuuzu-cms/controller/view/error/404.rhtml +2 -0
  27. data/lib/uzuuzu-cms/controller/view/error/500.rhtml +2 -0
  28. data/lib/uzuuzu-cms/controller/view/initialize/step1.rhtml +15 -0
  29. data/lib/uzuuzu-cms/controller/view/initialize/step2.rhtml +1 -0
  30. data/lib/uzuuzu-cms/controller/view/initialize/step3.rhtml +0 -0
  31. data/lib/uzuuzu-cms/controller/view/layout.rhtml +25 -0
  32. data/lib/uzuuzu-cms/controller/view/openid/index.rhtml +14 -0
  33. data/lib/uzuuzu-cms/controller/view/user/entry.rhtml +13 -0
  34. data/lib/uzuuzu-cms/controller.rb +16 -0
  35. data/lib/uzuuzu-cms/fixture/layout.yaml +110 -0
  36. data/lib/uzuuzu-cms/model/blog.rb +40 -0
  37. data/lib/uzuuzu-cms/model/blog_category.rb +15 -0
  38. data/lib/uzuuzu-cms/model/blog_comment.rb +29 -0
  39. data/lib/uzuuzu-cms/model/blog_entry.rb +24 -0
  40. data/lib/uzuuzu-cms/model/contents.rb +43 -0
  41. data/lib/uzuuzu-cms/model/css.rb +22 -0
  42. data/lib/uzuuzu-cms/model/file.rb +41 -0
  43. data/lib/uzuuzu-cms/model/image.rb +41 -0
  44. data/lib/uzuuzu-cms/model/info.rb +127 -0
  45. data/lib/uzuuzu-cms/model/javascript.rb +22 -0
  46. data/lib/uzuuzu-cms/model/layout.rb +22 -0
  47. data/lib/uzuuzu-cms/model/movie.rb +39 -0
  48. data/lib/uzuuzu-cms/model/page.rb +167 -0
  49. data/lib/uzuuzu-cms/model/page_body.rb +28 -0
  50. data/lib/uzuuzu-cms/model/user.rb +30 -0
  51. data/lib/uzuuzu-cms/model/wiki.rb +43 -0
  52. data/lib/uzuuzu-cms/model/wiki_attache.rb +26 -0
  53. data/lib/uzuuzu-cms/model/wiki_entry.rb +21 -0
  54. data/lib/uzuuzu-cms/model/wiki_layout.rb +13 -0
  55. data/lib/uzuuzu-cms/model.rb +24 -0
  56. data/lib/uzuuzu-cms.rb +5 -0
  57. data/spec/spec_helper.rb +12 -0
  58. data/spec/uzuuzu-cms_spec.rb +7 -0
  59. data/template/app.rb +3 -0
  60. data/template/config.ru +15 -0
  61. data/template/public/css/images/ajax-loader.png +0 -0
  62. data/template/public/css/images/icon-search-black.png +0 -0
  63. data/template/public/css/images/icons-18-black.png +0 -0
  64. data/template/public/css/images/icons-18-white.png +0 -0
  65. data/template/public/css/images/icons-36-black.png +0 -0
  66. data/template/public/css/images/icons-36-white.png +0 -0
  67. data/template/public/css/images/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  68. data/template/public/css/images/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  69. data/template/public/css/images/ui-bg_flat_10_000000_40x100.png +0 -0
  70. data/template/public/css/images/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  71. data/template/public/css/images/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  72. data/template/public/css/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  73. data/template/public/css/images/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  74. data/template/public/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  75. data/template/public/css/images/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  76. data/template/public/css/images/ui-icons_222222_256x240.png +0 -0
  77. data/template/public/css/images/ui-icons_228ef1_256x240.png +0 -0
  78. data/template/public/css/images/ui-icons_ef8c08_256x240.png +0 -0
  79. data/template/public/css/images/ui-icons_ffd27a_256x240.png +0 -0
  80. data/template/public/css/images/ui-icons_ffffff_256x240.png +0 -0
  81. data/template/public/css/index.css +146 -0
  82. data/template/public/css/jquery-ui.css +578 -0
  83. data/template/public/css/jquery.mobile.css +16 -0
  84. data/template/public/css/screen.css +30 -0
  85. data/template/public/dispatch.fcgi +27 -0
  86. data/template/public/js/jquery-ui.js +784 -0
  87. data/template/public/js/jquery.js +16 -0
  88. data/template/public/js/jquery.mobile.js +134 -0
  89. data/template/public/js/uzuuzu-ui.js +0 -0
  90. data/template/public/js/uzuuzu.js +0 -0
  91. data/template/public/js/uzuuzu.mobile.js +0 -0
  92. data/template/start.rb +29 -0
  93. data/template/uzuuzu.yaml +43 -0
  94. data/uzuuzu-cms.gemspec +145 -0
  95. metadata +207 -0
@@ -0,0 +1,105 @@
1
+ # coding: utf-8
2
+
3
+ require 'openid'
4
+ require 'openid/store/filesystem'
5
+ require 'openid/extensions/pape'
6
+ require 'openid/extensions/sreg'
7
+ require 'openid/store/memcache'
8
+
9
+ module UzuUzu
10
+ module Controller
11
+ class Openid
12
+
13
+ def index
14
+
15
+ p request.domain
16
+ if session[:openid] and session[:openid][:identity]
17
+ referer = session[:referer]
18
+ session.delete(:referer)
19
+ login_remote_user
20
+ redirect referer || rf(Index)
21
+ end
22
+ session[:referer] = request.referrer
23
+ if info.initialize?
24
+
25
+ else
26
+ respond(info.render(render_file(__DIR__('view/openid/index.rhtml')),
27
+ :layout => __DIR__('view/layout.rhtml')))
28
+ end
29
+ end
30
+
31
+ def logout
32
+ session.delete(:openid)
33
+ end
34
+
35
+ def openid_begin
36
+ url = request['url']
37
+ redirect_referrer if url.to_s.empty?
38
+ session[:openid] ||= {}
39
+ session[:openid][:entry] = request.referrer
40
+
41
+ openid_request = openid_consumer.begin(url)
42
+
43
+ papereq = OpenID::PAPE::Request.new
44
+ papereq.add_policy_uri(OpenID::PAPE::AUTH_PHISHING_RESISTANT)
45
+ papereq.max_auth_age = 2*60*60
46
+ openid_request.add_extension(papereq)
47
+
48
+ sregreq = OpenID::SReg::Request.new
49
+ sregreq.request_fields(['fullname', 'nickname', 'dob', 'email',
50
+ 'gender', 'postcode', 'country', 'language',
51
+ 'timezone'])
52
+ openid_request.add_extension(sregreq)
53
+ openid_request.return_to_args['did_pape'] = 'y'
54
+
55
+ root = request.domain
56
+ p request.domain
57
+ return_to = request.domain(r(:openid_complete))
58
+ immediate = false
59
+
60
+ if openid_request.send_redirect?(root, return_to, immediate)
61
+ redirect_url =
62
+ openid_request.redirect_url(root, return_to, immediate)
63
+ redirect redirect_url
64
+ else
65
+ # what the hell is @form_text ?
66
+ end
67
+
68
+ rescue OpenID::OpenIDError => ex
69
+ flash[:error] = "Discovery failed for #{url}: #{ex}"
70
+ redirect r
71
+ end
72
+
73
+ def openid_complete
74
+ openid_response = openid_consumer.complete(request.params, request.url)
75
+
76
+ case openid_response.status
77
+ when OpenID::Consumer::FAILURE
78
+ when OpenID::Consumer::SUCCESS
79
+ # Backwards compatibility
80
+ session[:openid][:identity] = openid_response.identity_url
81
+ session[:openid][:sreg] = OpenID::SReg::Response.from_success_response(openid_response)
82
+ end
83
+ redirect session[:openid][:entry]
84
+ end
85
+
86
+
87
+ private
88
+
89
+ #logined
90
+ def login_remote_user
91
+ remote_user = User.first(:user_id => session[:openid][:identity])
92
+ if remote_user.nil?
93
+ #remote_user = User.new(:user_id => session[:openid_identity])
94
+ #remote_user.save!
95
+ end
96
+ end
97
+
98
+ # use memcache
99
+ def openid_consumer
100
+ memcache = OpenID::Store::Memcache.new(UzuUzu.memcache)
101
+ OpenID::Consumer.new(session, memcache)
102
+ end
103
+ end # Openid
104
+ end # Controller
105
+ end # UzuUzu
@@ -0,0 +1,20 @@
1
+ # coding: utf-8
2
+
3
+ module UzuUzu
4
+ module Controller
5
+ class Page
6
+
7
+ def before
8
+ redirect(rf(Initialize)) unless info.initialize?
9
+ end
10
+
11
+ def index(page, *args)
12
+
13
+ end
14
+
15
+ def top_page
16
+ ""
17
+ end
18
+ end # Page
19
+ end # Controller
20
+ end # UzuUzu
@@ -0,0 +1,16 @@
1
+ # coding: utf-8
2
+
3
+ module UzuUzu
4
+ module Controller
5
+ class Plugin
6
+
7
+ def before
8
+ redirect(rf(Initialize)) unless info.initialize?
9
+ end
10
+
11
+ def index
12
+ ''
13
+ end
14
+ end # Plugin
15
+ end # Controller
16
+ end # UzuUzu
@@ -0,0 +1,27 @@
1
+ # coding: utf-8
2
+
3
+ module UzuUzu
4
+ module Controller
5
+ class User
6
+
7
+ def before
8
+ redirect(rf(Initialize)) unless info.initialize?
9
+ end
10
+
11
+ def entry(id)
12
+ saved = false
13
+ UzuUzu.transaction do |tr|
14
+ @user = User.first(:id => id)
15
+ if request.post?
16
+ @user.name = request.params['username']
17
+ tr.commit do
18
+ saved = @user.save
19
+ end
20
+ end
21
+ end
22
+ view_value = render_file(__DIR__("view/user/entry.xhtml"))
23
+ respond(view_value)
24
+ end
25
+ end # User
26
+ end # Controller
27
+ end # UzuUzu
File without changes
@@ -0,0 +1,28 @@
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
+ <%= css 'jquery.mobile' %>
11
+ <%= js_for 'jquery', 'jquery.mobile' %>
12
+ </head>
13
+ <body >
14
+ <div data-role="page" id="confirm">
15
+ <div data-role="header">
16
+ <h1><%= h @model_name.camel_case %> Confirm</h1>
17
+ </div>
18
+ <div data-role="content">
19
+ <h1>Delete?</h1>
20
+ <a href="<%= r(:destroy, @model_name, @resource.id) %>" data-ajax="false"
21
+ data-role="button" data-icon="delete">Delete</a>
22
+ <a href="#"
23
+ data-role="button" data-icon="back" data-rel="back"
24
+ data-transition="pop">Cansel</a>
25
+ </div>
26
+ </div>
27
+ </body>
28
+ </html>
@@ -0,0 +1,52 @@
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
+ <%= css 'jquery.mobile' %>
11
+ <%= js_for 'jquery', 'jquery.mobile' %>
12
+ </head>
13
+ <body >
14
+ <div data-role="page" id="top">
15
+ <div data-role="header">
16
+ <a href="<%= r(@model_name) %>" data-role="button" data-icon="back"
17
+ data-ajax="false" data-direction="reverse">List</a>
18
+ <h1><%= h @model_name.camel_case %> Edit</h1>
19
+ </div>
20
+ <div data-role="content">
21
+ <form action="<%= r(:edit, @model_name, @resource.id) %>"
22
+ method="post" id="form" name="form" data-ajax="false">
23
+ <% @resource.class.properties.each do |property| %>
24
+ <p style="color: #FF0000;">
25
+ <%= @resource.errors[property.name].join(',') %>
26
+ </p>
27
+ <p>
28
+ <label for="<%= property.name %>">
29
+ <%= h property.name %>
30
+ </label>
31
+ <% if property.kind_of?(DataMapper::Property::Text) %>
32
+ <textarea name="<%= property.name %>" id="<%= property.name %>"><%= @resource[property.name] %></textarea>
33
+ <% else %>
34
+ <input type="text" name="<%= property.name %>"
35
+ id="<%= property.name %>" value="<%= @resource[property.name] %>">
36
+ </input>
37
+ <% end %>
38
+ </p>
39
+ <% end unless @resource.nil? %>
40
+ </form>
41
+ </div>
42
+ <div id="footer" data-role="footer" class="ui-bar" data-position="fixed" data-id="persist">
43
+ <a href="#"
44
+ data-role="button" data-icon="forward" data-ajax="false"
45
+ onclick="$('#form').submit(); return false;">Update</a>
46
+ <a href="<%= r(:destroy, @model_name, @resource.id, 'confirm') %>"
47
+ data-rel="dialog" data-transition="pop"
48
+ data-role="button" data-icon="delete">Destroy</a>
49
+ </div>
50
+ </div>
51
+ </body>
52
+ </html>
@@ -0,0 +1,45 @@
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
+ <%= css 'jquery.mobile' %>
11
+ <%= js_for 'jquery', 'jquery.mobile' %>
12
+ </head>
13
+ <body>
14
+ <div data-role="page" id="top">
15
+ <div data-role="header">
16
+ <h1><%= h @model_name.camel_case %></h1>
17
+ <a href="<%= r(:new, @model_name) %>" class="ui-btn-right"
18
+ data-role="button" data-icon="plus" data-ajax="false">Add</a>
19
+ </div>
20
+ <div data-role="content">
21
+ <ul data-role="listview" id="list" class="ui-li-has-thumb">
22
+ <% @list.each do |resource| %>
23
+ <li>
24
+ <a href="<%= r(:edit, @model_name, resource.id) %>" data-ajax="false">
25
+ <% resource.class.properties.each_with_index do |property, i| %>
26
+ <% unless i == 0 %>
27
+ <span>,</span><% end %>
28
+ <span><%= h property.name %>:<%= h resource[property.name].to_s[0..9] %>
29
+ <% if resource[property.name].to_s.size > 10 %>...<% end %></span>
30
+ <% end %>
31
+ </a>
32
+ </li>
33
+ <% end unless @list.nil? %>
34
+ </ul>
35
+ </div>
36
+ <div data-role="footer" data-position="fixed">
37
+ <form id="search" method="post" action="<%= r(@model_name) %>" data-ajax="false">
38
+ <input type="search" id="query" name="query" value="<%= @query %>"/>
39
+ <a href="#" data-role="button" data-icon="search"
40
+ onclick="$('#search').submit(); return false;">Search</a>
41
+ </form>
42
+ </div>
43
+ </div>
44
+ </body>
45
+ </html>
@@ -0,0 +1,48 @@
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
+ <%= css 'jquery.mobile' %>
11
+ <%= js_for 'jquery', 'jquery.mobile' %>
12
+ </head>
13
+ <body >
14
+ <div data-role="page" id="top">
15
+ <div data-role="header">
16
+ <a href="<%= r(@model_name) %>" data-role="button" data-icon="back"
17
+ data-ajax="false" data-direction="reverse">List</a>
18
+ <h1><%= h @model_name.camel_case %> New</h1>
19
+ </div>
20
+ <div data-role="content">
21
+ <form action="<%= r(:new, @model_name) %>" method="post" id="form" name="form" data-ajax="false">
22
+ <% @resource.class.properties.each do |property| %>
23
+ <p style="color: #FF0000;">
24
+ <%= @resource.errors[property.name].join(',') %>
25
+ </p>
26
+ <p>
27
+ <label for="<%= property.name %>">
28
+ <%= h property.name %>
29
+ </label>
30
+ <% if property.kind_of?(DataMapper::Property::Text) %>
31
+ <textarea name="<%= property.name %>" id="<%= property.name %>"><%= @resource[property.name] %></textarea>
32
+ <% else %>
33
+ <input type="text" name="<%= property.name %>"
34
+ id="<%= property.name %>" value="<%= @resource[property.name] %>">
35
+ </input>
36
+ <% end %>
37
+ </p>
38
+ <% end %>
39
+ </form>
40
+ </div>
41
+ <div id="footer" data-role="footer" class="ui-bar" data-position="fixed" data-id="persist">
42
+ <a href="#"
43
+ data-role="button" data-icon="plus"
44
+ onclick="$('#form').submit(); return false;">Insert</a>
45
+ </div>
46
+ </div>
47
+ </body>
48
+ </html>
@@ -0,0 +1,47 @@
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="0" />
10
+ <%= css 'jquery.mobile' %>
11
+ <%= js_for 'jquery', 'jquery.mobile' %>
12
+ </head>
13
+ <body >
14
+ <div data-role="page" id="top">
15
+ <div data-role="header">
16
+ <a href="<%= r(@model_name) %>" data-role="button" data-icon="back"
17
+ data-ajax="false" data-direction="reverse">List</a>
18
+ <h1><%= h @model_name.camel_case %> Show</h1>
19
+ </div>
20
+ <div data-role="content">
21
+ <form action="<%= r(:show, @model_name, @resource.id) %>" method="post" id="form" name="form" data-ajax="false">
22
+ <% @resource.class.properties.each do |property| %>
23
+ <p style="color: #FF0000;">
24
+ <%= @resource.errors[property.name].join(',') %>
25
+ </p>
26
+ <p>
27
+ <label for="<%= property.name %>">
28
+ <%= h property.name %>
29
+ </label>
30
+ <% if property.kind_of?(DataMapper::Property::Text) %>
31
+ <textarea name="<%= property.name %>" id="<%= property.name %>" disabled="true"><%= @resource[property.name] %></textarea>
32
+ <% else %>
33
+ <input type="text" name="<%= property.name %>"
34
+ id="<%= property.name %>" value="<%= @resource[property.name] %>" disabled="true">
35
+ </input>
36
+ <% end %>
37
+ </p>
38
+ <% end unless @resource.nil? %>
39
+ </form>
40
+ </div>
41
+ <div id="footer" data-role="footer" class="ui-bar" data-position="fixed" data-id="persist">
42
+ <a href="/crud/edit/<%= @model_name %>/<%= @resource.id %>" data-ajax="false"
43
+ data-role="button" data-icon="refresh">Edit</a>
44
+ </div>
45
+ </div>
46
+ </body>
47
+ </html>
@@ -0,0 +1,2 @@
1
+
2
+ <%= fix_localize(:not_found) %>
@@ -0,0 +1,2 @@
1
+
2
+ <%= fix_localize(:server_error) %>
@@ -0,0 +1,15 @@
1
+
2
+ <div id="openid_index">
3
+ <p>
4
+ <%= fix_localize(:openid_message) %>
5
+ </p>
6
+ <form method="post" action="<%= rf(UzuUzu::Controller::Openid, :openid_begin) %>">
7
+ <p>
8
+ <%= fix_localize(:openid_url) %>:
9
+ <input type="text" name="url" />
10
+ </p>
11
+ <p>
12
+ <input type="submit" value="<%= fix_localize(:login) %>"/>
13
+ </p>
14
+ </form>
15
+ </div>
@@ -0,0 +1,25 @@
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
+ <link rel="apple-touch-icon" href="/favicon.png">
11
+ <% unless @meta.blank?
12
+ @meta.each do |meta|
13
+ %>
14
+ <meta name="<%= h key %>" content="<%= h value %>">
15
+ <% end
16
+ end
17
+ %>
18
+ <title><%= h "#{@title} - " unless @title.blank? %><%= h info.title if info %></title>
19
+ <%= css_for @css unless @css.blank? %>
20
+ <%= js_for @js unless @js.blank? %>
21
+ </head>
22
+ <body >
23
+ <%= @contents %>
24
+ </body>
25
+ </html>
@@ -0,0 +1,14 @@
1
+ <div id="openid_index">
2
+ <p>
3
+ <%= fix_localize(:openid_message) %>
4
+ </p>
5
+ <form method="post" action="<%= r(:openid_begin) %>">
6
+ <p>
7
+ <%= fix_localize(:openid_url) %>:
8
+ <input type="text" name="url" />
9
+ </p>
10
+ <p>
11
+ <input type="submit" value="<%= fix_localize(:login) %>"/>
12
+ </p>
13
+ </form>
14
+ </div>
@@ -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,16 @@
1
+ # coding: utf-8
2
+
3
+ module UzuUzu
4
+ module Controller
5
+ autoload(:Admin, 'uzuuzu/controller/admin')
6
+ autoload(:Contents, 'uzuuzu/controller/contents')
7
+ autoload(:Crud, 'uzuuzu/controller/crud')
8
+ autoload(:Index, 'uzuuzu/controller/index')
9
+ autoload(:Initialize, 'uzuuzu/controller/initialize')
10
+ autoload(:Oauth, 'uzuuzu/controller/oauth')
11
+ autoload(:Openid, 'uzuuzu/controller/openid')
12
+ autoload(:Page, 'uzuuzu/controller/page')
13
+ autoload(:Plugin, 'uzuuzu/controller/plugin')
14
+ autoload(:User, 'uzuuzu/controller/user')
15
+ end
16
+ end
@@ -0,0 +1,110 @@
1
+ ---
2
+ - :id: 1
3
+ :name: contents_only
4
+ :format: erb
5
+ :body: |-
6
+ <div id="contents">
7
+ #{@uzuuzu_contents}
8
+ </div>
9
+ - :id: 2
10
+ :name: noside
11
+ :format: erb
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: erb
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: erb
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: erb
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: erb
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: erb
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,40 @@
1
+ # coding: utf-8
2
+ require 'uzuuzu/adapter/datamapper/model/user'
3
+ require 'uzuuzu/adapter/datamapper/model/blog_category'
4
+ require 'uzuuzu/adapter/datamapper/model/blog_comment'
5
+ require 'uzuuzu/adapter/datamapper/model/blog_entry'
6
+
7
+ module UzuUzu
8
+ class User
9
+ has n, :blogs
10
+ has n, :blog_comments
11
+ end
12
+
13
+ #
14
+ #
15
+ #
16
+ class Blog
17
+ include DataMapper::Resource
18
+
19
+ property :id, Serial
20
+ property :title, String,
21
+ :required => true,
22
+ :length => 255
23
+
24
+ has n, :blog_entries
25
+ has n, :blog_categories
26
+
27
+ belongs_to :user
28
+ end #Blog
29
+
30
+ if auto_upgrade?
31
+ repository do
32
+ Blog.auto_upgrade!
33
+ BlogCategory.auto_upgrade!
34
+ BlogEntry.auto_upgrade!
35
+ BlogComment.auto_upgrade!
36
+ BlogCategoryBlogEntry.auto_upgrade!
37
+ end
38
+ end
39
+ end #UzuUzu
40
+
@@ -0,0 +1,15 @@
1
+ # coding: utf-8
2
+
3
+ module UzuUzu
4
+ class BlogCategory
5
+ include DataMapper::Resource
6
+
7
+ property :id, Serial
8
+ property :title, String,
9
+ :required => true,
10
+ :length => 255
11
+
12
+ belongs_to :blog
13
+ has n, :blog_entries, :through => Resource
14
+ end #BlogCategory
15
+ end #UzuUzu