From 2d5ea61b7859df5247fb98857bb1fed76ae37f08 Mon Sep 17 00:00:00 2001 From: Sylvain Jermini Date: Wed, 19 Jun 2019 10:33:35 +0200 Subject: [PATCH] initial work for goog analytics #657 --- .../api/v2/model/EventWithAdditionalInfo.java | 13 +++++++++++++ .../api/v2/user/EventApiV2Controller.java | 16 +++++++++++----- src/main/java/alfio/util/TemplateResource.java | 4 +++- .../alfio/templates/google-analytics.ms | 9 --------- 4 files changed, 27 insertions(+), 15 deletions(-) delete mode 100644 src/main/resources/alfio/templates/google-analytics.ms diff --git a/src/main/java/alfio/controller/api/v2/model/EventWithAdditionalInfo.java b/src/main/java/alfio/controller/api/v2/model/EventWithAdditionalInfo.java index 439e166861..5cbdd64f88 100644 --- a/src/main/java/alfio/controller/api/v2/model/EventWithAdditionalInfo.java +++ b/src/main/java/alfio/controller/api/v2/model/EventWithAdditionalInfo.java @@ -63,6 +63,8 @@ public class EventWithAdditionalInfo implements DateValidity { private final PromotionsConfiguration promotionsConfiguration; // + private final AnalyticsConfiguration analyticsConfiguration; + public String getShortName() { return event.getShortName(); } @@ -186,6 +188,10 @@ public PromotionsConfiguration getPromotionsConfiguration() { return promotionsConfiguration; } + public AnalyticsConfiguration getAnalyticsConfiguration() { + return analyticsConfiguration; + } + @AllArgsConstructor @Getter public static class PaymentProxyWithParameters { @@ -227,4 +233,11 @@ public static class PromotionsConfiguration { private final boolean hasAccessPromotions; private final boolean usePartnerCode; } + + @AllArgsConstructor + @Getter + public static class AnalyticsConfiguration { + private final String googleAnalyticsKey; + private final boolean googleAnalyticsScrambledInfo; //<- see GOOGLE_ANALYTICS_ANONYMOUS_MODE + } } diff --git a/src/main/java/alfio/controller/api/v2/user/EventApiV2Controller.java b/src/main/java/alfio/controller/api/v2/user/EventApiV2Controller.java index 48edec98ff..eedd601ca1 100644 --- a/src/main/java/alfio/controller/api/v2/user/EventApiV2Controller.java +++ b/src/main/java/alfio/controller/api/v2/user/EventApiV2Controller.java @@ -138,7 +138,9 @@ public ResponseEntity getEvent(@PathVariable("eventName ENABLE_ATTENDEE_AUTOCOMPLETE, ENABLE_TICKET_TRANSFER, DISPLAY_DISCOUNT_CODE_BOX, - USE_PARTNER_CODE_INSTEAD_OF_PROMOTIONAL + USE_PARTNER_CODE_INSTEAD_OF_PROMOTIONAL, + GOOGLE_ANALYTICS_KEY, + GOOGLE_ANALYTICS_ANONYMOUS_MODE )); var geoInfoConfiguration = Map.of( @@ -177,9 +179,6 @@ public ResponseEntity getEvent(@PathVariable("eventName var formattedEndDate = Formatters.getFormattedDate(event, event.getEnd(), "common.event.date-format", messageSource); var formattedEndTime = Formatters.getFormattedDate(event, event.getEnd(), "common.event.time-format", messageSource); - - var partialConfig = Configuration.from(event); - //invoicing information boolean canGenerateReceiptOrInvoiceToCustomer = configurationManager.canGenerateReceiptOrInvoiceToCustomer(event); boolean euVatCheckingEnabled = vatChecker.isReverseChargeEnabledFor(event.getOrganizationId()); @@ -210,10 +209,17 @@ public ResponseEntity getEvent(@PathVariable("eventName var promoConf = new EventWithAdditionalInfo.PromotionsConfiguration(hasAccessPromotions, usePartnerCode); // + //analytics configuration + var googAnalyticsKey = configurationsValues.get(GOOGLE_ANALYTICS_KEY).getValueOrDefault(null); + var googAnalyticsScrambled = configurationsValues.get(GOOGLE_ANALYTICS_ANONYMOUS_MODE).getValueAsBooleanOrDefault(true); + var analyticsConf = new EventWithAdditionalInfo.AnalyticsConfiguration(googAnalyticsKey, googAnalyticsScrambled); + // + return new ResponseEntity<>(new EventWithAdditionalInfo(event, ld.getMapUrl(), organization, descriptions, availablePaymentMethods, bankAccount, bankAccountOwner, formattedBeginDate, formattedBeginTime, - formattedEndDate, formattedEndTime, invoicingConf, captchaConf, assignmentConf, promoConf), getCorsHeaders(), HttpStatus.OK); + formattedEndDate, formattedEndTime, + invoicingConf, captchaConf, assignmentConf, promoConf, analyticsConf), getCorsHeaders(), HttpStatus.OK); }) .orElseGet(() -> ResponseEntity.notFound().headers(getCorsHeaders()).build()); } diff --git a/src/main/java/alfio/util/TemplateResource.java b/src/main/java/alfio/util/TemplateResource.java index ae6c787a58..88fdf69051 100644 --- a/src/main/java/alfio/util/TemplateResource.java +++ b/src/main/java/alfio/util/TemplateResource.java @@ -37,7 +37,9 @@ public enum TemplateResource { - GOOGLE_ANALYTICS("/alfio/templates/google-analytics.ms", false, "text/plain", TemplateManager.TemplateOutput.TEXT), + + @Deprecated + GOOGLE_ANALYTICS("", false, "", TemplateManager.TemplateOutput.TEXT), CONFIRMATION_EMAIL_FOR_ORGANIZER("/alfio/templates/confirmation-email-for-organizer-txt.ms", true, "text/plain", TemplateManager.TemplateOutput.TEXT) { @Override diff --git a/src/main/resources/alfio/templates/google-analytics.ms b/src/main/resources/alfio/templates/google-analytics.ms deleted file mode 100644 index af4d6bfe8f..0000000000 --- a/src/main/resources/alfio/templates/google-analytics.ms +++ /dev/null @@ -1,9 +0,0 @@ -function submitPageView() { - if(window.ga) { - ga('create', '{{account}}', {'anonymizeIp': true, 'storage': 'none', 'clientId': '{{clientId}}'}); - ga('send', 'pageview'); - } else { - window.setTimeout(submitPageView, 50); - } -}; -window.setTimeout(submitPageView, 50);