diff --git a/app/assets/javascripts/initializers/initializeBaseTracking.js.erb b/app/assets/javascripts/initializers/initializeBaseTracking.js.erb index cdf3a748e..ec445fc3d 100644 --- a/app/assets/javascripts/initializers/initializeBaseTracking.js.erb +++ b/app/assets/javascripts/initializers/initializeBaseTracking.js.erb @@ -130,39 +130,6 @@ function trackCustomImpressions() { var isBot = /bot|google|baidu|bing|msn|duckduckbot|teoma|slurp|yandex/i.test(navigator.userAgent) // is crawler var windowBigEnough = window.innerWidth > 1023 - // Sidebar HTML variant tracking - var stickyNav = document.getElementById('article-show-primary-sticky-nav'); - var sidebarHTMLVariant = document.getElementById('html-variant-article-show-sidebar'); - if (sidebarHTMLVariant && ArticleElement && tokenMeta && !isBot && windowBigEnough) { - var dataBody = { - html_variant_id: sidebarHTMLVariant.dataset.variantId, - article_id: ArticleElement.dataset.articleId, - }; - var csrfToken = tokenMeta.getAttribute('content'); - trackHTMLVariantTrial(dataBody, csrfToken) - var successLinks = stickyNav.querySelectorAll('a,button'); //track all links and button clicks within nav - for(var i = 0; i < successLinks.length; i++) - { - successLinks[i].addEventListener('click', function() { trackHtmlVariantSuccess(dataBody, csrfToken) }); - } - } - - // Below article HTML variant tracking - var belowArticleHTMLVariant = document.getElementById('html-variant-article-show-below-article'); - if (belowArticleHTMLVariant && ArticleElement && tokenMeta && !isBot && windowBigEnough) { - var dataBody = { - html_variant_id: belowArticleHTMLVariant.dataset.variantId, - article_id: ArticleElement.dataset.articleId, - }; - var csrfToken = tokenMeta.getAttribute('content'); - trackHTMLVariantTrial(dataBody, csrfToken) - var successLinks = belowArticleHTMLVariant.querySelectorAll('a,button'); //track all links and button clicks within nav - for(var i = 0; i < successLinks.length; i++) - { - successLinks[i].addEventListener('click', function() { trackHtmlVariantSuccess(dataBody, csrfToken) }); - } - } - // page view if (ArticleElement && tokenMeta && !isBot) { // See https://github.com/forem/forem/blob/main/app/controllers/page_views_controller.rb @@ -197,33 +164,6 @@ function trackCustomImpressions() { }, 1800) } -function trackHTMLVariantTrial(dataBody, csrfToken) { - var randomNumber = Math.floor(Math.random() * 10); // 1 in 10; Only track 1 in 10 impressions - if (randomNumber === 1) { - window.fetch('/html_variant_trials', { - method: 'POST', - headers: { - 'X-CSRF-Token': csrfToken, - 'Content-Type': 'application/json', - }, - body: JSON.stringify(dataBody), - credentials: 'same-origin', - }); - } -} - -function trackHtmlVariantSuccess(dataBody, csrfToken) { - window.fetch('/html_variant_successes', { - method: 'POST', - headers: { - 'X-CSRF-Token': csrfToken, - 'Content-Type': 'application/json', - }, - body: JSON.stringify(dataBody), - credentials: 'same-origin', - }) -} - function trackPageView(dataBody, csrfToken) { window.fetch('/page_views', { method: 'POST', diff --git a/app/controllers/admin/html_variants_controller.rb b/app/controllers/admin/html_variants_controller.rb index 6617cafda..578e6d57c 100644 --- a/app/controllers/admin/html_variants_controller.rb +++ b/app/controllers/admin/html_variants_controller.rb @@ -5,12 +5,10 @@ module Admin def index relation = if params[:state] == "mine" current_user.html_variants.order(created_at: :desc) - elsif params[:state] == "admin" - HtmlVariant.where(published: true, approved: false).order(created_at: :desc) - elsif params[:state].present? - HtmlVariant.where(published: true, approved: true, group: params[:state]).order(success_rate: :desc) + elsif params[:state].present? && params[:state] != "admin" + HtmlVariant.where(published: true, approved: true, group: params[:state]).order(created_at: :desc) else - HtmlVariant.where(published: true, approved: true).order(success_rate: :desc) + HtmlVariant.where(published: true, approved: true).order(created_at: :desc) end @html_variants = relation.includes(:user).page(params[:page]).per(30) diff --git a/app/controllers/html_variant_successes_controller.rb b/app/controllers/html_variant_successes_controller.rb deleted file mode 100644 index 88343cd96..000000000 --- a/app/controllers/html_variant_successes_controller.rb +++ /dev/null @@ -1,8 +0,0 @@ -class HtmlVariantSuccessesController < ApplicationMetalController - include ActionController::Head - - def create - HtmlVariantSuccess.create(html_variant_id: params[:html_variant_id], article_id: params[:article_id]) - head :ok - end -end diff --git a/app/controllers/html_variant_trials_controller.rb b/app/controllers/html_variant_trials_controller.rb deleted file mode 100644 index aeb1a1a4d..000000000 --- a/app/controllers/html_variant_trials_controller.rb +++ /dev/null @@ -1,8 +0,0 @@ -class HtmlVariantTrialsController < ApplicationMetalController - include ActionController::Head - - def create - HtmlVariantTrial.create!(html_variant_id: params[:html_variant_id], article_id: params[:article_id]) - head :ok - end -end diff --git a/app/controllers/pages_controller.rb b/app/controllers/pages_controller.rb index dd916a064..22ed7bfe7 100644 --- a/app/controllers/pages_controller.rb +++ b/app/controllers/pages_controller.rb @@ -23,7 +23,6 @@ class PagesController < ApplicationController end def badge - @html_variant = HtmlVariant.find_for_test([], "badge_landing_page") render layout: false set_surrogate_key_header "badge_page" end diff --git a/app/models/article.rb b/app/models/article.rb index 3e37365ff..0f791081e 100644 --- a/app/models/article.rb +++ b/app/models/article.rb @@ -104,8 +104,6 @@ class Article < ApplicationRecord has_many :context_notifications, as: :context, inverse_of: :context, dependent: :delete_all has_many :context_notifications_published, -> { where(context_notifications: { action: "Published" }) }, as: :context, inverse_of: :context, class_name: "ContextNotification" - has_many :html_variant_successes, dependent: :nullify - has_many :html_variant_trials, dependent: :nullify has_many :notification_subscriptions, as: :notifiable, inverse_of: :notifiable, dependent: :delete_all has_many :notifications, as: :notifiable, inverse_of: :notifiable, dependent: :delete_all has_many :page_views, dependent: :delete_all diff --git a/app/models/html_variant.rb b/app/models/html_variant.rb index 95b450915..4d7bd4282 100644 --- a/app/models/html_variant.rb +++ b/app/models/html_variant.rb @@ -5,15 +5,11 @@ class HtmlVariant < ApplicationRecord belongs_to :user, optional: true - has_many :html_variant_successes, dependent: :destroy - has_many :html_variant_trials, dependent: :destroy - before_validation :strip_whitespace validates :group, inclusion: { in: GROUP_NAMES } validates :html, presence: true validates :name, uniqueness: true - validates :success_rate, presence: true validate :no_edits @@ -21,35 +17,6 @@ class HtmlVariant < ApplicationRecord scope :relevant, -> { where(approved: true, published: true) } - def calculate_success_rate! - # x10 because we only capture every 10th - self.success_rate = html_variant_successes.size.to_f / (html_variant_trials.size * 10.0) - save! - end - - class << self - def find_for_test(tags = [], group = "article_show_below_article_cta") - tags_array = tags + ["", nil] - if rand(10) == 1 # 10% return completely random - find_random_for_test(tags_array, group) - else # 90% chance return one of the top posts - find_top_for_test(tags_array, group) - end - end - - private - - def find_top_for_test(tags_array, group) - where(group: group, approved: true, published: true, target_tag: tags_array) - .order(success_rate: :desc).limit(rand(1..20)).sample - end - - def find_random_for_test(tags_array, group) - where(group: group, approved: true, published: true, target_tag: tags_array) - .order(Arel.sql("RANDOM()")).first - end - end - private def no_edits diff --git a/app/models/html_variant_success.rb b/app/models/html_variant_success.rb deleted file mode 100644 index 93b55353c..000000000 --- a/app/models/html_variant_success.rb +++ /dev/null @@ -1,4 +0,0 @@ -class HtmlVariantSuccess < ApplicationRecord - belongs_to :html_variant - belongs_to :article, optional: true -end diff --git a/app/models/html_variant_trial.rb b/app/models/html_variant_trial.rb deleted file mode 100644 index 468a0530e..000000000 --- a/app/models/html_variant_trial.rb +++ /dev/null @@ -1,4 +0,0 @@ -class HtmlVariantTrial < ApplicationRecord - belongs_to :html_variant - belongs_to :article, optional: true -end diff --git a/app/views/articles/_actions.html.erb b/app/views/articles/_actions.html.erb index 52baac7de..e8b0cda9c 100644 --- a/app/views/articles/_actions.html.erb +++ b/app/views/articles/_actions.html.erb @@ -29,13 +29,13 @@ <% else %> <%= render partial: "articles/reaction_button", - locals: { - category: :unicorn, - description: t("views.reactions.unicorn.title"), - image_path: "unicorn.svg", - image_active_path: "unicorn-filled.svg", - aria_label: t("views.reactions.unicorn.aria_label") - } %> + locals: { + category: :unicorn, + description: t("views.reactions.unicorn.title"), + image_path: "unicorn.svg", + image_active_path: "unicorn-filled.svg", + aria_label: t("views.reactions.unicorn.aria_label") + } %> <% end %> <%= render partial: "articles/reaction_button", @@ -116,14 +116,3 @@ - -<% if !user_signed_in? && @article.body_markdown.size > 900 %> - <% cache("below-article-html-variant-#{rand(20)}", expires_in: 8.hours) do %> - <% @html_variant = HtmlVariant.find_for_test(@article.cached_tag_list_array, "article_show_below_article_cta") %> - <% if @html_variant %> -
