From d447d0cadf0aa5ce806fc6a2cc7e698d7251b9e4 Mon Sep 17 00:00:00 2001 From: Ben Halpern Date: Sun, 26 Apr 2020 18:27:09 -0400 Subject: [PATCH] [deploy] Update design and functionality of internal/articles (#7517) * Update design and functionality of internal/articles * Fix spec * Update specs * Fiddle with test * Fix request spec --- .../internal/articles_controller.rb | 3 + .../internal/buffer_updates_controller.rb | 9 +- .../controllers/article_controller.js | 2 +- app/labor/bufferizer.rb | 15 +- app/models/buffer_update.rb | 7 +- .../articles/_image_upload_script.html.erb | 32 --- .../articles/_individual_article.html.erb | 259 +++++++----------- app/views/internal/articles/index.html.erb | 118 ++++---- spec/labor/bufferizer_spec.rb | 19 +- spec/requests/internal/buffer_updates_spec.rb | 7 + 10 files changed, 215 insertions(+), 256 deletions(-) diff --git a/app/controllers/internal/articles_controller.rb b/app/controllers/internal/articles_controller.rb index 7df821dae..17f04bc05 100644 --- a/app/controllers/internal/articles_controller.rb +++ b/app/controllers/internal/articles_controller.rb @@ -7,6 +7,7 @@ class Internal::ArticlesController < Internal::ApplicationController def index @pending_buffer_updates = BufferUpdate.where(status: "pending").includes(:article) + @user_buffer_updates = BufferUpdate.where(status: "sent_direct", approver_user_id: current_user.id).where("created_at > ?", 24.hours.ago) case params[:state] when /not\-buffered/ @@ -17,6 +18,8 @@ class Internal::ArticlesController < Internal::ApplicationController @articles = articles_top(months_ago) when "satellite" @articles = articles_satellite + when "satellite-not-bufffered" + @articles = articles_satellite.where(last_buffered: nil) when "boosted-additional-articles" @articles = articles_boosted_additional when "chronological" diff --git a/app/controllers/internal/buffer_updates_controller.rb b/app/controllers/internal/buffer_updates_controller.rb index 196744b60..dedfcc25c 100644 --- a/app/controllers/internal/buffer_updates_controller.rb +++ b/app/controllers/internal/buffer_updates_controller.rb @@ -6,18 +6,19 @@ class Internal::BufferUpdatesController < Internal::ApplicationController tweet = params[:tweet] listing_id = params[:listing_id] listing = ClassifiedListing.find(params[:listing_id]) if listing_id.present? + article&.update(featured: true) case params[:social_channel] when "main_twitter" - Bufferizer.new("article", article, tweet).main_tweet! + Bufferizer.new("article", article, tweet, current_user.id).main_tweet! render body: nil when "satellite_twitter" - Bufferizer.new("article", article, tweet).satellite_tweet! + Bufferizer.new("article", article, tweet, current_user.id).satellite_tweet! render body: nil when "facebook" - Bufferizer.new("article", article, fb_post).facebook_post! + Bufferizer.new("article", article, fb_post, current_user.id).facebook_post! render body: nil when "listings_twitter" - Bufferizer.new("listing", listing, tweet).listings_tweet! + Bufferizer.new("listing", listing, tweet, current_user.id).listings_tweet! render body: nil end end diff --git a/app/javascript/internal/controllers/article_controller.js b/app/javascript/internal/controllers/article_controller.js index e5fa340ce..b31549391 100644 --- a/app/javascript/internal/controllers/article_controller.js +++ b/app/javascript/internal/controllers/article_controller.js @@ -6,7 +6,7 @@ export default class ArticleController extends Controller { increaseFeaturedNumber() { // Increases the article's chances of being seen const seconds = new Date().getTime() / 1000; - this.featuredNumberTarget.value = Math.round(seconds); + this.featuredNumberTarget.value = (Math.round(seconds) + 300); } decreaseFeaturedNumber() { diff --git a/app/labor/bufferizer.rb b/app/labor/bufferizer.rb index de0fc4973..38c104e44 100644 --- a/app/labor/bufferizer.rb +++ b/app/labor/bufferizer.rb @@ -2,30 +2,35 @@ class Bufferizer attr_accessor :post_type, :post, :text include ApplicationHelper - def initialize(post_type, post, text) + def initialize(post_type, post, text, admin_id = nil) if post_type == "article" @article = post else @listing = post end @text = text + @admin_id = admin_id end def satellite_tweet! @article.tags.find_each do |tag| - BufferUpdate.buff!(@article.id, twitter_buffer_text, tag.buffer_profile_id_code, "twitter", tag.id) if tag.buffer_profile_id_code.present? + next if tag.buffer_profile_id_code.blank? + + text = twitter_buffer_text + text = text.gsub(" #DEVCommunity", " #DEVCommunity ##{tag.name}") if text.length < 250 + BufferUpdate.buff!(@article.id, text, tag.buffer_profile_id_code, "twitter", tag.id, @admin_id) end @article.update(last_buffered: Time.current) end def main_tweet! - BufferUpdate.buff!(@article.id, twitter_buffer_text, ApplicationConfig["BUFFER_TWITTER_ID"], "twitter", nil) + BufferUpdate.buff!(@article.id, twitter_buffer_text, ApplicationConfig["BUFFER_TWITTER_ID"], "twitter", nil, @admin_id) @article.update(last_buffered: Time.current) end def facebook_post! - BufferUpdate.buff!(@article.id, fb_buffer_text, ApplicationConfig["BUFFER_FACEBOOK_ID"], "facebook") - BufferUpdate.buff!(@article.id, fb_buffer_text + social_tags, ApplicationConfig["BUFFER_LINKEDIN_ID"], "linkedin") + BufferUpdate.buff!(@article.id, fb_buffer_text, ApplicationConfig["BUFFER_FACEBOOK_ID"], "facebook", @admin_id) + BufferUpdate.buff!(@article.id, fb_buffer_text + social_tags, ApplicationConfig["BUFFER_LINKEDIN_ID"], "linkedin", @admin_id) @article.update(facebook_last_buffered: Time.current) end diff --git a/app/models/buffer_update.rb b/app/models/buffer_update.rb index 050a3c5de..27eaead9f 100644 --- a/app/models/buffer_update.rb +++ b/app/models/buffer_update.rb @@ -5,12 +5,13 @@ class BufferUpdate < ApplicationRecord validate :validate_body_text_recent_uniqueness validates :status, inclusion: { in: %w[pending sent_direct confirmed dismissed] } - def self.buff!(article_id, text, buffer_profile_id_code, social_service_name = "twitter", tag_id = nil) + def self.buff!(article_id, text, buffer_profile_id_code, social_service_name = "twitter", tag_id = nil, admin_id = nil) buffer_response = send_to_buffer(text, buffer_profile_id_code) create( article_id: article_id, tag_id: tag_id, body_text: text, + approver_user_id: admin_id, buffer_profile_id_code: buffer_profile_id_code, social_service_name: social_service_name, buffer_response: buffer_response, @@ -41,6 +42,10 @@ class BufferUpdate < ApplicationRecord ) end + def self.twitter_default_text(article) + "#{article.title}\n\n#{"{ author: @#{article.user.twitter_username} } #DEVCommunity" if article.user.twitter_username?}".strip + end + private def validate_body_text_recent_uniqueness diff --git a/app/views/internal/articles/_image_upload_script.html.erb b/app/views/internal/articles/_image_upload_script.html.erb index 09e215312..e148d24dd 100644 --- a/app/views/internal/articles/_image_upload_script.html.erb +++ b/app/views/internal/articles/_image_upload_script.html.erb @@ -1,37 +1,5 @@