Feature - Google Analytics - Addressing PR Comments.

This commit is contained in:
c 2023-01-10 20:25:45 +00:00
parent 29e24e0de9
commit 99c0b8cb71
5 changed files with 21 additions and 12 deletions

View File

@ -69,7 +69,7 @@ class Database {
"patch-ping-packet-size.sql": true, "patch-ping-packet-size.sql": true,
"patch-maintenance-table2.sql": true, "patch-maintenance-table2.sql": true,
"patch-add-gamedig-monitor.sql": true, "patch-add-gamedig-monitor.sql": true,
"patch-add-google-analytics-status-page-tag.sql": true "patch-add-google-analytics-status-page-tag.sql": true,
}; };
/** /**

View File

@ -4,6 +4,7 @@ const cheerio = require("cheerio");
const { UptimeKumaServer } = require("../uptime-kuma-server"); const { UptimeKumaServer } = require("../uptime-kuma-server");
const jsesc = require("jsesc"); const jsesc = require("jsesc");
const Maintenance = require("./maintenance"); const Maintenance = require("./maintenance");
const googleAnalytics = require("../modules/google-analytics");
class StatusPage extends BeanModel { class StatusPage extends BeanModel {
@ -53,6 +54,12 @@ class StatusPage extends BeanModel {
const head = $("head"); const head = $("head");
await StatusPage.getStatusPageData(statusPage).then( (page) => {
if (page.config?.googleAnalyticsId) {
head.append($(googleAnalytics.getGoogleAnalyticsScript(page.config.googleAnalyticsId)));
}
});
// OG Meta Tags // OG Meta Tags
head.append(`<meta property="og:title" content="${statusPage.title}" />`); head.append(`<meta property="og:title" content="${statusPage.title}" />`);
head.append(`<meta property="og:description" content="${description155}" />`); head.append(`<meta property="og:description" content="${description155}" />`);
@ -225,7 +232,7 @@ class StatusPage extends BeanModel {
customCSS: this.custom_css, customCSS: this.custom_css,
footerText: this.footer_text, footerText: this.footer_text,
showPoweredBy: !!this.show_powered_by, showPoweredBy: !!this.show_powered_by,
googleAnalyticsId: this.google_analytics_tag_id googleAnalyticsId: this.google_analytics_tag_id,
}; };
} }
@ -246,7 +253,7 @@ class StatusPage extends BeanModel {
customCSS: this.custom_css, customCSS: this.custom_css,
footerText: this.footer_text, footerText: this.footer_text,
showPoweredBy: !!this.show_powered_by, showPoweredBy: !!this.show_powered_by,
googleAnalyticsId: this.google_analytics_tag_id googleAnalyticsId: this.google_analytics_tag_id,
}; };
} }

View File

@ -0,0 +1,11 @@
let GoogleAnalytics = (() => {
function getGoogleAnalyticsScript(tagId) {
return "<script async src=\"https://www.googletagmanager.com/gtag/js?id=" + tagId + "\"></script>" +
"<script>window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date());gtag('config', '" + tagId + "'); </script>";
}
return {
getGoogleAnalyticsScript: getGoogleAnalyticsScript
};
})();
module.exports = GoogleAnalytics;

0
src/languages/en.js Normal file
View File

View File

@ -300,15 +300,6 @@
<component is="style" v-if="config.customCSS" type="text/css"> <component is="style" v-if="config.customCSS" type="text/css">
{{ config.customCSS }} {{ config.customCSS }}
</component> </component>
<component :is="'script'" v-if="config.googleAnalyticsId" async :src="'https://www.googletagmanager.com/gtag/js?id=' + config.googleAnalyticsId" />
<component :is="'script'" v-if="config.googleAnalyticsId">
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ config.googleAnalyticsId }}');
</component>
</div> </div>
</template> </template>