runo 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/LICENSE +19 -0
- data/README.rdoc +120 -0
- data/bin/runo +35 -0
- data/lib/_error.rb +14 -0
- data/lib/_field.rb +260 -0
- data/lib/_i18n.rb +141 -0
- data/lib/_parser.rb +243 -0
- data/lib/_path.rb +86 -0
- data/lib/_storage/_storage.rb +213 -0
- data/lib/_storage/file.rb +200 -0
- data/lib/_storage/sequel.rb +174 -0
- data/lib/_storage/temp.rb +73 -0
- data/lib/_widget/action_create.rb +23 -0
- data/lib/_widget/action_login.rb +22 -0
- data/lib/_widget/action_signup.rb +16 -0
- data/lib/_widget/action_update.rb +16 -0
- data/lib/_widget/crumb.rb +24 -0
- data/lib/_widget/done.rb +16 -0
- data/lib/_widget/login.rb +25 -0
- data/lib/_widget/me.rb +31 -0
- data/lib/_widget/message.rb +51 -0
- data/lib/_widget/navi.rb +88 -0
- data/lib/_widget/submit.rb +49 -0
- data/lib/_widget/view_ym.rb +77 -0
- data/lib/_workflow/_workflow.rb +89 -0
- data/lib/_workflow/attachment.rb +50 -0
- data/lib/_workflow/blog.rb +28 -0
- data/lib/_workflow/contact.rb +23 -0
- data/lib/_workflow/forum.rb +26 -0
- data/lib/_workflow/register.rb +39 -0
- data/lib/meta/_meta.rb +20 -0
- data/lib/meta/group.rb +19 -0
- data/lib/meta/id.rb +59 -0
- data/lib/meta/owner.rb +21 -0
- data/lib/meta/timestamp.rb +118 -0
- data/lib/runo.rb +396 -0
- data/lib/scalar/checkbox.rb +68 -0
- data/lib/scalar/file.rb +144 -0
- data/lib/scalar/img.rb +112 -0
- data/lib/scalar/password.rb +58 -0
- data/lib/scalar/radio.rb +47 -0
- data/lib/scalar/select.rb +47 -0
- data/lib/scalar/text.rb +38 -0
- data/lib/scalar/textarea.rb +35 -0
- data/lib/scalar/textarea_pre.rb +14 -0
- data/lib/scalar/textarea_wiki.rb +173 -0
- data/lib/set/_set.rb +195 -0
- data/lib/set/dynamic.rb +177 -0
- data/lib/set/static.rb +102 -0
- data/lib/set/static_folder.rb +96 -0
- data/locale/en/index.po +242 -0
- data/locale/index.pot +243 -0
- data/locale/ja/index.po +242 -0
- data/locale/lazy_parser.rb +54 -0
- data/skel/config.ru +27 -0
- data/skel/skin/_users/00000000_frank-avatar.jpg +0 -0
- data/skel/skin/_users/00000000_frank-avatar_small.jpg +0 -0
- data/skel/skin/_users/00000000_frank.yaml +12 -0
- data/skel/skin/_users/00000000_root-avatar.jpg +0 -0
- data/skel/skin/_users/00000000_root-avatar_small.jpg +0 -0
- data/skel/skin/_users/00000000_root.yaml +11 -0
- data/skel/skin/_users/css/users.css +21 -0
- data/skel/skin/_users/css/users.less +25 -0
- data/skel/skin/_users/done.html +42 -0
- data/skel/skin/_users/index.html +46 -0
- data/skel/skin/_users/index.yaml +3 -0
- data/skel/skin/_users/summary.html +40 -0
- data/skel/skin/css/base.css +93 -0
- data/skel/skin/css/base.less +139 -0
- data/skel/skin/css/coax.css +199 -0
- data/skel/skin/css/coax.less +244 -0
- data/skel/skin/examples/blog/20091214_0001.yaml +8 -0
- data/skel/skin/examples/blog/20100630_0001.yaml +8 -0
- data/skel/skin/examples/blog/20100630_0002.yaml +14 -0
- data/skel/skin/examples/blog/20100701_0001.yaml +8 -0
- data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f.jpg +0 -0
- data/skel/skin/examples/blog/20100701_0002-a-20100701_0001-f_small.jpg +0 -0
- data/skel/skin/examples/blog/20100701_0002.yaml +19 -0
- data/skel/skin/examples/blog/frank/20100701_0001.yaml +10 -0
- data/skel/skin/examples/blog/frank/index.yaml +4 -0
- data/skel/skin/examples/blog/index.html +51 -0
- data/skel/skin/examples/blog/rss.xml +18 -0
- data/skel/skin/examples/contact/20100701_0001-file.txt +1 -0
- data/skel/skin/examples/contact/20100701_0001.yaml +15 -0
- data/skel/skin/examples/contact/20100701_0002.yaml +8 -0
- data/skel/skin/examples/contact/20100701_0003.yaml +9 -0
- data/skel/skin/examples/contact/index.html +47 -0
- data/skel/skin/examples/contact/js/contact.js +13 -0
- data/skel/skin/examples/contact/summary.html +54 -0
- data/skel/skin/examples/forum/20100701_0001.yaml +41 -0
- data/skel/skin/examples/forum/20100701_0002.yaml +25 -0
- data/skel/skin/examples/forum/index.html +68 -0
- data/skel/skin/examples/forum/summary.html +47 -0
- data/skel/skin/examples/index.html +75 -0
- data/skel/skin/index.html +41 -0
- data/skel/skin/js/base.js +50 -0
- data/t/locale/de/index.po +19 -0
- data/t/locale/en-GB/index.po +25 -0
- data/t/locale/ja/index.po +30 -0
- data/t/skin/_users/00000000_test.yaml +3 -0
- data/t/skin/_users/index.html +13 -0
- data/t/skin/foo/20091120_0001.yaml +7 -0
- data/t/skin/foo/bar/20091120_0001.yaml +5 -0
- data/t/skin/foo/bar/index.yaml +5 -0
- data/t/skin/foo/baz/css/baz.css +1 -0
- data/t/skin/foo/css/foo.css +1 -0
- data/t/skin/foo/index.html +14 -0
- data/t/skin/foo/index.yaml +7 -0
- data/t/skin/foo/not_css/foo.css +1 -0
- data/t/skin/foo/sub-20100306_0001.yaml +3 -0
- data/t/skin/index.yaml +3 -0
- data/t/skin/t_attachment/index.html +13 -0
- data/t/skin/t_contact/done.html +6 -0
- data/t/skin/t_contact/index.html +9 -0
- data/t/skin/t_file/index.html +16 -0
- data/t/skin/t_img/index.html +14 -0
- data/t/skin/t_img/test.jpg +0 -0
- data/t/skin/t_select/index.html +9 -0
- data/t/skin/t_store/index.html +9 -0
- data/t/skin/t_summary/20100326_0001.yaml +3 -0
- data/t/skin/t_summary/create.html +9 -0
- data/t/skin/t_summary/index.html +9 -0
- data/t/skin/t_summary/summary.html +9 -0
- data/t/t.rb +27 -0
- data/t/test_checkbox.rb +273 -0
- data/t/test_field.rb +330 -0
- data/t/test_file.rb +900 -0
- data/t/test_id.rb +215 -0
- data/t/test_img.rb +328 -0
- data/t/test_meta.rb +57 -0
- data/t/test_parser.rb +1266 -0
- data/t/test_password.rb +188 -0
- data/t/test_radio.rb +226 -0
- data/t/test_role.rb +249 -0
- data/t/test_runo.rb +742 -0
- data/t/test_runo_call.rb +1286 -0
- data/t/test_runo_i18n.rb +318 -0
- data/t/test_select.rb +182 -0
- data/t/test_set_complex.rb +527 -0
- data/t/test_set_dynamic.rb +1504 -0
- data/t/test_set_folder.rb +515 -0
- data/t/test_set_permit.rb +246 -0
- data/t/test_set_static.rb +445 -0
- data/t/test_storage.rb +915 -0
- data/t/test_text.rb +125 -0
- data/t/test_textarea.rb +138 -0
- data/t/test_timestamp.rb +473 -0
- data/t/test_workflow.rb +367 -0
- metadata +345 -0
@@ -0,0 +1,54 @@
|
|
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
|
data/skel/config.ru
ADDED
@@ -0,0 +1,27 @@
|
|
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
|
Binary file
|
Binary file
|
Binary file
|
Binary file
|
@@ -0,0 +1,21 @@
|
|
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
|
+
}
|
@@ -0,0 +1,25 @@
|
|
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
|
+
}
|
@@ -0,0 +1,42 @@
|
|
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>
|
@@ -0,0 +1,46 @@
|
|
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="runo-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>
|
@@ -0,0 +1,40 @@
|
|
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="runo-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>
|
@@ -0,0 +1,93 @@
|
|
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
|
+
}
|
@@ -0,0 +1,139 @@
|
|
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
|
+
}
|