runo 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +1 -118
- data/bin/runo +4 -29
- data/lib/dummy.rb +0 -0
- metadata +12 -278
- data/lib/_error.rb +0 -14
- data/lib/_field.rb +0 -260
- data/lib/_i18n.rb +0 -144
- data/lib/_parser.rb +0 -256
- data/lib/_path.rb +0 -86
- data/lib/_storage/_storage.rb +0 -215
- data/lib/_storage/file.rb +0 -201
- data/lib/_storage/sequel.rb +0 -174
- data/lib/_storage/temp.rb +0 -73
- data/lib/_widget/action_create.rb +0 -23
- data/lib/_widget/action_login.rb +0 -22
- data/lib/_widget/action_signup.rb +0 -16
- data/lib/_widget/action_update.rb +0 -16
- data/lib/_widget/crumb.rb +0 -24
- data/lib/_widget/done.rb +0 -16
- data/lib/_widget/login.rb +0 -25
- data/lib/_widget/me.rb +0 -31
- data/lib/_widget/message.rb +0 -51
- data/lib/_widget/navi.rb +0 -88
- data/lib/_widget/submit.rb +0 -49
- data/lib/_widget/view_ym.rb +0 -77
- data/lib/_workflow/_workflow.rb +0 -89
- data/lib/_workflow/attachment.rb +0 -50
- data/lib/_workflow/blog.rb +0 -28
- data/lib/_workflow/contact.rb +0 -23
- data/lib/_workflow/forum.rb +0 -26
- data/lib/_workflow/register.rb +0 -39
- data/lib/meta/_meta.rb +0 -20
- data/lib/meta/group.rb +0 -19
- data/lib/meta/id.rb +0 -59
- data/lib/meta/owner.rb +0 -21
- data/lib/meta/timestamp.rb +0 -118
- data/lib/runo.rb +0 -396
- data/lib/scalar/checkbox.rb +0 -68
- data/lib/scalar/file.rb +0 -144
- data/lib/scalar/img.rb +0 -112
- data/lib/scalar/password.rb +0 -58
- data/lib/scalar/radio.rb +0 -47
- data/lib/scalar/select.rb +0 -47
- data/lib/scalar/text.rb +0 -38
- data/lib/scalar/textarea.rb +0 -35
- data/lib/scalar/textarea_pre.rb +0 -14
- data/lib/scalar/textarea_wiki.rb +0 -173
- data/lib/set/_set.rb +0 -196
- data/lib/set/dynamic.rb +0 -177
- data/lib/set/static.rb +0 -102
- data/lib/set/static_folder.rb +0 -96
- data/locale/en/index.po +0 -242
- data/locale/index.pot +0 -243
- data/locale/ja/index.po +0 -242
- data/locale/lazy_parser.rb +0 -54
- data/skel/config.ru +0 -27
- 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 +0 -12
- 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 +0 -11
- data/skel/skin/_users/css/users.css +0 -21
- data/skel/skin/_users/css/users.less +0 -25
- data/skel/skin/_users/done.html +0 -42
- data/skel/skin/_users/index.html +0 -46
- data/skel/skin/_users/index.yaml +0 -3
- data/skel/skin/_users/summary.html +0 -40
- data/skel/skin/css/base.css +0 -93
- data/skel/skin/css/base.less +0 -139
- data/skel/skin/css/coax.css +0 -199
- data/skel/skin/css/coax.less +0 -244
- data/skel/skin/examples/blog/20091214_0001.yaml +0 -8
- data/skel/skin/examples/blog/20100630_0001.yaml +0 -8
- data/skel/skin/examples/blog/20100630_0002.yaml +0 -14
- data/skel/skin/examples/blog/20100701_0001.yaml +0 -8
- 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 +0 -19
- data/skel/skin/examples/blog/frank/20100701_0001.yaml +0 -10
- data/skel/skin/examples/blog/frank/index.yaml +0 -4
- data/skel/skin/examples/blog/index.html +0 -51
- data/skel/skin/examples/blog/rss.xml +0 -18
- data/skel/skin/examples/contact/20100701_0001-file.txt +0 -1
- data/skel/skin/examples/contact/20100701_0001.yaml +0 -15
- data/skel/skin/examples/contact/20100701_0002.yaml +0 -8
- data/skel/skin/examples/contact/20100701_0003.yaml +0 -9
- data/skel/skin/examples/contact/index.html +0 -47
- data/skel/skin/examples/contact/js/contact.js +0 -13
- data/skel/skin/examples/contact/summary.html +0 -54
- data/skel/skin/examples/forum/20100701_0001.yaml +0 -41
- data/skel/skin/examples/forum/20100701_0002.yaml +0 -25
- data/skel/skin/examples/forum/index.html +0 -68
- data/skel/skin/examples/forum/summary.html +0 -47
- data/skel/skin/examples/index.html +0 -73
- data/skel/skin/index.html +0 -39
- data/skel/skin/js/base.js +0 -50
- data/t/locale/de/index.po +0 -19
- data/t/locale/en-GB/index.po +0 -25
- data/t/locale/ja/index.po +0 -30
- data/t/skin/_users/00000000_test.yaml +0 -3
- data/t/skin/_users/index.html +0 -13
- data/t/skin/foo/20091120_0001.yaml +0 -7
- data/t/skin/foo/bar/20091120_0001.yaml +0 -5
- data/t/skin/foo/bar/index.yaml +0 -5
- data/t/skin/foo/baz/css/baz.css +0 -1
- data/t/skin/foo/css/foo.css +0 -1
- data/t/skin/foo/index.html +0 -14
- data/t/skin/foo/index.yaml +0 -7
- data/t/skin/foo/not_css/foo.css +0 -1
- data/t/skin/foo/qux/index.html +0 -8
- data/t/skin/foo/qux/moo/index.html +0 -6
- data/t/skin/foo/sub-20100306_0001.yaml +0 -3
- data/t/skin/index.yaml +0 -3
- data/t/skin/t_attachment/index.html +0 -13
- data/t/skin/t_contact/done.html +0 -6
- data/t/skin/t_contact/index.html +0 -9
- data/t/skin/t_file/index.html +0 -16
- data/t/skin/t_img/index.html +0 -14
- data/t/skin/t_img/test.jpg +0 -0
- data/t/skin/t_select/index.html +0 -9
- data/t/skin/t_store/index.html +0 -9
- data/t/skin/t_summary/20100326_0001.yaml +0 -3
- data/t/skin/t_summary/create.html +0 -9
- data/t/skin/t_summary/index.html +0 -9
- data/t/skin/t_summary/summary.html +0 -9
- data/t/t.rb +0 -27
- data/t/test_checkbox.rb +0 -273
- data/t/test_field.rb +0 -330
- data/t/test_file.rb +0 -900
- data/t/test_id.rb +0 -215
- data/t/test_img.rb +0 -328
- data/t/test_meta.rb +0 -57
- data/t/test_parser.rb +0 -1516
- data/t/test_password.rb +0 -188
- data/t/test_radio.rb +0 -226
- data/t/test_role.rb +0 -249
- data/t/test_runo.rb +0 -768
- data/t/test_runo_call.rb +0 -1281
- data/t/test_runo_i18n.rb +0 -325
- data/t/test_select.rb +0 -182
- data/t/test_set_complex.rb +0 -527
- data/t/test_set_dynamic.rb +0 -1504
- data/t/test_set_folder.rb +0 -515
- data/t/test_set_permit.rb +0 -246
- data/t/test_set_static.rb +0 -468
- data/t/test_storage.rb +0 -915
- data/t/test_text.rb +0 -125
- data/t/test_textarea.rb +0 -138
- data/t/test_timestamp.rb +0 -473
- data/t/test_workflow.rb +0 -367
data/lib/_storage/sequel.rb
DELETED
@@ -1,174 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
require 'rubygems'
|
7
|
-
require 'sequel'
|
8
|
-
require 'yaml'
|
9
|
-
require 'ya2yaml'
|
10
|
-
|
11
|
-
class Runo::Storage::Sequel < Runo::Storage
|
12
|
-
|
13
|
-
def self.db
|
14
|
-
if Runo['storage']['Sequel'] && Runo['storage']['Sequel']['uri']
|
15
|
-
@db ||= ::Sequel.connect Runo['storage']['Sequel']['uri']
|
16
|
-
self.load_skel unless @db.table_exists? :runo_main
|
17
|
-
end
|
18
|
-
@db
|
19
|
-
end
|
20
|
-
|
21
|
-
def self.load_skel
|
22
|
-
@db.create_table(:runo_main) {
|
23
|
-
String :full_name
|
24
|
-
String :ext
|
25
|
-
String :owner
|
26
|
-
String :body
|
27
|
-
File :binary_body
|
28
|
-
primary_key :full_name
|
29
|
-
} unless @db.table_exists? :runo_main
|
30
|
-
Runo::Storage::File.traverse('/', Runo['skin_dir']) {|entry|
|
31
|
-
@db[:runo_main].insert(
|
32
|
-
:full_name => entry[:full_name],
|
33
|
-
:ext => entry[:ext],
|
34
|
-
:owner => entry[:val]['_owner'],
|
35
|
-
:body => entry[:val].ya2yaml(:syck_compatible => true),
|
36
|
-
:binary_body => (entry[:ext] == 'yaml') ? nil : entry[:val].to_sequel_blob
|
37
|
-
) unless @db[:runo_main][:full_name => entry[:full_name]]
|
38
|
-
}
|
39
|
-
end
|
40
|
-
|
41
|
-
def self.available?
|
42
|
-
self.db
|
43
|
-
end
|
44
|
-
|
45
|
-
def initialize(sd)
|
46
|
-
super
|
47
|
-
@dataset = Runo::Storage::Sequel.db[:runo_main]
|
48
|
-
@dirname = @sd[:full_name]
|
49
|
-
end
|
50
|
-
|
51
|
-
def val(id = nil)
|
52
|
-
if id
|
53
|
-
load id
|
54
|
-
else
|
55
|
-
# this could be HUGE.
|
56
|
-
_select_all({}).inject({}) {|v, id|
|
57
|
-
v[id] = load id
|
58
|
-
v
|
59
|
-
}
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
def build(v)
|
64
|
-
clear
|
65
|
-
v.each {|id, v| store(id, v) } if v
|
66
|
-
self
|
67
|
-
end
|
68
|
-
|
69
|
-
def clear
|
70
|
-
@dataset.grep(:full_name, _full_name('%')).delete
|
71
|
-
self
|
72
|
-
end
|
73
|
-
|
74
|
-
def store(id, v, ext = nil)
|
75
|
-
save(id, v, ext)
|
76
|
-
end
|
77
|
-
|
78
|
-
def delete(id)
|
79
|
-
@dataset.filter(_conds(id)).delete &&
|
80
|
-
@dataset.grep(:full_name, _full_name("#{id}-%")).and(~:ext => 'yaml').delete &&
|
81
|
-
id
|
82
|
-
end
|
83
|
-
|
84
|
-
def move(old_id, new_id)
|
85
|
-
rename(old_id, new_id) && new_id
|
86
|
-
end
|
87
|
-
|
88
|
-
private
|
89
|
-
|
90
|
-
def _select_by_id(conds)
|
91
|
-
@dataset.filter(_conds(conds[:id])).collect {|v| _id v[:full_name] }
|
92
|
-
end
|
93
|
-
|
94
|
-
def _select_by_d(conds)
|
95
|
-
@dataset.
|
96
|
-
grep(:full_name, _full_name("#{conds[:d]}%")).
|
97
|
-
and(:ext => 'yaml').
|
98
|
-
collect {|v| _id v[:full_name] }
|
99
|
-
end
|
100
|
-
|
101
|
-
def _select_all(conds)
|
102
|
-
@dataset.
|
103
|
-
grep(:full_name, _full_name('%')).
|
104
|
-
and(:ext => 'yaml').
|
105
|
-
collect {|v| _id v[:full_name] }
|
106
|
-
end
|
107
|
-
|
108
|
-
# TODO: overrride _sort() & _page() (they can be done in _select_*)
|
109
|
-
|
110
|
-
def _conds(id)
|
111
|
-
(id == :all) ? {} : {:full_name => _full_name(id)}
|
112
|
-
end
|
113
|
-
|
114
|
-
def _full_name(id)
|
115
|
-
"#{@dirname}-#{id.is_a?(::Array) ? id.first : id}"
|
116
|
-
end
|
117
|
-
|
118
|
-
def _id(full_name)
|
119
|
-
full_name.sub("#{@dirname}-", '')
|
120
|
-
end
|
121
|
-
|
122
|
-
def load(id)
|
123
|
-
# TODO: cache in _select_*
|
124
|
-
v = @dataset[:full_name => _full_name(id)]
|
125
|
-
(v[:ext] == 'yaml' ? YAML.load(v[:body]) : v[:binary_body]) if v
|
126
|
-
end
|
127
|
-
|
128
|
-
def save(id, v, ext)
|
129
|
-
Runo::Storage::Sequel.db.transaction {
|
130
|
-
if new_id?(id, v)
|
131
|
-
old_id = id
|
132
|
-
id = new_id v
|
133
|
-
end
|
134
|
-
|
135
|
-
full_name = _full_name id
|
136
|
-
|
137
|
-
if ext
|
138
|
-
ext = 'y' if ext == 'yaml'
|
139
|
-
val = {
|
140
|
-
:full_name => full_name,
|
141
|
-
:ext => ext,
|
142
|
-
:binary_body => v.to_sequel_blob,
|
143
|
-
}
|
144
|
-
else
|
145
|
-
val = {
|
146
|
-
:full_name => full_name,
|
147
|
-
:ext => 'yaml',
|
148
|
-
:owner => v['_owner'],
|
149
|
-
:body => v.ya2yaml(:syck_compatible => true),
|
150
|
-
}
|
151
|
-
end
|
152
|
-
|
153
|
-
if old_id
|
154
|
-
return if @dataset[:full_name => full_name] # duplicate id
|
155
|
-
move(old_id, id) unless old_id == :new_id
|
156
|
-
end
|
157
|
-
if @dataset[:full_name => full_name]
|
158
|
-
@dataset[:full_name => full_name] = val
|
159
|
-
else
|
160
|
-
@dataset.insert val
|
161
|
-
end
|
162
|
-
id
|
163
|
-
}
|
164
|
-
end
|
165
|
-
|
166
|
-
def rename(old_id, new_id)
|
167
|
-
@dataset.grep(:full_name, _full_name("#{old_id}%")).each {|v|
|
168
|
-
@dataset[:full_name => v[:full_name]] = v.merge(
|
169
|
-
:full_name => v[:full_name].sub(_full_name(old_id), _full_name(new_id))
|
170
|
-
)
|
171
|
-
}
|
172
|
-
end
|
173
|
-
|
174
|
-
end
|
data/lib/_storage/temp.rb
DELETED
@@ -1,73 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Storage::Temp < Runo::Storage
|
7
|
-
|
8
|
-
def self.available?
|
9
|
-
true
|
10
|
-
end
|
11
|
-
|
12
|
-
def persistent?
|
13
|
-
false
|
14
|
-
end
|
15
|
-
|
16
|
-
def val(id = nil)
|
17
|
-
@val ||= {}
|
18
|
-
id ? @val[id] : @val
|
19
|
-
end
|
20
|
-
|
21
|
-
def build(v)
|
22
|
-
@val = v
|
23
|
-
self
|
24
|
-
end
|
25
|
-
|
26
|
-
def clear
|
27
|
-
@val = {}
|
28
|
-
self
|
29
|
-
end
|
30
|
-
|
31
|
-
def store(id, v, ext = :unused)
|
32
|
-
if new_id?(id, v)
|
33
|
-
old_id = id
|
34
|
-
id = new_id v
|
35
|
-
return if val[id] # duplicate id
|
36
|
-
move(old_id, id) unless old_id == :new_id
|
37
|
-
end
|
38
|
-
val[id] = v
|
39
|
-
id
|
40
|
-
end
|
41
|
-
|
42
|
-
def delete(id)
|
43
|
-
@val.delete id
|
44
|
-
id
|
45
|
-
end
|
46
|
-
|
47
|
-
def move(old_id, new_id)
|
48
|
-
rex = /\A#{old_id}/
|
49
|
-
val.keys.each {|id|
|
50
|
-
if id =~ rex
|
51
|
-
to_id = id.sub(rex, new_id)
|
52
|
-
@val[to_id] = @val.delete id
|
53
|
-
end
|
54
|
-
}
|
55
|
-
new_id
|
56
|
-
end
|
57
|
-
|
58
|
-
private
|
59
|
-
|
60
|
-
def _select_by_id(conds)
|
61
|
-
val.keys & Array(conds[:id])
|
62
|
-
end
|
63
|
-
|
64
|
-
def _select_by_d(conds)
|
65
|
-
rex_d = /^#{conds[:d]}/
|
66
|
-
val.keys.select {|id| id[rex_d] }
|
67
|
-
end
|
68
|
-
|
69
|
-
def _select_all(conds)
|
70
|
-
val.keys
|
71
|
-
end
|
72
|
-
|
73
|
-
end
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Set::Dynamic
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def _g_action_create(arg)
|
11
|
-
label = _('create new %{item}...') % {
|
12
|
-
:item => _((my[:item].size == 1 && my[:item]['default'][:label]) || my[:item_label])
|
13
|
-
}
|
14
|
-
(_get_by_action_tmpl(arg) || <<_html) if permit? :create
|
15
|
-
<div class="action_create"><a href="#{_g_uri_create arg}">#{label}</a></div>
|
16
|
-
_html
|
17
|
-
end
|
18
|
-
|
19
|
-
def _g_uri_create(arg)
|
20
|
-
"#{my[:path]}/create.html"
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
data/lib/_widget/action_login.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Set::Static::Folder
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def _g_action_login(arg)
|
11
|
-
if Runo.client == 'nobody'
|
12
|
-
<<_html
|
13
|
-
<div class="action_login"><a href="#{my[:dir]}/login.html">#{_ 'login'}</a></div>
|
14
|
-
_html
|
15
|
-
else
|
16
|
-
<<_html
|
17
|
-
<div class="action_logout"><a href="#{my[:dir]}/logout.html?_token=#{Runo.token}">#{_ 'logout'}</a></div>
|
18
|
-
_html
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Set::Static::Folder
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def _g_action_signup(arg)
|
11
|
-
(_get_by_action_tmpl(arg) || <<_html) if Runo.client == 'nobody'
|
12
|
-
<div class="action_signup"><a href="/_users/create.html">#{_ 'signup'}</a></div>
|
13
|
-
_html
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
@@ -1,16 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Set::Static
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def _g_action_update(arg)
|
11
|
-
(_get_by_action_tmpl(arg) || <<_html.chomp) if permit_get?(:action => :update)
|
12
|
-
<div class="action_update"><a href="#{_g_uri_update arg}">#{_ 'update...'}</a></div>
|
13
|
-
_html
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
data/lib/_widget/crumb.rb
DELETED
@@ -1,24 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Set::Static::Folder
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def _g_crumb(arg)
|
11
|
-
<<_html
|
12
|
-
<div class="crumb">
|
13
|
-
#{_crumb}</div>
|
14
|
-
_html
|
15
|
-
end
|
16
|
-
|
17
|
-
def _crumb
|
18
|
-
crumb = <<_html
|
19
|
-
<a href="#{Runo.uri}#{my[:dir]}/">#{my[:label] || my[:id]}</a>
|
20
|
-
_html
|
21
|
-
my[:parent] ? [my[:parent].send(:_crumb), crumb].join(" »\n") : crumb
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
data/lib/_widget/done.rb
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Set::Dynamic
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def _g_done(arg)
|
11
|
-
(_get_by_action_tmpl(arg) || <<_html.chomp) if arg[:orig_action] == :done
|
12
|
-
<div class="done">#{_ 'done.'}</div>
|
13
|
-
_html
|
14
|
-
end
|
15
|
-
|
16
|
-
end
|
data/lib/_widget/login.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Set::Dynamic
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def _g_login(arg)
|
11
|
-
path = Runo::Path.path_of arg[:conds]
|
12
|
-
action = arg[:dest_action]
|
13
|
-
<<_html
|
14
|
-
<form id="form_#{my[:name]}" method="post" action="#{my[:base_path]}/#{path}login.html">
|
15
|
-
<div class="login">
|
16
|
-
<input type="hidden" name="dest_action" value="#{action}" />
|
17
|
-
<label for="login_id">#{_ 'ID'}</label><input type="text" id="login_id" name="id" size="10" value="" />
|
18
|
-
<label for="login_pw">#{_ 'Password'}</label><input type="password" id="login_pw" name="pw" size="10" value="" />
|
19
|
-
<input type="submit" value="#{_ 'login'}" />
|
20
|
-
</div>
|
21
|
-
</form>
|
22
|
-
_html
|
23
|
-
end
|
24
|
-
|
25
|
-
end
|
data/lib/_widget/me.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Set::Static::Folder
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def _g_me(arg)
|
11
|
-
if Runo.client == 'nobody'
|
12
|
-
<<_html
|
13
|
-
<div class="me">
|
14
|
-
#{_g_action_login arg}</div>
|
15
|
-
_html
|
16
|
-
else
|
17
|
-
img = Runo::Set::Static::Folder.root.item('_users', 'main', Runo.client, 'avatar')
|
18
|
-
roles = Runo::Workflow.roles my[:roles]
|
19
|
-
<<_html
|
20
|
-
<div class="me">
|
21
|
-
<a href="#{Runo.uri}/_users/id=#{Runo.client}/update.html">
|
22
|
-
#{img.send(:_get_by_self_reference, :sub_action => :without_link) if img}
|
23
|
-
</a>
|
24
|
-
<div class="client">#{Runo.client}</div>
|
25
|
-
<div class="roles">(#{roles.join ', '})</div>
|
26
|
-
#{_g_action_login arg}</div>
|
27
|
-
_html
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
data/lib/_widget/message.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
# encoding: UTF-8
|
2
|
-
|
3
|
-
# Author:: Akira FUNAI
|
4
|
-
# Copyright:: Copyright (c) 2009-2010 Akira FUNAI
|
5
|
-
|
6
|
-
class Runo::Set::Dynamic
|
7
|
-
|
8
|
-
private
|
9
|
-
|
10
|
-
def _g_message(arg)
|
11
|
-
return if arg[:orig_action] == :done && my[:tmpl][:done]
|
12
|
-
return unless self == Runo.base
|
13
|
-
|
14
|
-
if arg[:dest_action]
|
15
|
-
message = {:alert => _('please login.')}
|
16
|
-
elsif arg[:orig_action] == :preview
|
17
|
-
message = {:notice => _('please confirm.')}
|
18
|
-
elsif !self.valid? && arg[:orig_action] != :create
|
19
|
-
message = {:error => _('malformed input.')}
|
20
|
-
elsif Runo.transaction[my[:tid]].is_a? ::Hash
|
21
|
-
message = {
|
22
|
-
:notice => Runo.transaction[my[:tid]].keys.collect {|item_result|
|
23
|
-
n = Runo.transaction[my[:tid]][item_result]
|
24
|
-
_('%{result} %{n} %{item}.') % {
|
25
|
-
:result => {
|
26
|
-
:create => _('created'),
|
27
|
-
:update => _('updated'),
|
28
|
-
:delete => _('deleted'),
|
29
|
-
}[item_result],
|
30
|
-
:n => n,
|
31
|
-
:item => n_(
|
32
|
-
(my[:item].size == 1 && my[:item]['default'][:label]) || my[:item_label],
|
33
|
-
'',
|
34
|
-
n
|
35
|
-
)
|
36
|
-
}
|
37
|
-
}
|
38
|
-
} unless Runo.transaction[my[:tid]].empty?
|
39
|
-
Runo.transaction[my[:tid]] = :expired
|
40
|
-
end
|
41
|
-
|
42
|
-
message.keys.collect {|type|
|
43
|
-
lis = Array(message[type]).collect {|m| " <li>#{Runo::Field.h m}</li>\n" }
|
44
|
-
<<_html
|
45
|
-
<ul class="message #{type}">
|
46
|
-
#{lis.join}</ul>
|
47
|
-
_html
|
48
|
-
}.join if message
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|