From 5097babfaaf6b163e2e744a86bf7975a8f4ddaad Mon Sep 17 00:00:00 2001 From: Albert Yi Date: Mon, 22 Oct 2018 10:30:45 -0700 Subject: [PATCH] add opt out for mixpanel tracking --- app/controllers/users_controller.rb | 2 +- app/javascript/packs/application.js | 2 +- app/javascript/src/javascripts/mixpanel.js | 27 ++++++++++++++++++++++ app/models/user.rb | 1 + app/views/layouts/default.html.erb | 8 +++++++ app/views/user_upgrades/new.html.erb | 8 +++++++ app/views/users/_upgrade_notice.html.erb | 15 +++++++++++- app/views/users/edit.html.erb | 2 ++ 8 files changed, 62 insertions(+), 3 deletions(-) create mode 100644 app/javascript/src/javascripts/mixpanel.js diff --git a/app/controllers/users_controller.rb b/app/controllers/users_controller.rb index f796cec7d..3e51a5936 100644 --- a/app/controllers/users_controller.rb +++ b/app/controllers/users_controller.rb @@ -96,7 +96,7 @@ class UsersController < ApplicationController disable_categorized_saved_searches disable_tagged_filenames enable_recent_searches disable_cropped_thumbnails disable_mobile_gestures enable_safe_mode disable_responsive_mode disable_post_tooltips - enable_recommended_posts + enable_recommended_posts opt_out_mixpanel ] permitted_params += [dmail_filter_attributes: %i[id words]] diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js index b0332e120..092cb13b2 100644 --- a/app/javascript/packs/application.js +++ b/app/javascript/packs/application.js @@ -43,4 +43,4 @@ export { default as Shortcuts } from '../src/javascripts/shortcuts.js'; export { default as Upload } from '../src/javascripts/uploads.js'; export { default as Utility } from '../src/javascripts/utility.js'; export { default as Ugoira } from '../src/javascripts/ugoira.js'; - +export { mixpanelInit, mixpanelEvent } from '../src/javascripts/mixpanel.js'; diff --git a/app/javascript/src/javascripts/mixpanel.js b/app/javascript/src/javascripts/mixpanel.js new file mode 100644 index 000000000..98122ac03 --- /dev/null +++ b/app/javascript/src/javascripts/mixpanel.js @@ -0,0 +1,27 @@ +const mixpanelInit = (user_id, session_id, opt_out, user_data) => { + if (typeof window.mixpanel !== "object") { + return; + } + + if (user_id) { + window.mixpanel.identify(user_id); + + if (opt_out) { + window.mixpanel.opt_out_tracking(); + } else { + window.mixpanel.people.set(user_data); + } + } else if (session_id) { + window.mixpanel.identify("anon:" + session_id); + } +} + +const mixpanelEvent = (title, props) => { + if (typeof window.mixpanel !== "object") { + return; + } + + window.mixpanel.track(title, props); +} + +export { mixpanelInit, mixpanelEvent }; diff --git a/app/models/user.rb b/app/models/user.rb index 5f5d3eeef..5630123b0 100644 --- a/app/models/user.rb +++ b/app/models/user.rb @@ -60,6 +60,7 @@ class User < ApplicationRecord disable_responsive_mode disable_post_tooltips enable_recommended_posts + opt_out_mixpanel ) include Danbooru::HasBitFlags diff --git a/app/views/layouts/default.html.erb b/app/views/layouts/default.html.erb index 235b58e4c..300ceaaa5 100644 --- a/app/views/layouts/default.html.erb +++ b/app/views/layouts/default.html.erb @@ -84,6 +84,14 @@ $(window).trigger("danbooru:error", msg); } + <%= tag.body **body_attributes(CurrentUser.user) do %> diff --git a/app/views/user_upgrades/new.html.erb b/app/views/user_upgrades/new.html.erb index 79ee09754..abe43fc8e 100644 --- a/app/views/user_upgrades/new.html.erb +++ b/app/views/user_upgrades/new.html.erb @@ -120,3 +120,11 @@ <% content_for(:page_title) do %> Upgrade - <%= Danbooru.config.app_name %> <% end %> + +<% content_for(:html_header) do %> + +<% end %> diff --git a/app/views/users/_upgrade_notice.html.erb b/app/views/users/_upgrade_notice.html.erb index f6e8f6141..93e36d551 100644 --- a/app/views/users/_upgrade_notice.html.erb +++ b/app/views/users/_upgrade_notice.html.erb @@ -1,4 +1,17 @@
-

<%= link_to "Upgrade your account for only $20!", new_user_upgrade_path %>

+

<%= link_to "Upgrade your account for only $20!", new_user_upgrade_path, id: "goto-upgrade-account" %>

<%= link_to "No thanks", "#", :id => "hide-upgrade-account-notice" %>

+ +<%= content_for(:html_header) do %> + +<% end %> \ No newline at end of file diff --git a/app/views/users/edit.html.erb b/app/views/users/edit.html.erb index 6764c12ef..34a084a47 100644 --- a/app/views/users/edit.html.erb +++ b/app/views/users/edit.html.erb @@ -97,6 +97,8 @@ <%= f.input :disable_responsive_mode, :as => :select, :collection => [["No", "false"], ["Yes", "true"]], :include_blank => false, :hint => "Disable alternative layout for mobile and tablet" %> + <%= f.input :opt_out_mixpanel, :as => :select, :collection => [["No", "false"], "Yes", "true"]], :include_blank => false, :hint => "Opt out of MixPanel tracking" %> + <%= f.input :custom_style, :label => "Custom CSS style".html_safe, :hint => "Style to apply to the whole site.", :input_html => {:size => "40x5"} %>