runo 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (149) hide show
  1. data/LICENSE +19 -0
  2. data/README.rdoc +120 -0
  3. data/bin/runo +35 -0
  4. data/lib/_error.rb +14 -0
  5. data/lib/_field.rb +260 -0
  6. data/lib/_i18n.rb +141 -0
  7. data/lib/_parser.rb +243 -0
  8. data/lib/_path.rb +86 -0
  9. data/lib/_storage/_storage.rb +213 -0
  10. data/lib/_storage/file.rb +200 -0
  11. data/lib/_storage/sequel.rb +174 -0
  12. data/lib/_storage/temp.rb +73 -0
  13. data/lib/_widget/action_create.rb +23 -0
  14. data/lib/_widget/action_login.rb +22 -0
  15. data/lib/_widget/action_signup.rb +16 -0
  16. data/lib/_widget/action_update.rb +16 -0
  17. data/lib/_widget/crumb.rb +24 -0
  18. data/lib/_widget/done.rb +16 -0
  19. data/lib/_widget/login.rb +25 -0
  20. data/lib/_widget/me.rb +31 -0
  21. data/lib/_widget/message.rb +51 -0
  22. data/lib/_widget/navi.rb +88 -0
  23. data/lib/_widget/submit.rb +49 -0
  24. data/lib/_widget/view_ym.rb +77 -0
  25. data/lib/_workflow/_workflow.rb +89 -0
  26. data/lib/_workflow/attachment.rb +50 -0
  27. data/lib/_workflow/blog.rb +28 -0
  28. data/lib/_workflow/contact.rb +23 -0
  29. data/lib/_workflow/forum.rb +26 -0
  30. data/lib/_workflow/register.rb +39 -0
  31. data/lib/meta/_meta.rb +20 -0
  32. data/lib/meta/group.rb +19 -0
  33. data/lib/meta/id.rb +59 -0
  34. data/lib/meta/owner.rb +21 -0
  35. data/lib/meta/timestamp.rb +118 -0
  36. data/lib/runo.rb +396 -0
  37. data/lib/scalar/checkbox.rb +68 -0
  38. data/lib/scalar/file.rb +144 -0
  39. data/lib/scalar/img.rb +112 -0
  40. data/lib/scalar/password.rb +58 -0
  41. data/lib/scalar/radio.rb +47 -0
  42. data/lib/scalar/select.rb +47 -0
  43. data/lib/scalar/text.rb +38 -0
  44. data/lib/scalar/textarea.rb +35 -0
  45. data/lib/scalar/textarea_pre.rb +14 -0
  46. data/lib/scalar/textarea_wiki.rb +173 -0
  47. data/lib/set/_set.rb +195 -0
  48. data/lib/set/dynamic.rb +177 -0
  49. data/lib/set/static.rb +102 -0
  50. data/lib/set/static_folder.rb +96 -0
  51. data/locale/en/index.po +242 -0
  52. data/locale/index.pot +243 -0
  53. data/locale/ja/index.po +242 -0
  54. data/locale/lazy_parser.rb +54 -0
  55. data/skel/config.ru +27 -0
  56. data/skel/skin/_users/00000000_frank-avatar.jpg +0 -0
  57. data/skel/skin/_users/00000000_frank-avatar_small.jpg +0 -0
  58. data/skel/skin/_users/00000000_frank.yaml +12 -0
  59. data/skel/skin/_users/00000000_root-avatar.jpg +0 -0
  60. data/skel/skin/_users/00000000_root-avatar_small.jpg +0 -0
  61. data/skel/skin/_users/00000000_root.yaml +11 -0
  62. data/skel/skin/_users/css/users.css +21 -0
  63. data/skel/skin/_users/css/users.less +25 -0
  64. data/skel/skin/_users/done.html +42 -0
  65. data/skel/skin/_users/index.html +46 -0
  66. data/skel/skin/_users/index.yaml +3 -0
  67. data/skel/skin/_users/summary.html +40 -0
  68. data/skel/skin/css/base.css +93 -0
  69. data/skel/skin/css/base.less +139 -0
  70. data/skel/skin/css/coax.css +199 -0
  71. data/skel/skin/css/coax.less +244 -0
  72. data/skel/skin/examples/blog/20091214_0001.yaml +8 -0
  73. data/skel/skin/examples/blog/20100630_0001.yaml +8 -0
  74. data/skel/skin/examples/blog/20100630_0002.yaml +14 -0
  75. data/skel/skin/examples/blog/20100701_0001.yaml +8 -0
  76. data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f.jpg +0 -0
  77. data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f_small.jpg +0 -0
  78. data/skel/skin/examples/blog/20100701_0002.yaml +19 -0
  79. data/skel/skin/examples/blog/frank/20100701_0001.yaml +10 -0
  80. data/skel/skin/examples/blog/frank/index.yaml +4 -0
  81. data/skel/skin/examples/blog/index.html +51 -0
  82. data/skel/skin/examples/blog/rss.xml +18 -0
  83. data/skel/skin/examples/contact/20100701_0001-file.txt +1 -0
  84. data/skel/skin/examples/contact/20100701_0001.yaml +15 -0
  85. data/skel/skin/examples/contact/20100701_0002.yaml +8 -0
  86. data/skel/skin/examples/contact/20100701_0003.yaml +9 -0
  87. data/skel/skin/examples/contact/index.html +47 -0
  88. data/skel/skin/examples/contact/js/contact.js +13 -0
  89. data/skel/skin/examples/contact/summary.html +54 -0
  90. data/skel/skin/examples/forum/20100701_0001.yaml +41 -0
  91. data/skel/skin/examples/forum/20100701_0002.yaml +25 -0
  92. data/skel/skin/examples/forum/index.html +68 -0
  93. data/skel/skin/examples/forum/summary.html +47 -0
  94. data/skel/skin/examples/index.html +75 -0
  95. data/skel/skin/index.html +41 -0
  96. data/skel/skin/js/base.js +50 -0
  97. data/t/locale/de/index.po +19 -0
  98. data/t/locale/en-GB/index.po +25 -0
  99. data/t/locale/ja/index.po +30 -0
  100. data/t/skin/_users/00000000_test.yaml +3 -0
  101. data/t/skin/_users/index.html +13 -0
  102. data/t/skin/foo/20091120_0001.yaml +7 -0
  103. data/t/skin/foo/bar/20091120_0001.yaml +5 -0
  104. data/t/skin/foo/bar/index.yaml +5 -0
  105. data/t/skin/foo/baz/css/baz.css +1 -0
  106. data/t/skin/foo/css/foo.css +1 -0
  107. data/t/skin/foo/index.html +14 -0
  108. data/t/skin/foo/index.yaml +7 -0
  109. data/t/skin/foo/not_css/foo.css +1 -0
  110. data/t/skin/foo/sub-20100306_0001.yaml +3 -0
  111. data/t/skin/index.yaml +3 -0
  112. data/t/skin/t_attachment/index.html +13 -0
  113. data/t/skin/t_contact/done.html +6 -0
  114. data/t/skin/t_contact/index.html +9 -0
  115. data/t/skin/t_file/index.html +16 -0
  116. data/t/skin/t_img/index.html +14 -0
  117. data/t/skin/t_img/test.jpg +0 -0
  118. data/t/skin/t_select/index.html +9 -0
  119. data/t/skin/t_store/index.html +9 -0
  120. data/t/skin/t_summary/20100326_0001.yaml +3 -0
  121. data/t/skin/t_summary/create.html +9 -0
  122. data/t/skin/t_summary/index.html +9 -0
  123. data/t/skin/t_summary/summary.html +9 -0
  124. data/t/t.rb +27 -0
  125. data/t/test_checkbox.rb +273 -0
  126. data/t/test_field.rb +330 -0
  127. data/t/test_file.rb +900 -0
  128. data/t/test_id.rb +215 -0
  129. data/t/test_img.rb +328 -0
  130. data/t/test_meta.rb +57 -0
  131. data/t/test_parser.rb +1266 -0
  132. data/t/test_password.rb +188 -0
  133. data/t/test_radio.rb +226 -0
  134. data/t/test_role.rb +249 -0
  135. data/t/test_runo.rb +742 -0
  136. data/t/test_runo_call.rb +1286 -0
  137. data/t/test_runo_i18n.rb +318 -0
  138. data/t/test_select.rb +182 -0
  139. data/t/test_set_complex.rb +527 -0
  140. data/t/test_set_dynamic.rb +1504 -0
  141. data/t/test_set_folder.rb +515 -0
  142. data/t/test_set_permit.rb +246 -0
  143. data/t/test_set_static.rb +445 -0
  144. data/t/test_storage.rb +915 -0
  145. data/t/test_text.rb +125 -0
  146. data/t/test_textarea.rb +138 -0
  147. data/t/test_timestamp.rb +473 -0
  148. data/t/test_workflow.rb +367 -0
  149. metadata +345 -0
