runo 0.2.1 → 0.2.2

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 (151) hide show
  1. data/README.rdoc +1 -118
  2. data/bin/runo +4 -29
  3. data/lib/dummy.rb +0 -0
  4. metadata +12 -278
  5. data/lib/_error.rb +0 -14
  6. data/lib/_field.rb +0 -260
  7. data/lib/_i18n.rb +0 -144
  8. data/lib/_parser.rb +0 -256
  9. data/lib/_path.rb +0 -86
  10. data/lib/_storage/_storage.rb +0 -215
  11. data/lib/_storage/file.rb +0 -201
  12. data/lib/_storage/sequel.rb +0 -174
  13. data/lib/_storage/temp.rb +0 -73
  14. data/lib/_widget/action_create.rb +0 -23
  15. data/lib/_widget/action_login.rb +0 -22
  16. data/lib/_widget/action_signup.rb +0 -16
  17. data/lib/_widget/action_update.rb +0 -16
  18. data/lib/_widget/crumb.rb +0 -24
  19. data/lib/_widget/done.rb +0 -16
  20. data/lib/_widget/login.rb +0 -25
  21. data/lib/_widget/me.rb +0 -31
  22. data/lib/_widget/message.rb +0 -51
  23. data/lib/_widget/navi.rb +0 -88
  24. data/lib/_widget/submit.rb +0 -49
  25. data/lib/_widget/view_ym.rb +0 -77
  26. data/lib/_workflow/_workflow.rb +0 -89
  27. data/lib/_workflow/attachment.rb +0 -50
  28. data/lib/_workflow/blog.rb +0 -28
  29. data/lib/_workflow/contact.rb +0 -23
  30. data/lib/_workflow/forum.rb +0 -26
  31. data/lib/_workflow/register.rb +0 -39
  32. data/lib/meta/_meta.rb +0 -20
  33. data/lib/meta/group.rb +0 -19
  34. data/lib/meta/id.rb +0 -59
  35. data/lib/meta/owner.rb +0 -21
  36. data/lib/meta/timestamp.rb +0 -118
  37. data/lib/runo.rb +0 -396
  38. data/lib/scalar/checkbox.rb +0 -68
  39. data/lib/scalar/file.rb +0 -144
  40. data/lib/scalar/img.rb +0 -112
  41. data/lib/scalar/password.rb +0 -58
  42. data/lib/scalar/radio.rb +0 -47
  43. data/lib/scalar/select.rb +0 -47
  44. data/lib/scalar/text.rb +0 -38
  45. data/lib/scalar/textarea.rb +0 -35
  46. data/lib/scalar/textarea_pre.rb +0 -14
  47. data/lib/scalar/textarea_wiki.rb +0 -173
  48. data/lib/set/_set.rb +0 -196
  49. data/lib/set/dynamic.rb +0 -177
  50. data/lib/set/static.rb +0 -102
  51. data/lib/set/static_folder.rb +0 -96
  52. data/locale/en/index.po +0 -242
  53. data/locale/index.pot +0 -243
  54. data/locale/ja/index.po +0 -242
  55. data/locale/lazy_parser.rb +0 -54
  56. data/skel/config.ru +0 -27
  57. data/skel/skin/_users/00000000_frank-avatar.jpg +0 -0
  58. data/skel/skin/_users/00000000_frank-avatar_small.jpg +0 -0
  59. data/skel/skin/_users/00000000_frank.yaml +0 -12
  60. data/skel/skin/_users/00000000_root-avatar.jpg +0 -0
  61. data/skel/skin/_users/00000000_root-avatar_small.jpg +0 -0
  62. data/skel/skin/_users/00000000_root.yaml +0 -11
  63. data/skel/skin/_users/css/users.css +0 -21
  64. data/skel/skin/_users/css/users.less +0 -25
  65. data/skel/skin/_users/done.html +0 -42
  66. data/skel/skin/_users/index.html +0 -46
  67. data/skel/skin/_users/index.yaml +0 -3
  68. data/skel/skin/_users/summary.html +0 -40
  69. data/skel/skin/css/base.css +0 -93
  70. data/skel/skin/css/base.less +0 -139
  71. data/skel/skin/css/coax.css +0 -199
  72. data/skel/skin/css/coax.less +0 -244
  73. data/skel/skin/examples/blog/20091214_0001.yaml +0 -8
  74. data/skel/skin/examples/blog/20100630_0001.yaml +0 -8
  75. data/skel/skin/examples/blog/20100630_0002.yaml +0 -14
  76. data/skel/skin/examples/blog/20100701_0001.yaml +0 -8
  77. data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f.jpg +0 -0
  78. data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f_small.jpg +0 -0
  79. data/skel/skin/examples/blog/20100701_0002.yaml +0 -19
  80. data/skel/skin/examples/blog/frank/20100701_0001.yaml +0 -10
  81. data/skel/skin/examples/blog/frank/index.yaml +0 -4
  82. data/skel/skin/examples/blog/index.html +0 -51
  83. data/skel/skin/examples/blog/rss.xml +0 -18
  84. data/skel/skin/examples/contact/20100701_0001-file.txt +0 -1
  85. data/skel/skin/examples/contact/20100701_0001.yaml +0 -15
  86. data/skel/skin/examples/contact/20100701_0002.yaml +0 -8
  87. data/skel/skin/examples/contact/20100701_0003.yaml +0 -9
  88. data/skel/skin/examples/contact/index.html +0 -47
  89. data/skel/skin/examples/contact/js/contact.js +0 -13
  90. data/skel/skin/examples/contact/summary.html +0 -54
  91. data/skel/skin/examples/forum/20100701_0001.yaml +0 -41
  92. data/skel/skin/examples/forum/20100701_0002.yaml +0 -25
  93. data/skel/skin/examples/forum/index.html +0 -68
  94. data/skel/skin/examples/forum/summary.html +0 -47
  95. data/skel/skin/examples/index.html +0 -73
  96. data/skel/skin/index.html +0 -39
  97. data/skel/skin/js/base.js +0 -50
  98. data/t/locale/de/index.po +0 -19
  99. data/t/locale/en-GB/index.po +0 -25
  100. data/t/locale/ja/index.po +0 -30
  101. data/t/skin/_users/00000000_test.yaml +0 -3
  102. data/t/skin/_users/index.html +0 -13
  103. data/t/skin/foo/20091120_0001.yaml +0 -7
  104. data/t/skin/foo/bar/20091120_0001.yaml +0 -5
  105. data/t/skin/foo/bar/index.yaml +0 -5
  106. data/t/skin/foo/baz/css/baz.css +0 -1
  107. data/t/skin/foo/css/foo.css +0 -1
  108. data/t/skin/foo/index.html +0 -14
  109. data/t/skin/foo/index.yaml +0 -7
  110. data/t/skin/foo/not_css/foo.css +0 -1
  111. data/t/skin/foo/qux/index.html +0 -8
  112. data/t/skin/foo/qux/moo/index.html +0 -6
  113. data/t/skin/foo/sub-20100306_0001.yaml +0 -3
  114. data/t/skin/index.yaml +0 -3
  115. data/t/skin/t_attachment/index.html +0 -13
  116. data/t/skin/t_contact/done.html +0 -6
  117. data/t/skin/t_contact/index.html +0 -9
  118. data/t/skin/t_file/index.html +0 -16
  119. data/t/skin/t_img/index.html +0 -14
  120. data/t/skin/t_img/test.jpg +0 -0
  121. data/t/skin/t_select/index.html +0 -9
  122. data/t/skin/t_store/index.html +0 -9
  123. data/t/skin/t_summary/20100326_0001.yaml +0 -3
  124. data/t/skin/t_summary/create.html +0 -9
  125. data/t/skin/t_summary/index.html +0 -9
  126. data/t/skin/t_summary/summary.html +0 -9
  127. data/t/t.rb +0 -27
  128. data/t/test_checkbox.rb +0 -273
  129. data/t/test_field.rb +0 -330
  130. data/t/test_file.rb +0 -900
  131. data/t/test_id.rb +0 -215
  132. data/t/test_img.rb +0 -328
  133. data/t/test_meta.rb +0 -57
  134. data/t/test_parser.rb +0 -1516
  135. data/t/test_password.rb +0 -188
  136. data/t/test_radio.rb +0 -226
  137. data/t/test_role.rb +0 -249
  138. data/t/test_runo.rb +0 -768
  139. data/t/test_runo_call.rb +0 -1281
  140. data/t/test_runo_i18n.rb +0 -325
  141. data/t/test_select.rb +0 -182
  142. data/t/test_set_complex.rb +0 -527
  143. data/t/test_set_dynamic.rb +0 -1504
  144. data/t/test_set_folder.rb +0 -515
  145. data/t/test_set_permit.rb +0 -246
  146. data/t/test_set_static.rb +0 -468
  147. data/t/test_storage.rb +0 -915
  148. data/t/test_text.rb +0 -125
  149. data/t/test_textarea.rb +0 -138
  150. data/t/test_timestamp.rb +0 -473
  151. data/t/test_workflow.rb +0 -367
