zena 1.2.2 → 1.2.3
Sign up to get free protection for your applications and to get access to all the features.
- data/History.txt +25 -0
- data/app/controllers/documents_controller.rb +3 -25
- data/app/controllers/nodes_controller.rb +34 -24
- data/app/controllers/user_sessions_controller.rb +5 -4
- data/app/controllers/versions_controller.rb +44 -17
- data/app/models/acl.rb +2 -7
- data/app/models/group.rb +6 -2
- data/app/models/link.rb +14 -0
- data/app/models/node.rb +2 -2
- data/app/models/site.rb +13 -4
- data/app/models/text_document.rb +1 -1
- data/app/models/user.rb +11 -2
- data/app/models/virtual_class.rb +1 -1
- data/app/views/groups/_form.rhtml +6 -6
- data/app/views/nodes/render_error.rhtml +15 -0
- data/app/views/templates/document_create_tabs/_file.rhtml +1 -1
- data/app/views/templates/document_create_tabs/_import.rhtml +1 -1
- data/app/views/templates/document_create_tabs/_template.rhtml +1 -1
- data/app/views/templates/document_create_tabs/_text_document.rhtml +1 -1
- data/app/views/templates/edit_tabs/_title.rhtml +1 -1
- data/app/views/zafu/default/Node-admin.zafu +1 -1
- data/bricks/acls/zena/test/integration/acl_integration_test.rb +2 -2
- data/bricks/acls/zena/test/unit/acl_test.rb +2 -1
- data/bricks/fs_skin/zena/migrate/20110702010330_add_fs_skin_to_idx_templates.rb +1 -0
- data/bricks/fs_skin/zena/skins/blog/img/style.css +4 -4
- data/bricks/grid/lib/bricks/grid.rb +9 -3
- data/bricks/passenger/zena/deploy.rb +2 -1
- data/bricks/pdf/lib/bricks/pdf.rb +1 -1
- data/bricks/tags/zena/test/zafu/tags.yml +5 -1
- data/bricks/zena/zena/migrate/20120904071601_change_link_status_to_float.rb +13 -0
- data/config/bricks.yml +10 -10
- data/config/deploy.rb +1 -5
- data/config/gems.yml +2 -2
- data/db/init/base/skins/default/Node.zafu +7 -3
- data/db/init/base/skins/default/notes.zafu +3 -1
- data/lib/zafu/all.rb +0 -9
- data/lib/zafu/compiler.rb +0 -4
- data/lib/zafu/controller_methods.rb +0 -2
- data/lib/zafu/handler.rb +0 -5
- data/lib/zafu/markup.rb +4 -6
- data/lib/zafu/ordered_hash.rb +3 -2
- data/lib/zafu/parsing_rules.rb +1 -3
- data/lib/zafu/process/ajax.rb +4 -2
- data/lib/zafu/process/context.rb +34 -4
- data/lib/zafu/process/forms.rb +2 -2
- data/lib/zafu/process/ruby_less_processing.rb +5 -10
- data/lib/zafu/template.rb +0 -2
- data/lib/zafu/test_helper.rb +0 -2
- data/lib/zafu/view_methods.rb +0 -1
- data/lib/zafu.rb +1 -1
- data/lib/zena/acts/secure_node.rb +5 -4
- data/lib/zena/console.rb +19 -17
- data/lib/zena/core_ext/string.rb +3 -2
- data/lib/zena/deploy/app_init.rhtml +6 -1
- data/lib/zena/deploy/httpd.rhtml +16 -13
- data/lib/zena/deploy/stats.vhost.rhtml +1 -1
- data/lib/zena/deploy/vhost.rhtml +31 -11
- data/lib/zena/deploy/vhost_ssl_redir.rhtml +12 -0
- data/lib/zena/deploy/vhost_www.rhtml +1 -1
- data/lib/zena/deploy.rb +55 -11
- data/lib/zena/info.rb +1 -1
- data/lib/zena/parser/zazen_rules.rb +18 -9
- data/lib/zena/routes.rb +1 -3
- data/lib/zena/site_worker.rb +8 -1
- data/lib/zena/use/ajax.rb +29 -3
- data/lib/zena/use/ancestry.rb +2 -1
- data/lib/zena/use/authlogic.rb +12 -18
- data/lib/zena/use/context.rb +1 -1
- data/lib/zena/use/dates.rb +28 -18
- data/lib/zena/use/display.rb +49 -7
- data/lib/zena/use/forms.rb +51 -18
- data/lib/zena/use/html_tags.rb +6 -6
- data/lib/zena/use/i18n.rb +13 -4
- data/lib/zena/use/image_builder.rb +2 -0
- data/lib/zena/use/query_builder.rb +39 -14
- data/lib/zena/use/query_link.rb +57 -0
- data/lib/zena/use/query_node.rb +68 -32
- data/lib/zena/use/relations.rb +25 -15
- data/lib/zena/use/rendering.rb +66 -15
- data/lib/zena/use/upload.rb +34 -5
- data/lib/zena/use/urls.rb +28 -25
- data/lib/zena/use/version_hash.rb +14 -2
- data/lib/zena/use/zafu_safe_definitions.rb +72 -3
- data/lib/zena/use/zazen.rb +16 -4
- data/lib/zena.rb +1 -0
- data/public/javascripts/grid.js +213 -64
- data/public/javascripts/raphael.js +10 -0
- data/public/javascripts/zena.js +146 -22
- data/public/stylesheets/reset.css +12 -12
- data/public/stylesheets/zena.css +1 -1
- data/test/custom_queries/complex.host.yml +19 -0
- data/test/fixtures/files/TestNode.zafu +40 -4
- data/test/functional/nodes_controller_test.rb +84 -39
- data/test/functional/versions_controller_test.rb +2 -2
- data/test/integration/navigation_test.rb +61 -35
- data/test/integration/query_node/basic.yml +7 -7
- data/test/integration/query_node/comments.yml +1 -1
- data/test/integration/query_node/complex.yml +3 -3
- data/test/integration/query_node/filters.yml +32 -8
- data/test/integration/query_node/idx_key_value.yml +10 -10
- data/test/integration/query_node/idx_scope.yml +7 -7
- data/test/integration/query_node/relations.yml +4 -4
- data/test/integration/zafu_compiler/ajax.yml +19 -11
- data/test/integration/zafu_compiler/apphelper.yml +1 -1
- data/test/integration/zafu_compiler/asset.yml +2 -2
- data/test/integration/zafu_compiler/comments.yml +1 -1
- data/test/integration/zafu_compiler/dates.yml +1 -1
- data/test/integration/zafu_compiler/display.yml +49 -21
- data/test/integration/zafu_compiler/eval.yml +4 -4
- data/test/integration/zafu_compiler/forms.yml +25 -11
- data/test/integration/zafu_compiler/i18n.yml +5 -0
- data/test/integration/zafu_compiler/meta.yml +3 -3
- data/test/integration/zafu_compiler/query.yml +27 -9
- data/test/integration/zafu_compiler/relations.yml +9 -9
- data/test/integration/zafu_compiler/roles.yml +6 -6
- data/test/integration/zafu_compiler/rubyless.yml +7 -2
- data/test/integration/zafu_compiler/safe_definitions.yml +33 -4
- data/test/integration/zafu_compiler/security.yml +46 -1
- data/test/integration/zafu_compiler/urls.yml +28 -13
- data/test/integration/zafu_compiler/user.yml +12 -7
- data/test/integration/zafu_compiler/zafu_attributes.yml +1 -1
- data/test/integration/zafu_compiler/zazen.yml +5 -5
- data/test/integration/zafu_compiler_test.rb +18 -0
- data/test/selenium/Filter/filter3.rsel +20 -0
- data/test/selenium/Filter/filter4.rsel +20 -0
- data/test/sites/zena/versions.yml +2 -0
- data/test/unit/exif_data_test.rb +6 -1
- data/test/unit/group_test.rb +18 -3
- data/test/unit/node_test.rb +0 -7
- data/test/unit/project_test.rb +4 -0
- data/test/unit/relation_proxy_test.rb +2 -2
- data/test/unit/remote_test.rb +0 -9
- data/test/unit/role_test.rb +1 -1
- data/test/unit/string_hash_test.rb +1 -1
- data/test/unit/text_document_test.rb +13 -13
- data/test/unit/zena/use/html_tags_test.rb +6 -6
- data/test/unit/zena/use/rendering_test.rb +20 -10
- data/test/unit/zena/use/urls_test.rb +21 -18
- data/test/unit/zena/use/zafu_template_test.rb +0 -5
- data/test/unit/zena/use/zazen_test.rb +25 -25
- data/zena.gemspec +63 -57
- metadata +136 -130
- data/test/functional/nodes_controller_commit_test.rb +0 -67
@@ -4,27 +4,27 @@ default:
|
|
4
4
|
node: 'cleanWater'
|
5
5
|
visitor: 'ant'
|
6
6
|
src: "blogs where blog.title = 'a wiki with Zena' in site"
|
7
|
-
sql: "%Q{SELECT nodes.* FROM idx_projects AS sc1
|
7
|
+
sql: "%Q{SELECT nodes.* FROM nodes LEFT JOIN idx_projects AS sc1 ON nodes.id = sc1.node_id WHERE #{secure_scope('nodes')} AND sc1.blog_title = 'a wiki with Zena' AND nodes.kpath LIKE 'NPPB%' ORDER BY nodes.zip ASC}"
|
8
8
|
res: 'a wiki with Zena'
|
9
9
|
|
10
10
|
# CUSTOM TABLE BASED INDEX
|
11
11
|
|
12
12
|
get_kpath_from_class:
|
13
13
|
src: "blogs where contact.name = 'xx' in site"
|
14
|
-
sql: "%Q{SELECT nodes.* FROM idx_projects AS sc1
|
14
|
+
sql: "%Q{SELECT nodes.* FROM nodes LEFT JOIN idx_projects AS sc1 ON nodes.id = sc1.node_id WHERE #{secure_scope('nodes')} AND sc1.contact_name = 'xx' AND nodes.kpath LIKE 'NPPB%' ORDER BY nodes.zip ASC}"
|
15
15
|
|
16
16
|
get_kpath_from_class_with_function:
|
17
17
|
src: "blogs where tag.created_at.year = 'xx' in site"
|
18
|
-
sql: "%Q{SELECT nodes.* FROM idx_projects AS sc1
|
18
|
+
sql: "%Q{SELECT nodes.* FROM nodes LEFT JOIN idx_projects AS sc1 ON nodes.id = sc1.node_id WHERE #{secure_scope('nodes')} AND year(sc1.tag_created_at) = 'xx' AND nodes.kpath LIKE 'NPPB%' ORDER BY nodes.zip ASC}"
|
19
19
|
|
20
20
|
many_keys:
|
21
21
|
src: "blogs where blog.title = 'a wiki with Zena' and contact.name = 'cont' in site"
|
22
|
-
sql: "%Q{SELECT nodes.* FROM idx_projects AS sc1
|
22
|
+
sql: "%Q{SELECT nodes.* FROM nodes LEFT JOIN idx_projects AS sc1 ON nodes.id = sc1.node_id WHERE #{secure_scope('nodes')} AND sc1.blog_title = 'a wiki with Zena' AND sc1.contact_name = 'cont' AND nodes.kpath LIKE 'NPPB%' ORDER BY nodes.zip ASC}"
|
23
23
|
res: 'a wiki with Zena'
|
24
24
|
|
25
25
|
or_keys:
|
26
26
|
src: "blogs where blog.title = 'bad' or contact.name = 'cont' in site"
|
27
|
-
sql: "%Q{SELECT nodes.* FROM idx_projects AS sc1
|
27
|
+
sql: "%Q{SELECT nodes.* FROM nodes LEFT JOIN idx_projects AS sc1 ON nodes.id = sc1.node_id WHERE #{secure_scope('nodes')} AND (sc1.blog_title = 'bad' OR sc1.contact_name = 'cont') AND nodes.kpath LIKE 'NPPB%' GROUP BY nodes.id ORDER BY nodes.zip ASC}"
|
28
28
|
res: 'a wiki with Zena'
|
29
29
|
|
30
30
|
id_key:
|
@@ -34,10 +34,10 @@ id_key:
|
|
34
34
|
|
35
35
|
sort_by_scoped_value:
|
36
36
|
src: "blogs in site order by contact.name asc"
|
37
|
-
sql: "%Q{SELECT nodes.* FROM idx_projects AS sc1
|
37
|
+
sql: "%Q{SELECT nodes.* FROM nodes LEFT JOIN idx_projects AS sc1 ON nodes.id = sc1.node_id WHERE #{secure_scope('nodes')} AND nodes.kpath LIKE 'NPPB%' ORDER BY sc1.contact_name ASC}"
|
38
38
|
res: 'a wiki with Zena'
|
39
39
|
|
40
40
|
should_not_mess_with_select:
|
41
41
|
src: "blogs select title as blog_title in site order by contact.name asc"
|
42
|
-
sql: "%Q{SELECT nodes.*,ml1.value AS `blog_title` FROM idx_nodes_ml_strings AS ml1
|
42
|
+
sql: "%Q{SELECT nodes.*,ml1.value AS `blog_title` FROM nodes LEFT JOIN idx_nodes_ml_strings AS ml1 ON ml1.node_id = nodes.id AND ml1.key = 'title' AND ml1.lang = 'fr' LEFT JOIN idx_projects AS sc1 ON nodes.id = sc1.node_id WHERE #{secure_scope('nodes')} AND nodes.kpath LIKE 'NPPB%' ORDER BY sc1.contact_name ASC}"
|
43
43
|
res: 'a wiki with Zena'
|
@@ -7,7 +7,7 @@ default:
|
|
7
7
|
sql: "[%Q{SELECT nodes.* FROM nodes WHERE #{secure_scope('nodes')} AND nodes.parent_id = ? ORDER BY nodes.zip ASC}, @node.id]"
|
8
8
|
|
9
9
|
nodes_from_nodes_in_section:
|
10
|
-
sql: "[%Q{SELECT nodes.* FROM nodes
|
10
|
+
sql: "[%Q{SELECT nodes.* FROM nodes JOIN nodes AS no1 WHERE #{secure_scope('nodes')} AND nodes.parent_id = no1.id AND no1.section_id = ? GROUP BY nodes.id ORDER BY nodes.zip ASC}, @node.get_section_id]"
|
11
11
|
|
12
12
|
bad_relation:
|
13
13
|
src: "categories in site"
|
@@ -15,11 +15,11 @@ bad_relation:
|
|
15
15
|
|
16
16
|
overriden_relation:
|
17
17
|
src: 'references'
|
18
|
-
sql: "[%Q{SELECT nodes.*,links.id AS `link_id`,links.status AS `l_status`,links.comment AS `l_comment`,links.date AS `l_date` FROM links
|
18
|
+
sql: "[%Q{SELECT nodes.*,links.id AS `link_id`,links.status AS `l_status`,links.comment AS `l_comment`,links.date AS `l_date` FROM links JOIN nodes WHERE #{secure_scope('nodes')} AND nodes.id = links.target_id AND links.relation_id = _ID(node_has_references) AND links.source_id = ? ORDER BY nodes.zip ASC}, @node.id]"
|
19
19
|
|
20
20
|
link_selects_in_sub_query:
|
21
21
|
src: "icons or images"
|
22
|
-
sql: "[%Q{SELECT nodes.*,links.id AS `link_id`,links.status AS `l_status`,links.comment AS `l_comment`,links.date AS `l_date` FROM links
|
22
|
+
sql: "[%Q{SELECT nodes.*,links.id AS `link_id`,links.status AS `l_status`,links.comment AS `l_comment`,links.date AS `l_date` FROM links JOIN nodes WHERE #{secure_scope('nodes')} AND ((nodes.id = links.target_id AND links.relation_id = _ID(node_has_an_icon) AND links.source_id = ?) OR (nodes.kpath LIKE 'NDI%' AND nodes.parent_id = ? AND links.id = 0)) GROUP BY nodes.id ORDER BY nodes.zip ASC}, @node.id, @node.id]"
|
23
23
|
|
24
24
|
project:
|
25
25
|
sql: "[%Q{SELECT nodes.* FROM nodes WHERE #{secure_scope('nodes')} AND nodes.id = ? ORDER BY nodes.zip ASC}, @node.get_project_id]"
|
@@ -60,7 +60,7 @@ root_should_be_project:
|
|
60
60
|
# Make sure we do not start query on a Project so that we can tell if 'root' properly sets main_class.
|
61
61
|
node: ant
|
62
62
|
src: 'news from root'
|
63
|
-
sql: "%Q{SELECT nodes.*,links.id AS `link_id`,links.status AS `l_status`,links.comment AS `l_comment`,links.date AS `l_date` FROM links
|
63
|
+
sql: "%Q{SELECT nodes.*,links.id AS `link_id`,links.status AS `l_status`,links.comment AS `l_comment`,links.date AS `l_date` FROM links JOIN nodes JOIN nodes AS no1 WHERE #{secure_scope('nodes')} AND nodes.id = links.source_id AND links.relation_id = 488905946 AND links.target_id = no1.id AND no1.id = 850927283 GROUP BY nodes.id ORDER BY nodes.zip ASC}"
|
64
64
|
|
65
65
|
start_as_tag:
|
66
66
|
context:
|
@@ -6,14 +6,14 @@ default:
|
|
6
6
|
|
7
7
|
block:
|
8
8
|
src: "<r:parent><r:block name='foobar' do='title'/></r:parent>"
|
9
|
-
tem: "<% if var1 = @node.parent %><div id='foobar' data-z='<%= var1.zip %>'><%= var1.prop['title'] %></div><% end %>"
|
10
|
-
'ajax/block/en/foobar.erb': "<div id='<%= ndom_id(@node) %>' data-z='<%= @node.zip %>'><%= @node.prop['title'] %></div>"
|
9
|
+
tem: "<% if var1 = @node.parent %><div id='foobar' data-z='<%= var1.zip %>'><%=h var1.prop['title'] %></div><% end %>"
|
10
|
+
'ajax/block/en/foobar.erb': "<div id='<%= ndom_id(@node) %>' data-z='<%= @node.zip %>'><%=h @node.prop['title'] %></div>"
|
11
11
|
|
12
12
|
add:
|
13
13
|
src: "<ul id='children' do='nodes'><li do='each' do='link'/><li do='add'/></ul>"
|
14
14
|
tem: "/\[\"children_add\", \"children_0\"\].each\(Element.toggle\)/"
|
15
15
|
'ajax/add/en/children_form.erb': "/class='form' .*id='<%= ndom_id\(@node\) %>'/"
|
16
|
-
'ajax/add/en/children.erb': "<li id='<%= ndom_id(@node) %>'><a href='<%= zen_path(@node) %>'><%= @node.prop['title'] %></a></li>"
|
16
|
+
'ajax/add/en/children.erb': "<li id='<%= ndom_id(@node) %>'><a href='<%= zen_path(@node) %>'><%=h @node.prop['title'] %></a></li>"
|
17
17
|
|
18
18
|
edit_not_each:
|
19
19
|
src: "<li class='blah'>this is a post <r:edit>edit post</r:edit></li>"
|
@@ -80,7 +80,7 @@ each_add_with_form:
|
|
80
80
|
<li do='add'>add new</li>
|
81
81
|
<li do='form'><input name='title'/> this is the form</li>
|
82
82
|
</ol>
|
83
|
-
res: "/<li id='list1_30'>bird.*<li id='list1_31'>flower.*<li.*list1_add.*list1_0.*toggle.*<li.*style.*none.*list1_0.*Ajax.Request.*input type='hidden' name='
|
83
|
+
res: "/<li id='list1_30'>bird.*<li id='list1_31'>flower.*<li.*list1_add.*list1_0.*toggle.*<li.*style.*none.*list1_0.*Ajax.Request.*input type='hidden' name='node\[parent_id\]' value=.29.*input type='hidden' name='t_url' value=.ajax/each/add/with/form/list1/"
|
84
84
|
|
85
85
|
each_add_with_form_in_sub_block:
|
86
86
|
context:
|
@@ -107,8 +107,8 @@ each_add_with_form_klass_set:
|
|
107
107
|
res: "!/hidden.*node\[klass\].*Node.*select.*node\[klass\]/"
|
108
108
|
|
109
109
|
each_add_with_select:
|
110
|
-
src: "<r:children><r:each do='title'/><r:add/><r:form><r:select name='icon_id' nodes='images in project' selected='
|
111
|
-
'ajax/each/add/with/select/en/list1_form.erb': '/map.|r| \[r.name, r.zip.to_s\]., \"#.@node.icon_zip
|
110
|
+
src: "<r:children><r:each do='title'/><r:add/><r:form><r:select name='icon_id' nodes='images in project' selected='main.icon_id'/></r:form></r:children>"
|
111
|
+
'ajax/each/add/with/select/en/list1_form.erb': '/map.|r| \[r.name, r.zip.to_s\]., \"#.@node.icon_zip\"\)/'
|
112
112
|
tem: "/nodes.kpath LIKE 'NDI%'/"
|
113
113
|
|
114
114
|
each_edit_with_form:
|
@@ -133,7 +133,7 @@ block_dictionary:
|
|
133
133
|
make_form:
|
134
134
|
src: "<ul do='children'><li do='each' do='title'/><li do='add'/></ul>"
|
135
135
|
tem: "/<li style='display:none;' class='form' id='list1_0'>.*remote_form_for\(:node, var2_new"
|
136
|
-
'ajax/make/form/en/list1.erb': "<li id='<%= ndom_id(@node) %>'><%= @node.prop['title'] %></li>"
|
136
|
+
'ajax/make/form/en/list1.erb': "<li id='<%= ndom_id(@node) %>'><%=h @node.prop['title'] %></li>"
|
137
137
|
'ajax/make/form/en/list1_form.erb': "/<li class='form' id='<%= ndom_id\(@node\) %>'>/"
|
138
138
|
|
139
139
|
each_edit_cannot_write:
|
@@ -205,7 +205,7 @@ live_filter_select_options:
|
|
205
205
|
draggable_do_syntax:
|
206
206
|
src: "<r:images in='site' do='each' draggable='all' do='img' mode='pv'/>"
|
207
207
|
tem: "/add_drag_id\(%Q\{list1_#\{var2.zip\}\}/"
|
208
|
-
res: "/id='list1_30'><img src='/en/image30_pv.jpg
|
208
|
+
res: "/id='list1_30'><img src='/en/image30_pv.7f6f0.jpg'/"
|
209
209
|
js: '/"list1_24"\].each.*Zena.draggable\(item, false\)/'
|
210
210
|
|
211
211
|
draggable_true:
|
@@ -269,6 +269,14 @@ draggable_with_id_set:
|
|
269
269
|
src: "<h1 id='title' do='title' draggable='true'/>"
|
270
270
|
tem: "/<h1 id='title'><span class='drag' id='<%= %Q\{drag_#\{@node.zip\}\} %>'><span class='drag_handle'> </span><% add_drag_id\(%Q\{drag_#\{@node.zip\}/"
|
271
271
|
|
272
|
+
sortable:
|
273
|
+
context:
|
274
|
+
node: 'projects'
|
275
|
+
src: "<ol do='pages'><li do='reset_sort'/><li do='each' sortable='true' do='title'/></ol>"
|
276
|
+
tem: "/<ol>.*Zena.resetSort.*<li data-a='position' data-p='<%= var2.position %>' id='<%= %Q.list1_#.var2.zip.. %>'>/"
|
277
|
+
res: "/<li data-a='position' data-p='0.0' id='list1_29'><span class='drag_handle'> </span>a wiki with Zena</li>/"
|
278
|
+
js: "/Zena.sortable\('list1_29', \{handle:'drag_handle'\}\)/"
|
279
|
+
|
272
280
|
unlink:
|
273
281
|
context:
|
274
282
|
node: 'art'
|
@@ -366,7 +374,7 @@ update_target_encode_params:
|
|
366
374
|
|
367
375
|
include_update_target:
|
368
376
|
src: "IUT: <r:include template='/ajax/update/target'><r:with part='foo'><r:show attr='title'/></r:with></r:include>"
|
369
|
-
tem: "/IUT: UT: <div .*id='foo'.*><%=
|
377
|
+
tem: "/IUT: UT: <div .*id='foo'.*><%=h @node.prop\['title'\] %></div> <a .*zen_path.*onclick='new Ajax.Request/"
|
370
378
|
|
371
379
|
id_in_each_group_should_be_scoped:
|
372
380
|
src: "<ul do='comments from nodes in site' do='group' by='discussion_id'><li do='each'><r:node do='block' do='title'/></li></ul>"
|
@@ -422,13 +430,13 @@ js:
|
|
422
430
|
|
423
431
|
js_dyn:
|
424
432
|
src: "x <r:js>alert('ho <r:title/>');</r:js> y"
|
425
|
-
tem: "x <% js_data << capture do %>alert('ho <%= @node.prop['title'] %>');<% end %> y"
|
433
|
+
tem: "x <% js_data << capture do %>alert('ho <%=h @node.prop['title'] %>');<% end %> y"
|
426
434
|
res: "x y"
|
427
435
|
js: "<script type=\"text/javascript\">\n//<![CDATA[\nalert('ho status title');\n//]]>\n</script>"
|
428
436
|
|
429
437
|
js_less_then:
|
430
438
|
src: "x <r:js>if (i < 4) alert('ho <r:title/>');</r:js> y"
|
431
|
-
tem: "x <% js_data << capture do %>if (i < 4) alert('ho <%= @node.prop['title'] %>');<% end %> y"
|
439
|
+
tem: "x <% js_data << capture do %>if (i < 4) alert('ho <%=h @node.prop['title'] %>');<% end %> y"
|
432
440
|
res: "x y"
|
433
441
|
js: "<script type=\"text/javascript\">\n//<![CDATA[\nif (i < 4) alert('ho status title');\n//]]>\n</script>"
|
434
442
|
|
@@ -11,7 +11,7 @@ img_tag_use_icon:
|
|
11
11
|
context:
|
12
12
|
node: 'wiki'
|
13
13
|
tem: "<%= img_tag(@node, :alt_src => 'icon') %>"
|
14
|
-
res: "<img src='/en/image30.jpg
|
14
|
+
res: "<img src='/en/image30.11fbc.jpg' width='660' height='600' alt='bird' class='full'/>"
|
15
15
|
|
16
16
|
set_lang_fr:
|
17
17
|
context:
|
@@ -10,7 +10,7 @@ default:
|
|
10
10
|
|
11
11
|
rename_asset:
|
12
12
|
src: "<link href='/Default skin/style.css' rel='Stylesheet' type='text/css'/>"
|
13
|
-
tem: "<link rel='Stylesheet' type='text/css' href='/en/textdocument54.css
|
13
|
+
tem: "<link rel='Stylesheet' type='text/css' href='/en/textdocument54.11fbc.css'/>"
|
14
14
|
|
15
15
|
should_not_change_script:
|
16
16
|
src: "<script type='text/javascript' src='http://example.com'></script>"
|
@@ -23,5 +23,5 @@ change_style_url:
|
|
23
23
|
</style>
|
24
24
|
res: |
|
25
25
|
<style>
|
26
|
-
#super { background:url('/oo/image40.jpg
|
26
|
+
#super { background:url('/oo/image40.11fbc.jpg');}
|
27
27
|
</style>
|
@@ -14,7 +14,7 @@ comments_shown_if_empty_but_can_comment:
|
|
14
14
|
|
15
15
|
discussion:
|
16
16
|
src: "<r:discussion do='comments' do='title'></r:discussion>"
|
17
|
-
tem: "<% if var1 = @node.discussion %><% if var2 = var1.comments %><%= var2.first.title %><% end %><% end %>"
|
17
|
+
tem: "<% if var1 = @node.discussion %><% if var2 = var1.comments %><%=h var2.first.title %><% end %><% end %>"
|
18
18
|
# no error
|
19
19
|
res: "What about rivers ?"
|
20
20
|
|
@@ -22,7 +22,7 @@ select_date_attr:
|
|
22
22
|
|
23
23
|
date_in_link:
|
24
24
|
src: "<r:link y='log_at.year'/>"
|
25
|
-
tem: "<a href='<%= zen_path(@node, {:y => (@node.log_at ? @node.log_at.year_tz : nil)}) %>'><%= @node.prop['title'] %></a>"
|
25
|
+
tem: "<a href='<%= zen_path(@node, {:y => (@node.log_at ? @node.log_at.year_tz : nil)}) %>'><%=h @node.prop['title'] %></a>"
|
26
26
|
|
27
27
|
log_at:
|
28
28
|
context:
|
@@ -35,7 +35,7 @@ cdata:
|
|
35
35
|
res: |
|
36
36
|
<script type='text/javascript'>
|
37
37
|
<![CDATA[
|
38
|
-
var urls = ['http://test.host/oo/image40_med.jpg
|
38
|
+
var urls = ['http://test.host/oo/image40_med.05b01.jpg', 'http://test.host/en/image30_med.05b01.jpg'];
|
39
39
|
//]]>
|
40
40
|
</script>
|
41
41
|
|
@@ -49,12 +49,14 @@ multiline_tag:
|
|
49
49
|
</div>
|
50
50
|
</div>
|
51
51
|
tem: "!/do='pages'/"
|
52
|
-
|
53
52
|
|
54
53
|
show_title:
|
55
|
-
old_src: "<r:show attr='title'/>"
|
56
|
-
old_tem: "<%= @node.title %>"
|
57
54
|
src: "<r:title/>"
|
55
|
+
tem: "<%=h @node.prop['title'] %>"
|
56
|
+
res: "status title"
|
57
|
+
|
58
|
+
show_title_h_false:
|
59
|
+
src: "<r:title h='false'/>"
|
58
60
|
tem: "<%= @node.prop['title'] %>"
|
59
61
|
res: "status title"
|
60
62
|
|
@@ -62,7 +64,7 @@ show_title_with_opts:
|
|
62
64
|
old_src: "<h1 do='title' class='s70' status='true' actions='all'>this is the title</h1>"
|
63
65
|
old_tem: "/<h1 class='s<%= @node.version.status %>'><%= show_title\(:node=>@node\) \+ node_actions\(:node=>@node, .*:actions=>\"all\"/"
|
64
66
|
src: "<h1 do='title' prefix='status' actions='all' live='true'>this is the title</h1>"
|
65
|
-
tem: "<h1 class='s<%= @node.version.status %>'><span id='_title<%= @node.zip %>'><%=
|
67
|
+
tem: "<h1 class='s<%= @node.version.status %>'><span id='_title<%= @node.zip %>'><%=h @node.prop['title'] %></span> <%= node_actions(@node, :actions => \"all\") %></h1>"
|
66
68
|
old_res: "/<h1 class='s50'><span id='title22'.*class='actions'>/"
|
67
69
|
res: "/<h1 class='s50'><span id='_title22'.*class='actions'>/"
|
68
70
|
|
@@ -90,7 +92,7 @@ show_title_in_list:
|
|
90
92
|
|
91
93
|
do_title:
|
92
94
|
src: "<h2 do='title'/>"
|
93
|
-
tem: "<h2><%= @node.prop['title'] %></h2>"
|
95
|
+
tem: "<h2><%=h @node.prop['title'] %></h2>"
|
94
96
|
res: "<h2>status title</h2>"
|
95
97
|
|
96
98
|
show_title_link_id_from_stored:
|
@@ -140,7 +142,7 @@ title_in_version_context:
|
|
140
142
|
show_shortcut:
|
141
143
|
old_src: "<p do='[title]'>hello</p>"
|
142
144
|
src: "<p do='title'>hello</p>"
|
143
|
-
tem: "<p><%= @node.prop['title'] %></p>"
|
145
|
+
tem: "<p><%=h @node.prop['title'] %></p>"
|
144
146
|
res: "<p>status title</p>"
|
145
147
|
|
146
148
|
zazen_shortcut:
|
@@ -184,13 +186,13 @@ show_width:
|
|
184
186
|
show_else:
|
185
187
|
old_src: "<r:show attr='comment' else='name'/>"
|
186
188
|
src: "<r:show eval='origin || title'/>"
|
187
|
-
tem: "<%=
|
189
|
+
tem: "<%=h (@node.prop['origin'] or @node.prop['title']) %>"
|
188
190
|
res: "status title"
|
189
191
|
|
190
192
|
show_default:
|
191
193
|
old_src: "<r:show attr='d_foo' default='baz'/>"
|
192
194
|
src: "<r:show eval='origin || \"baz\"'/>"
|
193
|
-
tem: "<%=
|
195
|
+
tem: "<%=h (@node.prop['origin'] or \"baz\") %>"
|
194
196
|
res: "baz"
|
195
197
|
|
196
198
|
javascripts:
|
@@ -201,6 +203,10 @@ stylesheets:
|
|
201
203
|
src: "<r:stylesheets list='zena,code,search'/>"
|
202
204
|
tem: "/link href.*/stylesheets/zena.css.*text/css.*code.css.*text/css.*search.css.*stylesheet/"
|
203
205
|
|
206
|
+
search_box:
|
207
|
+
src: "<div id='search' do='search_box' type='search'/>"
|
208
|
+
res: "/<div id='search'><div class=\"search\">/"
|
209
|
+
|
204
210
|
icon:
|
205
211
|
context:
|
206
212
|
node: wiki
|
@@ -244,7 +250,7 @@ img_tag_icon:
|
|
244
250
|
context:
|
245
251
|
node: 'cleanWater'
|
246
252
|
src: "<r:img alt_src='icon'/>"
|
247
|
-
res: "<img src='/en/projects-list/Clean-Water-project/image24_std.jpg
|
253
|
+
res: "<img src='/en/projects-list/Clean-Water-project/image24_std.75a9a.jpg' width='545' height='400' alt='it's a lake' class='std'/>"
|
248
254
|
|
249
255
|
icon:
|
250
256
|
context:
|
@@ -256,36 +262,36 @@ img_image:
|
|
256
262
|
context:
|
257
263
|
node: 'bird_jpg'
|
258
264
|
src: "<r:img/><r:img mode='med'/>"
|
259
|
-
res: "/<img src='/en/image30_std.jpg
|
265
|
+
res: "/<img src='/en/image30_std.75a9a.jpg' width='440' height='400' alt='bird' class='std'/><img src='/en/image30_med.05b01.jpg' width='220' height='200' alt='bird' id='.*' class='med' onclick='Zena.popup\(this\)'/>/"
|
260
266
|
|
261
267
|
img_image_not_public:
|
262
268
|
context:
|
263
269
|
visitor: 'ant'
|
264
270
|
node: 'tree_jpg'
|
265
271
|
src: "<r:img/><r:img mode='med'/>"
|
266
|
-
res: "/<img src='/oo/image40_std.jpg
|
272
|
+
res: "/<img src='/oo/image40_std.75a9a.jpg' width='600' height='399' alt='Autumn Tree' class='std'/><img src='/oo/image40_med.05b01.jpg' width='300' height='200' alt='Autumn Tree' id='.*' class='med' onclick='Zena.popup\(this\)'/>/"
|
267
273
|
|
268
274
|
img_href:
|
269
275
|
context:
|
270
276
|
node: 'bird_jpg'
|
271
277
|
src: "<r:img link='this'/>"
|
272
|
-
res: "<a href='/oo/image30.html'><img src='/en/image30_std.jpg
|
278
|
+
res: "<a href='/oo/image30.html'><img src='/en/image30_std.75a9a.jpg' width='440' height='400' alt='bird' class='std'/></a>"
|
273
279
|
|
274
280
|
img_src_id:
|
275
281
|
src: "<r:img src='find(30)'/>"
|
276
|
-
res: "<img src='/en/image30_std.jpg
|
282
|
+
res: "<img src='/en/image30_std.75a9a.jpg' width='440' height='400' alt='bird' class='std'/>"
|
277
283
|
|
278
284
|
img_src_finder:
|
279
285
|
src: "<r:img src='find(\"icon from project\")'/>"
|
280
|
-
res: "/image24_std.jpg/"
|
286
|
+
res: "/image24_std.75a9a.jpg/"
|
281
287
|
|
282
288
|
img_src_mode:
|
283
289
|
src: "<r:img src='find(30)' mode='pv'/>"
|
284
|
-
res: "<img src='/en/image30_pv.jpg
|
290
|
+
res: "<img src='/en/image30_pv.7f6f0.jpg' width='70' height='70' alt='bird' class='pv'/>"
|
285
291
|
|
286
292
|
img_html_params:
|
287
293
|
src: "<r:img src='find(30)' id='super'/>"
|
288
|
-
res: "<img src='/en/image30_std.jpg
|
294
|
+
res: "<img src='/en/image30_std.75a9a.jpg' width='440' height='400' alt='bird' id='super' class='std'/>"
|
289
295
|
|
290
296
|
zena:
|
291
297
|
src: "<r:zena/>"
|
@@ -330,7 +336,7 @@ show_with_label_shortcut:
|
|
330
336
|
context:
|
331
337
|
lang: fr
|
332
338
|
src: "<li do='show' label='t' blank='hide' attr='title'/>"
|
333
|
-
tem: "<% if !@node.prop['title'].blank? %><li><label>titre</label> <span><%=
|
339
|
+
tem: "<% if !@node.prop['title'].blank? %><li><label>titre</label> <span><%=h @node.prop['title'] %></span></li><% end %>"
|
334
340
|
res: "<li><label>titre</label> <span>Etat des travaux</span></li>"
|
335
341
|
|
336
342
|
show_with_custom_label_shortcut:
|
@@ -414,16 +420,23 @@ short_path:
|
|
414
420
|
show_param:
|
415
421
|
context:
|
416
422
|
t: 'hello'
|
417
|
-
src: "<r:show param='t'/>"
|
418
|
-
tem: "<%=
|
423
|
+
# src: "<r:show param='t'/><r:show param='x'/>"
|
424
|
+
tem: "<%=h params[:t] %><%=h params[:x] %>"
|
419
425
|
res: "hello"
|
420
426
|
|
427
|
+
display_hash_type:
|
428
|
+
context:
|
429
|
+
node: test
|
430
|
+
src: "<r:void do='settings[\"one\"]'/>"
|
431
|
+
tem: "<%=h (@node.prop['settings'] ? @node.prop['settings'][\"one\"] : nil) %>"
|
432
|
+
res: "un"
|
433
|
+
|
421
434
|
default_host:
|
422
435
|
context:
|
423
436
|
node: 'bird_jpg'
|
424
437
|
src: "<r:default host='b.#{site.host}'><r:zazen text='this is a \"link\":12.'/> xxx: <r:img/></r:default>"
|
425
438
|
tem: '/zazen.*:host.*visitor.site.host/'
|
426
|
-
res: "/href=\"http://b.test.host/oo/section12.html\">link.*src='http://b.test.host/en/image30_std.jpg/"
|
439
|
+
res: "/href=\"http://b.test.host/oo/section12.html\">link.*src='http://b.test.host/en/image30_std.75a9a.jpg/"
|
427
440
|
|
428
441
|
zazen_without_markup:
|
429
442
|
src: "<r:void do='zazen(title)'/>"
|
@@ -482,3 +495,18 @@ each_alternate_by_hand:
|
|
482
495
|
src: "<ol do='pages'><r:each alt_class='blue'><li class='#{alt_class}' do='title'/></r:each></ol>"
|
483
496
|
tem: "/class='<%= _zaltclass %>'/"
|
484
497
|
res: "<ol><li class=''>crocodiles</li><li class='blue'>status title</li></ol>"
|
498
|
+
|
499
|
+
with_a_custom_img_tag_field:
|
500
|
+
# img_tag field set in test.
|
501
|
+
src: "<r:zazen text='A:!22! B:!22_pv!'/> C:<r:img/>"
|
502
|
+
res: "/A:<foobar>PATH=.*page22_std.html uuid=img.*</foobar> B:.*<img src='/images/ext/page_pv.png'.*C:<foobar>PATH=.*page22_std.html uuid=img.*</foobar>/"
|
503
|
+
|
504
|
+
with_a_custom_img_tag_field_with_JS:
|
505
|
+
# img_tag field set in test.
|
506
|
+
src: "<r:zazen text='A:!22!'/> C:<r:img/>"
|
507
|
+
res: "<div class='zazen'><p>A:blah blah blah blah </p></div> C:blah blah blah blah "
|
508
|
+
js: "/\nsome js\nmore JS\nsome js\nmore JS\n/"
|
509
|
+
|
510
|
+
invalid_document:
|
511
|
+
src: "<r:zazen text='!21!'/>"
|
512
|
+
res: "/images/ext/project.png/"
|
@@ -24,12 +24,12 @@ set_var:
|
|
24
24
|
|
25
25
|
set_var_propagates:
|
26
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>'
|
27
|
+
tem: '<div><% _za = "hello" %><% _za = "goodbye" %><%=h _za %></div>'
|
28
28
|
res: "<div>goodbye</div>"
|
29
29
|
|
30
30
|
set_var_can_be_nil:
|
31
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>"
|
32
|
+
tem: "<div><% _za = \"hello\" %><% _za = @node.prop['origin'] || _za %><%=h _za %></div>"
|
33
33
|
res: "<div>hello</div>"
|
34
34
|
|
35
35
|
set_var_different_type:
|
@@ -38,12 +38,12 @@ set_var_different_type:
|
|
38
38
|
|
39
39
|
node_eval:
|
40
40
|
src: "<r:void do='@node.eval(\"title\")'/>"
|
41
|
-
tem: "<%= @node.zafu_eval(\"title\") %>"
|
41
|
+
tem: "<%=h @node.zafu_eval(\"title\") %>"
|
42
42
|
res: "status title"
|
43
43
|
|
44
44
|
node_eval_array:
|
45
45
|
context:
|
46
46
|
node: opening
|
47
47
|
src: "<r:void do='@node.eval(\"set_tag_ids\")'/>"
|
48
|
-
tem: "<%= @node.zafu_eval(\"set_tag_ids\") %>"
|
48
|
+
tem: "<%=h @node.zafu_eval(\"set_tag_ids\") %>"
|
49
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: "
|
39
|
+
res: "/node\[paper\]' value='white'/"
|
40
40
|
|
41
41
|
translate_id_to_zip:
|
42
42
|
src: "<b do='hot_id'/><i do='parent_id'/>"
|
@@ -45,7 +45,7 @@ translate_id_to_zip:
|
|
45
45
|
select_class_existing_node:
|
46
46
|
context:
|
47
47
|
node: 'letter'
|
48
|
-
src: "<r:form><r:select name='klass' root_class='Note'
|
48
|
+
src: "<r:form><r:select name='klass' root_class='Note'/></r:form>"
|
49
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:
|
@@ -66,12 +66,12 @@ select_data:
|
|
66
66
|
res: "/<select name=.k. data-d='foo'.*NN.*k_Note.*NNL.*k_Letter.*NNP.*k_Post/"
|
67
67
|
|
68
68
|
select_nodes:
|
69
|
-
src: "<r:form><r:select nodes='images in site' name='
|
70
|
-
res: "/name='node\[
|
69
|
+
src: "<r:form><r:select nodes='images in site' name='origin'></select></r:form>"
|
70
|
+
res: "/name='node\[origin\]'[^>]+><option value=\"\" selected=\"selected\"></option>\n<option value=\"40\">Autumn Tree</option>\n<option value=\"30\">bird</option>/"
|
71
71
|
|
72
72
|
select_nodes_show_rubyless:
|
73
|
-
src: "<r:form><r:select nodes='images in site' name='
|
74
|
-
res: "/name='node\[
|
73
|
+
src: "<r:form><r:select nodes='images in site' name='origin' show='title.limit(3)'></select></r:form>"
|
74
|
+
res: "/name='node\[origin\]'[^>]+><option value=\"\" selected=\"selected\"></option>\n<option value=\"40\">Aut…</option>\n<option value=\"30\">bir…</option>/"
|
75
75
|
|
76
76
|
do_not_set_parent_id_if_form_contains_parent_id:
|
77
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>"
|
@@ -82,15 +82,15 @@ select_nodes_selected:
|
|
82
82
|
res: "/option\s* value=.21.\s* selected=.selected.>Clean Water/"
|
83
83
|
|
84
84
|
select_nodes_in_ajax:
|
85
|
-
src: "<r:pages><r:each do='title'/><r:add/><r:form><r:select nodes='images in site' name='
|
86
|
-
res: "/name=.node\[
|
85
|
+
src: "<r:pages><r:each do='title'/><r:add/><r:form><r:select nodes='images in site' name='origin'/></r:form></r:pages>"
|
86
|
+
res: "/name=.node\[origin\].[^>]+><option value=\"\" selected=\"selected\"></option>\n<option value=\"40\">Autumn Tree</option>\n<option value=\"30\">bird</option>/"
|
87
87
|
|
88
88
|
select_nodes_show_attr:
|
89
89
|
src: "<r:form><r:select name='title' nodes='images in site' attr='ext' show='title'/></r:form>"
|
90
90
|
res: "/name=.node\[title\].[^>]+>.*<option value=\"jpg\">flower</option>\n<option value=\"jpg\">it's a lake</option>/"
|
91
91
|
|
92
92
|
select_time_zone:
|
93
|
-
src: "<r:form><r:select type='time_zone' name='
|
93
|
+
src: "<r:form><r:select type='time_zone' name='settings[tz]'/></r:form>"
|
94
94
|
res: "/Asia/Jakarta.*Europe/Zurich.*US/Hawai"
|
95
95
|
|
96
96
|
select_values_tshow:
|
@@ -221,7 +221,7 @@ textarea_with_blocks:
|
|
221
221
|
context:
|
222
222
|
node: 'ant'
|
223
223
|
src: "<r:Contact? do='textarea' name='first_name'>Sir <r:show attr='first_name'/></r:Contact?>"
|
224
|
-
tem: "/<textarea name='node\[first_name\]'>Sir <%=
|
224
|
+
tem: "/<textarea name='node\[first_name\]'>Sir <%=h @node.prop\['first_name'\] %></textarea>/"
|
225
225
|
res: "<textarea name='node[first_name]'>Sir Solenopsis</textarea>"
|
226
226
|
|
227
227
|
input_new:
|
@@ -232,7 +232,7 @@ input_new:
|
|
232
232
|
|
233
233
|
show_in_form:
|
234
234
|
src: "<r:form><b do='title'/></r:form>"
|
235
|
-
tem: "/<b><%= @node.prop\['title'\] %></b>/"
|
235
|
+
tem: "/<b><%=h @node.prop\['title'\] %></b>/"
|
236
236
|
res: '/<b>status title</b>/'
|
237
237
|
|
238
238
|
not_set_parent_id:
|
@@ -301,6 +301,20 @@ select_eval_value:
|
|
301
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
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
303
|
|
304
|
+
select_for_hash:
|
305
|
+
context:
|
306
|
+
node: test
|
307
|
+
src: "<r:select label='t' name='settings[one]' values='foo,un'/>"
|
308
|
+
tem: "<label>settings_one</label> <span><select name='node[settings][one]'><%= options_for_select([[\"settings_one_foo\", \"foo\"], [\"settings_one_un\", \"un\"]], (@node.prop['settings'] ? @node.prop['settings'][\"one\"] : nil).to_s) %></select></span>"
|
309
|
+
res: "/<label>settings_one</label> .*option value=\"un\" selected=\"selected\"/"
|
310
|
+
|
311
|
+
select_for_hash_tprefix:
|
312
|
+
context:
|
313
|
+
node: test
|
314
|
+
src: "<r:select tprefix='rel' name='settings[one]' values='foo,un'/>"
|
315
|
+
tem: "<select name='node[settings][one]'><%= options_for_select([[\"rel_foo\", \"foo\"], [\"rel_un\", \"un\"]], (@node.prop['settings'] ? @node.prop['settings'][\"one\"] : nil).to_s) %></select>"
|
316
|
+
res: "<select name='node[settings][one]'><option value=\"foo\">rel_foo</option>\n<option value=\"un\" selected=\"selected\">rel_un</option></select>"
|
317
|
+
|
304
318
|
crop:
|
305
319
|
context:
|
306
320
|
node: 'bird_jpg'
|
@@ -97,6 +97,11 @@ trans_literal_string:
|
|
97
97
|
trans_block:
|
98
98
|
src: "<r:t>en</r:t>"
|
99
99
|
tem: "english"
|
100
|
+
|
101
|
+
link_trans:
|
102
|
+
# SECURITY: translation **REMOVES** html_escape (because the dictionary can contain JS or images).
|
103
|
+
src: "<r:link do='t' text='#{title}'/>"
|
104
|
+
tem: "<a href='<%= zen_path(@node) %>'><%= trans(\"#{@node.prop['title']}\") %></a>"
|
100
105
|
|
101
106
|
lang_links:
|
102
107
|
src: "<div id='lang' do='lang_links'><a>en</a> | <b>fr</b></div>"
|
@@ -18,7 +18,7 @@ less_then_in_dyn_param:
|
|
18
18
|
|
19
19
|
greater_then_in_dyn_param:
|
20
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>"
|
21
|
+
tem: "<a foo='<%= ((@node.created_at ? (@node.created_at>Time.now) : nil) ? \"yes\" : \"no\") %>'>xx</a>"
|
22
22
|
|
23
23
|
greater_then_in_do:
|
24
24
|
src: "<a foo='bar' do='pages where created_at > 7'>xx</a>"
|
@@ -56,7 +56,7 @@ include_part:
|
|
56
56
|
|
57
57
|
include_part_replace_method:
|
58
58
|
src: "include_part: <r:include template='/meta/id/name' part='bob' do='title'/>"
|
59
|
-
tem: "include_part: <b><%= @node.prop['title'] %></b>"
|
59
|
+
tem: "include_part: <b><%=h @node.prop['title'] %></b>"
|
60
60
|
|
61
61
|
id_do:
|
62
62
|
src: "<h1 id='logo' do='title'/>"
|
@@ -72,7 +72,7 @@ with_part_do_setup:
|
|
72
72
|
|
73
73
|
with_part_do:
|
74
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>"
|
75
|
+
tem: "with_part_do: <div id='content'>hello <div id='main'><%=h @node.prop['title'] %></div></div>"
|
76
76
|
|
77
77
|
# this test is a dummy used by include_context
|
78
78
|
context_dummy:
|