Commit 4ab1ad9c850b57becd62e460ddfc69c3f653a6fe
Committed by
Daniela Feitosa
1 parent
fd59bb99
Exists in
master
and in
28 other branches
Add links to articles versions.
(ActionItem2822) Signed-off-by: Daniela Feitosa Signed-off-by: Ana Losnak <analosnak@gmail.com> Signed-off-by: Daniel Bucher <daniel.bucher88@gmail.com>
Showing
5 changed files
with
78 additions
and
0 deletions
Show diff stats
app/controllers/public/content_viewer_controller.rb
... | ... | @@ -7,6 +7,7 @@ class ContentViewerController < ApplicationController |
7 | 7 | |
8 | 8 | def view_page |
9 | 9 | path = params[:page].join('/') |
10 | + version = params[:rev] | |
10 | 11 | |
11 | 12 | if path.blank? |
12 | 13 | @page = profile.home_page |
... | ... | @@ -22,6 +23,10 @@ class ContentViewerController < ApplicationController |
22 | 23 | redirect_to profile.url.merge(:page => page_from_old_path.explode_path) |
23 | 24 | return |
24 | 25 | end |
26 | + else | |
27 | + if version | |
28 | + @page = @page.versions.find_by_version version | |
29 | + end | |
25 | 30 | end |
26 | 31 | end |
27 | 32 | ... | ... |
app/views/content_viewer/view_page.rhtml
... | ... | @@ -85,6 +85,10 @@ |
85 | 85 | </div> |
86 | 86 | <% end %> |
87 | 87 | |
88 | +<div id="article-versions"> | |
89 | + <%= @page.versions.map {|v| link_to("r#{v.version}", @page.url.merge(:rev => v.version))} %> | |
90 | +</div> | |
91 | + | |
88 | 92 | <%= display_source_info(@page) %> |
89 | 93 | |
90 | 94 | <div class="comments" id="comments_list"> | ... | ... |
... | ... | @@ -0,0 +1,41 @@ |
1 | +Feature: article versioning | |
2 | + As a user | |
3 | + I want to see article versions | |
4 | + In order to be able to change between versions of an article | |
5 | + | |
6 | + Background: | |
7 | + Given the following users | |
8 | + | login | name | | |
9 | + | joaosilva | Joao Silva | | |
10 | + And "joaosilva" has no articles | |
11 | + And the following articles | |
12 | + | owner | name | body | | |
13 | + | joaosilva | Sample Article | This is the first version of the article | | |
14 | + And the article "Sample Article" is updated with | |
15 | + | name | body | | |
16 | + | Edited Article | This is the second version of the article | | |
17 | + And I am logged in as "joaosilva" | |
18 | + | |
19 | + Scenario: display only link for original version | |
20 | + Given the following articles | |
21 | + | owner | name | body | | |
22 | + | joaosilva | One version article | This is the first published article | | |
23 | + And I am on joaosilva's control panel | |
24 | + And I follow "Manage Content" | |
25 | + When I follow "One version article" | |
26 | + Then I should see "r1" within "#article-versions" | |
27 | + And I should not see "r2" within "#article-versions" | |
28 | + | |
29 | + Scenario: display links for versions | |
30 | + Given I am on joaosilva's control panel | |
31 | + And I follow "Manage Content" | |
32 | + When I follow "Edited Article" | |
33 | + Then I should see "r1" within "#article-versions" | |
34 | + And I should see "r2" within "#article-versions" | |
35 | + | |
36 | + Scenario: display links for versions | |
37 | + Given I am on joaosilva's control panel | |
38 | + And I follow "Manage Content" | |
39 | + And I follow "Edited Article" | |
40 | + When I follow "r2" within "#article-versions" | |
41 | + Then I should see "This is the first version of the article" within ".article-body" | ... | ... |
features/step_definitions/noosfero_steps.rb
... | ... | @@ -687,6 +687,14 @@ Given /^the article "([^\"]*)" is updated by "([^\"]*)"$/ do |article, person| |
687 | 687 | a.save! |
688 | 688 | end |
689 | 689 | |
690 | +Given /^the article "([^\"]*)" is updated with$/ do |article, table| | |
691 | + a = Article.find_by_name article | |
692 | + | |
693 | + row = table.hashes.first | |
694 | + | |
695 | + a.update_attributes(row) | |
696 | +end | |
697 | + | |
690 | 698 | Given /^the cache is turned (on|off)$/ do |state| |
691 | 699 | ActionController::Base.perform_caching = (state == 'on') |
692 | 700 | end | ... | ... |
test/functional/content_viewer_controller_test.rb
... | ... | @@ -369,6 +369,26 @@ class ContentViewerControllerTest < ActionController::TestCase |
369 | 369 | assert_redirected_to :host => p.default_hostname, :controller => 'content_viewer', :action => 'view_page', :profile => p.identifier, :page => a2.explode_path |
370 | 370 | end |
371 | 371 | |
372 | + should "display current article's versions" do | |
373 | + page = profile.articles.create!(:name => 'myarticle', :body => 'test article') | |
374 | + page.body = 'test article edited'; page.save | |
375 | + | |
376 | + get :view_page, :profile => profile.identifier, :page => [ 'myarticle' ] | |
377 | + assert_tag :tag => 'div', :attributes => { :id => 'article-versions' }, :descendant => { | |
378 | + :tag => 'a', | |
379 | + :attributes => { :href => "http://#{profile.environment.default_hostname}/#{profile.identifier}/#{page.path}?rev=1" } | |
380 | + } | |
381 | + end | |
382 | + | |
383 | + should "fetch correct article version" do | |
384 | + page = profile.articles.create!(:name => 'myarticle', :body => 'test article') | |
385 | + page.body = 'test article edited'; page.save | |
386 | + | |
387 | + get :view_page, :profile => profile.identifier, :page => [ 'myarticle' ], :rev => 1 | |
388 | + | |
389 | + assert_equal 1, assigns(:page).version | |
390 | + end | |
391 | + | |
372 | 392 | should 'not return an article of a different user' do |
373 | 393 | p1 = create_user('test_user').person |
374 | 394 | a = p1.articles.create!(:name => 'old-name') | ... | ... |