Changeset 1182

Show
Ignore:
Timestamp:
2008-09-23 09:34:24 (4 months ago)
Author:
gaspard
Message:

commit 4075721e9737820f2ba11fbe91d426cb4af0259d
Author: Gaspard Bucher <gaspard@teti.ch>

Hot fix to prevent crash when [context] tag is badly formed.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/lib/multiversion.rb

    r1139 r1182  
    480480          end 
    481481          if ok && publish_after_save && version.status != Zena::Status[:pub] 
    482             ok = publish 
     482            ok = can_apply?(:publish) ? apply(:publish) : apply(:propose) 
    483483          elsif ok 
    484484            ok = update_max_status && update_publish_from 
     
    515515            if v == nil && can_write? 
    516516              # create new redaction or redit current publication 
    517               if publish_after_save && version[:status] == Zena::Status[:pub] && version[:user_id] == visitor[:id] && version[:lang] == lang && (Time.now < version[:updated_at] + current_site[:redit_time].to_i) 
     517              if publish_after_save && version[:status] >= Zena::Status[:prop] && version[:user_id] == visitor[:id] && version[:lang] == lang && (Time.now < version[:updated_at] + current_site[:redit_time].to_i) 
    518518                # re-edit publication 
    519519                redit = true 
  • trunk/lib/parser/lib/rules/zena.rb

    r1180 r1182  
    19551955    def r_context 
    19561956      # DRY ! (build_finder_for, block) 
    1957       method = @params[:method] 
     1957      return parser_error("missing 'method' parameter") unless method = @params[:method] 
     1958       
    19581959      context = node_class.zafu_known_contexts[method] 
    19591960      if context && @params.keys == [:method] 
  • trunk/test/unit/multiversion_test.rb

    r1181 r1182  
    793793  end 
    794794   
    795   def test_auto_publish_in_redit_time 
     795  def test_auto_publish_in_redit_time_can_publish 
    796796    # set site.auto_publish      ===> publish 
    797797    # now < updated + redit_time ===> update current publication 
    798798    Site.connection.execute "UPDATE sites set auto_publish = 1, redit_time = 7200 WHERE id = #{sites_id(:zena)}" 
     799    Version.connection.execute "UPDATE versions set updated_at = '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}' WHERE id = #{versions_id(:tiger_en)}" 
     800    login(:tiger) 
     801    visitor.lang = 'en' 
     802    node = secure!(Node) { nodes(:tiger) } 
     803    assert_equal Zena::Status[:pub], node.v_status 
     804    assert_equal 'Tiger', node.v_title 
     805    assert_equal 1, node.v_number 
     806    assert_equal users_id(:tiger), node.v_user_id 
     807    assert node.v_updated_at < Time.now + 600 
     808    assert node.v_updated_at > Time.now - 600 
     809    node.update_attributes(:v_title => "Puma") 
     810    assert_equal Zena::Status[:pub], node.v_status 
     811    assert_equal 1, node.v_number 
     812    assert_equal versions_id(:tiger_en), node.v_id 
     813    assert_equal 'Puma', node.v_title 
     814  end 
     815 
     816  def test_publish_after_save_in_redit_time_can_publish 
     817    # set site.auto_publish      ===> publish 
     818    # now < updated + redit_time ===> update current publication 
     819    Site.connection.execute "UPDATE sites set auto_publish = 0, redit_time = 7200 WHERE id = #{sites_id(:zena)}" 
     820    Version.connection.execute "UPDATE versions set updated_at = '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}' WHERE id = #{versions_id(:tiger_en)}" 
     821    login(:tiger) 
     822    visitor.lang = 'en' 
     823    node = secure!(Node) { nodes(:tiger) } 
     824    assert_equal Zena::Status[:pub], node.v_status 
     825    assert_equal 'Tiger', node.v_title 
     826    assert_equal 1, node.v_number 
     827    assert_equal users_id(:tiger), node.v_user_id 
     828    assert node.v_updated_at < Time.now + 600 
     829    assert node.v_updated_at > Time.now - 600 
     830    node.update_attributes(:v_title => "Puma", :v_status => Zena::Status[:pub]) 
     831    assert_equal Zena::Status[:pub], node.v_status 
     832    assert_equal 1, node.v_number 
     833    assert_equal versions_id(:tiger_en), node.v_id 
     834    assert_equal 'Puma', node.v_title 
     835  end 
     836   
     837  def test_auto_publish_in_redit_time 
     838    # set site.auto_publish      ===> publish 
     839    # now < updated + redit_time ===> update current proposition 
     840    Site.connection.execute "UPDATE sites set auto_publish = 1, redit_time = 7200 WHERE id = #{sites_id(:zena)}" 
    799841    Version.connection.execute "UPDATE versions set updated_at = '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}' WHERE id = #{versions_id(:status_en)}" 
    800842    login(:ant) 
     
    805847    assert_equal 1, node.v_number 
    806848    assert_equal users_id(:ant), node.v_user_id 
     849    assert !node.can_publish? 
    807850    assert node.v_updated_at < Time.now + 600 
    808851    assert node.v_updated_at > Time.now - 600 
    809852    node.update_attributes(:v_title => "Statues are better") 
    810     assert_equal Zena::Status[:pub], node.v_status 
    811     assert_equal 1, node.v_number 
     853    assert_equal Zena::Status[:prop], node.v_status 
     854    assert_equal 2, node.v_number 
    812855    assert_equal versions_id(:status_en), node.v_id 
    813856    assert_equal 'Statues are better', node.v_title 
     
    816859  def test_publish_after_save_in_redit_time 
    817860    # set site.auto_publish      ===> publish 
    818     # now < updated + redit_time ===> update current publication 
     861    # now < updated + redit_time ===> update current proposition 
    819862    Site.connection.execute "UPDATE sites set auto_publish = 0, redit_time = 7200 WHERE id = #{sites_id(:zena)}" 
    820     Version.connection.execute "UPDATE versions set updated_at = '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}' WHERE id = #{versions_id(:status_en)}" 
    821     login(:ant) 
    822     visitor.lang = 'en' 
    823     node = secure!(Node) { nodes(:status) } 
    824     assert_equal Zena::Status[:pub], node.v_status 
     863    Version.connection.execute "UPDATE versions set updated_at = '#{Time.now.strftime('%Y-%m-%d %H:%M:%S')}' status=#{Zena::Status[:prop]} WHERE id = #{versions_id(:status_en)}" 
     864    login(:ant) 
     865    visitor.lang = 'en' 
     866    node = secure!(Node) { nodes(:status) } 
     867    assert_equal Zena::Status[:prop], node.v_status 
    825868    assert_equal 'status title', node.v_title 
    826869    assert_equal 1, node.v_number 
     
    829872    assert node.v_updated_at > Time.now - 600 
    830873    node.update_attributes(:v_title => "Statues are better", :v_status => Zena::Status[:pub]) 
    831     assert_equal Zena::Status[:pub], node.v_status 
     874    assert_equal Zena::Status[:prop], node.v_status 
    832875    assert_equal 1, node.v_number 
    833876    assert_equal versions_id(:status_en), node.v_id 
     
    868911    assert_equal Zena::Status[:rep], old_version.status 
    869912  end 
     913   
     914  def test_v_status_no_publish_rights 
     915    login(:ant) 
     916    node = secure!(Node) { nodes(:cleanWater) } 
     917    assert !node.can_publish? 
     918    assert node.can_write? 
     919    assert node.update_attributes(:v_title => 'bloated waters', :v_status => Zena::Status[:pub]) 
     920    assert_equal Zena::Status[:prop], node.v_status 
     921  end 
     922   
     923  def test_auto_publish_no_publish_rights 
     924    Site.connection.execute "UPDATE sites set auto_publish = 1, redit_time = 0 WHERE id = #{sites_id(:zena)}" 
     925    login(:ant) 
     926    node = secure!(Node) { nodes(:cleanWater) } 
     927    assert !node.can_publish? 
     928    assert node.update_attributes(:v_title => 'bloated waters') 
     929    assert_equal Zena::Status[:prop], node.v_status 
     930  end 
    870931end