zena 1.2.1 → 1.2.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
@@ -10,8 +10,18 @@ default:
|
|
10
10
|
|
11
11
|
rename_asset:
|
12
12
|
src: "<link href='/Default skin/style.css' rel='Stylesheet' type='text/css'/>"
|
13
|
-
tem: "<link
|
13
|
+
tem: "<link rel='Stylesheet' type='text/css' href='/en/textdocument54.css?1144713600'/>"
|
14
14
|
|
15
15
|
should_not_change_script:
|
16
16
|
src: "<script type='text/javascript' src='http://example.com'></script>"
|
17
|
-
tem: "<script src='http://example.com'
|
17
|
+
tem: "<script type='text/javascript' src='http://example.com'></script>"
|
18
|
+
|
19
|
+
change_style_url:
|
20
|
+
src: |
|
21
|
+
<style>
|
22
|
+
#super { background:url('<r:image in='site' do='path' format='data'/>');}
|
23
|
+
</style>
|
24
|
+
res: |
|
25
|
+
<style>
|
26
|
+
#super { background:url('/oo/image40.jpg?1144713600');}
|
27
|
+
</style>
|
@@ -268,22 +268,6 @@ find_count:
|
|
268
268
|
src: "<r:nodes in='site' where='name like \"a%\"' find='count'/>"
|
269
269
|
res: "3"
|
270
270
|
|
271
|
-
link_page_next:
|
272
|
-
context:
|
273
|
-
pak: 2
|
274
|
-
src: "<r:nodes in='site' limit='3' order='zip' paginate='pak'><r:link page='previous'/> | <r:show var='pak'/> | <r:link page='next'/> || <r:each join=',' do='title'/></r:nodes>"
|
275
|
-
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> || tiger,lion,myLife"
|
276
|
-
|
277
|
-
link_page_next_with_block:
|
278
|
-
src: "<r:nodes in='site' limit='3' order='zip' paginate='pak'><r:link page='next' do='t'>next</r:link></r:nodes>"
|
279
|
-
res: "<a href='/oo/projects-list/Clean-Water-project/page22.html?pak=2'>next</a>"
|
280
|
-
|
281
|
-
link_page_list:
|
282
|
-
context:
|
283
|
-
pak: 2
|
284
|
-
src: "<r:nodes in='site' limit='10' order='zip' paginate='pak' do='link' page='list' join=', '/>"
|
285
|
-
tem: "/set_pak_page != set_pak.*zen_path\(@node,:pak.*elsif true.*set_pak_page/"
|
286
|
-
res: "/<a href='.*page22.html\?pak=1'>1</a>, 2, .*pak=3'>3</a>.*pak=4'>4</a>.*pak=5'>5</a>/"
|
287
271
|
|
288
272
|
# TODO:
|
289
273
|
#link_page_list_single_page:
|
@@ -9,26 +9,26 @@ calendar:
|
|
9
9
|
context:
|
10
10
|
date: "2006-03-18"
|
11
11
|
src: "<div do='calendar' attr='date' select='posts where #{cal_start} <= date and date < #{cal_end} in project'/>"
|
12
|
-
res: "/<td><p>15</p><ol><li><a href='/oo/projects-list/Clean-Water-project/post27.html'>parc openi…</a></li></ol><\/td>.*<td class='sat ref'>18</td>/"
|
12
|
+
res: "/<td class='events'><p>15</p><ol><li><a href='/oo/projects-list/Clean-Water-project/post27.html'>parc openi…</a></li></ol><\/td>.*<td class='sat ref'>18</td>/"
|
13
13
|
|
14
14
|
calendar_tz:
|
15
15
|
context:
|
16
16
|
date: "2006-03-18"
|
17
17
|
src: "<div do='calendar' attr='date' tz='America/New_York' select='posts where #{cal_start} <= date and date < #{cal_end} in project'/>"
|
18
18
|
# previous date 00:00 = uses tz in link.
|
19
|
-
res: "/date=2006-02-18\+00%3A00.*<td><p>14</p><ol><li><a href='/oo/projects-list/Clean-Water-project/post27.html'>parc openi…</a></li></ol><\/td>.*<td class='sat ref'>18</td>/"
|
19
|
+
res: "/date=2006-02-18\+00%3A00.*<td class='events'><p>14</p><ol><li><a href='/oo/projects-list/Clean-Water-project/post27.html'>parc openi…</a></li></ol><\/td>.*<td class='sat ref'>18</td>/"
|
20
20
|
|
21
21
|
calendar_with_blocks:
|
22
22
|
context:
|
23
23
|
date: "2006-03-18"
|
24
24
|
src: "<div do='calendar' attr='date' select='posts where #{cal_start} <= date and date < #{cal_end} in project'>
|
25
25
|
<h3 do='header'>
|
26
|
-
<r:link date='date.advance(:months
|
26
|
+
<r:link date='date.advance(:months => -1)' text='PREV'/>
|
27
27
|
<r:date format='%B'/>
|
28
|
-
<r:link date='date.advance(:months
|
28
|
+
<r:link date='date.advance(:months => 1)' text='NEXT'/>
|
29
29
|
</h3><r:cell><b do='date' format='%e.%m'/></r:cell></div>"
|
30
|
-
# Daylight savings change: Feb = 00:00, Apr 01:00
|
31
|
-
res: "/date=2006-02-18\+00%3A00'>PREV.*date=2006-04-18\+
|
30
|
+
# Daylight savings change: Feb = 00:00, Apr 01:00: Should still be 00:00 because we advance with the LOCAL time.
|
31
|
+
res: "/date=2006-02-18\+00%3A00'>PREV.*date=2006-04-18\+00%3A00'>NEXT.*<b>15.03</b>/"
|
32
32
|
|
33
33
|
calendar_node_attr:
|
34
34
|
context:
|
@@ -6,9 +6,31 @@ it_should_compile_custom_select:
|
|
6
6
|
site: complex
|
7
7
|
ref_date: 2004-09-01
|
8
8
|
src: "<r:emp_form_dates do='each' join=', '><r:show attr='title'/>(<r:priority/>)[<r:last_date format='%Y-%m'/>]</r:emp_form_dates>"
|
9
|
-
tem: '/var2.attributes\["priority"\].*\[<%= format_date\(var2.
|
9
|
+
tem: '/var2.attributes\["priority"\].*\[<%= format_date\(var2.rcast\("last_date", :time\), :format => "%Y-%m"\) %>\]/'
|
10
10
|
res: 'how to use the winch(10)[], secure a site(10)[], dangerous transportations(10)[2004-03], engine maintenance(5)[], information transmission(5)[2002-05], fiber junction(5)[2003-03], problem formulation(5)[2006-03], how to use the radio(1)[]'
|
11
11
|
|
12
|
+
type_cast_to_time_using_existing_field:
|
13
|
+
context:
|
14
|
+
node_name: '@node'
|
15
|
+
node: roger
|
16
|
+
visitor: complex_admin
|
17
|
+
site: complex
|
18
|
+
ref_date: 2004-09-01
|
19
|
+
src: "<r:emp_form_dates where='idx_datetime1 is not null' do='each' join=', ' do='idx_datetime1' format='%d.%m.%Y %H:%M'/>"
|
20
|
+
tem: '/format_date\(var2.idx_datetime1/'
|
21
|
+
res: '15.03.2006 01:00, 05.05.2003 02:00, 03.03.2005 01:00'
|
22
|
+
|
23
|
+
type_cast_to_time_custom_field:
|
24
|
+
context:
|
25
|
+
node_name: '@node'
|
26
|
+
node: roger
|
27
|
+
visitor: complex_admin
|
28
|
+
site: complex
|
29
|
+
ref_date: 2004-09-01
|
30
|
+
src: "<r:emp_form_dates where='next_date is not null' do='each' join=', ' do='next_date' format='%d.%m.%Y %H:%M'/>"
|
31
|
+
tem: '/format_date\(var2.rcast\("next_date", :time/'
|
32
|
+
res: '15.03.2006 01:00, 05.05.2003 02:00, 03.03.2005 01:00'
|
33
|
+
|
12
34
|
it_should_group_by_custom_select:
|
13
35
|
context:
|
14
36
|
node_name: '@node'
|
@@ -149,14 +149,14 @@ if_in_tag_else:
|
|
149
149
|
res: "not in form"
|
150
150
|
|
151
151
|
if_or:
|
152
|
-
src: "<r:if eval='can_write?
|
153
|
-
tem: "/<% if @node.can_write?
|
152
|
+
src: "<r:if eval='can_write? || origin'>hello</r:if>"
|
153
|
+
tem: "/<% if @node.can_write? \|\| !@node.version.prop[\"foo\"].blank? %>hello<% end %>|<% if !@node.version.prop[\"foo\"].blank? || @node.can_write? %>hello<% end %>/"
|
154
154
|
res: "hello"
|
155
155
|
|
156
156
|
if_or_same:
|
157
|
-
src: "<r:if test='origin
|
158
|
-
tem: "/<% if !@node.version.prop[\"foo\"].blank?
|
159
|
-
res: ""
|
157
|
+
src: "<r:if test='origin || text'>hello</r:if>"
|
158
|
+
tem: "/<% if !@node.version.prop[\"foo\"].blank? \|\| !@node.version.prop[\"text\"].blank? %>hello<% end %>|<% if !@node.version.prop[\"bar\"].blank? || !@node.version.prop[\"foo\"].blank? %>hello<% end %>/"
|
159
|
+
res: "hello"
|
160
160
|
|
161
161
|
if_now:
|
162
162
|
src: "<r:if test='log_at > now'>future<r:else>past</r:else></r:if>"
|
@@ -8,11 +8,7 @@ each_group:
|
|
8
8
|
src: "<r:nodes do='group' by='kpath'><p do='each_group'><r:kpath/>: <r:each join=', ' do='title'/></p></r:nodes>"
|
9
9
|
res: "<p>NP: crocodiles, status title</p><p>NDI: it's a lake</p><p>NRC: The lake we love</p><p>NNP: parc opening</p><p>ND: water</p>"
|
10
10
|
|
11
|
-
set_var
|
12
|
-
context:
|
13
|
-
date: '2011-05-30'
|
14
|
-
src: "<div do='set' next_date='date.advance(:years => 1)'><span do='next_date' format='%Y-%m-%d'/></div>"
|
15
|
-
res: "<div><span>2012-05-30</span></div>"
|
11
|
+
# set_var tested in eval.yml
|
16
12
|
|
17
13
|
dom_id_in_each:
|
18
14
|
src: "<r:pages in='site limit 2'><li do='each'><r:dom_id/> <p id='this#{dom_id}'/></li></r:pages>"
|
@@ -24,3 +20,8 @@ list_else:
|
|
24
20
|
node: status
|
25
21
|
src: "<ul do='posts'><li do='each' do='link'/><li do='else'>hop</li></ul>"
|
26
22
|
res: "<ul><li>hop</li></ul>"
|
23
|
+
|
24
|
+
master_template_on_static_render:
|
25
|
+
src: "<r:master_template><r:title/></r:master_template>"
|
26
|
+
tem: ''
|
27
|
+
# Master template on template rendering is tested in 'find master template', rendering_test.rb
|
@@ -149,9 +149,15 @@ input_date:
|
|
149
149
|
context:
|
150
150
|
node: opening
|
151
151
|
src: "<r:Post?><r:input type='date' name='date'/></r:Post?>"
|
152
|
-
tem: '/date_box\(@node, "date", :value => @node.prop\[.date.\], :size => 15\)/'
|
152
|
+
tem: '/date_box\(@node, "node\[date\]", :value => @node.prop\[.date.\], :size => 15\)/'
|
153
153
|
res: "/value='2006-03-15 01:00'/"
|
154
154
|
|
155
|
+
input_date_value_now:
|
156
|
+
context:
|
157
|
+
node: opening
|
158
|
+
src: "<r:Post?><r:input type='date' name='date' value='now'/></r:Post?>"
|
159
|
+
tem: '/date_box\(@node, "node\[date\]", :value => Time.now, :size => 15\)/'
|
160
|
+
|
155
161
|
input_date_no_time:
|
156
162
|
context:
|
157
163
|
node: opening
|
@@ -160,6 +166,14 @@ input_date_no_time:
|
|
160
166
|
res: "/value='2006-03-15'/"
|
161
167
|
js: "/showsTime *: *false/"
|
162
168
|
|
169
|
+
label_on_hash:
|
170
|
+
src: "<r:input name='settings[foo]' label='t'/>"
|
171
|
+
res: "<label>settings_foo</label> <span><input type='text' name='node[settings][foo]' value=''/></span>"
|
172
|
+
|
173
|
+
date_on_hash:
|
174
|
+
src: "<r:input name='settings[foo]' type='date'/>"
|
175
|
+
res: "/<input id='.*' name='node\[settings\]\[foo\]' type='text' size='15' value='' class=''/>/"
|
176
|
+
|
163
177
|
test_date:
|
164
178
|
# test with 'date' tests contextual date (main_date).
|
165
179
|
src: "<r:Post?><r:if test='this.date'></r:if></r:Post?>"
|
@@ -184,4 +198,11 @@ time_year:
|
|
184
198
|
node: opening
|
185
199
|
tz: 'US/Pacific'
|
186
200
|
src: "<r:Post?><b do='this.date.year'/> <b do='this.date.year(\"UTC\")'/></r:Post?>"
|
187
|
-
res: "<b>2011</b> <b>2012</b>"
|
201
|
+
res: "<b>2011</b> <b>2012</b>"
|
202
|
+
|
203
|
+
time_wday:
|
204
|
+
context:
|
205
|
+
node: opening
|
206
|
+
tz: 'US/Pacific'
|
207
|
+
src: "<r:Post?><b do='this.date.wday'/> <b do='this.date.wday(\"UTC\")'/></r:Post?>"
|
208
|
+
res: "<b>2</b> <b>3</b>"
|
@@ -7,6 +7,50 @@ default:
|
|
7
7
|
tem: "simple text"
|
8
8
|
res: "simple text"
|
9
9
|
|
10
|
+
space_in_tag:
|
11
|
+
src: <meta http-equiv='Content-type' content='text/html; charset=utf-8' /><r:title/>
|
12
|
+
tem: '!/r:title/'
|
13
|
+
|
14
|
+
multiline_tag:
|
15
|
+
src: |
|
16
|
+
<meta
|
17
|
+
http-equiv='Content-type'
|
18
|
+
content='text/html; charset=utf-8' /><r:title/>
|
19
|
+
tem: '!/r:title/'
|
20
|
+
|
21
|
+
multiline_rtag:
|
22
|
+
src: |
|
23
|
+
<r:void
|
24
|
+
http-equiv='Content-type'
|
25
|
+
content='text/html; charset=utf-8' /><r:title/>
|
26
|
+
tem: '!/r:title/'
|
27
|
+
|
28
|
+
cdata:
|
29
|
+
src: |
|
30
|
+
<script type='text/javascript'>
|
31
|
+
<![CDATA[
|
32
|
+
var urls = [<r:images in='site limit 2' do='each' join=', '>'<r:url mode='med' format='data'/>'</r:images>];
|
33
|
+
//]]>
|
34
|
+
</script>
|
35
|
+
res: |
|
36
|
+
<script type='text/javascript'>
|
37
|
+
<![CDATA[
|
38
|
+
var urls = ['http://test.host/oo/image40_med.jpg?390663777446', 'http://test.host/en/image30_med.jpg?390663777446'];
|
39
|
+
//]]>
|
40
|
+
</script>
|
41
|
+
|
42
|
+
multiline_tag:
|
43
|
+
src: |
|
44
|
+
<div id='extract'>
|
45
|
+
<r:section do='zazen' attr='infos' edit='true' publish='true' />
|
46
|
+
|
47
|
+
<div id='cert' do='pages' in='site'>
|
48
|
+
<div class='cert' do='each' do='link' do='img' src='find("image")' mode='cert' />
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
tem: "!/do='pages'/"
|
52
|
+
|
53
|
+
|
10
54
|
show_title:
|
11
55
|
old_src: "<r:show attr='title'/>"
|
12
56
|
old_tem: "<%= @node.title %>"
|
@@ -340,9 +384,9 @@ each_whitespace:
|
|
340
384
|
res: "53\n37\n12\n.\n"
|
341
385
|
|
342
386
|
set_class_before_query:
|
343
|
-
#
|
387
|
+
# Uses list context
|
344
388
|
src: "<div class='foo_#{title}' do='images in site'></div>"
|
345
|
-
res: "<div class='
|
389
|
+
res: "<div class='foo_Autumn Tree'></div>"
|
346
390
|
|
347
391
|
flash_messages:
|
348
392
|
src: "<r:flash_messages/>"
|
@@ -81,8 +81,8 @@ toggle_bad_finder_class:
|
|
81
81
|
map_join:
|
82
82
|
context:
|
83
83
|
node: 'cleanWater'
|
84
|
-
src: "<r:children do='map(
|
85
|
-
tem: "/unknown method
|
84
|
+
src: "<r:children do='map(\"flobo\").join(\",\")'/>"
|
85
|
+
tem: "/unknown method <span class='type'>flobo\(\)</span>/"
|
86
86
|
|
87
87
|
datebox_on_vclass:
|
88
88
|
src: "<r:Contact><r:input type='date' name='log_at'/></r:Contact>"
|
@@ -8,14 +8,42 @@ show_var_overwrites_attribute:
|
|
8
8
|
src: "<r:set title='12345'><b do='title'/></r:set>"
|
9
9
|
res: "<b>12345</b>"
|
10
10
|
|
11
|
-
|
11
|
+
set_in_scope:
|
12
12
|
src: "<r:set hours='3'><r:if test='hours > 0'>you have: <r:show eval='hours' format='%.2f'/></r:if></r:set>"
|
13
13
|
res: "you have: 3.00"
|
14
14
|
|
15
|
-
|
16
|
-
src: "<r:set hours='
|
17
|
-
res: "
|
15
|
+
set_bad_code:
|
16
|
+
src: "<r:set hours='foobar'><r:if test='hours > 0'>you have: <r:show eval='hours' format='%.2f'/></r:if></r:set>"
|
17
|
+
res: "/unknown method 'foobar\(\)'/"
|
18
|
+
|
19
|
+
set_var:
|
20
|
+
context:
|
21
|
+
date: '2011-05-30'
|
22
|
+
src: "<div do='set' next_date='date.advance(:years => 1)'><span do='next_date' format='%Y-%m-%d'/></div>"
|
23
|
+
res: "<div><span>2012-05-30</span></div>"
|
24
|
+
|
25
|
+
set_var_propagates:
|
26
|
+
src: "<div do='set' a='%q{hello}'><r:void do='set' a='%q{goodbye}'/><r:a/></div>"
|
27
|
+
tem: '<div><% _za = "hello" %><% _za = "goodbye" %><%= _za %></div>'
|
28
|
+
res: "<div>goodbye</div>"
|
18
29
|
|
19
|
-
|
20
|
-
src: "<
|
21
|
-
|
30
|
+
set_var_can_be_nil:
|
31
|
+
src: "<div do='set' a='%q{hello}'><r:void do='set' a='origin'/><r:a/></div>"
|
32
|
+
tem: "<div><% _za = \"hello\" %><% _za = @node.prop['origin'] || _za %><%= _za %></div>"
|
33
|
+
res: "<div>hello</div>"
|
34
|
+
|
35
|
+
set_var_different_type:
|
36
|
+
src: "<div do='set' a='%q{hello}'><r:void do='set' a='15'/><r:a/></div>"
|
37
|
+
tem: "/Type mismatch for var a=15: Number != String/"
|
38
|
+
|
39
|
+
node_eval:
|
40
|
+
src: "<r:void do='@node.eval(\"title\")'/>"
|
41
|
+
tem: "<%= @node.zafu_eval(\"title\") %>"
|
42
|
+
res: "status title"
|
43
|
+
|
44
|
+
node_eval_array:
|
45
|
+
context:
|
46
|
+
node: opening
|
47
|
+
src: "<r:void do='@node.eval(\"set_tag_ids\")'/>"
|
48
|
+
tem: "<%= @node.zafu_eval(\"set_tag_ids\") %>"
|
49
|
+
res: "33,34"
|
@@ -36,7 +36,7 @@ new:
|
|
36
36
|
# Should accept allowed params (from class and roles) and transform ids to zip (back and forth)
|
37
37
|
src: "<r:new klass='Letter' title='%q{Joe}' parent_id='project.id' paper='%q{white}' origin='%q{Mars}' bad='%q{value}'><r:form><r:input name='title'/> <r:input name='parent_id'/></r:form></r:new>"
|
38
38
|
tem: "/:title => \"Joe\", :parent_id => .*@node.project.zip.*, :paper => \"white\", :origin => \"Mars\"/"
|
39
|
-
res: "/<input type='text' name='node\[title\]' value='Joe'/> <input type='text' name='node\[parent_id\]' value='21'
|
39
|
+
res: "/<input type='text' name='node\[title\]' value='Joe' id='list1_title'/> <input type='text' name='node\[parent_id\]' value='21'[^>]+/><div class='hidden'><input type='hidden' name='node\[klass\]' value='Letter'/><input type='submit'/><input type='hidden' name='node\[paper\]' value='white'/><input type='hidden' name='node\[origin\]' value='Mars'/></div>/"
|
40
40
|
|
41
41
|
translate_id_to_zip:
|
42
42
|
src: "<b do='hot_id'/><i do='parent_id'/>"
|
@@ -46,23 +46,32 @@ select_class_existing_node:
|
|
46
46
|
context:
|
47
47
|
node: 'letter'
|
48
48
|
src: "<r:form><r:select name='klass' root_class='Note' selected='Post'/></r:form>"
|
49
|
-
res: "/<select name=.node\[klass\].><option value=\"Note\">
|
49
|
+
res: "/<select name=.node\[klass\]. id=.list1_klass.><option value=\"Note\">klass_Note<\/option>\n<option value=\"Letter\" selected=\"selected\"> klass_Letter<\/option>\n<option value=\"Post\"> klass_Post<\/option><\/select>/"
|
50
50
|
|
51
51
|
select_class_new_node:
|
52
52
|
src: "<r:pages><r:each/><r:add/><r:form><r:select name='klass' root_class='Note' selected='Post'/></r:form>"
|
53
|
-
res: "/<select.*name=.node\[klass\].*
|
53
|
+
res: "/<select.*name=.node\[klass\].*klass_Note.*klass_Letter.*Post. selected=.selected./"
|
54
54
|
|
55
55
|
select_class_kpath:
|
56
56
|
src: "<r:select param='k' root_class='Note' attr='kpath'/>"
|
57
|
-
res: "/<select.*name=.k.*NN.*
|
57
|
+
res: "/<select.*name=.k.*NN.*k_Note.*NNL.*k_Letter.*NNP.*k_Post/"
|
58
|
+
|
59
|
+
select_class_tprefix:
|
60
|
+
src: "<r:select tprefix='foo' param='k' root_class='Note'/>"
|
61
|
+
tem: '/\["foo_Note", "Note"\]/'
|
62
|
+
res: "/foo_Note.*foo_Letter/"
|
63
|
+
|
64
|
+
select_data:
|
65
|
+
src: "<r:select data-d='foo' param='k' root_class='Note' attr='kpath'/>"
|
66
|
+
res: "/<select name=.k. data-d='foo'.*NN.*k_Note.*NNL.*k_Letter.*NNP.*k_Post/"
|
58
67
|
|
59
68
|
select_nodes:
|
60
69
|
src: "<r:form><r:select nodes='images in site' name='foo'></select></r:form>"
|
61
|
-
res: "/name='node\[foo\]'
|
70
|
+
res: "/name='node\[foo\]'[^>]+><option value=\"\" selected=\"selected\"></option>\n<option value=\"40\">Autumn Tree</option>\n<option value=\"30\">bird</option>/"
|
62
71
|
|
63
72
|
select_nodes_show_rubyless:
|
64
73
|
src: "<r:form><r:select nodes='images in site' name='foo' show='title.limit(3)'></select></r:form>"
|
65
|
-
res: "/name='node\[foo\]'
|
74
|
+
res: "/name='node\[foo\]'[^>]+><option value=\"\" selected=\"selected\"></option>\n<option value=\"40\">Aut…</option>\n<option value=\"30\">bir…</option>/"
|
66
75
|
|
67
76
|
do_not_set_parent_id_if_form_contains_parent_id:
|
68
77
|
src: "<r:children><r:each do='title'/><r:add/><r:form><r:select name='parent_id' nodes='projects in site'/><input name='title'/></r:form></r:children>"
|
@@ -74,11 +83,11 @@ select_nodes_selected:
|
|
74
83
|
|
75
84
|
select_nodes_in_ajax:
|
76
85
|
src: "<r:pages><r:each do='title'/><r:add/><r:form><r:select nodes='images in site' name='d_ref'/></r:form></r:pages>"
|
77
|
-
res: "/name=.node\[d_ref\]
|
86
|
+
res: "/name=.node\[d_ref\].[^>]+><option value=\"\" selected=\"selected\"></option>\n<option value=\"40\">Autumn Tree</option>\n<option value=\"30\">bird</option>/"
|
78
87
|
|
79
88
|
select_nodes_show_attr:
|
80
89
|
src: "<r:form><r:select name='title' nodes='images in site' attr='ext' show='title'/></r:form>"
|
81
|
-
res: "/name=.node\[title\]
|
90
|
+
res: "/name=.node\[title\].[^>]+>.*<option value=\"jpg\">flower</option>\n<option value=\"jpg\">it's a lake</option>/"
|
82
91
|
|
83
92
|
select_time_zone:
|
84
93
|
src: "<r:form><r:select type='time_zone' name='d_tz'/></r:form>"
|
@@ -138,6 +147,13 @@ checkbox_checked_value:
|
|
138
147
|
tem: "/@node.tagged\[\"sky\"\].blank\?/"
|
139
148
|
res: "<input type='hidden' name='node[tagged][sky]' value=''/><input type='checkbox' name='node[tagged][sky]' value='sky' checked='checked'/>"
|
140
149
|
|
150
|
+
checkbox_checked_hash_value:
|
151
|
+
context:
|
152
|
+
node: test
|
153
|
+
src: "<r:input type='checkbox' name='settings[one]' value='un'/> <r:input type='checkbox' name='settings[one]' value='deux'/>"
|
154
|
+
tem: "/@node.prop\[.settings.\]\[.one.\] : nil\) == .un. \? . checked='checked'/"
|
155
|
+
res: "<input type='hidden' name='node[settings][one]' value=''/><input type='checkbox' name='node[settings][one]' value='un' checked='checked'/><input type='hidden' name='node[settings][one]' value=''/> <input type='checkbox' name='node[settings][one]' value='deux'/>"
|
156
|
+
|
141
157
|
checkbox_unchecked_value:
|
142
158
|
src: "<r:input type='checkbox' name='tagged[foo]'/>"
|
143
159
|
tem: "/@node.tagged\[\"foo\"\].blank\?/"
|
@@ -160,19 +176,19 @@ input:
|
|
160
176
|
context:
|
161
177
|
node: 'ant'
|
162
178
|
src: "<r:Contact?><r:input name='first_name'/></r:Contact?>"
|
163
|
-
tem: "<% if @node.kpath_match?('NRC') %><input type='text' name='node[first_name]' value='<%= fquote
|
179
|
+
tem: "<% if @node.kpath_match?('NRC') %><input type='text' name='node[first_name]' value='<%= fquote(@node.prop['first_name']) %>'/><% end %>"
|
164
180
|
res: "<input type='text' name='node[first_name]' value='Solenopsis'/>"
|
165
181
|
|
166
182
|
input_raw_name:
|
167
183
|
src: "<r:input param='first_name'/>"
|
168
|
-
tem: "<input type='text' name='first_name' value='<%= fquote
|
184
|
+
tem: "<input type='text' name='first_name' value='<%= fquote(params[:first_name]) %>'/>"
|
169
185
|
|
170
186
|
input_param_value:
|
171
187
|
context:
|
172
188
|
foo:
|
173
189
|
"bar.baz": 'xyz'
|
174
190
|
src: "<r:input param='foo[bar.baz]'/>"
|
175
|
-
tem: "<input type='text' name='foo[bar.baz]' value='<%= fquote
|
191
|
+
tem: "<input type='text' name='foo[bar.baz]' value='<%= fquote(param_value(\"foo[bar.baz]\")) %>'/>"
|
176
192
|
res: "<input type='text' name='foo[bar.baz]' value='xyz'/>"
|
177
193
|
|
178
194
|
input_checkbox_param_value:
|
@@ -212,7 +228,7 @@ input_new:
|
|
212
228
|
context:
|
213
229
|
node: 'ant'
|
214
230
|
src: "<r:contacts><r:each/><r:form><r:input name='first_name'/></r:form><r:add/></r:contacts>"
|
215
|
-
res: "/name='node\[first_name\]' [^>]*id='
|
231
|
+
res: "/name='node\[first_name\]' [^>]*id='list1_first_name'/"
|
216
232
|
|
217
233
|
show_in_form:
|
218
234
|
src: "<r:form><b do='title'/></r:form>"
|
@@ -228,13 +244,23 @@ set_parent_id_in_new:
|
|
228
244
|
tem: "/node\[parent_id\].*@node.zip/"
|
229
245
|
res: "/<input type='hidden' name='node\[parent_id\]' value='22'/>/"
|
230
246
|
|
231
|
-
|
232
247
|
label_on_input:
|
233
248
|
context:
|
234
249
|
lang: fr
|
235
250
|
src: "<r:input label='t' name='title'/>"
|
236
251
|
res: "<label>titre</label> <span><input type='text' name='node[title]' value='Etat des travaux'/></span>"
|
237
252
|
|
253
|
+
label_on_input_param:
|
254
|
+
context:
|
255
|
+
lang: fr
|
256
|
+
src: "<r:input label='t' param='title'/>"
|
257
|
+
res: "<label>titre</label> <span><input type='text' name='title' value=''/></span>"
|
258
|
+
|
259
|
+
label_on_hash:
|
260
|
+
src: "<r:input name='settings[foo]' label='t'/>"
|
261
|
+
tem: "/@node.prop\[.settings.\]\[.foo.\]/"
|
262
|
+
res: "<label>settings_foo</label> <span><input type='text' name='node[settings][foo]' value=''/></span>"
|
263
|
+
|
238
264
|
label_on_textarea:
|
239
265
|
context:
|
240
266
|
lang: fr
|
@@ -267,6 +293,14 @@ param_on_select:
|
|
267
293
|
src: "<r:select param='q[contact.status]' values='0,-5,-10' tshow='active, being registered, inactive'/>"
|
268
294
|
res: "<select name='q[contact.status]'><option value=\"0\">active</option>\n<option value=\"-5\">being registered</option>\n<option value=\"-10\">inactive</option></select>"
|
269
295
|
|
296
|
+
select_eval_value:
|
297
|
+
context:
|
298
|
+
f: "a,b,c,en"
|
299
|
+
q: 'en'
|
300
|
+
src: "<r:select param='q' eval='params[:f]'/>"
|
301
|
+
tem: "<select name='q'><%= options_for_select((params[:f] || '').split(',').map(&:strip).map {|e| [trans(e), e]}, param_value(\"q\").to_s) %></select>"
|
302
|
+
res: "<select name='q'><option value=\"a\">a</option>\n<option value=\"b\">b</option>\n<option value=\"c\">c</option>\n<option value=\"en\" selected=\"selected\">english</option></select>"
|
303
|
+
|
270
304
|
crop:
|
271
305
|
context:
|
272
306
|
node: 'bird_jpg'
|