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
|
@@ -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'
|