diff --git a/app/assets/javascripts/initializers/initializeBaseUserData.js b/app/assets/javascripts/initializers/initializeBaseUserData.js index 843c0ed66..d9a534dc4 100644 --- a/app/assets/javascripts/initializers/initializeBaseUserData.js +++ b/app/assets/javascripts/initializers/initializeBaseUserData.js @@ -13,7 +13,9 @@ function addRelevantButtonsToArticle(user) { articleContainer.dataset.buttonsInitialized !== 'true' ) { let actions = []; + const published = JSON.parse(articleContainer.dataset.published); + const scheduled = JSON.parse(articleContainer.dataset.scheduled); if (parseInt(articleContainer.dataset.authorId, 10) === user.id) { actions.push( @@ -25,9 +27,9 @@ function addRelevantButtonsToArticle(user) { clickToEditButton.style.display = 'inline-block'; } - if (published === true) { + if (published === true && !scheduled) { actions.push( - `Manage`, + `Manage`, ); } diff --git a/app/models/article.rb b/app/models/article.rb index 9489661a7..537a8969a 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -443,7 +443,7 @@ class Article < ApplicationRecord end def scheduled? - published_at.future? + published_at? && published_at.future? end def search_id diff --git a/app/views/articles/show.html.erb b/app/views/articles/show.html.erb index 1c9a602c4..d111557c3 100644 --- a/app/views/articles/show.html.erb +++ b/app/views/articles/show.html.erb @@ -90,6 +90,7 @@ data-pin-path="<%= stories_feed_pinned_article_path %>" data-pinned-article-id="<%= @pinned_article_id %>" data-published="<%= @article.published? %>" + data-scheduled="<%= @article.scheduled? %>" <%= @article.pinned? ? "data-pinned" : " " %>>
<% if @article.video.present? %> diff --git a/spec/system/articles/user_visits_an_article_spec.rb b/spec/system/articles/user_visits_an_article_spec.rb index 0ea532ee6..5e856a332 100644 --- a/spec/system/articles/user_visits_an_article_spec.rb +++ b/spec/system/articles/user_visits_an_article_spec.rb @@ -150,6 +150,11 @@ RSpec.describe "Views an article", type: :system do expect(edit_link.matches_style?(display: "inline-block")).to be true end + it "doesn't show the article manage link, even for the author", js: true do + visit scheduled_article_path + expect(page).to have_no_link("article-action-space-manage") + end + it "doesn't show an article edit link for the non-authorized user" do sign_out user sign_in create(:user)