• R/O
  • SSH
  • HTTPS

tenarai: 提交


Commit MetaInfo

修訂120 (tree)
時間2008-09-19 00:16:41
作者junkikuchi

Log Message

updated.

Change Summary

差異

--- trunk/init_model.rb (revision 119)
+++ trunk/init_model.rb (revision 120)
@@ -13,6 +13,12 @@
1313 :row => {'name' => 'admin'},
1414 :relation => {'default_view' => 'view:admin.login'},
1515 },
16+ {
17+ :name => 'preview',
18+ :class => 'Service',
19+ :row => {'name' => 'preview'},
20+ :relation => {'default_view' => 'view:admin'},
21+ },
1622 ],
1723
1824 'view' => [
@@ -33,6 +39,12 @@
3339 :row => {'name' => 'content'},
3440 :relation => {'resource' => 'widget:admin.session.user.doc.bd.view.widget'},
3541 },
42+ {
43+ :name => 'admin.preview',
44+ :class => 'View',
45+ :row => {'name' => 'preview'},
46+ :relation => {'resource' => 'widget:admin'},
47+ },
3648
3749 {
3850 :name => 'user',
@@ -56,14 +68,14 @@
5668 {
5769 :name => 'admin',
5870 :class => 'Widget::HTML',
59- :row => {},
6071 :relation => {'view' => 'view:admin'},
61- :property => {},
72+ :css => {
73+ 'li ul_margin_margin-left' => '15px',
74+ }
6275 },
6376 {
6477 :name => 'admin.session',
6578 :class => 'Widget::Session',
66- :row => {},
6779 :relation => {'view' => 'view:admin'},
6880 :property => {
6981 :table_name => 'adminsession'
@@ -72,7 +84,6 @@
7284 {
7385 :name => 'admin.session.user',
7486 :class => 'Widget::User',
75- :row => {},
7687 :relation => {'view' => 'view:admin'},
7788 :property => {
7889 :table_name => 'admin',
@@ -83,7 +94,6 @@
8394 {
8495 :name => 'admin.session.user.reset',
8596 :class => 'Widget::HTML::CSS',
86- :row => {},
8797 :relation => {'view' => 'view:admin'},
8898 :property => {
8999 :src => '/yui/build/reset-fonts-grids/reset-fonts-grids.css'
@@ -92,7 +102,6 @@
92102 {
93103 :name => 'admin.session.user.jquery',
94104 :class => 'Widget::HTML::JavaScript',
95- :row => {},
96105 :relation => {'view' => 'view:admin'},
97106 :property => {
98107 :src => '/jquery.js'
@@ -101,7 +110,6 @@
101110 {
102111 :name => 'admin.session.user.jquery-ui',
103112 :class => 'Widget::HTML::JavaScript',
104- :row => {},
105113 :relation => {'view' => 'view:admin'},
106114 :property => {
107115 :src => '/jquery-ui.js'
@@ -110,7 +118,6 @@
110118 {
111119 :name => 'admin.session.user.doc',
112120 :class => 'Widget::Panel',
113- :row => {},
114121 :relation => {'view' => 'view:admin'},
115122 :property => {
116123 :html_attr_id => 'doc3',
@@ -120,7 +127,6 @@
120127 {
121128 :name => 'admin.session.user.doc.hd',
122129 :class => 'Widget::Panel',
123- :row => {},
124130 :relation => {'view' => 'view:admin'},
125131 :property => {
126132 :html_attr_id => 'hd'
@@ -129,7 +135,6 @@
129135 {
130136 :name => 'admin.session.user.doc.bd',
131137 :class => 'Widget::Panel',
132- :row => {},
133138 :relation => {'view' => 'view:admin'},
134139 :property => {
135140 :html_attr_id => 'bd'
@@ -138,7 +143,6 @@
138143 {
139144 :name => 'admin.session.user.doc.ft',
140145 :class => 'Widget::Panel',
141- :row => {},
142146 :relation => {'view' => 'view:admin'},
143147 :property => {
144148 :html_attr_id => 'ft'
@@ -148,30 +152,23 @@
148152 {
149153 :name => 'admin.session.user.doc.bd.login',
150154 :class => 'Widget::User::Login',
151- :row => {},
152155 :relation => {'view' => 'view:admin.login'},
153- :property => {},
154156 },
155157
156158 {
157159 :name => 'admin.session.user.doc.bd.view',
158160 :class => 'Widget::View',
159- :row => {},
160161 :relation => {'view' => 'view:admin.content'},
161- :property => {},
162162 },
163163 {
164164 :name => 'admin.session.user.doc.bd.view.widget',
165165 :class => 'Widget::Widget',
166- :row => {},
167166 :relation => {'view' => 'view:admin.content'},
168- :property => {},
169167 },
170168
171169 {
172170 :name => 'admin.session.user.doc.bd.view.widget.yui-main',
173171 :class => 'Widget::Panel',
174- :row => {},
175172 :relation => {'view' => 'view:admin.content'},
176173 :property => {
177174 :html_attr_id => 'yui-main'
@@ -180,7 +177,6 @@
180177 {
181178 :name => 'admin.session.user.doc.bd.view.widget.yui-main.yui-b',
182179 :class => 'Widget::Panel',
183- :row => {},
184180 :relation => {'view' => 'view:admin.content'},
185181 :property => {
186182 :html_attr_class => 'yui-b'
@@ -189,7 +185,6 @@
189185 {
190186 :name => 'admin.session.user.doc.bd.view.widget.yui-b',
191187 :class => 'Widget::Panel',
192- :row => {},
193188 :relation => {'view' => 'view:admin.content'},
194189 :property => {
195190 :html_attr_class => 'yui-b'
@@ -198,58 +193,56 @@
198193 {
199194 :name => 'admin.session.user.doc.hd.logout',
200195 :class => 'Widget::User::Logout',
201- :row => {},
202196 :relation => {'view' => 'view:admin.content'},
203- :property => {},
204197 },
205198 {
206199 :name => 'admin.session.user.doc.bd.view.widget.yui-b.view-tree',
207200 :class => 'Widget::View::Tree',
208- :row => {},
209201 :relation => {'view' => 'view:admin.content'},
210- :property => {},
202+ :css => {
203+ 'a.selected_background_background-color'=> 'silver',
204+ }
211205 },
212206 {
213207 :name => 'admin.session.user.doc.bd.view.widget.yui-b.widget-tree',
214208 :class => 'Widget::Widget::Tree',
215- :row => {},
216209 :relation => {'view' => 'view:admin.content'},
217- :property => {},
210+ :css => {
211+ 'a.selected_background_background-color'=> 'silver',
212+ }
218213 },
219214 {
220215 :name => 'admin.session.user.doc.bd.view.widget.yui-b.widget-property',
221216 :class => 'Widget::Widget::Property',
222- :row => {},
223217 :relation => {'view' => 'view:admin.content'},
224- :property => {},
225218 },
226219 {
227220 :name => 'admin.session.user.doc.bd.view.widget.yui-b.widget-css',
228221 :class => 'Widget::Widget::CSS',
229- :row => {},
230222 :relation => {'view' => 'view:admin.content'},
231- :property => {},
232223 },
233224
234225 {
235226 :name => 'admin.session.user.doc.bd.view.widget.yui-main.yui-b.preview',
236227 :class => 'Widget::Widget::Preview',
237- :row => {},
238228 :relation => {'view' => 'view:admin.content'},
239- :property => {},
229+ :property => {
230+ :preview_service => 'preview'
231+ },
232+ :css => {
233+ '_size_width' => '100%',
234+ '_size_height' => '500px',
235+ }
240236 },
241237
242238 {
243239 :name => 'user',
244240 :class => 'Widget::HTML',
245- :row => {},
246241 :relation => {'view' => 'view:user'},
247- :property => {},
248242 },
249243 {
250244 :name => 'user.session',
251245 :class => 'Widget::Session',
252- :row => {},
253246 :relation => {'view' => 'view:user'},
254247 :property => {
255248 :table_name => 'usersession'
@@ -258,7 +251,6 @@
258251 {
259252 :name => 'user.session.user',
260253 :class => 'Widget::User',
261- :row => {},
262254 :relation => {'view' => 'view:user'},
263255 :property => {
264256 :login_view => :'view:user.content',
@@ -268,16 +260,12 @@
268260 {
269261 :name => 'user.session.user.login',
270262 :class => 'Widget::User::Login',
271- :row => {},
272263 :relation => {'view' => 'view:user.login'},
273- :property => {},
274264 },
275265 {
276266 :name => 'user.session.user.logout',
277267 :class => 'Widget::User::Logout',
278- :row => {},
279268 :relation => {'view' => 'view:user.content'},
280- :property => {},
281269 },
282270 ],
283271
--- trunk/lib/tenarai/cgi/query.rb (revision 119)
+++ trunk/lib/tenarai/cgi/query.rb (revision 120)
@@ -85,6 +85,10 @@
8585 end.join('&')
8686 end
8787
88+ def key?(val)
89+ @query.key?(val)
90+ end
91+
8892 def empty?
8993 @query.empty?
9094 end
--- trunk/lib/tenarai/container.rb (revision 119)
+++ trunk/lib/tenarai/container.rb (revision 120)
@@ -17,6 +17,13 @@
1717 end
1818 end
1919
20+ attr_accessor :klass
21+
22+ def initialize(klass=Tenarai::Container::Value)
23+ super()
24+ @klass = klass
25+ end
26+
2027 def <<(val)
2128 if key?(val.name)
2229 raise DuplexNameError, '`%s` is already registered' % val.name
@@ -36,6 +43,14 @@
3643 val
3744 end
3845
46+ def []=(key, val)
47+ if key?(key)
48+ self[key].value = val
49+ else
50+ self << @klass.new(key, val)
51+ end
52+ end
53+
3954 def key?(key)
4055 !assoc(key).nil?
4156 end
--- trunk/main.rb (revision 119)
+++ trunk/main.rb (revision 120)
@@ -79,7 +79,7 @@
7979 def create_row(model, map, init_model)
8080 init_model.each do |key, val|
8181 val.each do |v|
82- obj = Tenarai::ClassLoader[v[:class]].new(model[key], v[:row])
82+ obj = Tenarai::ClassLoader[v[:class]].new(model[key], v[:row] || {})
8383 obj.save
8484
8585 map[key] ||= {}
@@ -112,7 +112,7 @@
112112 end if v[:relation]
113113
114114 v[:property].each do |pk, pv|
115- p [pk, pv]
115+ p [:property, pk, pv]
116116 if pv.is_a? Symbol
117117 mk, mv = pv.to_s.split(':')
118118 pv = map[mk][mv].primary_key.to_s
@@ -122,6 +122,11 @@
122122 a.property[pk] = pv if a.property.key?(pk)
123123 end if v[:property]
124124
125+ v[:css].each do |ck, cv|
126+ p [:css, ck, cv]
127+ map[key][v[:name]].css << Tenarai::Container::Value.new(ck, cv)
128+ end if v[:css]
129+
125130 map[key][v[:name]].save
126131 end
127132 end
--- trunk/webapp/Service.rb (revision 119)
+++ trunk/webapp/Service.rb (revision 120)
@@ -25,6 +25,12 @@
2525 end
2626 end
2727
28+ class << self
29+ def create_row(class_name, table, row)
30+ Tenarai::ClassLoader[class_name].new(table, row)
31+ end
32+ end
33+
2834 column Tenarai::DB::String.new('name', :length => 255)
2935 column Tenarai::DB::Reference.new('default_view')
3036 index Tenarai::DB::Index.new('name_idx', :cols => ['name'], :unique => true)
@@ -47,10 +53,8 @@
4753
4854 def dispatch(model, param, request, response)
4955 @model = model
50-
5156 @request = request
5257 @response = response
53-
5458 @view = @model['view'].fetch(param.shift) || default_view
5559 @view.render(self, param)
5660 rescue Service::Error => err
--- trunk/webapp/Widget/User.rb (revision 119)
+++ trunk/webapp/Widget/User.rb (revision 120)
@@ -29,7 +29,7 @@
2929
3030 def init(builder, service, _id=nil)
3131 super
32- auth
32+ auth unless builder.preview?
3333 end
3434
3535 def content
--- trunk/webapp/Widget/Widget/Preview.rb (revision 119)
+++ trunk/webapp/Widget/Widget/Preview.rb (revision 120)
@@ -9,12 +9,23 @@
99 class Preview < ::Widget
1010 extend Tenarai::ClassLoader
1111
12+ property :preview_service
1213 css
1314
1415 def render_html(head, body)
1516 body.tag(
1617 'iframe',
17- html_attr.merge('src' => @service.uri(resource.resource.view))
18+ if @builder.preview?
19+ html_attr
20+ else
21+ html_attr.merge(
22+ 'src' => @service.model['service'].fetch_by_name(
23+ property[:preview_service]
24+ ).uri(
25+ resource.resource.content
26+ ) do |query| query['preview'] = '' end
27+ )
28+ end
1829 ) do |iframe|
1930 iframe.text('')
2031 end
--- trunk/webapp/Widget/Widget/Property.rb (revision 119)
+++ trunk/webapp/Widget/Widget/Property.rb (revision 120)
@@ -52,7 +52,7 @@
5252 end
5353 end
5454
55- def post(query={})
55+ def post(query=Tenarai::CGI::Query.new)
5656 query.each do |key, val|
5757 resource.content.property[key.to_sym] = if val.empty?
5858 nil
--- trunk/webapp/Widget/Widget/CSS.rb (revision 119)
+++ trunk/webapp/Widget/Widget/CSS.rb (revision 120)
@@ -123,14 +123,14 @@
123123 xml.tag('h3').text(
124124 if val.name.to_s.empty? then 'CSS' else val.name end
125125 )
126- xml.tag(
127- 'form',
128- 'method' => 'post',
129- 'action' => uri(@builder.view, resource.content.id) do |query|
130- query[form_id('update')] = nil
131- end
132- ) do |form|
133- self.class::CSS.each do |css|
126+ self.class::CSS.each do |css|
127+ xml.tag(
128+ 'form',
129+ 'method' => 'post',
130+ 'action' => uri(@builder.view, resource.content.id) do |query|
131+ query[form_id('update')] = nil
132+ end
133+ ) do |form|
134134 form.tag('h4').text(css.name)
135135 form.tag('dl') do |dl|
136136 css.value.each do |selector|
@@ -170,9 +170,8 @@
170170 end
171171 end
172172
173- def post(query={})
173+ def post(query=Tenarai::CGI::Query.new)
174174 css = resource.content.css
175-
176175 query.inject({}) do |ret, (key, val)|
177176 s, g, a = key.split('_')
178177 ret[s] ||= {}
@@ -186,11 +185,7 @@
186185 if val.empty?
187186 css.delete(key)
188187 else
189- if css.key?(key)
190- css.fetch(key).value = val
191- else
192- css << Tenarai::Container::Value.new(key, val)
193- end
188+ css[key] = val
194189 end
195190 end
196191 end
--- trunk/webapp/Widget/User/Login.rb (revision 119)
+++ trunk/webapp/Widget/User/Login.rb (revision 120)
@@ -17,10 +17,6 @@
1717 css 'label'
1818 css 'input', 'input[type="text"]', 'input[type="password"]'
1919 css 'submit', 'input[type="submit"]'
20-
21- def post(query={})
22- resource.login(query['username'], query['password'])
23- end
2420
2521 def render_html(head, body)
2622 body.tag('div', html_attr) do |div|
@@ -68,6 +64,10 @@
6864 end
6965 end
7066 end
67+
68+ def post(query=Tenarai::CGI::Query.new)
69+ resource.login(query['username'], query['password'])
70+ end
7171 end
7272 end
7373 end
--- trunk/webapp/Widget.rb (revision 119)
+++ trunk/webapp/Widget.rb (revision 120)
@@ -164,9 +164,9 @@
164164 end
165165 end
166166
167- def get(param={})
167+ def get(param=Tenarai::CGI::Query.new)
168168 end
169169
170- def post(param={})
170+ def post(param=Tenari::CGI::Query.new)
171171 end
172172 end
--- trunk/webapp/View/Builder.rb (revision 119)
+++ trunk/webapp/View/Builder.rb (revision 120)
@@ -9,7 +9,7 @@
99 extend Tenarai::ClassLoader
1010
1111 def parse_query(service)
12- ws, rs = {}, {}
12+ ws, rs, qs = {}, {}, Tenarai::CGI::Query.new
1313
1414 if service.request.method == 'post'
1515 #service.request.query.merge(service.request.body)
@@ -27,16 +27,20 @@
2727 if w = service.model['widget'].fetch($1)
2828 rs[w] = val.split(',').map do |val| Tenarai::CGI.decode(val) end
2929 end
30+ else
31+ qs[key] = val
3032 end
3133 end
3234
33- [ws, rs]
35+ [ws, rs, qs]
3436 end
3537 private :parse_query
3638
3739 def build_widget(view, service, param)
38- ws, rs = parse_query(service)
40+ ws, rs, qs = parse_query(service)
3941
42+ @preview = true if qs.key?('preview')
43+
4044 widget = {}
4145 view.widget.each do |val|
4246 unless val.parent.nil?
@@ -66,8 +70,13 @@
6670 @view = view
6771 @service = service
6872 @param = param
73+ @preview = false
6974 end
7075
76+ def preview?
77+ @preview
78+ end
79+
7180 def each(widget, &block)
7281 unless empty?(widget)
7382 @widget[widget.id].each(&block)
Show on old repository browser