Changeset 1211
- Timestamp:
- 2008-10-04 00:08:24 (3 months ago)
- Files:
-
- trunk/.gitignore (modified) (1 diff)
- trunk/app/helpers/application_helper.rb (modified) (1 diff)
- trunk/doc (modified) (1 prop)
- trunk/lib/parser/lib/rules/zena.rb (modified) (8 diffs)
- trunk/test/fixtures/files/Node-test.zafu (modified) (2 diffs)
- trunk/test/helpers/application_helper_test.rb (modified) (1 diff)
- trunk/test/helpers/zena_parser/ajax.yml (modified) (1 diff)
- trunk/test/helpers/zena_parser/basic.yml (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/.gitignore
r1160 r1211 2 2 config/deploy_config.rb 3 3 config/database.yml 4 doc/coverage 4 5 log/ 5 6 public/images/ext/*_pv.png trunk/app/helpers/application_helper.rb
r1197 r1211 735 735 end 736 736 737 # list of page numbers links 738 def page_numbers(current, count, join_string = nil, max_count = nil) 739 max_count ||= 10 740 join_string ||= '' 741 join_str = '' 742 if count <= max_count 743 1.upto(count) do |p| 744 yield(p, join_str) 745 join_str = join_string 746 end 747 else 748 # only first pages (centered around current page) 749 if current - (max_count/2) > 0 750 finish = [current + (max_count/2),count].min 751 else 752 finish = [max_count,count].min 753 end 754 755 start = [finish - max_count + 1,1].max 756 757 start.upto(finish) do |p| 758 yield(p, join_str) 759 join_str = join_string 760 end 761 end 762 end 763 737 764 # main node before ajax stuff (the one in browser url) 738 765 def start_node trunk/doc
- Property svn:ignore set to coverage
trunk/lib/parser/lib/rules/zena.rb
r1208 r1211 1735 1735 if @params[:page] 1736 1736 pagination_links 1737 elsif upd = @params[:update]1738 return unless target = find_target(upd)1739 link_to_update(target)1740 1737 else 1741 1738 make_link … … 1744 1741 1745 1742 def make_link(options = {}) 1746 query_params = options[:query_params] || {}1743 query_params = options[:query_params] || {} 1747 1744 default_text = options[:default_text] 1748 1745 params = @params.dup … … 1806 1803 1807 1804 (params.keys - [:style, :class, :id, :rel, :name, :anchor, :attr, :tattr, :trans, :text, :page]).each do |k| 1805 next if k.to_s =~ /if_|set_/ 1808 1806 query_params[k] = params[k] 1809 1807 end … … 1829 1827 str = static ? CGI.escape(attribute) : "\#{CGI.escape(\"#{attribute}\")}" 1830 1828 end 1831 query_params_list << "#{k. gsub('"','')}=#{str}"1829 query_params_list << "#{k.to_s.gsub('"','')}=#{str}" 1832 1830 end 1833 1831 pre_space + link_to_update(remote_target, :node_id => "#{lnode}.zip", :query_params => query_params_list, :default_text => default_text, :html_params => html_params) … … 1872 1870 @context[:vars] << "#{pagination_key}_previous" 1873 1871 out make_link(:default_text => "<%= set_#{pagination_key}_previous %>", :query_params => {pagination_key => "[#{pagination_key}_previous]"}) 1872 if descendant('else') 1873 out expand_with(:in_if => true, :only => ['else', 'elsif']) 1874 end 1874 1875 out "<% end -%>" 1875 1876 when 'next' … … 1878 1879 @context[:vars] << "#{pagination_key}_next" 1879 1880 out make_link(:default_text => "<%= set_#{pagination_key}_next %>", :query_params => {pagination_key => "[#{pagination_key}_next]"}) 1881 if descendant('else') 1882 out expand_with(:in_if => true, :only => ['else', 'elsif']) 1883 end 1880 1884 out "<% end -%>" 1881 1885 when 'list' 1882 # FIXME: implement page numbers (#211). 1883 parser_error("page numbers not implemented yet") 1886 @context[:vars] ||= [] 1887 @context[:vars] << "#{pagination_key}_page" 1888 if @blocks == [] || (@blocks.size == 1 && !@blocks.first.kind_of?(String) && @blocks.first.method == 'else') 1889 # add a default blocks 1890 if tag = @params[:tag] 1891 open_tag = "<#{tag}>" 1892 close_tag = "</#{tag}>" 1893 else 1894 open_tag = close_tag = '' 1895 end 1896 link_params = {} 1897 @params.each do |k,v| 1898 next if [:tag, :page, :join].include?(k) 1899 link_params[k] = v 1900 end 1901 text = "#{open_tag}<r:link #{params_to_html(link_params)} #{pagination_key}='[#{pagination_key}_page]' do='[#{pagination_key}_page]'/>#{close_tag}" 1902 @blocks = [make(:void, :method=>'void', :text=>text)] 1903 remove_instance_variable(:@all_descendants) 1904 end 1905 1906 if !descendant('else') 1907 @blocks += [make(:void, :method=>'void', :text=>"<r:else>#{open_tag}<r:show var='#{pagination_key}_page'/>#{close_tag}</r:else>")] 1908 remove_instance_variable(:@all_descendants) 1909 end 1910 1911 out "<% page_numbers(set_#{pagination_key}, set_#{pagination_key}_count, #{(@params[:join] || ' ').inspect}) do |set_#{pagination_key}_page, #{pagination_key}_page_join| %>" 1912 out "<%= #{pagination_key}_page_join %>" 1913 out "<% if set_#{pagination_key}_page != set_#{pagination_key} -%>" 1914 out render_html_tag(expand_with) 1915 @html_tag_done = false 1916 out render_html_tag(expand_with(:in_if => true, :only => ['else', 'elsif'])) 1917 out "<% end; end -%>" 1884 1918 else 1885 1919 parser_error("unkown 'page' option #{@params[:page].inspect} should be ('previous', 'next' or 'list')") … … 1932 1966 elsif !descendant('else') 1933 1967 @blocks += [make(:void, :method=>'void', :text=>"<r:else do='[current_date]' format='%d'/>")] 1968 remove_instance_variable(:@all_descendants) 1934 1969 end 1935 1970 @html_tag_done = false … … 2995 3030 2996 3031 def text_for_link(default = nil) 2997 if @blocks.size > 1 || (@blocks.size == 1 && ! @blocks.first.kind_of?(String))3032 if @blocks.size > 1 || (@blocks.size == 1 && !(@blocks.first.kind_of?(String) || ['else','elsif'].include?(@blocks.first.method))) 2998 3033 expand_with 2999 3034 elsif default trunk/test/fixtures/files/Node-test.zafu
r1201 r1211 33 33 <r:link mode='test' page='previous' do='t'>previous</r:link> 34 34 <r:show var='p'/>/<r:show var='p_count'/> 35 || <r:link page='list' mode='test'/> || 35 36 <r:link mode='test' page='next' do='t'>next</r:link> 36 37 </p> … … 46 47 <r:link mode='test' update='pagir' page='previous' do='t'>previous</r:link> 47 48 <r:show var='p'/>/<r:show var='p_count'/> 49 || <r:link page='list' update='pagir'/> || 48 50 <r:link mode='test' update='pagir' page='next' do='t'>next</r:link> 49 51 </p> trunk/test/helpers/application_helper_test.rb
r1184 r1211 429 429 end 430 430 431 def test_page_numbers 432 s = "" 433 page_numbers(2, 3, ',') {|p,j| s << "#{j}#{p}"} 434 assert_equal "1,2,3", s 435 s = "" 436 page_numbers(2, 30, ',') {|p,j| s << "#{j}#{p}"} 437 assert_equal "1,2,3,4,5,6,7,8,9,10", s 438 s = "" 439 page_numbers(14, 30, ',') {|p,j| s << "#{j}#{p}"} 440 assert_equal "10,11,12,13,14,15,16,17,18,19", s 441 s = "" 442 page_numbers(28, 30, ' | ') {|p,j| s << "#{j}#{p}"} 443 assert_equal "21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30", s 444 end 445 431 446 end trunk/test/helpers/zena_parser/ajax.yml
r1199 r1211 217 217 src: "<div id='foo' do='block' do='nodes in site' limit='3' order='zip' paginate='pak'><r:link page='previous'/> | <r:show var='pak'/> | <r:link update='foo' page='next'/> || <r:each join=',' do='[id]'/></div>" 218 218 res: "/<a href='/oo/projects/cleanWater/page22.html\?pak=1'>1</a> \| 2 \| .*22/zafu\?pak=3.*dom_id=foo.*>3</a>/" 219 220 link_page_list: 221 context: 222 pak: 2 223 src: "<div id='foo' do='block' do='nodes' in='site' limit='10' order='zip' paginate='pak' do='link' page='list' update='foo' join=', '/>" 224 tem: "/set_pak_page != set_pak.*tag_to_remote.*pak=#.CGI.escape..#.set_pak_page.*dom_id=foo/" 225 res: "/pak=1.*1</a>, 2, .*pak=3.*3</a>.*pak=4.*4</a>.*pak=5.*5</a>/" trunk/test/helpers/zena_parser/basic.yml
r1207 r1211 1142 1142 src: "<r:nodes in='site' limit='3' order='zip' paginate='pak'><r:link page='next' do='t'>next</r:link></r:nodes>" 1143 1143 res: "<a href='/oo/projects/cleanWater/page22.html?pak=2'>next</a>" 1144 1145 link_page_list: 1146 context: 1147 pak: 2 1148 src: "<r:nodes in='site' limit='10' order='zip' paginate='pak' do='link' page='list' join=', '/>" 1149 tem: "/set_pak_page != set_pak.*zen_path\(@node,:pak.*elsif true.*set_pak_page/" 1150 res: "/<a href='.*page22.html\?pak=1'>1</a>, 2, .*pak=3'>3</a>.*pak=4'>4</a>.*pak=5'>5</a>/" 1151 1152 link_page_previous_else_page1: 1153 src: "<r:nodes in='site' limit='3' order='zip' paginate='pak'><r:link page='previous' do='else'>noprev</r:link></r:nodes>" 1154 res: "noprev" 1155 1156 link_page_previous_else_page2: 1157 context: 1158 pak: 2 1159 src: "<r:nodes in='site' limit='3' order='zip' paginate='pak'><r:link page='previous' do='else'>noprev</r:link></r:nodes>" 1160 res: "<a href='/oo/projects/cleanWater/page22.html?pak=1'>1</a>" 1161 1162 link_page_list_else: 1163 context: 1164 pak: 2 1165 src: "<r:nodes in='site' limit='3' order='zip' paginate='pak'><r:link page='list' join=', ' do='else'>[<r:show var='pak'/>]</r:link></r:nodes>" 1166 res: "/<a.*1</a>, [2], <a.*3</a>/"