@@ -1,54 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- # Author:: Akira FUNAI
4
- # Copyright:: Copyright (c) 2010 Akira FUNAI
5
-
6
- require 'gettext'
7
-
8
- module GetText::LazyParser
9
-
10
- GetText::RGetText.add_parser GetText::LazyParser
11
-
12
- module_function
13
-
14
- def target?(file)
15
- File.extname(file) == '.rb' || File.extname(file) == '.html'
16
- end
17
-
18
- def parse(file)
19
- ary = []
20
-
21
- code = ::File.open(file) {|f| f.read }
22
- s = StringScanner.new code
23
- until s.eos?
24
- if (
25
- s.scan(/_\('([^']+)'\)/) ||
26
- s.scan(/_\(([\w \.\,\!\:]+)\)/) ||
27
- s.scan(/_ '([^']+)'/) ||
28
- s.scan(/_ ([\w\.]+)/)
29
- )
30
- po = GetText::PoMessage.new :normal
31
- po.msgid = s[1]
32
- po.sources = ["#{file}:#{_line(s.pos, code)}"]
33
- ary << po
34
- elsif (
35
- s.scan(/n_\(\s*'([^']+)'\s*,\s*'([^']+)'/m)
36
- )
37
- po = GetText::PoMessage.new :plural
38
- po.msgid = s[1]
39
- po.msgid_plural = s[2]
40
- po.sources = ["#{file}:#{_line(s.pos, code)}"]
41
- ary << po
42
- else
43
- s.scan /.+?(?=_|n|\z)/m
44
- end
45
- end
46
-
47
- ary
48
- end
49
-
50
- def _line(pos, code)
51
- code[0...pos].count("\n") + 1
52
- end
53
-
54
- end
@@ -1,27 +0,0 @@
1
- #!/usr/bin/env ruby
2
- # encoding: UTF-8
3
-
4
- # Author:: Akira FUNAI
5
- # Copyright:: Copyright (c) 2009-2010 Akira FUNAI
6
-
7
- require 'rubygems'
8
-
9
- $LOAD_PATH.unshift(::File.expand_path('../lib',::File.dirname(__FILE__)))
10
- require 'runo'
11
-
12
- use Rack::ShowExceptions
13
- use Rack::Session::Pool #Cookie
14
- use Rack::Lock
15
-
16
- ::Dir.chdir ::File.dirname(__FILE__)
17
-
18
- Runo.config(
19
- 'skin_dir' => './skin',
20
- 'storage' => {
21
- 'default' => 'File',
22
- 'File' => {'data_dir' => './data'},
23
- 'Sequel' => {'uri' => 'sqlite:/'},
24
- }
25
- )
26
-
27
- run Runo.new
@@ -1,12 +0,0 @@
1
- ---
2
- _id: frank
3
- _owner: frank
4
- _timestamp:
5
- updated: 2010-06-30 19:36:10.685090 +09:00
6
- avatar:
7
- basename: 090104.jpg
8
- size: 4257
9
- type: image/jpeg
10
- email: frank@example.com
11
- name: Frank
12
- password: ygELi9fCAIJNA
@@ -1,11 +0,0 @@
1
- ---
2
- _id: root
3
- _timestamp:
4
- updated: 2010-05-29 03:06:57.156802 +09:00
5
- avatar:
6
- basename: 091210.jpg
7
- size: 5790
8
- type: image/jpeg
9
- email: test@example.com
10
- name: "Root User"
11
- password: yln/Xsr4Tcv/s
@@ -1,21 +0,0 @@
1
- #center table.panel {
2
- display: -moz-inline-box;
3
- display: inline-block;
4
- margin: 0 10px 10px 10px;
5
- padding: 5px 15px 20px 15px;
6
- width: auto;
7
- height: 120px;
8
- }
9
- #center table.panel th {
10
- width: auto;
11
- text-align: center;
12
- vertical-align: top;
13
- padding: 0;
14
- background: white;
15
- color: black;
16
- }
17
- #center table.panel td {
18
- width: auto;
19
- vertical-align: top;
20
- padding: 0;
21
- }
@@ -1,25 +0,0 @@
1
- #center {
2
- table.panel {
3
- display: -moz-inline-box;
4
- display: inline-block;
5
- margin: 0 10px 10px 10px;
6
- padding: 5px 15px 20px 15px;
7
- width: auto;
8
- height: 120px;
9
-
10
- th {
11
- width: auto;
12
- text-align: center;
13
- vertical-align: top;
14
- padding: 0;
15
- background: white;
16
- color: black;
17
- }
18
-
19
- td {
20
- width: auto;
21
- vertical-align: top;
22
- padding: 0;
23
- }
24
- }
25
- }
@@ -1,42 +0,0 @@
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>_(Account Created)</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/base.js"></script>
14
- </head>
15
-
16
- <body>
17
- <div id="container">
18
- <div id="header">
19
- <h1>_(Account Created)</h1>
20
- $(.crumb)
21
- </div>
22
-
23
- <div id="center" class="column">
24
- <h2>_(Thanks!)</h2>
25
- <p>_(You can login with your new account now.)</p>
26
- <form id="form_login" method="post" action="@(base_href)../login.html">
27
- <div class="login">
28
- <label for="login_id">_(ID)</label><input type="text" id="login_id" name="id" size="10" value="" />
29
- <label for="login_pw">_(Password)</label><input type="password" id="login_pw" name="pw" size="10" value="" />
30
- <input type="submit" value="_(login)" />
31
- </div>
32
- </form>
33
- </div>
34
-
35
- <div id="right" class="column">
36
- </div>
37
-
38
- <div id="footer"></div>
39
- </div>
40
- </body>
41
-
42
- </html>
@@ -1,46 +0,0 @@
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="User Admin" />
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="app-register">
26
- <!-- 1..10 may_preview -->
27
- <table title="user,users">
28
- <tr><th>_(ID)</th><td>$(_id = meta-id 16 1..16)</td></tr>
29
- <tr><th>_(Name)</th><td>$(name = text 1..64)</td></tr>
30
- <tr><th>_(Email)</th><td>$(email = text 0..64)</td></tr>
31
- <tr><th>_(Password)</th><td>$(password = password 12 8..32)</td></tr>
32
- <tr><th>_(Avatar)</th><td>$(avatar = img 72*72 crop 10 0..320000)</td></tr>
33
- </table>
34
- </div>
35
- </div>
36
-
37
- <div id="right" class="column">
38
- $(.me)
39
- $(main.action_create)
40
- </div>
41
-
42
- <div id="footer"></div>
43
- </div>
44
- </body>
45
-
46
- </html>
@@ -1,3 +0,0 @@
1
- ---
2
- admin: root
3
-
@@ -1,40 +0,0 @@
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
- <link rel="stylesheet" href="./css/users.css" type="text/css" media="screen" />
13
- </head>
14
-
15
- <body>
16
- <div id="container">
17
- <div id="header">
18
- <h1><a href=".">@(label)</a></h1>
19
- $(.crumb)
20
- </div>
21
-
22
- <div id="center" class="column">
23
- <div id="main" class="app-register">
24
- <table class="panel">
25
- <tr><th>$(_id)</th></tr>
26
- <tr><td>$(.a_update)$(avatar.thumbnail)</a></td></tr>
27
- </table>
28
- </div>
29
- </div>
30
-
31
- <div id="right" class="column">
32
- $(.me)
33
- $(main.action_create)
34
- </div>
35
-
36
- <div id="footer"></div>
37
- </div>
38
- </body>
39
-
40
- </html>
@@ -1,93 +0,0 @@
1
- ul.message {
2
- background: white;
3
- list-style-type: none;
4
- padding-left: 0.5em;
5
- -moz-border-radius: 0.5em;
6
- -webkit-border-radius: 0.5em;
7
- }
8
- ul.message li { padding: 0.5em; }
9
- ul.notice { border: 2px solid blue; }
10
- ul.alert { border: 2px solid orange; }
11
- ul.error { border: 2px solid red; }
12
- span.error input { background: pink; }
13
- span.error file { background: pink; }
14
- span.error textarea { background: pink; }
15
- span.error select { background: pink; }
16
- span.radio, span.checkbox, span.file, span.img {
17
- display: -moz-inline-box;
18
- display: inline-block;
19
- vertical-align: top;
20
- margin-bottom: 2px;
21
- }
22
- span.error.radio, span.error.checkbox, span.error.file, span.error.img { background: pink; }
23
- span.error_message {
24
- display: block;
25
- color: red;
26
- background: transparent;
27
- font-weight: bold;
28
- }
29
- img {
30
- border: none;
31
- vertical-align: top;
32
- }
33
- span.file {
34
- display: -moz-inline-box;
35
- display: inline-block;
36
- vertical-align: top;
37
- margin: 1px 0 1px 0;
38
- }
39
- span.dummy_img {
40
- display: -moz-inline-box;
41
- display: inline-block;
42
- vertical-align: top;
43
- margin-bottom: 2px;
44
- background: lightgray;
45
- }
46
- span.checkbox input {
47
- vertical-align: top;
48
- margin-right: 0;
49
- padding-right: 0;
50
- }
51
- span.checkbox label { margin-right: 0.5em; }
52
- span.radio input {
53
- vertical-align: top;
54
- margin-right: 0;
55
- padding-right: 0;
56
- }
57
- span.radio label { margin-right: 0.5em; }
58
- div.view_ym, div.action_create { margin: 1em 0 0 0; }
59
- div.me {
60
- margin: 1em 0 0 0;
61
- overflow: hidden;
62
- position: relative;
63
- }
64
- div.me img {
65
- float: left;
66
- margin-right: 1em;
67
- }
68
- div.me .dummy_img {
69
- float: left;
70
- margin-right: 1em;
71
- }
72
- div.me .client {
73
- font-size: large;
74
- font-weight: bold;
75
- margin: 0;
76
- }
77
- div.me .roles {
78
- font-size: small;
79
- margin: 0;
80
- }
81
- div.me .action_logout { margin: 0.5em 0 0 0; }
82
- div.login {
83
- margin: 5em 0 5em 0;
84
- text-align: center;
85
- }
86
- div.login label { margin-right: 0.5em; }
87
- div.login input { margin-right: 1em; }
88
- div.submit { margin: 1em 0 2em 2em; }
89
- div.submit input { margin-right: 1em; }
90
- div.navi {
91
- margin: 0.5em 2em 0.5em 0;
92
- text-align: right;
93
- }
@@ -1,139 +0,0 @@
1
- ul.message {
2
- background: white;
3
- list-style-type: none;
4
- padding-left: .5em;
5
- -moz-border-radius: .5em;
6
- -webkit-border-radius: .5em;
7
-
8
- li {
9
- padding: .5em;
10
- }
11
- }
12
-
13
- ul.notice {
14
- border: 2px solid blue;
15
- }
16
-
17
- ul.alert {
18
- border: 2px solid orange;
19
- }
20
-
21
- ul.error {
22
- border: 2px solid red;
23
- }
24
-
25
- span.error {
26
- input,
27
- file,
28
- textarea,
29
- select {
30
- background: pink;
31
- }
32
- }
33
-
34
- span.radio,
35
- span.checkbox,
36
- span.file,
37
- span.img {
38
- display: -moz-inline-box;
39
- display: inline-block;
40
- vertical-align: top;
41
- margin-bottom: 2px;
42
- }
43
-
44
- span.error.radio,
45
- span.error.checkbox,
46
- span.error.file,
47
- span.error.img {
48
- background: pink;
49
- }
50
-
51
- span.error_message {
52
- display: block;
53
- color: red;
54
- background: transparent;
55
- font-weight: bold;
56
- }
57
-
58
- img {
59
- border: none;
60
- vertical-align: top;
61
- }
62
-
63
- span.file {
64
- display: -moz-inline-box;
65
- display: inline-block;
66
- vertical-align: top;
67
- margin: 1px 0 1px 0;
68
- }
69
-
70
- span.dummy_img {
71
- span.file;
72
- background: lightgray;
73
- }
74
-
75
- span.checkbox,
76
- span.radio {
77
- input {
78
- vertical-align: top;
79
- margin-right: 0;
80
- padding-right: 0;
81
- }
82
- label {
83
- margin-right: .5em;
84
- }
85
- }
86
-
87
- div.view_ym {
88
- margin: 1em 0 0 0;
89
- }
90
-
91
- div.action_create {
92
- margin: 1em 0 0 0;
93
- }
94
-
95
- div.me {
96
- margin: 1em 0 0 0;
97
- overflow: hidden;
98
- position: relative;
99
- img,
100
- .dummy_img {
101
- float: left;
102
- margin-right: 1em;
103
- }
104
- .client {
105
- font-size: large;
106
- font-weight: bold;
107
- margin: 0;
108
- }
109
- .roles {
110
- font-size: small;
111
- margin: 0;
112
- }
113
- .action_logout {
114
- margin: .5em 0 0 0;
115
- }
116
- }
117
-
118
- div.login {
119
- margin: 5em 0 5em 0;
120
- text-align: center;
121
- label {
122
- margin-right: .5em;
123
- }
124
- input {
125
- margin-right: 1em;
126
- }
127
- }
128
-
129
- div.submit {
130
- margin: 1em 0 2em 2em;
131
- input {
132
- margin-right: 1em;
133
- }
134
- }
135
-
136
- div.navi {
137
- margin: .5em 2em .5em 0;
138
- text-align: right;
139
- }