zena 1.2.1 → 1.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.
- data/History.txt +38 -1
- data/app/controllers/documents_controller.rb +7 -5
- data/app/controllers/nodes_controller.rb +47 -6
- data/app/controllers/user_sessions_controller.rb +12 -3
- data/app/controllers/virtual_classes_controller.rb +8 -2
- data/app/models/acl.rb +5 -2
- data/app/models/cached_page.rb +5 -5
- data/app/models/column.rb +27 -4
- data/app/models/group.rb +1 -1
- data/app/models/node.rb +106 -24
- data/app/models/note.rb +2 -1
- data/app/models/relation.rb +9 -4
- data/app/models/relation_proxy.rb +2 -2
- data/app/models/role.rb +12 -5
- data/app/models/site.rb +10 -9
- data/app/models/skin.rb +8 -0
- data/app/models/string_hash.rb +65 -0
- data/app/models/text_document.rb +1 -1
- data/app/models/user.rb +2 -0
- data/app/models/virtual_class.rb +43 -10
- data/app/views/comments/create.rjs +1 -32
- data/app/views/comments/edit.rjs +1 -1
- data/app/views/comments/update.rjs +1 -1
- data/app/views/documents/show.rhtml +1 -1
- data/app/views/groups/_form.rhtml +7 -0
- data/app/views/groups/_li.rhtml +1 -1
- data/app/views/nodes/500.html +2 -1
- data/app/views/nodes/destroy.rjs +2 -0
- data/app/views/sites/jobs.erb +2 -3
- data/app/views/templates/document_create_tabs/_file.rhtml +1 -1
- data/app/views/templates/document_create_tabs/_import.rhtml +4 -1
- data/app/views/templates/document_create_tabs/_template.rhtml +3 -0
- data/app/views/templates/document_create_tabs/_text_document.rhtml +3 -0
- data/app/views/versions/custom_tab.rhtml +1 -1
- data/app/views/versions/edit.rhtml +1 -1
- data/bricks/acls/lib/bricks/acls.rb +3 -3
- data/bricks/acls/zena/test/unit/acl_test.rb +15 -0
- data/bricks/fs_skin/lib/bricks/fs_skin.rb +190 -0
- data/bricks/fs_skin/zena/init.rb +1 -0
- data/bricks/fs_skin/zena/migrate/20110702010330_add_fs_skin_to_idx_templates.rb +12 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Image-edit.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Image.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Node-+index.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Node-+notFound.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Node-+search.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Node.zafu +1 -1
- data/bricks/{static → fs_skin}/zena/skins/blog/Post.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Project--kml.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/Project.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/comments.zafu +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/dict.yml +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/dateBg.jpg +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/header.png +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/mapPin.png +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/menu.gif +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/menuover.gif +0 -0
- data/bricks/{static → fs_skin}/zena/skins/blog/img/style.css +0 -0
- data/bricks/fs_skin/zena/tasks.rb +26 -0
- data/bricks/{static/zena/test/integration/static_integration_test.rb → fs_skin/zena/test/integration/fs_skin_integration_test.rb} +6 -6
- data/bricks/fs_skin/zena/test/unit/fs_skin_test.rb +33 -0
- data/bricks/grid/lib/bricks/grid.rb +4 -3
- data/bricks/tags/lib/bricks/tags.rb +1 -7
- data/bricks/zena/zena/migrate/20120605091558_add_ssl_login_to_site.rb +7 -0
- data/bricks/zena/zena/migrate/20120630123551_add_auto_publish_to_group.rb +9 -0
- data/config/bricks.yml +3 -3
- data/config/gems.yml +2 -3
- data/lib/tasks/zena.rake +7 -3
- data/lib/zafu.rb +7 -0
- data/lib/zafu/all.rb +21 -0
- data/lib/zafu/compiler.rb +7 -0
- data/lib/zafu/controller_methods.rb +58 -0
- data/lib/zafu/handler.rb +57 -0
- data/lib/zafu/info.rb +4 -0
- data/lib/zafu/markup.rb +309 -0
- data/lib/zafu/mock_helper.rb +42 -0
- data/lib/zafu/node_context.rb +203 -0
- data/lib/zafu/ordered_hash.rb +53 -0
- data/lib/zafu/parser.rb +676 -0
- data/lib/zafu/parsing_rules.rb +382 -0
- data/lib/zafu/process/ajax.rb +530 -0
- data/lib/zafu/process/conditional.rb +92 -0
- data/lib/zafu/process/context.rb +186 -0
- data/lib/zafu/process/forms.rb +143 -0
- data/lib/zafu/process/html.rb +186 -0
- data/lib/zafu/process/ruby_less_processing.rb +321 -0
- data/lib/zafu/security.rb +15 -0
- data/lib/zafu/template.rb +25 -0
- data/lib/zafu/test_helper.rb +19 -0
- data/lib/zafu/view_methods.rb +6 -0
- data/lib/zena.rb +1 -1
- data/lib/zena/acts/enrollable.rb +1 -1
- data/lib/zena/app.rb +4 -17
- data/lib/zena/console.rb +18 -1
- data/lib/zena/core_ext/file_utils.rb +13 -1
- data/lib/zena/core_ext/fixnum.rb +4 -0
- data/lib/zena/core_ext/float.rb +7 -0
- data/lib/zena/deploy.rb +4 -2
- data/lib/zena/deploy/app_init.rhtml +2 -1
- data/lib/zena/deploy/database.rhtml +1 -1
- data/lib/zena/info.rb +1 -1
- data/lib/zena/parser/zazen_rules.rb +4 -4
- data/lib/zena/routes.rb +1 -1
- data/lib/zena/test_controller.rb +1 -1
- data/lib/zena/use.rb +14 -1
- data/lib/zena/use/action.rb +4 -2
- data/lib/zena/use/ajax.rb +86 -38
- data/lib/zena/use/authlogic.rb +16 -1
- data/lib/zena/use/calendar.rb +37 -17
- data/lib/zena/use/conditional.rb +2 -2
- data/lib/zena/use/context.rb +30 -9
- data/lib/zena/use/dates.rb +39 -3
- data/lib/zena/use/display.rb +6 -19
- data/lib/zena/use/forms.rb +100 -79
- data/lib/zena/use/i18n.rb +40 -16
- data/lib/zena/use/query_builder.rb +0 -6
- data/lib/zena/use/query_node.rb +17 -4
- data/lib/zena/use/relations.rb +1 -3
- data/lib/zena/use/rendering.rb +10 -8
- data/lib/zena/use/scope_index.rb +5 -1
- data/lib/zena/use/search.rb +2 -1
- data/lib/zena/use/urls.rb +82 -77
- data/lib/zena/use/workflow.rb +12 -4
- data/lib/zena/use/zafu_safe_definitions.rb +37 -9
- data/lib/zena/use/zafu_templates.rb +49 -20
- data/lib/zena/use/zazen.rb +6 -2
- data/locale/it/LC_MESSAGES/zena.mo +0 -0
- data/locale/it/zena.mo +0 -0
- data/locale/it/zena.po +1982 -0
- data/public/images/arrow_back.png +0 -0
- data/public/images/remove_tag.png +0 -0
- data/public/javascripts/grid.js +800 -199
- data/public/javascripts/window.js +1 -1
- data/public/javascripts/zena.js +130 -21
- data/public/stylesheets/grid.css +11 -2
- data/public/stylesheets/zena.css +2 -1
- data/test/custom_queries/complex.host.yml +5 -0
- data/test/fixtures/files/TestNode.zafu +36 -0
- data/test/functional/nodes_controller_test.rb +18 -1
- data/test/integration/zafu_compiler/action.yml +2 -2
- data/test/integration/zafu_compiler/ajax.yml +44 -26
- data/test/integration/zafu_compiler/asset.yml +12 -2
- data/test/integration/zafu_compiler/basic.yml +0 -16
- data/test/integration/zafu_compiler/calendar.yml +6 -6
- data/test/integration/zafu_compiler/complex_ok.yml +23 -1
- data/test/integration/zafu_compiler/conditional.yml +5 -5
- data/test/integration/zafu_compiler/context.yml +6 -5
- data/test/integration/zafu_compiler/dates.yml +23 -2
- data/test/integration/zafu_compiler/display.yml +46 -2
- data/test/integration/zafu_compiler/errors.yml +2 -2
- data/test/integration/zafu_compiler/eval.yml +35 -7
- data/test/integration/zafu_compiler/forms.yml +47 -13
- data/test/integration/zafu_compiler/i18n.yml +2 -2
- data/test/integration/zafu_compiler/meta.yml +35 -1
- data/test/integration/zafu_compiler/query.yml +23 -4
- data/test/integration/zafu_compiler/relations.yml +10 -6
- data/test/integration/zafu_compiler/roles.yml +4 -4
- data/test/integration/zafu_compiler/rubyless.yml +11 -1
- data/test/integration/zafu_compiler/safe_definitions.yml +23 -5
- data/test/integration/zafu_compiler/security.yml +10 -6
- data/test/integration/zafu_compiler/urls.yml +23 -6
- data/test/integration/zafu_compiler/zafu_attributes.yml +1 -1
- data/test/integration/zafu_compiler/zazen.yml +14 -0
- data/test/selenium/Add/add3.rsel +8 -8
- data/test/selenium/Destroy/0setup.rsel +12 -0
- data/test/selenium/Destroy/destroy1.rsel +16 -0
- data/test/selenium/Edit/edit2.rsel +9 -9
- data/test/selenium/Edit/edit5.rsel +9 -9
- data/test/selenium/Edit/edit6.rsel +9 -9
- data/test/selenium/Form/form4.rsel +17 -0
- data/test/selenium/Toggle/toggle1.rsel +2 -0
- data/test/selenium/Toggle/toggle2.rsel +18 -0
- data/test/sites/zena/columns.yml +3 -0
- data/test/sites/zena/versions.yml +7 -0
- data/test/unit/cached_page_test.rb +13 -13
- data/test/unit/column_test.rb +26 -0
- data/test/unit/node_test.rb +16 -1
- data/test/unit/project_test.rb +6 -1
- data/test/unit/relation_test.rb +1 -1
- data/test/unit/role_test.rb +1 -1
- data/test/unit/string_hash_test.rb +30 -0
- data/test/unit/virtual_class_test.rb +31 -17
- data/test/unit/zafu_markup_test.rb +414 -0
- data/test/unit/zafu_node_context_test.rb +375 -0
- data/test/unit/zafu_ordered_hash_test.rb +69 -0
- data/test/unit/zena/acts/enrollable_test.rb +1 -1
- data/test/unit/zena/parser/zafu_asset.yml +0 -10
- data/test/unit/zena/parser/zazen.yml +1 -1
- data/test/unit/zena/parser_test.rb +1 -72
- data/test/unit/zena/use/dates_test.rb +1 -1
- data/test/unit/zena/use/rendering_test.rb +24 -7
- data/test/unit/zena/use/scope_index_test.rb +17 -0
- data/test/unit/zena/use/zazen_test.rb +2 -1
- data/zena.gemspec +71 -37
- metadata +104 -83
- data/app/views/nodes/destroy.erb +0 -0
- data/bricks/static/lib/bricks/static.rb +0 -151
- data/bricks/static/zena/init.rb +0 -1
- data/bricks/static/zena/migrate/20110702010330_add_static_to_idx_templates.rb +0 -12
- data/bricks/static/zena/test/unit/static_test.rb +0 -33
- data/lib/zena/parser/zafu_rules.rb +0 -244
- data/lib/zena/parser/zafu_tags.rb +0 -198
- data/lib/zena/parser/zena_rules.rb +0 -23
|
@@ -115,8 +115,8 @@ complex_lang_list:
|
|
|
115
115
|
res: "/li class='on'>/oo/projects-list/Clean-Water-project/page22.html\?lang=en</"
|
|
116
116
|
|
|
117
117
|
html_lang_and_dict:
|
|
118
|
-
src: "<html xmlns='http://www.w3.org/1999/xhtml' lang='#{v.lang}' do='load' dictionary='/Default skin/translations'
|
|
119
|
-
res: "<html xmlns='http://www.w3.org/1999/xhtml' lang='en'></html>"
|
|
118
|
+
src: "<html xmlns='http://www.w3.org/1999/xhtml' lang='#{v.lang}' xml:lang='en' do='load' dictionary='/Default skin/translations'></html>"
|
|
119
|
+
res: "<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en' lang='en'></html>"
|
|
120
120
|
|
|
121
121
|
dictionary_fr:
|
|
122
122
|
context:
|
|
@@ -4,12 +4,38 @@ default:
|
|
|
4
4
|
visitor: 'ant'
|
|
5
5
|
node: 'status'
|
|
6
6
|
|
|
7
|
+
less_then_in_param:
|
|
8
|
+
src: "<a onclick='if (a < b) alert(a)'>xx</a>"
|
|
9
|
+
tem: "<a onclick='if (a < b) alert(a)'>xx</a>"
|
|
10
|
+
|
|
11
|
+
greater_then_in_param:
|
|
12
|
+
src: "<a onclick='if (a > b) alert(a)'>xx</a>"
|
|
13
|
+
tem: "<a onclick='if (a > b) alert(a)'>xx</a>"
|
|
14
|
+
|
|
15
|
+
less_then_in_dyn_param:
|
|
16
|
+
src: "<a onclick='if (a < b) alert(a)'>xx</a>"
|
|
17
|
+
tem: "<a onclick='if (a < b) alert(a)'>xx</a>"
|
|
18
|
+
|
|
19
|
+
greater_then_in_dyn_param:
|
|
20
|
+
src: "<a foo='#{created_at > now ? \'yes\' : \'no\'}'>xx</a>"
|
|
21
|
+
tem: "<a foo='<%= (@node.created_at ? (@node.created_at>Time.now) : nil) ? \"yes\" : \"no\" %>'>xx</a>"
|
|
22
|
+
|
|
23
|
+
greater_then_in_do:
|
|
24
|
+
src: "<a foo='bar' do='pages where created_at > 7'>xx</a>"
|
|
25
|
+
tem: "/<% if var1 = Node.do_find.*nodes.created_at > 7.*<a foo='bar'>xx</a>/"
|
|
26
|
+
|
|
27
|
+
greater_then_in_text:
|
|
28
|
+
src: "<r:js>if (a < 4) alert('ok');</r:js>"
|
|
29
|
+
res: ""
|
|
30
|
+
tem: "<% js_data << \"if (a < 4) alert('ok');\" %>"
|
|
31
|
+
js: "/if \(a < 4\) alert\('ok'\);/"
|
|
32
|
+
|
|
7
33
|
include_with:
|
|
8
34
|
src: "include_with: <r:include template='/basic/name/title'><h1 do='with' part='title' attr='id'/>"
|
|
9
35
|
res: "include_with: title: <h1 id='lala'>22</h1>"
|
|
10
36
|
|
|
11
37
|
include_with_empty:
|
|
12
|
-
src: "include_with: <r:include template='/meta/name/title'><r:with part='title'
|
|
38
|
+
src: "include_with: <r:include template='/meta/name/title'><r:with part='title'/></r:include>"
|
|
13
39
|
res: "include_with: title: "
|
|
14
40
|
|
|
15
41
|
name_title:
|
|
@@ -40,6 +66,14 @@ id_do_with:
|
|
|
40
66
|
src: "include_part: <r:include template='/meta/id/do' do='with' part='logo' do='t'>foo</r:include>"
|
|
41
67
|
res: "include_part: <h1 id='logo'>foo</h1>"
|
|
42
68
|
|
|
69
|
+
with_part_do_setup:
|
|
70
|
+
src: "<div id='content'>hello <div id='main'>main</div></div>"
|
|
71
|
+
tem: "<div id='content'>hello <div id='main'>main</div></div>"
|
|
72
|
+
|
|
73
|
+
with_part_do:
|
|
74
|
+
src: "with_part_do: <r:include template='/meta/with/part/do/setup'><r:with part='main' do='title'/></r:include>"
|
|
75
|
+
tem: "with_part_do: <div id='content'>hello <div id='main'><%= @node.prop['title'] %></div></div>"
|
|
76
|
+
|
|
43
77
|
# this test is a dummy used by include_context
|
|
44
78
|
context_dummy:
|
|
45
79
|
src: "CD: <r:pages in='site' where='title like \"s%\"' name='pages'><r:each join=', ' do='title'/></r:pages>"
|
|
@@ -200,6 +200,15 @@ query_with_parse_paginate:
|
|
|
200
200
|
tem: '/page_numbers/'
|
|
201
201
|
res: "/1.*2.*3.*4.*5/"
|
|
202
202
|
|
|
203
|
+
link_page_list:
|
|
204
|
+
src: |
|
|
205
|
+
<r:query default='pages in site limit 4 paginate p' select='pages where #{query_parse(params[:q])} in site limit 2 paginate p'>
|
|
206
|
+
: <r:link page='list' page_count='12' join=' | '/>
|
|
207
|
+
</r:query>
|
|
208
|
+
# should properly pass the query to sub-contexts.
|
|
209
|
+
res: "/: 1 \| <a.*>2</a> \| <a.*>3</a> \| <a/"
|
|
210
|
+
# res: "/1.*2.*3.*4.*5/"
|
|
211
|
+
|
|
203
212
|
query_can_be_nil_bad_argument_type:
|
|
204
213
|
context:
|
|
205
214
|
filter:
|
|
@@ -236,11 +245,21 @@ simple_select:
|
|
|
236
245
|
tem: '/<%= var1.attributes\["ti"\] %>/'
|
|
237
246
|
res: "<div>crocodiles</div>"
|
|
238
247
|
|
|
248
|
+
select_with_type:
|
|
249
|
+
src: "<div do='nodes select created_at as ti:time' find='first' do='ti' format='%d.%m.%Y'/>"
|
|
250
|
+
tem: '/format_date\(var1.rcast\("ti", :time\)/'
|
|
251
|
+
res: "<div>11.04.2006</div>"
|
|
252
|
+
|
|
239
253
|
select_in_from:
|
|
240
254
|
src: "<div do='images select title as it from projects select title as pt in site' do='each' join=', '><r:pt/>: <r:it/></div>"
|
|
241
255
|
tem: '/<%= var2.attributes\["pt"\] %>: <%= var2.attributes\["it"\] %>/'
|
|
242
256
|
res: "<div>a wiki with Zena: bird, a wiki with Zena: flower, Clean Water project: it's a lake</div>"
|
|
243
257
|
|
|
258
|
+
select_in_from_saved:
|
|
259
|
+
src: "<div do='images select title as it from projects select title as pt in site' do='set' list='this' do='list' do='each' join=', '><r:pt/>: <r:it/></div>"
|
|
260
|
+
tem: '/<%= var3.attributes\["pt"\] %>: <%= var3.attributes\["it"\] %>/'
|
|
261
|
+
res: "<div>a wiki with Zena: bird, a wiki with Zena: flower, Clean Water project: it's a lake</div>"
|
|
262
|
+
|
|
244
263
|
select_group:
|
|
245
264
|
src: "<div do='images select title as it from projects select title as pt in site' do='group' by='pt' do='each_group' join=' / '><r:pt/>: <r:each join=', ' do='it'/></div>"
|
|
246
265
|
res: "<div>a wiki with Zena: bird, flower / Clean Water project: it's a lake</div>"
|
|
@@ -260,8 +279,8 @@ query_errors:
|
|
|
260
279
|
res: "<span class='query'>nodes in badaboum</span> <span class='error'>Invalid scope 'badaboum'.</span>"
|
|
261
280
|
|
|
262
281
|
find_with_rubyless:
|
|
263
|
-
src: "<b do='find(\"images in site limit 2\")' do='each' join=',' do='title'/>"
|
|
264
|
-
res: "<b>Autumn Tree,bird</b>"
|
|
282
|
+
src: "<b do='find(\"images in site limit 2\")' do='each' join=', ' do='title'/>"
|
|
283
|
+
res: "<b>Autumn Tree, bird</b>"
|
|
265
284
|
|
|
266
285
|
find_loads_class:
|
|
267
286
|
src: "<div do='find(11)'><r:origin/></div>"
|
|
@@ -269,7 +288,7 @@ find_loads_class:
|
|
|
269
288
|
|
|
270
289
|
query_on_vclass:
|
|
271
290
|
# typical syntax error (should be Contact?)
|
|
272
|
-
src: "<r:Contact><div do='pages in site order by zip asc limit 2' do='each' join=',' do='title'/></r:Contact>"
|
|
291
|
+
src: "<r:Contact><div do='pages in site order by zip asc limit 2' do='each' join=', ' do='title'/></r:Contact>"
|
|
273
292
|
# does the query on last @node
|
|
274
293
|
tem: "/Node.do_find/"
|
|
275
|
-
res: '<div>Zena the wild CMS,people</div>'
|
|
294
|
+
res: '<div>Zena the wild CMS, people</div>'
|
|
@@ -371,7 +371,8 @@ where_two_attributes:
|
|
|
371
371
|
res: "parc opening, zena enhancements"
|
|
372
372
|
|
|
373
373
|
many_or:
|
|
374
|
-
|
|
374
|
+
# old: or='images in site' or='tags in site'
|
|
375
|
+
src: "<r:tagged in='site or images in site or tags in site' do='each' join=',' do='title'/>"
|
|
375
376
|
res: "Art,bird,Clean Water project,flower,it's a lake,News list,parc opening,Top menu"
|
|
376
377
|
|
|
377
378
|
hot_or_page:
|
|
@@ -403,13 +404,12 @@ group_by_project:
|
|
|
403
404
|
group_by_project_sort_zip:
|
|
404
405
|
context:
|
|
405
406
|
visitor: ant
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
res: "<b>Clean Water project</b>: it's a lake<b>a wiki with Zena</b>: bird,flower<b>Zena the wild CMS</b>: Autumn Tree"
|
|
407
|
+
src: "<r:images in='site' order='zip ASC' do='group' by='project' sort='id'><b do='project' do='title'/>: <r:each join=', ' do='title'/></r:images>"
|
|
408
|
+
res: "<b>Clean Water project</b>: it's a lake<b>a wiki with Zena</b>: bird, flower<b>Zena the wild CMS</b>: Autumn Tree"
|
|
409
409
|
|
|
410
410
|
group_by_parent_sort:
|
|
411
|
-
src: "<r:images in='site' order='title ASC' do='group' by='parent' sort='title'><b do='parent' do='title'/>: <r:each join=',' do='title'/></r:images>"
|
|
412
|
-
res: "<b>a wiki with Zena</b>: bird,flower<b>Clean Water project</b>: it's a lake"
|
|
411
|
+
src: "<r:images in='site' order='title ASC' do='group' by='parent' sort='title'><b do='parent' do='title'/>: <r:each join=', ' do='title'/></r:images>"
|
|
412
|
+
res: "<b>a wiki with Zena</b>: bird, flower<b>Clean Water project</b>: it's a lake"
|
|
413
413
|
|
|
414
414
|
nodes_in_site_group_by_year:
|
|
415
415
|
old_src: "<r:nodes in='site' group='log_at:year' order='log_at:year asc, title ASC' do='each' join=', '><r:show attr='log_at' format='%Y'/></r:nodes>"
|
|
@@ -490,3 +490,7 @@ core_context:
|
|
|
490
490
|
# Ensure that :project rubyless method uses enrollable.
|
|
491
491
|
src: "<r:project do='origin || title'/>"
|
|
492
492
|
tem: "/ar1.prop\['origin'\] or var1.prop\['title'\]/"
|
|
493
|
+
|
|
494
|
+
find_less_then:
|
|
495
|
+
src: <div do='projects where created_at < "2010-05-01" in site' do='each' do='title'/>
|
|
496
|
+
tem: "/nodes.created_at < '2010-05-01'/"
|
|
@@ -79,13 +79,13 @@ vclass_roles:
|
|
|
79
79
|
node: letter
|
|
80
80
|
src: "<r:vclass do='roles' do='each' join=', '><r:name/> (<r:columns do='each' join=',' do='name'/>)</r:vclass>"
|
|
81
81
|
tem: "/var1 = @node\.virtual_class .* var2 = var1.sorted_roles/"
|
|
82
|
-
res: "Node (summary,text,title), Original (origin,tz,weight), Task (assigned), Letter (paper,search,search_mono)"
|
|
82
|
+
res: "Node (summary,text,title), Original (origin,settings,tz,weight), Task (assigned), Letter (paper,search,search_mono)"
|
|
83
83
|
|
|
84
84
|
vclass_column_size:
|
|
85
85
|
context:
|
|
86
86
|
node: letter
|
|
87
87
|
src: "<r:vclass do='roles' do='each' join=', '><r:name/> (<r:columns do='size'/>)</r:vclass>"
|
|
88
|
-
res: "Node (3), Original (
|
|
88
|
+
res: "Node (3), Original (4), Task (1), Letter (3)"
|
|
89
89
|
|
|
90
90
|
vclass_context:
|
|
91
91
|
src: "<r:Image><r:name/></r:Image>"
|
|
@@ -111,7 +111,7 @@ grid_manual:
|
|
|
111
111
|
<tr do='Image' do='roles' do='each' do='columns'><th do='each' do='name'/></tr>
|
|
112
112
|
<tr do='each'><r:Image do='roles' do='each' do='columns'><td do='each' do='@node.send(name)'/></r:Image></tr>
|
|
113
113
|
</table>
|
|
114
|
-
res: "/<th colspan='3'>Node.*<th colspan='
|
|
114
|
+
res: "/<th colspan='3'>Node.*<th colspan='4'>Original.*<th>exif</th><th>height</th><th>width</th>.*<td>image/jpeg</td><td>jpg</td>/"
|
|
115
115
|
|
|
116
116
|
list_relations:
|
|
117
117
|
src: "<r:Contact do='relations' do='each' join=', ' do='name'/>"
|
|
@@ -122,7 +122,7 @@ list_relations_filter_group:
|
|
|
122
122
|
res: "reference, reference_for, set_tag"
|
|
123
123
|
|
|
124
124
|
input_relation_name:
|
|
125
|
-
src: "<r:select name='rel' eval='Contact.relations(\"doc\").map(
|
|
125
|
+
src: "<r:select name='rel' eval='Contact.relations(\"doc\").map(\"name\")'/>"
|
|
126
126
|
res: "<select name='node[rel]'><option value=\"reference\">reference</option>\n<option value=\"reference_for\">reference_for</option>\n<option value=\"set_tag\">set_tag</option></select>"
|
|
127
127
|
|
|
128
128
|
manual_select:
|
|
@@ -86,4 +86,14 @@ prop_in_list_context:
|
|
|
86
86
|
role_existing_class_name:
|
|
87
87
|
# Should understand 'Comment' as a Role.
|
|
88
88
|
src: "<r:Comment?>xx</r:Comment?>"
|
|
89
|
-
tem: "/<% if @node.has_role\?\(\d+\) %>xx<% end %>/"
|
|
89
|
+
tem: "/<% if @node.has_role\?\(\d+\) %>xx<% end %>/"
|
|
90
|
+
|
|
91
|
+
class_new:
|
|
92
|
+
src: "<div do='set' p='Post.new'><p do='p.klass'/>.<p do='p.title'/></div>"
|
|
93
|
+
tem: "/VirtualClass\[.Post.\].zafu_new.*_zp.klass.*_zp.prop\[.title.\]/"
|
|
94
|
+
res: "<div><p>Post</p>.<p></p></div>"
|
|
95
|
+
|
|
96
|
+
class_new_with_attr:
|
|
97
|
+
src: "<div do='set' p='Post.new(:title => \"yes\")'><p do='p.klass'/>.<p do='p.title'/></div>"
|
|
98
|
+
tem: "/VirtualClass\[.Post.\].zafu_new.*_zp.klass.*_zp.prop\[.title.\]/"
|
|
99
|
+
res: "<div><p>Post</p>.<p>yes</p></div>"
|
|
@@ -94,15 +94,22 @@ kind_of_role:
|
|
|
94
94
|
map_join:
|
|
95
95
|
context:
|
|
96
96
|
node: 'cleanWater'
|
|
97
|
-
src: "<r:children do='map(
|
|
97
|
+
src: "<r:children do='map(\"title\").join(\",\")'/>"
|
|
98
98
|
tem: "/var1.map\{\|_map_obj\| _map_obj.prop\['title'\]\}/"
|
|
99
99
|
res: "crocodiles,it's a lake,The lake we love,parc opening,status title,water"
|
|
100
100
|
|
|
101
|
+
sum:
|
|
102
|
+
context:
|
|
103
|
+
node: 'cleanWater'
|
|
104
|
+
src: "<r:children do='sum(\"created_at.to_i\")'/>"
|
|
105
|
+
tem: "/var1.map\{\|_sum_obj\| _sum_obj.created_at.to_i.to_f\}.reduce\(:\+\)/"
|
|
106
|
+
res: "6854457600.0"
|
|
107
|
+
|
|
101
108
|
map_on_can_be_nil:
|
|
102
109
|
context:
|
|
103
110
|
node: 'cleanWater'
|
|
104
|
-
eval: "Contact.relations.map(
|
|
105
|
-
tem: "/VirtualClass\[\"Contact\"\] \? VirtualClass\[\"Contact\"\].all_relations.map\
|
|
111
|
+
eval: "Contact.relations.map(\"name\").join('-')"
|
|
112
|
+
tem: "/VirtualClass\[\"Contact\"\] \? VirtualClass\[\"Contact\"\].all_relations.map\{\|_map_obj\| _map_obj.other_role\}.compact.join\(\"-\"\)/"
|
|
106
113
|
res: "/collaborator_for-favorite-favorite_for/"
|
|
107
114
|
|
|
108
115
|
min:
|
|
@@ -122,7 +129,7 @@ max:
|
|
|
122
129
|
time_advance:
|
|
123
130
|
context:
|
|
124
131
|
date: '2011-02-03'
|
|
125
|
-
src: "<b do='date.advance(:months
|
|
132
|
+
src: "<b do='date.advance(:months => 1).strftime(\"%Y-%m-%d\")'/>"
|
|
126
133
|
res: "<b>2011-03-03</b>"
|
|
127
134
|
|
|
128
135
|
time_blank:
|
|
@@ -138,6 +145,17 @@ hash_to_params:
|
|
|
138
145
|
q:
|
|
139
146
|
one: '1'
|
|
140
147
|
two: '2'
|
|
141
|
-
src: "<b do='{:q
|
|
148
|
+
src: "<b do='{:q => params[:q]}' do='to_param'/>"
|
|
142
149
|
tem: "<% var1 = {:q => params[:q]} %><b><%= var1.to_param %></b>"
|
|
143
150
|
res: '<b>q%5Bone%5D=1&q%5Btwo%5D=2</b>'
|
|
151
|
+
|
|
152
|
+
string_hash:
|
|
153
|
+
src: "<b do='set' a='string_hash'>AAA<r:eval>a['foo']</r:eval></b>"
|
|
154
|
+
res: "<b>AAA</b>"
|
|
155
|
+
tem: "/StringHash.new/"
|
|
156
|
+
|
|
157
|
+
string_hash_with_params:
|
|
158
|
+
src: "<b do='set' a='string_hash(:foo => \"men\")'>AAA<r:eval>a['foo']</r:eval></b>"
|
|
159
|
+
res: "<b>AAAmen</b>"
|
|
160
|
+
tem: "/StringHash.from_hash\(\{:foo => \"men\"\}\)/"
|
|
161
|
+
|
|
@@ -16,8 +16,8 @@ erb:
|
|
|
16
16
|
tem: "<% puts 'mean' %>"
|
|
17
17
|
|
|
18
18
|
forbidden_methods:
|
|
19
|
-
src: "<r:eval>
|
|
20
|
-
tem: "/unknown method '
|
|
19
|
+
src: "<r:eval>puts '\'bad\''</r:eval>"
|
|
20
|
+
tem: "/unknown method 'puts\(String\)'/"
|
|
21
21
|
|
|
22
22
|
syntax_error:
|
|
23
23
|
src: "<r:show eval='<% puts \"mean\" %>'/>"
|
|
@@ -43,8 +43,8 @@ build_erb_with_trans:
|
|
|
43
43
|
build_erb_with_void:
|
|
44
44
|
context:
|
|
45
45
|
lang: fr
|
|
46
|
-
src: "<r:void><</r:void><r:void>%= 5+8 %</r:void><r:void>></r:void></r:load>"
|
|
47
|
-
tem: "
|
|
46
|
+
src: "ABC: <r:void><</r:void><r:void>%= 5+8 %</r:void><r:void>></r:void></r:load>"
|
|
47
|
+
tem: "ABC: <span class='parser_error'>Invalid tag near '<</r:void><'</span>"
|
|
48
48
|
|
|
49
49
|
mean_inc:
|
|
50
50
|
src: '<'
|
|
@@ -56,7 +56,7 @@ build_erb_with_include:
|
|
|
56
56
|
|
|
57
57
|
mean_part:
|
|
58
58
|
src: "<<div id='foo'></div>"
|
|
59
|
-
res: "
|
|
59
|
+
res: "<span class='parser_error'>Invalid tag near '<<div id='f'</span>"
|
|
60
60
|
|
|
61
61
|
build_erb_with_include_remove_part:
|
|
62
62
|
src: "<r:include template='/security/mean/part'><r:with part='foo'/></r:include><r:void>%= 5+8 %</r:void><r:void>></r:void>"
|
|
@@ -64,4 +64,8 @@ build_erb_with_include_remove_part:
|
|
|
64
64
|
|
|
65
65
|
build_erb_with_rubyless:
|
|
66
66
|
src: "<r:void do='\"<\"'/><r:void>%= 5+8 %</r:void><r:void>></r:void>"
|
|
67
|
-
tem: "!/<%= 5/"
|
|
67
|
+
tem: "!/<%= 5/"
|
|
68
|
+
|
|
69
|
+
multiple_trans:
|
|
70
|
+
src: "<r:t text='<'/><r:t text='%'/>"
|
|
71
|
+
tem: "<%"
|
|
@@ -31,7 +31,7 @@ r_url_with_hash:
|
|
|
31
31
|
res: "/page22_back.html\?f=x/"
|
|
32
32
|
|
|
33
33
|
url_with_ssl:
|
|
34
|
-
src: "<a href='#{url(this, :host
|
|
34
|
+
src: "<a href='#{url(this, :host => \"some.host:445\", :ssl => true)}' do='title'/>"
|
|
35
35
|
res: "<a href='https://some.host:445/oo/projects-list/Clean-Water-project/page22.html'>status title</a>"
|
|
36
36
|
|
|
37
37
|
path:
|
|
@@ -39,7 +39,7 @@ path:
|
|
|
39
39
|
res: "<a href='/oo/projects-list/Clean-Water-project/page22.html'>blah</a>"
|
|
40
40
|
|
|
41
41
|
path_with_mode:
|
|
42
|
-
src: "<a href='#{path(this, :mode
|
|
42
|
+
src: "<a href='#{path(this, :mode => \"foo\")}'>blah</a>"
|
|
43
43
|
res: "<a href='/oo/projects-list/Clean-Water-project/page22_foo.html'>blah</a>"
|
|
44
44
|
|
|
45
45
|
link:
|
|
@@ -245,7 +245,7 @@ link_trans:
|
|
|
245
245
|
link_date_complex:
|
|
246
246
|
context:
|
|
247
247
|
ref_date: '2011-04-22 22:00'
|
|
248
|
-
src: "<r:link date='date.advance(:months
|
|
248
|
+
src: "<r:link date='date.advance(:months => -1).strftime(\"%Y-%m-%d\", \"Asia/Jakarta\")' text='PREV'/>"
|
|
249
249
|
# Date is in Asia/Jakarta timezone. Ref date is utc in tests.
|
|
250
250
|
res: "/\?date=2011-03-23'>PREV/"
|
|
251
251
|
|
|
@@ -255,7 +255,7 @@ target_blank:
|
|
|
255
255
|
|
|
256
256
|
action_destroy:
|
|
257
257
|
src: "<r:link action='destroy'/>"
|
|
258
|
-
res: "<a data-confirm='Destroy
|
|
258
|
+
res: "<a data-confirm='Destroy status title ?' href='/nodes/22' onclick='return Zena.m(this,\"delete\")'>status title</a>"
|
|
259
259
|
|
|
260
260
|
action_publish:
|
|
261
261
|
src: "<r:link action='publish'/>"
|
|
@@ -294,9 +294,26 @@ encode_blank_values:
|
|
|
294
294
|
|
|
295
295
|
cachestamp:
|
|
296
296
|
# 26 would be the template for rendering JS's id.
|
|
297
|
-
src: "<script src='#{path(project, :format
|
|
297
|
+
src: "<script src='#{path(project, :format => \"js\", :tstamp => find(26).updated_at.to_i)}'></script>"
|
|
298
298
|
res: "<script src='/oo/projects-list/Clean-Water-project.js?1144713600&tstamp=1176249600'></script>"
|
|
299
299
|
|
|
300
300
|
node_in_argument:
|
|
301
301
|
src: "<r:link node[done_by]='visitor_node'/>"
|
|
302
|
-
res: "/\?node\[done_by\]=13'>status title</a>/"
|
|
302
|
+
res: "/\?node\[done_by\]=13'>status title</a>/"
|
|
303
|
+
|
|
304
|
+
link_page_next:
|
|
305
|
+
context:
|
|
306
|
+
pak: 2
|
|
307
|
+
src: "<r:nodes in='site' limit='3' order='zip' paginate='pak'><r:link page='previous'/> | <r:pak/> | <r:link page='next'/> || <r:each join=',' do='title'/></r:nodes>"
|
|
308
|
+
res: "<a href='/oo/projects-list/Clean-Water-project/page22.html?pak=1'>1</a> | 2 | <a href='/oo/projects-list/Clean-Water-project/page22.html?pak=3'>3</a> || Panthera Tigris Sumatran,Panthera Leo Verneyi,My Life"
|
|
309
|
+
|
|
310
|
+
link_page_next_with_block:
|
|
311
|
+
src: "<r:nodes in='site' limit='3' order='zip' paginate='pak'><r:link page='next' do='t'>next</r:link></r:nodes>"
|
|
312
|
+
res: "<a href='/oo/projects-list/Clean-Water-project/page22.html?pak=2'>next</a>"
|
|
313
|
+
|
|
314
|
+
link_page_list:
|
|
315
|
+
context:
|
|
316
|
+
pak: 2
|
|
317
|
+
src: "<r:nodes in='site' limit='10' order='zip' paginate='pak' do='link' page='list' join=', '/>"
|
|
318
|
+
tem: "/_zpage != _zcurrent.*zen_path\(@node,.*:pak.*elsif true.*_zpage/"
|
|
319
|
+
res: "/<a href='.*page22.html\?pak=1'>1</a>, 2, .*pak=3'>3</a>.*pak=4'>4</a>.*pak=5'>5</a>/"
|
|
@@ -84,7 +84,7 @@ store_node:
|
|
|
84
84
|
|
|
85
85
|
store_in_block:
|
|
86
86
|
src: "<r:block><r:void set_found='this' do='node' where='id = 18 in site' do='page'><r:found do='title'/>: <r:show attr='title'/></r:void></r:block>"
|
|
87
|
-
res: "<div id='list1'>status title: a wiki with Zena</div>"
|
|
87
|
+
res: "<div id='list1' data-z='22'>status title: a wiki with Zena</div>"
|
|
88
88
|
'zafu_attributes/store/in/block/en/list1.erb': "/_zfound = @node.*<% var3 = _zfound %><%= var3.prop\['title'\] %>:/"
|
|
89
89
|
|
|
90
90
|
set_var_outside_block:
|
|
@@ -112,3 +112,17 @@ unknown_link:
|
|
|
112
112
|
host:
|
|
113
113
|
tem: "<%= zazen('this is a \"link\":12. !30!', :host => 'foo.com') %>"
|
|
114
114
|
res: "/http://foo.com/oo/section12.html\">link.*http://foo.com/en/image30_std.jpg/"
|
|
115
|
+
|
|
116
|
+
amp:
|
|
117
|
+
tem: "<%= zazen('this & that') %>"
|
|
118
|
+
res: "<p>this & that</p>"
|
|
119
|
+
|
|
120
|
+
pre:
|
|
121
|
+
tem: "<%= zazen(' Vin') %>"
|
|
122
|
+
res: "<pre>Vin</pre>"
|
|
123
|
+
|
|
124
|
+
target:
|
|
125
|
+
src: |
|
|
126
|
+
<r:zazen text='"":12' target="foobar"/>
|
|
127
|
+
tem: /:target => "foobar"/
|
|
128
|
+
res: /<div class='zazen'><p><a .* target=\"foobar\"/
|
data/test/selenium/Add/add3.rsel
CHANGED
|
@@ -1,22 +1,22 @@
|
|
|
1
1
|
# Add first element
|
|
2
2
|
open '/oo/testnode37.html?test=add3'
|
|
3
|
-
assert_not_visible '
|
|
3
|
+
assert_not_visible 'add31_title'
|
|
4
4
|
click 'css=img[alt=add]'
|
|
5
|
-
assert_visible '
|
|
6
|
-
type '
|
|
5
|
+
assert_visible 'add31_title'
|
|
6
|
+
type 'add31_title', 'add3'
|
|
7
7
|
click 'css=input[type=submit]'
|
|
8
|
-
wait_for_not_visible '
|
|
8
|
+
wait_for_not_visible 'add31_title'
|
|
9
9
|
verify_text 'css=.add3 a', 'add3'
|
|
10
10
|
# should have correct parent
|
|
11
11
|
verify_text 'css=.add3 span', 'Kill the bugs'
|
|
12
12
|
|
|
13
13
|
# Add a second element
|
|
14
|
-
assert_not_visible '
|
|
14
|
+
assert_not_visible 'add31_title'
|
|
15
15
|
click 'css=img[alt=add]'
|
|
16
|
-
assert_visible '
|
|
17
|
-
type '
|
|
16
|
+
assert_visible 'add31_title'
|
|
17
|
+
type 'add31_title', 'add3_2'
|
|
18
18
|
click 'css=input[type=submit]'
|
|
19
|
-
wait_for_not_visible '
|
|
19
|
+
wait_for_not_visible 'add31_title'
|
|
20
20
|
verify_text 'css=.add3_2 a', 'add3_2'
|
|
21
21
|
# should have correct parent
|
|
22
22
|
verify_text 'css=.add3_2 span', 'Kill the bugs'
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# See also the RDoc for SeleniumOnRails::TestBuilder.
|
|
2
|
+
# View result in browser: http://test.host:3000/selenium
|
|
3
|
+
|
|
4
|
+
setup :fixtures => :all
|
|
5
|
+
|
|
6
|
+
# Setup code
|
|
7
|
+
open '/login'
|
|
8
|
+
type 'user_login', 'lion'
|
|
9
|
+
type 'password', 'lion'
|
|
10
|
+
click_and_wait 'commit'
|
|
11
|
+
click_and_wait 'link=Kill the bugs'
|
|
12
|
+
verify_text '_title37', 'Kill the bugs'
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
# Add first element
|
|
2
|
+
open '/oo/testnode37.html?test=destroy1'
|
|
3
|
+
verify_element_not_present 'destroy_destroy1'
|
|
4
|
+
|
|
5
|
+
click 'css=img[alt=add]'
|
|
6
|
+
type 'destroy_list1_title', 'destroy1'
|
|
7
|
+
click 'css=input[type=submit]'
|
|
8
|
+
wait_for_element_present 'destroy_destroy1'
|
|
9
|
+
|
|
10
|
+
click 'css=#destroy_destroy1 a'
|
|
11
|
+
assert_confirmation 'Destroy destroy1 ?'
|
|
12
|
+
wait_for_element_not_present 'destroy_destroy1'
|
|
13
|
+
|
|
14
|
+
# Reload
|
|
15
|
+
open '/oo/testnode37.html?test=destroy1'
|
|
16
|
+
verify_element_not_present 'destroy_destroy1'
|