diff --git a/app/controllers/application_controller.rb b/app/controllers/application_controller.rb
index a0914606..124591fe 100644
--- a/app/controllers/application_controller.rb
+++ b/app/controllers/application_controller.rb
@@ -23,7 +23,8 @@ def set_settings
sentry_dsn: ENV.fetch('PHOTONIA_FE_SENTRY_DSN', ''),
sentry_sample_rate: ENV.fetch('PHOTONIA_FE_SENTRY_SAMPLE_RATE', 0.1).to_f,
site_name: Setting.site_name,
- site_description: Setting.site_description
+ site_description: Setting.site_description,
+ site_tracking_code: Setting.site_tracking_code
}.to_json
end
diff --git a/app/graphql/types/admin_settings_type.rb b/app/graphql/types/admin_settings_type.rb
index b7c6c23c..571ac202 100644
--- a/app/graphql/types/admin_settings_type.rb
+++ b/app/graphql/types/admin_settings_type.rb
@@ -6,5 +6,6 @@ class AdminSettingsType < Types::BaseObject
description 'Admin Settings'
field :site_name, String, null: false
field :site_description, String, null: false
+ field :site_tracking_code, String, null: false
end
end
diff --git a/app/graphql/types/mutation_type.rb b/app/graphql/types/mutation_type.rb
index 2250f9ae..8a0d3cbc 100644
--- a/app/graphql/types/mutation_type.rb
+++ b/app/graphql/types/mutation_type.rb
@@ -65,6 +65,7 @@ class MutationType < GraphQL::Schema::Object
description 'Update admin settings'
argument :site_name, String, 'Site name', required: true
argument :site_description, String, 'Site description', required: true
+ argument :site_tracking_code, String, 'Site tracking code', required: true
end
def add_photos_to_album(album_id:, photo_ids:)
@@ -166,10 +167,11 @@ def update_user_settings(email:, timezone:)
user
end
- def update_admin_settings(site_name:, site_description:)
+ def update_admin_settings(site_name:, site_description:, site_tracking_code:)
context[:authorize].call(Setting, :update?)
Setting.site_name = site_name
Setting.site_description = site_description
+ Setting.site_tracking_code = site_tracking_code
Setting
end
end
diff --git a/app/javascript/users/admin-settings.vue b/app/javascript/users/admin-settings.vue
index 40340acf..3f9df847 100644
--- a/app/javascript/users/admin-settings.vue
+++ b/app/javascript/users/admin-settings.vue
@@ -40,6 +40,22 @@
+
+
+
+
+
+
@@ -85,6 +101,7 @@ useTitle("Admin Settings");
const newSiteName = ref(null);
const newSiteDescription = ref(null);
+const newSiteTrackingCode = ref("");
const showReloadButton = ref(false);
const ADMIN_SETTINGS_QUERY = gql`
@@ -92,6 +109,7 @@ const ADMIN_SETTINGS_QUERY = gql`
adminSettings {
siteName
siteDescription
+ siteTrackingCode
}
}
`;
@@ -110,6 +128,12 @@ const siteDescription = computed({
newSiteDescription.value = value;
},
});
+const siteTrackingCode = computed({
+ get: () => result.value?.adminSettings.siteTrackingCode,
+ set: (value) => {
+ newSiteTrackingCode.value = value;
+ },
+});
const {
mutate: submit,
@@ -117,13 +141,19 @@ const {
onError,
} = useMutation(
gql`
- mutation ($siteName: String!, $siteDescription: String!) {
+ mutation (
+ $siteName: String!
+ $siteDescription: String!
+ $siteTrackingCode: String!
+ ) {
updateAdminSettings(
siteName: $siteName
siteDescription: $siteDescription
+ siteTrackingCode: $siteTrackingCode
) {
siteName
siteDescription
+ siteTrackingCode
}
}
`,
@@ -131,6 +161,7 @@ const {
variables: {
siteName: newSiteName.value || siteName.value,
siteDescription: newSiteDescription.value || siteDescription.value,
+ siteTrackingCode: newSiteTrackingCode.value,
},
update: (cache, { data }) => {
cache.writeQuery({
@@ -140,7 +171,7 @@ const {
},
});
},
- })
+ }),
);
onDone(({ data }) => {
diff --git a/app/models/setting.rb b/app/models/setting.rb
index b51ae397..764b08f1 100644
--- a/app/models/setting.rb
+++ b/app/models/setting.rb
@@ -25,6 +25,5 @@ class Setting < RailsSettings::Base
field :site_name, default: "Photonia", type: :string
field :site_description, default: "Photonia is a photo sharing site.", type: :string
-
- field :tracking_code, default: ENV['PHOTONIA_TRACKING_CODE'], type: :string
+ field :site_tracking_code, default: ENV['PHOTONIA_TRACKING_CODE'] || "", type: :string
end
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
index af8e2261..0422e9a6 100644
--- a/app/views/layouts/application.html.erb
+++ b/app/views/layouts/application.html.erb
@@ -13,7 +13,7 @@
- <%= ENV['PHOTONIA_TRACKING_CODE']&.html_safe %>
+ <%= Setting.site_tracking_code.html_safe %>
<%= yield(:autodiscovery_link) %>