@@ -0,0 +1,8 @@
1
+ ---
2
+ _owner: root
3
+ _timestamp:
4
+ created: 2010-06-30 09:42:39.020681 +09:00
5
+ published: 2010-06-30 09:42:39.020681 +09:00
6
+ updated: 2010-06-30 09:42:39.020681 +09:00
7
+ body: "Proin turpis urna, congue non rutrum non, tincidunt ut felis. Donec pharetra viverra sem, in cursus metus aliquet in. Etiam commodo aliquam sem, nec faucibus mi suscipit porttitor. Vestibulum lobortis tortor eu magna malesuada pulvinar. In et magna hendrerit dui semper vehicula sit amet eu magna."
8
+ title: "Proin turpis urna"
@@ -0,0 +1,14 @@
1
+ ---
2
+ _owner: root
3
+ _timestamp:
4
+ created: 2010-06-30 23:28:18.996299 +09:00
5
+ published: 2010-06-30 23:28:18.996299 +09:00
6
+ updated: 2010-07-01 16:42:28.030389 +09:00
7
+ body: |-
8
+ Duis varius felis quis elit rutrum adipiscing.
9
+ * Nunc faucibus eros rhoncus diam pellentesque porta.
10
+ ** Duis fringilla sem sit amet sem sollicitudin non dapibus augue vulputate.
11
+ * Curabitur aliquet massa eget sem feugiat ac luctus velit faucibus.
12
+ * Proin et felis felis.
13
+ ==Aenean laoreet elit ac massa accumsan ornare.==
14
+ title: "Duis varius felis"
@@ -0,0 +1,8 @@
1
+ ---
2
+ _owner: root
3
+ _timestamp:
4
+ created: 2010-07-01 11:18:25.711634 +09:00
5
+ published: 2010-07-01 11:18:25.711634 +09:00
6
+ updated: 2010-07-01 11:18:25.711634 +09:00
7
+ body: "Integer ultrices pharetra urna, sed aliquet nisl sodales in. Vestibulum eget nulla eu lacus elementum tincidunt et sit amet nisl. Vivamus non justo mauris. Mauris egestas diam ut turpis iaculis consectetur."
8
+ title: "Integer ultrices"
@@ -0,0 +1,19 @@
1
+ ---
2
+ _owner: root
3
+ _timestamp:
4
+ created: 2010-07-01 16:27:10.665692 +09:00
5
+ published: 2010-07-01 16:27:10.665692 +09:00
6
+ updated: 2010-07-01 16:30:34.196737 +09:00
7
+ a:
8
+ ? "20100701_0001"
9
+ :
10
+ f:
11
+ basename: 090106.jpg
12
+ size: 4840
13
+ type: image/jpeg
14
+ body: |-
15
+ Fusce suscipit neque ac arcu egestas varius. *Donec tempor* est id arcu bibendum elementum. Ut gravida, ligula at condimentum bibendum, sapien erat egestas diam, quis convallis ligula nisi quis sapien. Donec vitae nisi in orci sodales malesuada at venenatis felis.
16
+ + Quisque at massa vel tellus
17
+ + Bibendum commodo sed nec tellus
18
+ Suspendisse sit amet est diam, luctus iaculis sapien.
19
+ title: "Fusce suscipit neque"
@@ -0,0 +1,10 @@
1
+ ---
2
+ _owner: frank
3
+ _timestamp:
4
+ created: 2010-07-01 16:33:00.571653 +09:00
5
+ published: 2010-07-01 16:33:00.571653 +09:00
6
+ updated: 2010-07-01 16:33:00.571653 +09:00
7
+ body: |
8
+ This is my blog.
9
+ Haha!
10
+ title: "Hello, folks..."
@@ -0,0 +1,4 @@
1
+ ---
2
+ label: "Frank's Blog"
3
+ admin: frank
4
+ group: []
@@ -0,0 +1,51 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+
7
+ <head>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta name="runo-label" content="Blog" />
10
+ <title>@(label)</title>
11
+ <link rel="stylesheet" href="/css/base.css" type="text/css" media="screen" />
12
+ <link rel="stylesheet" href="/css/coax.css" type="text/css" media="screen" />
13
+ <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
14
+ <script type="text/javascript" src="/js/base.js"></script>
15
+ <link rel="alternate" title="@(label) RSS" href="@(href)read_rss.xml" type="application/rss+xml">
16
+ </head>
17
+
18
+ <body>
19
+ <div id="container">
20
+ <div id="header">
21
+ <h1><a href=".">@(label)</a></h1>
22
+ $(.crumb)
23
+ </div>
24
+
25
+ <div id="center" class="column">
26
+ <ul id="main" class="runo-blog">
27
+ <!-- 1..5 may_preview -->
28
+ <li>
29
+ <div class="label">$(title = text 32 1..32)</div>
30
+ <div class="ibody">
31
+ $(body = textarea-wiki 60*10 1..)
32
+ <div id="a" class="runo-attachment">$(f = img 64*64 1..9000)<br/></div>
33
+ <div>by $(_owner) @ $(_timestamp meta-timestamp can_update)</div>
34
+ $(.action_update)
35
+ </div>
36
+ </li>
37
+ </ul>
38
+ </div>
39
+
40
+ <div id="right" class="column">
41
+ $(.action_signup)
42
+ $(.me)
43
+ $(main.action_create)
44
+ $(main.view_ym)
45
+ </div>
46
+
47
+ <div id="footer"></div>
48
+ </div>
49
+ </body>
50
+
51
+ </html>
@@ -0,0 +1,18 @@
1
+ <?xml version="1.0"?>
2
+ <rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
3
+ <channel class="runo-xml">
4
+ <atom:link href="@(href)rss.xml" rel="self" type="application/rss+xml" />
5
+ <title>@(label)</title>
6
+ <description></description>
7
+ <link>@(href)</link>
8
+ <language>_(en)</language>
9
+ <generator>Runo</generator>
10
+ <item class="body">
11
+ <title>$(title)</title>
12
+ <link>@(href)</link>
13
+ <description><![CDATA[$(body)]]></description>
14
+ <pubDate>$(_timestamp.rfc2822)</pubDate>
15
+ <guid>@(href)</guid>
16
+ </item>
17
+ </channel>
18
+ </rss>
@@ -0,0 +1,15 @@
1
+ ---
2
+ comment: |
3
+ Hello!
4
+ Hello!
5
+ country: "United States"
6
+ email: john@example.com
7
+ favorite:
8
+ - mystery
9
+ - romance
10
+ file:
11
+ basename: t.txt
12
+ size: 7
13
+ type: text/plain
14
+ name: John
15
+ rating: "1"
@@ -0,0 +1,8 @@
1
+ ---
2
+ comment: Wow.
3
+ country: Germany
4
+ email: lisa@example.com
5
+ favorite:
6
+ - action
7
+ name: Lisa
8
+ rating: "4"
@@ -0,0 +1,9 @@
1
+ ---
2
+ comment: "Oh no."
3
+ country: Japan
4
+ email: akira@example.com
5
+ favorite:
6
+ - action
7
+ - mystery
8
+ name: Akira
9
+ rating: "5"
@@ -0,0 +1,47 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+
7
+ <head>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta name="runo-label" content="Contact Form" />
10
+ <title>@(label)</title>
11
+ <link rel="stylesheet" href="/css/base.css" type="text/css" media="screen" />
12
+ <link rel="stylesheet" href="/css/coax.css" type="text/css" media="screen" />
13
+ <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
14
+ <script type="text/javascript" src="/js/base.js"></script>
15
+ </head>
16
+
17
+ <body>
18
+ <div id="container">
19
+ <div id="header">
20
+ <h1><a href=".">@(label)</a></h1>
21
+ $(.crumb)
22
+ </div>
23
+
24
+ <div id="center" class="column">
25
+ <div id="main" class="runo-contact">
26
+ <!-- 1..100 should_preview -->
27
+ <table>
28
+ <tr><th>Name</th><td>$(name = text 1..64)</td></tr>
29
+ <tr><th>Email</th><td>$(email = text 1..64)</td></tr>
30
+ <tr><th>Favorite</th><td>$(favorite = checkbox action,mystery,romance mandatory)</td></tr>
31
+ <tr><th>Rating</th><td>$(rating = radio 1..5 mandatory)</td></tr>
32
+ <tr><th>Counrty</th><td>$(country = select 'United States',Germany,Japan)</td></tr>
33
+ <tr><th>Comment</th><td>$(comment = textarea-pre 60*6 1..4096)</td></tr>
34
+ <tr><th>File</th><td>$(file = file 0..4096)</td></tr>
35
+ </table>
36
+ </div>
37
+ </div>
38
+
39
+ <div id="right" class="column">
40
+ $(.me)
41
+ </div>
42
+
43
+ <div id="footer"></div>
44
+ </div>
45
+ </body>
46
+
47
+ </html>
@@ -0,0 +1,13 @@
1
+ $(document).ready(function() {
2
+ // just a makeshift :-p
3
+ // native support for various summaries (sum, avg, count, min and max) is on the way.
4
+ var sum = 0;
5
+ var num = 0;
6
+ $('.rating').each(
7
+ function(i){
8
+ sum += parseInt($(this).text());
9
+ num += 1;
10
+ }
11
+ );
12
+ if (num > 0) $('.rating-avg').text('Average: ' + parseInt(sum * 10 / num) / 10);
13
+ });
@@ -0,0 +1,54 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+
7
+ <head>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <title>@(label)</title>
10
+ <link rel="stylesheet" href="/css/base.css" type="text/css" media="screen" />
11
+ <link rel="stylesheet" href="/css/coax.css" type="text/css" media="screen" />
12
+ <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
13
+ <script type="text/javascript" src="./js/contact.js"></script>
14
+ </head>
15
+
16
+ <body>
17
+ <div id="container">
18
+ <div id="header">
19
+ <h1><a href=".">@(label)</a></h1>
20
+ $(.crumb)
21
+ </div>
22
+
23
+ <div id="center" class="column">
24
+ <table id="main" class="runo-contact summary" style="border: 1px solid black;">
25
+ <tr>
26
+ <th>Name</th>
27
+ <th>Email</th>
28
+ <th>Favorite</th>
29
+ <th>Rating</th>
30
+ </tr>
31
+ <tr class="body">
32
+ <td>$(name)</td>
33
+ <td>$(email)</td>
34
+ <td>$(favorite)</td>
35
+ <td class="rating">$(rating)</td>
36
+ </tr>
37
+ <tr>
38
+ <td></td>
39
+ <td></td>
40
+ <td></td>
41
+ <td class="rating-avg">Average: ???</td>
42
+ </tr>
43
+ </table>
44
+ </div>
45
+
46
+ <div id="right" class="column">
47
+ $(.me)
48
+ </div>
49
+
50
+ <div id="footer"></div>
51
+ </div>
52
+ </body>
53
+
54
+ </html>
@@ -0,0 +1,41 @@
1
+ ---
2
+ _owner: root
3
+ _timestamp:
4
+ created: 2010-07-01 15:05:37.204824 +09:00
5
+ published: 2010-07-01 15:05:37.204824 +09:00
6
+ updated: 2010-07-01 15:05:37.204824 +09:00
7
+ post: "consectetur adipiscing elit. Integer ornare varius sodales. Ut consequat odio a velit iaculis scelerisque. Mauris eget nibh lectus, sit amet condimentum ante. Vivamus at neque magna, sit amet ultricies nibh. Integer sed mi nec lacus scelerisque eleifend ut nec elit. Aliquam vitae nibh justo, eu pellentesque lorem. Vestibulum nisi leo, hendrerit nec placerat ac, pulvinar at erat. Cras justo purus, semper in elementum sed, vehicula bibendum arcu. Etiam quis lacus nec turpis luctus semper sit amet ut ipsum. Donec porta feugiat orci, in semper sapien aliquet sed. "
8
+ replies:
9
+ ? "20100701_0001"
10
+ :
11
+ _owner: frank
12
+ _timestamp:
13
+ created: 2010-07-01 15:06:06.811185 +09:00
14
+ published: 2010-07-01 15:06:06.811185 +09:00
15
+ updated: 2010-07-01 15:06:06.811185 +09:00
16
+ comment: "Pellentesque aliquet tortor in nibh scelerisque aliquet. In et sapien suscipit magna tristique egestas ac ac urna. Duis suscipit, tellus non ullamcorper eleifend, massa lorem ultrices massa, non vulputate purus lectus vitae est. Maecenas ut risus neque, malesuada volutpat felis. Maecenas euismod turpis in augue iaculis convallis."
17
+ ? "20100701_0002"
18
+ :
19
+ _owner: root
20
+ _timestamp:
21
+ created: 2010-07-01 15:06:31.375277 +09:00
22
+ published: 2010-07-01 15:06:31.375277 +09:00
23
+ updated: 2010-07-01 15:06:31.375277 +09:00
24
+ comment: "Etiam rhoncus, dui et convallis consequat, nisi lorem consectetur lorem, quis varius tortor mauris accumsan mauris. Cras pharetra aliquam tellus, ut dignissim nibh venenatis sed."
25
+ ? "20100701_0003"
26
+ :
27
+ _owner: carl
28
+ _timestamp:
29
+ created: 2010-07-01 15:06:59.319917 +09:00
30
+ published: 2010-07-01 15:06:59.319917 +09:00
31
+ updated: 2010-07-01 15:06:59.319917 +09:00
32
+ comment: "Aliquam quis lacus id dui congue vehicula. Phasellus dignissim ullamcorper arcu, ac pretium lorem scelerisque sit amet. Praesent eu neque libero. Morbi sodales convallis tellus sed sagittis. Ut consectetur, eros eget volutpat ultrices, nisl augue malesuada dui, hendrerit cursus orci urna a felis."
33
+ ? "20100701_0004"
34
+ :
35
+ _owner: root
36
+ _timestamp:
37
+ created: 2010-07-01 16:56:17.474677 +09:00
38
+ published: 2010-07-01 16:56:17.474677 +09:00
39
+ updated: 2010-07-01 16:56:17.474677 +09:00
40
+ comment: "Ut ante arcu, consectetur nec laoreet ut, lacinia quis nisi."
41
+ subject: "Lorem ipsum"
@@ -0,0 +1,25 @@
1
+ ---
2
+ _owner: frank
3
+ _timestamp:
4
+ created: 2010-07-01 15:08:51.596034 +09:00
5
+ published: 2010-07-01 15:08:51.596034 +09:00
6
+ updated: 2010-07-01 16:16:48.149488 +09:00
7
+ post: "Suspendisse ut dui in velit scelerisque condimentum in id lectus. Aenean ut dolor ut sapien rhoncus faucibus. Morbi sed dictum velit. Duis mi erat, interdum quis tristique et, varius id urna. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos."
8
+ replies:
9
+ ? "20100701_0001"
10
+ :
11
+ _owner: carl
12
+ _timestamp:
13
+ created: 2010-07-01 15:09:16.205333 +09:00
14
+ published: 2010-07-01 15:09:16.205333 +09:00
15
+ updated: 2010-07-01 15:09:16.205333 +09:00
16
+ comment: "Nullam id felis pharetra mi posuere luctus et et nisi. Pellentesque facilisis mi laoreet ligula tristique et ultricies sapien consectetur. Duis rhoncus ullamcorper nisi at hendrerit. "
17
+ ? "20100701_0002"
18
+ :
19
+ _owner: don
20
+ _timestamp:
21
+ created: 2010-07-01 15:09:44.280047 +09:00
22
+ published: 2010-07-01 15:09:44.280047 +09:00
23
+ updated: 2010-07-01 15:09:44.280047 +09:00
24
+ comment: "Etiam rhoncus, dui et convallis consequat, nisi lorem consectetur lorem, quis varius tortor mauris accumsan mauris."
25
+ subject: "Etiam posuere placerat orci in hendrerit"
@@ -0,0 +1,68 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html
3
+ PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
4
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
5
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
6
+
7
+ <head>
8
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
9
+ <meta name="runo-label" content="Forum" />
10
+ <title>@(label)</title>
11
+ <link rel="stylesheet" href="/css/base.css" type="text/css" media="screen" />
12
+ <link rel="stylesheet" href="/css/coax.css" type="text/css" media="screen" />
13
+ <script type="text/javascript" src="http://code.jquery.com/jquery-1.4.2.min.js"></script>
14
+ <script type="text/javascript" src="/js/base.js"></script>
15
+ </head>
16
+
17
+ <body>
18
+ <div id="container">
19
+ <div id="header">
20
+ <h1><a href=".">@(label)</a></h1>
21
+ $(.crumb)
22
+ </div>
23
+
24
+ <div id="center" class="column">
25
+ <div id="main" class="runo-forum">
26
+ <!-- 1..10 may_preview desc -->
27
+ <table class="forum post">
28
+ <tr>
29
+ <th>
30
+ <div>$(_owner)</div>
31
+ <div>$(_timestamp)</div>
32
+ </th>
33
+ <td>
34
+ <div class="subject">$(subject = text 1..64)</div>
35
+ $(post = textarea 60*6 1..4096)
36
+ $(.action_update)
37
+ </td>
38
+ </tr>
39
+ </table>
40
+ <table id="replies" class="runo-forum forum reply">
41
+ <!-- 1..5 -->
42
+ <tr title="reply,replies">
43
+ <th>
44
+ $(_owner)<br/>
45
+ $(_timestamp)
46
+ </th>
47
+ <td>
48
+ $(comment = textarea 60*6 1..4096)
49
+ $(.action_update)
50
+ </td>
51
+ <tr>
52
+ </table>
53
+ $(replies.action_create)
54
+ </div>
55
+ </div>
56
+
57
+ <div id="right" class="column">
58
+ $(.action_signup)
59
+ $(.me)
60
+ $(main.action_create)
61
+ $(main.view_ym)
62
+ </div>
63
+
64
+ <div id="footer"></div>
65
+ </div>
66
+ </body>
67
+
68
+ </html>