Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/matomo-org/matomo.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSam F <8619576+samjf@users.noreply.github.com>2022-04-07 04:16:34 +0300
committerSam F <8619576+samjf@users.noreply.github.com>2022-04-07 04:16:34 +0300
commitaf6457a8ecf64cd1f3be2fb244e742d961ba1765 (patch)
tree270e4742e5bab0dbd64dc28bcc794dae203b0e83
parentc2900fe591dd28967c12e749b8f19081c0636c09 (diff)
parent97a28604e894d380d20bbc52455cd0d33eaff081 (diff)
Merge remote-tracking branch 'origin/D2584-add-hostname-to-error-logs' into D2584-add-hostname-to-error-logsD2584-add-hostname-to-error-logs
-rw-r--r--config/environment/ui-test.php25
-rw-r--r--[-rwxr-xr-x]config/global.ini.php0
-rw-r--r--config/global.php51
-rw-r--r--core/Archive.php152
-rw-r--r--core/Archive/ArchiveInvalidator.php41
-rw-r--r--core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php33
-rw-r--r--core/ExceptionHandler.php11
-rw-r--r--core/Period/Range.php2
-rw-r--r--[-rwxr-xr-x]core/Tracker/Response.php0
-rw-r--r--core/Twig.php4
-rw-r--r--core/Version.php2
-rw-r--r--core/testMinimumPhpVersion.php9
-rw-r--r--js/piwik.js32
-rw-r--r--js/piwik.min.js28
-rw-r--r--lang/ca.json2
-rw-r--r--lang/de.json2
-rw-r--r--lang/el.json2
-rw-r--r--lang/id.json276
-rw-r--r--lang/nb.json2
-rw-r--r--lang/pt-br.json2
-rw-r--r--lang/si.json7
-rw-r--r--lang/sv.json10
-rw-r--r--lang/tr.json2
-rw-r--r--matomo.js28
-rw-r--r--[-rwxr-xr-x]misc/cron/archive.sh0
-rw-r--r--[-rwxr-xr-x]node_modules/materialize-css/js/timepicker.js0
-rw-r--r--package-lock.json13
-rw-r--r--package.json1
-rw-r--r--piwik.js28
-rw-r--r--plugins/API/API.php2
-rw-r--r--plugins/API/lang/ga.json1
-rw-r--r--plugins/API/lang/id.json6
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_revenueAbandonedCart__API.getSuggestedValuesForSegment.xml2
-rw-r--r--plugins/API/tests/System/expected/test_AutoSuggestAPITest_revenueOrder__API.getSuggestedValuesForSegment.xml2
-rw-r--r--plugins/Actions/lang/id.json50
-rw-r--r--plugins/Actions/tests/System/ApiInvalidParameterTypeTest.php80
-rw-r--r--plugins/Annotations/lang/ga.json1
-rw-r--r--plugins/Contents/lang/ga.json1
-rw-r--r--plugins/Contents/lang/id.json21
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_Contents.getContentNames_lastN__API.getProcessedReport_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_Contents.getContentPieces_lastN__API.getProcessedReport_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_month.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_month.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_month.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Actions.getPageUrls_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentNames_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentPieces_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Live.getLastVisitsDetails_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Actions.getPageUrls_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentNames_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentPieces_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Live.getLastVisitsDetails_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Actions.getPageUrls_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentNames_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentPieces_day.xml0
-rw-r--r--[-rwxr-xr-x]plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Live.getLastVisitsDetails_day.xml0
-rw-r--r--plugins/CoreAdminHome/lang/de.json1
-rw-r--r--plugins/CoreAdminHome/lang/fr.json1
-rw-r--r--plugins/CoreAdminHome/lang/ga.json1
-rw-r--r--plugins/CoreAdminHome/lang/id.json164
-rw-r--r--plugins/CoreAdminHome/lang/pt-br.json1
-rw-r--r--plugins/CoreAdminHome/lang/tr.json1
-rw-r--r--plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js186
-rw-r--r--plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js12
-rw-r--r--plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue4
-rw-r--r--plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue2
-rw-r--r--plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue4
-rw-r--r--plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue14
-rw-r--r--plugins/CoreHome/Columns/ServerMinute.php2
-rw-r--r--plugins/CoreHome/Columns/ServerTime.php2
-rw-r--r--plugins/CoreHome/Columns/VisitFirstActionMinute.php2
-rw-r--r--plugins/CoreHome/Columns/VisitFirstActionTime.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionDate.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionDayOfMonth.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionDayOfWeek.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionDayOfYear.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionMinute.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionMonth.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionQuarter.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionSecond.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionTime.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionWeekOfYear.php2
-rw-r--r--plugins/CoreHome/Columns/VisitLastActionYear.php2
-rw-r--r--plugins/CoreHome/javascripts/broadcast.js15
-rw-r--r--plugins/CoreHome/lang/fr.json10
-rw-r--r--plugins/CoreHome/lang/ga.json1
-rw-r--r--plugins/CoreHome/lang/hi.json16
-rw-r--r--plugins/CoreHome/lang/id.json120
-rw-r--r--plugins/CoreHome/lang/nb.json31
-rw-r--r--plugins/CoreHome/lang/sv.json2
-rw-r--r--plugins/CoreHome/lang/tr.json2
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.js51
-rw-r--r--plugins/CoreHome/vue/dist/CoreHome.umd.min.js4
-rw-r--r--plugins/CoreHome/vue/src/Progressbar/Progressbar.vue2
-rw-r--r--plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue4
-rw-r--r--plugins/CorePluginsAdmin/lang/ga.json1
-rw-r--r--plugins/CorePluginsAdmin/lang/id.json99
-rw-r--r--plugins/CorePluginsAdmin/lang/nb.json19
-rw-r--r--plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js87
-rw-r--r--plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js16
-rw-r--r--plugins/CorePluginsAdmin/vue/src/Field/Field.vue6
-rw-r--r--plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue4
-rw-r--r--plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue15
-rw-r--r--plugins/CoreUpdater/lang/ga.json1
-rw-r--r--plugins/CoreUpdater/lang/id.json101
-rw-r--r--plugins/CoreUpdater/templates/updateSuccess.twig2
-rw-r--r--plugins/CoreVue/Commands/Build.php72
-rw-r--r--plugins/CoreVue/scripts/cli-service-proxy.js49
-rw-r--r--plugins/CoreVue/types/index.d.ts16
m---------plugins/CustomAlerts0
-rw-r--r--plugins/CustomDimensions/lang/ca.json1
-rw-r--r--plugins/CustomDimensions/lang/de.json1
-rw-r--r--plugins/CustomDimensions/lang/el.json1
-rw-r--r--plugins/CustomDimensions/lang/ga.json1
-rw-r--r--plugins/CustomDimensions/lang/pt-br.json46
-rw-r--r--plugins/CustomDimensions/lang/tr.json1
-rw-r--r--plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml2
-rw-r--r--plugins/CustomDimensions/tests/System/expected/test___API.getSegmentsMetadata.xml42
-rw-r--r--plugins/CustomDimensions/tests/UI/CustomDimensions_spec.js6
-rw-r--r--plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_goals_overview.png4
-rw-r--r--plugins/CustomDimensions/vue/dist/CustomDimensions.umd.js10
-rw-r--r--plugins/CustomDimensions/vue/dist/CustomDimensions.umd.min.js6
-rw-r--r--plugins/CustomDimensions/vue/src/Edit/Edit.vue8
-rw-r--r--plugins/CustomJsTracker/lang/ga.json1
-rw-r--r--plugins/CustomJsTracker/lang/id.json2
-rw-r--r--plugins/DBStats/lang/id.json16
-rw-r--r--plugins/Dashboard/javascripts/dashboardWidget.js2
-rw-r--r--plugins/Dashboard/javascripts/widgetMenu.js1
-rw-r--r--plugins/Dashboard/lang/id.json58
-rw-r--r--plugins/DevicePlugins/lang/id.json8
-rw-r--r--plugins/DevicesDetection/lang/ga.json1
-rw-r--r--plugins/DevicesDetection/lang/id.json72
-rw-r--r--plugins/Diagnostics/lang/ga.json1
-rw-r--r--plugins/Diagnostics/lang/nb.json2
-rw-r--r--plugins/Ecommerce/Columns/Revenue.php72
-rw-r--r--plugins/Ecommerce/Columns/RevenueDiscount.php2
-rw-r--r--plugins/Ecommerce/lang/ca.json3
-rw-r--r--plugins/Ecommerce/lang/de.json3
-rw-r--r--plugins/Ecommerce/lang/el.json39
-rw-r--r--plugins/Ecommerce/lang/en.json2
-rw-r--r--plugins/Ecommerce/lang/ga.json1
-rw-r--r--plugins/Ecommerce/lang/pt-br.json3
-rw-r--r--plugins/Ecommerce/lang/tr.json3
-rw-r--r--plugins/Ecommerce/tests/System/EcommerceOrderWithItemsTest.php25
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_VisitTime.getVisitInformationPerServerTime__API.getProcessedReport_day.xml8
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentCartRevenueOrder__Goals.get_day.xml15
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentCartRevenueOrder__Live.getLastVisitsDetails_day.xml618
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentRevenueOrder__Goals.get_day.xml15
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentRevenueOrder__Live.getLastVisitsDetails_day.xml385
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html6
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html6
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv2
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdfbin578978 -> 579013 bytes
-rw-r--r--plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_tsv__ScheduledReports.generateReport_week.original.tsv2
-rw-r--r--plugins/Events/lang/ga.json1
-rw-r--r--plugins/Events/lang/id.json42
-rw-r--r--plugins/Feedback/lang/ga.json1
-rw-r--r--plugins/Feedback/lang/id.json72
-rw-r--r--plugins/Feedback/vue/dist/Feedback.umd.js146
-rw-r--r--plugins/Feedback/vue/dist/Feedback.umd.min.js6
-rw-r--r--plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue17
-rw-r--r--plugins/Feedback/vue/src/RateFeature/RateFeature.vue45
-rw-r--r--plugins/GeoIp2/GeoIp2.php30
-rw-r--r--plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js149
-rw-r--r--plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.directive.js37
-rw-r--r--plugins/GeoIp2/lang/ga.json1
-rw-r--r--plugins/GeoIp2/lang/id.json74
-rw-r--r--plugins/GeoIp2/templates/configuration.twig68
-rw-r--r--plugins/GeoIp2/vue/dist/GeoIp2.umd.js661
-rw-r--r--plugins/GeoIp2/vue/dist/GeoIp2.umd.min.js8
-rw-r--r--plugins/GeoIp2/vue/dist/umd.metadata.json6
-rw-r--r--plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.adapter.ts59
-rw-r--r--plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.vue474
-rw-r--r--plugins/GeoIp2/vue/src/index.ts10
-rw-r--r--plugins/Goals/lang/ga.json1
-rw-r--r--plugins/Goals/lang/id.json162
-rw-r--r--plugins/Goals/lang/nb.json10
-rw-r--r--plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal.png4
-rw-r--r--plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal_updated.png4
-rw-r--r--plugins/Goals/tests/UI/expected-screenshots/GoalsPages_overview.png4
-rw-r--r--plugins/Goals/vue/dist/Goals.umd.js14
-rw-r--r--plugins/Goals/vue/dist/Goals.umd.min.js2
-rw-r--r--plugins/Goals/vue/src/ManageGoals/ManageGoals.vue14
-rw-r--r--plugins/ImageGraph/lang/ga.json1
-rw-r--r--plugins/Insights/lang/fr.json6
-rw-r--r--plugins/Insights/lang/ga.json1
-rw-r--r--plugins/Installation/lang/de.json28
-rw-r--r--plugins/Installation/lang/ga.json1
-rw-r--r--plugins/Installation/lang/id.json211
-rw-r--r--plugins/Installation/lang/sv.json2
-rw-r--r--plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png4
-rw-r--r--plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php2
-rw-r--r--plugins/LanguagesManager/lang/ga.json1
-rw-r--r--plugins/LanguagesManager/tests/Unit/TranslationWriter/Validate/NoScriptsTest.php7
-rw-r--r--plugins/Live/lang/ga.json1
-rw-r--r--plugins/Live/lang/id.json64
m---------plugins/LogViewer0
-rw-r--r--plugins/Login/lang/ga.json1
-rw-r--r--plugins/Login/lang/id.json69
m---------plugins/MarketingCampaignsReporting0
-rw-r--r--plugins/Marketplace/Controller.php2
-rw-r--r--plugins/Marketplace/Marketplace.php7
-rw-r--r--plugins/Marketplace/angularjs/marketplace/marketplace.controller.js23
-rw-r--r--plugins/Marketplace/angularjs/marketplace/marketplace.directive.js116
-rw-r--r--plugins/Marketplace/angularjs/plugins/plugin-name.directive.js65
-rw-r--r--plugins/Marketplace/lang/ca.json2
-rw-r--r--plugins/Marketplace/lang/de.json6
-rw-r--r--plugins/Marketplace/lang/el.json2
-rw-r--r--plugins/Marketplace/lang/en.json4
-rw-r--r--plugins/Marketplace/lang/ga.json1
-rw-r--r--plugins/Marketplace/lang/id.json123
-rw-r--r--plugins/Marketplace/lang/pt-br.json2
-rw-r--r--plugins/Marketplace/lang/tr.json2
-rw-r--r--plugins/Marketplace/templates/overview.twig48
-rw-r--r--plugins/Marketplace/templates/plugin-list.twig18
-rw-r--r--plugins/Marketplace/tests/UI/Marketplace_spec.js2
-rw-r--r--plugins/Marketplace/vue/dist/Marketplace.umd.js432
-rw-r--r--plugins/Marketplace/vue/dist/Marketplace.umd.min.js16
-rw-r--r--plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue7
-rw-r--r--plugins/Marketplace/vue/src/Marketplace/Marketplace.vue244
-rw-r--r--plugins/Marketplace/vue/src/PluginName/PluginName.adapter.ts34
-rw-r--r--plugins/Marketplace/vue/src/PluginName/PluginName.ts68
-rw-r--r--plugins/Marketplace/vue/src/index.ts4
-rw-r--r--plugins/MobileAppMeasurable/lang/ga.json1
-rw-r--r--plugins/MobileAppMeasurable/lang/id.json6
-rw-r--r--plugins/MobileMessaging/MobileMessaging.php22
-rw-r--r--plugins/MobileMessaging/angularjs/delegate-mobile-messaging-settings.controller.js39
-rw-r--r--plugins/MobileMessaging/angularjs/manage-mobile-phone-numbers.controller.js110
-rw-r--r--plugins/MobileMessaging/angularjs/manage-sms-provider.controller.js76
-rw-r--r--plugins/MobileMessaging/angularjs/sms-provider-credentials.directive.js51
-rw-r--r--plugins/MobileMessaging/lang/id.json48
-rw-r--r--plugins/MobileMessaging/templates/index.twig141
-rw-r--r--plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js410
-rw-r--r--plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js4
-rw-r--r--plugins/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue85
-rw-r--r--plugins/MobileMessaging/vue/src/ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue279
-rw-r--r--plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue5
-rw-r--r--plugins/MobileMessaging/vue/src/index.ts2
-rw-r--r--plugins/Morpheus/javascripts/piwikHelper.js57
-rw-r--r--plugins/MultiSites/lang/ga.json1
-rw-r--r--plugins/MultiSites/lang/id.json15
-rw-r--r--plugins/Overlay/lang/ga.json1
-rw-r--r--plugins/Overlay/lang/id.json4
-rw-r--r--plugins/PagePerformance/lang/ga.json1
-rw-r--r--plugins/PagePerformance/lang/pt-br.json43
-rw-r--r--plugins/PrivacyManager/Model/DataSubjects.php17
-rw-r--r--plugins/PrivacyManager/PrivacyManager.php217
-rw-r--r--plugins/PrivacyManager/angularjs/anonymize-ip/anonymize-ip.controller.js42
-rw-r--r--plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.controller.js145
-rw-r--r--plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.html136
-rw-r--r--plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.js29
-rw-r--r--plugins/PrivacyManager/angularjs/delete-old-logs/delete-old-logs.controller.js54
-rw-r--r--plugins/PrivacyManager/angularjs/delete-old-reports/delete-old-reports.controller.js66
-rw-r--r--plugins/PrivacyManager/angularjs/do-not-track-preference/do-not-track-preference.controller.js40
-rw-r--r--plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.controller.js156
-rw-r--r--plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.html134
-rw-r--r--plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.js29
-rw-r--r--plugins/PrivacyManager/angularjs/report-deletion.model.js111
-rw-r--r--plugins/PrivacyManager/angularjs/schedule-report-deletion/schedule-report-deletion.controller.js65
-rw-r--r--plugins/PrivacyManager/lang/de.json2
-rw-r--r--plugins/PrivacyManager/lang/en.json6
-rw-r--r--plugins/PrivacyManager/lang/ga.json1
-rw-r--r--plugins/PrivacyManager/lang/id.json14
-rw-r--r--plugins/PrivacyManager/lang/nb.json25
-rw-r--r--plugins/PrivacyManager/templates/gdprTools.twig2
-rw-r--r--plugins/PrivacyManager/templates/privacySettings.twig287
-rw-r--r--plugins/PrivacyManager/templates/usersOptOut.twig18
-rw-r--r--plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php1
-rw-r--r--[-rwxr-xr-x]plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_allSitesAllDates.json0
-rw-r--r--[-rwxr-xr-x]plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_anonymizeUserId.json0
-rw-r--r--[-rwxr-xr-x]plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictDate.json0
-rw-r--r--[-rwxr-xr-x]plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictSites.json0
-rw-r--r--[-rwxr-xr-x]plugins/PrivacyManager/tests/System/expected/exportDataSubject_allVisits.json0
-rw-r--r--[-rwxr-xr-x]plugins/PrivacyManager/tests/System/expected/exportDataSubject_oneVisitGiven.json0
-rw-r--r--[-rwxr-xr-x]plugins/PrivacyManager/tests/System/expected/test___PrivacyManager.getAvailableVisitColumnsToAnonymize.xml0
-rw-r--r--plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js25
-rw-r--r--plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled.png4
-rw-r--r--plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled_verified_no_data_deleted.png4
-rw-r--r--plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_confirmed.png4
-rw-r--r--plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_enrich_segment_by_ip.png4
-rw-r--r--plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_uncheck_one_visit.png4
-rw-r--r--plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_found.png4
-rw-r--r--plugins/PrivacyManager/vue/dist/PrivacyManager.umd.js2135
-rw-r--r--plugins/PrivacyManager/vue/dist/PrivacyManager.umd.min.js14
-rw-r--r--plugins/PrivacyManager/vue/dist/umd.metadata.json7
-rw-r--r--plugins/PrivacyManager/vue/src/AnonymizeIp/AnonymizeIp.vue213
-rw-r--r--plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.adapter.ts14
-rw-r--r--plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.less (renamed from plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.less)0
-rw-r--r--plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.vue389
-rw-r--r--plugins/PrivacyManager/vue/src/DeleteOldLogs/DeleteOldLogs.vue151
-rw-r--r--plugins/PrivacyManager/vue/src/DeleteOldReports/DeleteOldReports.vue267
-rw-r--r--plugins/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.vue83
-rw-r--r--plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.adapter.ts14
-rw-r--r--plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.less (renamed from plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.less)0
-rw-r--r--plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.vue449
-rw-r--r--plugins/PrivacyManager/vue/src/ReportDeletionSettings/ReportDeletionSettings.store.ts149
-rw-r--r--plugins/PrivacyManager/vue/src/ScheduleReportDeletion/ScheduleReportDeletion.vue213
-rw-r--r--plugins/PrivacyManager/vue/src/index.ts17
-rw-r--r--plugins/ProfessionalServices/lang/ga.json1
m---------plugins/QueuedTracking0
-rw-r--r--plugins/Referrers/Referrers.php4
-rw-r--r--plugins/Referrers/Widgets/GetCampaignUrlBuilder.php2
-rw-r--r--plugins/Referrers/angularjs/campaign-builder/campaign-builder.controller.js91
-rw-r--r--plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.html81
-rw-r--r--plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.js44
-rw-r--r--plugins/Referrers/lang/ga.json1
-rw-r--r--plugins/Referrers/lang/id.json114
-rw-r--r--plugins/Referrers/lang/pt-br.json25
-rw-r--r--plugins/Referrers/templates/campaignBuilder.twig2
-rw-r--r--plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_nokeyword.png4
-rw-r--r--plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_reset.png4
-rw-r--r--plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_withkeyword.png4
-rw-r--r--plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_loaded.png4
-rw-r--r--plugins/Referrers/vue/dist/Referrers.umd.js433
-rw-r--r--plugins/Referrers/vue/dist/Referrers.umd.min.js8
-rw-r--r--plugins/Referrers/vue/dist/umd.metadata.json6
-rw-r--r--plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.adapter.ts19
-rw-r--r--plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.less (renamed from plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.less)0
-rw-r--r--plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.vue268
-rw-r--r--plugins/Referrers/vue/src/index.ts10
-rw-r--r--plugins/Resolution/lang/ga.json1
-rw-r--r--plugins/Resolution/lang/id.json2
-rw-r--r--plugins/SEO/lang/ga.json1
-rw-r--r--plugins/SEO/lang/id.json4
-rw-r--r--plugins/ScheduledReports/lang/ga.json1
-rw-r--r--plugins/ScheduledReports/lang/id.json38
-rw-r--r--plugins/SegmentEditor/SegmentEditor.php5
-rw-r--r--plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.controller.js112
-rw-r--r--plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.model.js (renamed from plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator-model.js)0
-rw-r--r--plugins/SegmentEditor/lang/de.json2
-rw-r--r--plugins/SegmentEditor/lang/ga.json1
-rw-r--r--plugins/SegmentEditor/tests/UI/SegmentSelectorEditor_spec.js15
-rw-r--r--plugins/SegmentEditor/vue/dist/SegmentEditor.umd.js957
-rw-r--r--plugins/SegmentEditor/vue/dist/SegmentEditor.umd.min.js14
-rw-r--r--plugins/SegmentEditor/vue/dist/umd.metadata.json6
-rw-r--r--plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.adapter.ts91
-rw-r--r--plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.less (renamed from plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.directive.less)0
-rw-r--r--plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.store.ts94
-rw-r--r--plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue523
-rw-r--r--plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue38
-rw-r--r--plugins/SegmentEditor/vue/src/index.ts12
-rw-r--r--plugins/SegmentEditor/vue/src/types.ts30
-rw-r--r--plugins/SitesManager/lang/de.json2
-rw-r--r--plugins/SitesManager/lang/ga.json1
-rw-r--r--plugins/SitesManager/lang/id.json164
-rw-r--r--plugins/SitesManager/lang/pt-br.json2
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.js66
-rw-r--r--plugins/SitesManager/vue/dist/SitesManager.umd.min.js6
-rw-r--r--plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue4
-rw-r--r--plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue2
m---------plugins/TagManager0
-rw-r--r--plugins/Tour/lang/ga.json1
m---------plugins/TrackingSpamPrevention0
-rw-r--r--plugins/Transitions/Transitions.php11
-rw-r--r--plugins/Transitions/angularjs/transitionexporter/transitionexporter.directive.js83
-rw-r--r--plugins/Transitions/angularjs/transitionexporter/transitionexporter.popover.html21
-rw-r--r--plugins/Transitions/angularjs/transitionswitcher/transitionswitcher.controller.js155
-rw-r--r--plugins/Transitions/javascripts/transitions.js4
-rw-r--r--plugins/Transitions/lang/ga.json1
-rw-r--r--plugins/Transitions/lang/id.json45
-rw-r--r--plugins/Transitions/templates/transitions.twig64
-rw-r--r--plugins/Transitions/vue/dist/Transitions.umd.js672
-rw-r--r--plugins/Transitions/vue/dist/Transitions.umd.min.js27
-rw-r--r--plugins/Transitions/vue/dist/umd.metadata.json6
-rw-r--r--plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.adapter.ts20
-rw-r--r--plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.ts50
-rw-r--r--plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.less (renamed from plugins/Transitions/angularjs/transitionexporter/transitionexporter.popover.less)6
-rw-r--r--plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.vue91
-rw-r--r--plugins/Transitions/vue/src/TransitionExporter/transitionParams.ts29
-rw-r--r--plugins/Transitions/vue/src/TransitionSwitcher/TransitionSwitcher.vue308
-rw-r--r--plugins/Transitions/vue/src/index.ts11
-rw-r--r--plugins/TwoFactorAuth/lang/ga.json1
-rw-r--r--plugins/UserCountry/lang/de.json27
-rw-r--r--plugins/UserCountry/lang/ga.json1
-rw-r--r--plugins/UserCountry/lang/id.json46
-rw-r--r--plugins/UserCountryMap/lang/id.json10
-rw-r--r--plugins/UserCountryMap/svg/MYS.svg2
-rw-r--r--plugins/UserId/lang/ga.json1
-rw-r--r--plugins/UserId/lang/id.json2
-rw-r--r--plugins/UserLanguage/lang/ga.json1
-rw-r--r--plugins/UserLanguage/lang/id.json4
-rw-r--r--plugins/UsersManager/lang/ga.json1
-rw-r--r--plugins/UsersManager/lang/id.json4
-rw-r--r--plugins/UsersManager/lang/nb.json24
-rw-r--r--plugins/UsersManager/lang/pt-br.json31
-rw-r--r--plugins/UsersManager/vue/dist/UsersManager.umd.js340
-rw-r--r--plugins/UsersManager/vue/dist/UsersManager.umd.min.js18
-rw-r--r--plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue37
-rw-r--r--plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue2
-rw-r--r--plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue4
-rw-r--r--plugins/VisitFrequency/lang/ga.json1
-rw-r--r--plugins/VisitFrequency/lang/id.json44
-rw-r--r--plugins/VisitTime/Reports/GetVisitInformationPerServerTime.php4
-rw-r--r--plugins/VisitTime/lang/ca.json19
-rw-r--r--plugins/VisitTime/lang/de.json16
-rw-r--r--plugins/VisitTime/lang/el.json33
-rw-r--r--plugins/VisitTime/lang/en.json17
-rw-r--r--plugins/VisitTime/lang/ga.json1
-rw-r--r--plugins/VisitTime/lang/pt-br.json19
-rw-r--r--plugins/VisitTime/lang/tr.json19
m---------plugins/VisitorGenerator0
-rw-r--r--plugins/VisitorInterest/lang/ga.json1
-rw-r--r--plugins/VisitorInterest/lang/id.json4
-rw-r--r--plugins/VisitsSummary/lang/ga.json1
-rw-r--r--plugins/VisitsSummary/lang/id.json2
-rw-r--r--plugins/WebsiteMeasurable/lang/id.json4
-rw-r--r--plugins/Widgetize/lang/id.json4
-rw-r--r--tests/PHPUnit/Fixtures/LatestStableInstall.php10
-rw-r--r--tests/PHPUnit/Integration/DataAccess/ArchiveInvalidatorTest.php12
-rw-r--r--tests/PHPUnit/Integration/ReleaseCheckListTest.php29
-rw-r--r--tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric_constantRowsCountShouldKeepEmptyRows__API.getProcessedReport_day.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumnsWithProcessedMetrics___API.getProcessedReport_day.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_and_graph__ScheduledReports.generateReport_month.original.html6
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_only__ScheduledReports.generateReport_month.original.html6
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_csv__ScheduledReports.generateReport_month.original.csv2
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_month.original.pdfbin555859 -> 555895 bytes
-rw-r--r--tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_tsv__ScheduledReports.generateReport_month.original.tsv2
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getGlossaryReports.xml8
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml6
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml16
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml66
-rw-r--r--tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml8
-rw-r--r--tests/PHPUnit/Unit/Period/RangeTest.php42
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_sales.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png4
-rw-r--r--tests/UI/expected-screenshots/UIIntegrationTest_visitors_times.png4
-rw-r--r--tests/UI/specs/UIIntegration_spec.js4
-rw-r--r--tests/javascript/index.php2
-rw-r--r--tsconfig.json3
-rw-r--r--vue.config.js4
437 files changed, 15691 insertions, 4760 deletions
diff --git a/config/environment/ui-test.php b/config/environment/ui-test.php
index 49126b20b6..9373ffb8b4 100644
--- a/config/environment/ui-test.php
+++ b/config/environment/ui-test.php
@@ -10,6 +10,31 @@ return array(
'tests.ui.url_normalizer_blacklist.api' => array(),
'tests.ui.url_normalizer_blacklist.controller' => array(),
+ 'twig.cache' => function (\Psr\Container\ContainerInterface $container) {
+ $templatesPath = $container->get('path.tmp.templates');
+ return new class($templatesPath) extends \Twig\Cache\FilesystemCache {
+ public function write(string $key, string $content): void
+ {
+ $retryCount = 3;
+
+ $attempts = 0;
+ while ($attempts < $retryCount) {
+ try {
+ parent::write($key, $content);
+ return;
+ } catch (\Exception $ex) {
+ if (!preg_match('/^Failed to write cache file/', $ex->getMessage())) {
+ throw $ex;
+ }
+
+ usleep(50);
+ ++$attempts;
+ }
+ }
+ }
+ };
+ },
+
'Piwik\Config' => \DI\decorate(function (\Piwik\Config $config) {
$config->General['cors_domains'][] = '*';
$config->General['trusted_hosts'][] = '127.0.0.1';
diff --git a/config/global.ini.php b/config/global.ini.php
index 34dc50cf70..34dc50cf70 100755..100644
--- a/config/global.ini.php
+++ b/config/global.ini.php
diff --git a/config/global.php b/config/global.php
index 1e43a2e479..f6fbe51e0c 100644
--- a/config/global.php
+++ b/config/global.php
@@ -4,7 +4,7 @@ use Psr\Container\ContainerInterface;
use Matomo\Cache\Eager;
use Piwik\SettingsServer;
-return array(
+return [
'path.root' => PIWIK_DOCUMENT_ROOT,
@@ -35,6 +35,8 @@ return array(
'view.clearcompiledtemplates.enable' => true,
+ 'twig.cache' => DI\string('{path.tmp.templates}'),
+
'Matomo\Cache\Eager' => function (ContainerInterface $c) {
$backend = $c->get('Matomo\Cache\Backend');
$cacheId = $c->get('cache.eager.cache_id');
@@ -58,7 +60,7 @@ return array(
// If Piwik is not installed yet, it's possible the tmp/ folder is not writable
// we prevent failing with an unclear message eg. coming from doctrine-cache
// by forcing to use a cache backend which always works ie. array
- if(!\Piwik\SettingsPiwik::isMatomoInstalled()) {
+ if (!\Piwik\SettingsPiwik::isMatomoInstalled()) {
$backend = 'array';
} else {
try {
@@ -71,10 +73,10 @@ return array(
return \Piwik\Cache::buildBackend($backend);
},
'cache.eager.cache_id' => function () {
- return 'eagercache-' . str_replace(array('.', '-'), '', \Piwik\Version::VERSION) . '-';
+ return 'eagercache-' . str_replace(['.', '-'], '', \Piwik\Version::VERSION) . '-';
},
- 'entities.idNames' => DI\add(array('idGoal', 'idDimension')),
+ 'entities.idNames' => DI\add(['idGoal', 'idDimension']),
'Psr\Log\LoggerInterface' => DI\create('Psr\Log\NullLogger'),
@@ -83,19 +85,20 @@ return array(
'DeviceDetector\Cache\Cache' => DI\autowire('Piwik\DeviceDetector\DeviceDetectorCache')->constructor(86400),
- 'observers.global' => array(),
+ 'observers.global' => [],
/**
- * By setting this option to false, the check that the DB schema version matches the version of the source code will be no longer performed.
- * Thus it allows you to execute for example a newer version of Matomo with an older Matomo database version. Please note
- * disabling this setting is not recommended because often an older DB version is not compatible with newer source code.
- * If you disable this setting, make sure to execute the updates after updating the source code. The setting can be useful if
- * you want to update Matomo without any outage when you know the current source code update will still run fine for a short time
- * while in the background the database updates are running.
+ * By setting this option to false, the check that the DB schema version matches the version of the source code will
+ * be no longer performed. Thus it allows you to execute for example a newer version of Matomo with an older Matomo
+ * database version. Please note disabling this setting is not recommended because often an older DB version is not
+ * compatible with newer source code.
+ * If you disable this setting, make sure to execute the updates after updating the source code. The setting can be
+ * useful if you want to update Matomo without any outage when you know the current source code update will still
+ * run fine for a short time while in the background the database updates are running.
*/
'EnableDbVersionCheck' => true,
- 'fileintegrity.ignore' => DI\add(array(
+ 'fileintegrity.ignore' => DI\add([
'*.htaccess',
'*web.config',
'bootstrap.php',
@@ -146,7 +149,7 @@ return array(
'*.gitattributes',
'*.bower.json',
'*.travis.yml',
- )),
+ ]),
'Piwik\EventDispatcher' => DI\autowire()->constructorParameter('observers', DI\get('observers.global')),
@@ -155,7 +158,7 @@ return array(
$config = $c->get('Piwik\Config');
$general = $config->General;
- $ips = array();
+ $ips = [];
if (!empty($general['login_allowlist_ip']) && is_array($general['login_allowlist_ip'])) {
$ips = $general['login_allowlist_ip'];
} elseif (!empty($general['login_whitelist_ip']) && is_array($general['login_whitelist_ip'])) {
@@ -163,7 +166,7 @@ return array(
$ips = $general['login_whitelist_ip'];
}
- $ipsResolved = array();
+ $ipsResolved = [];
foreach ($ips as $ip) {
$ip = trim($ip);
@@ -186,8 +189,10 @@ return array(
if (function_exists('dns_get_record')) {
$entry = @dns_get_record($ip, DNS_AAAA);
- if (!empty($entry['0']['ipv6'])
- && filter_var($entry['0']['ipv6'], FILTER_VALIDATE_IP)) {
+ if (
+ !empty($entry['0']['ipv6'])
+ && filter_var($entry['0']['ipv6'], FILTER_VALIDATE_IP)
+ ) {
$resolvedIps[] = $entry['0']['ipv6'];
}
}
@@ -216,15 +221,19 @@ return array(
->constructorParameter('lookbackNSecondsCustom', DI\get('ini.Tracker.window_look_back_for_visitor')),
'Piwik\Tracker\Settings' => DI\autowire()
- ->constructorParameter('isSameFingerprintsAcrossWebsites', DI\get('ini.Tracker.enable_fingerprinting_across_websites')),
+ ->constructorParameter(
+ 'isSameFingerprintsAcrossWebsites',
+ DI\get('ini.Tracker.enable_fingerprinting_across_websites')
+ ),
'archiving.performance.logger' => null,
- \Piwik\CronArchive\Performance\Logger::class => DI\autowire()->constructorParameter('logger', DI\get('archiving.performance.logger')),
+ \Piwik\CronArchive\Performance\Logger::class => DI\autowire()
+ ->constructorParameter('logger', DI\get('archiving.performance.logger')),
\Piwik\Concurrency\LockBackend::class => \DI\get(\Piwik\Concurrency\LockBackend\MySqlLockBackend::class),
- \Piwik\Segment\SegmentsList::class => function(){
+ \Piwik\Segment\SegmentsList::class => function () {
return \Piwik\Segment\SegmentsList::get();
}
-);
+];
diff --git a/core/Archive.php b/core/Archive.php
index 09227df4d8..09e6c3bb36 100644
--- a/core/Archive.php
+++ b/core/Archive.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,6 +7,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik;
use Piwik\Archive\ArchiveQuery;
@@ -140,7 +142,7 @@ class Archive implements ArchiveQuery
*
* @var array
*/
- private $idarchives = array();
+ private $idarchives = [];
/**
* If set to true, the result of all get functions (ie, getNumeric, getBlob, etc.)
@@ -181,9 +183,11 @@ class Archive implements ArchiveQuery
* @param bool $forceIndexedBySite Whether to force index the result of a query by site ID.
* @param bool $forceIndexedByDate Whether to force index the result of a query by period.
*/
- public function __construct(Parameters $params, $forceIndexedBySite = false,
- $forceIndexedByDate = false)
- {
+ public function __construct(
+ Parameters $params,
+ $forceIndexedBySite = false,
+ $forceIndexedByDate = false
+ ) {
$this->params = $params;
$this->forceIndexedBySite = $forceIndexedBySite;
$this->forceIndexedByDate = $forceIndexedByDate;
@@ -210,8 +214,13 @@ class Archive implements ArchiveQuery
*/
public static function build($idSites, $period, $strDate, $segment = false, $_restrictSitesToLogin = false)
{
- return StaticContainer::get(ArchiveQueryFactory::class)->build($idSites, $period, $strDate, $segment,
- $_restrictSitesToLogin);
+ return StaticContainer::get(ArchiveQueryFactory::class)->build(
+ $idSites,
+ $period,
+ $strDate,
+ $segment,
+ $_restrictSitesToLogin
+ );
}
/**
@@ -236,11 +245,20 @@ class Archive implements ArchiveQuery
*
* @return ArchiveQuery
*/
- public static function factory(Segment $segment, array $periods, array $idSites, $idSiteIsAll = false,
- $isMultipleDate = false)
- {
- return StaticContainer::get(ArchiveQueryFactory::class)->factory($segment, $periods, $idSites, $idSiteIsAll,
- $isMultipleDate);
+ public static function factory(
+ Segment $segment,
+ array $periods,
+ array $idSites,
+ $idSiteIsAll = false,
+ $isMultipleDate = false
+ ) {
+ return StaticContainer::get(ArchiveQueryFactory::class)->factory(
+ $segment,
+ $periods,
+ $idSites,
+ $idSiteIsAll,
+ $isMultipleDate
+ );
}
public static function shouldSkipArchiveIfSkippingSegmentArchiveForToday(Site $site, Period $period, Segment $segment)
@@ -277,7 +295,8 @@ class Archive implements ArchiveQuery
$result = $data->getIndexedArray($resultIndices);
// if only one metric is returned, just return it as a numeric value
- if (empty($resultIndices)
+ if (
+ empty($resultIndices)
&& count($result) <= 1
&& (!is_array($names) || count($names) === 1)
) {
@@ -410,7 +429,7 @@ class Archive implements ArchiveQuery
*/
private function getRequestedPlugins($archiveNames)
{
- $result = array();
+ $result = [];
foreach ($archiveNames as $name) {
$result[] = self::getPluginForReport($name);
@@ -441,7 +460,7 @@ class Archive implements ArchiveQuery
* @param string $segment @see {@link build()}
* @param bool $expanded If true, loads all subtables. See {@link getDataTableExpanded()}
* @param bool $flat If true, loads all subtables and disabled all recursive filters.
- * @param int|null $idSubtable See {@link getDataTableExpanded()}
+ * @param int|null|string $idSubtable See {@link getDataTableExpanded()}
* @param int|null $depth See {@link getDataTableExpanded()}
* @return DataTable|DataTable\Map
*/
@@ -449,14 +468,19 @@ class Archive implements ArchiveQuery
{
Piwik::checkUserHasViewAccess($idSite);
+ if ($idSubtable === false || $idSubtable === '') {
+ $idSubtable = null;
+ }
+
+ if (!empty($idSubtable) && (strtolower($idSubtable) !== self::ID_SUBTABLE_LOAD_ALL_SUBTABLES && !is_numeric($idSubtable))) {
+ throw new \Exception("idSubtable needs to be a number or '" . self::ID_SUBTABLE_LOAD_ALL_SUBTABLES . "', '$idSubtable' given.");
+ }
+
if ($flat && !$idSubtable) {
$expanded = true;
}
$archive = Archive::build($idSite, $period, $date, $segment, $_restrictSitesToLogin = false);
- if ($idSubtable === false || $idSubtable === '') {
- $idSubtable = null;
- }
if ($expanded) {
$dataTable = $archive->getDataTableExpanded($recordName, $idSubtable, $depth);
@@ -489,19 +513,20 @@ class Archive implements ArchiveQuery
protected function get($archiveNames, $archiveDataType, $idSubtable = null)
{
if (!is_array($archiveNames)) {
- $archiveNames = array($archiveNames);
+ $archiveNames = [$archiveNames];
}
$archiveNames = array_filter($archiveNames);
// apply idSubtable
- if ($idSubtable !== null
+ if (
+ $idSubtable !== null
&& $idSubtable !== self::ID_SUBTABLE_LOAD_ALL_SUBTABLES
) {
// this is also done in ArchiveSelector. It should be actually only done in ArchiveSelector but DataCollection
// does require to have the subtableId appended. Needs to be changed in refactoring to have it only in one
// place.
- $dataNames = array();
+ $dataNames = [];
foreach ($archiveNames as $name) {
$dataNames[] = ArchiveSelector::appendIdsubtable($name, $idSubtable);
}
@@ -510,9 +535,15 @@ class Archive implements ArchiveQuery
}
$result = new Archive\DataCollection(
- $dataNames, $archiveDataType, $this->params->getIdSites(), $this->params->getPeriods(), $this->params->getSegment(), $defaultRow = null);
+ $dataNames,
+ $archiveDataType,
+ $this->params->getIdSites(),
+ $this->params->getPeriods(),
+ $this->params->getSegment(),
+ $defaultRow = null
+ );
if (empty($dataNames)) {
- return $result; // NOTE: note posting Archive.noArchivedData here, because there might be archive data, someone just requested nothing
+ return $result; // NOTE: not posting Archive.noArchivedData here, because there might be archive data, someone just requested nothing
}
$archiveIds = $this->getArchiveIds($archiveNames);
@@ -560,8 +591,8 @@ class Archive implements ArchiveQuery
// figure out which archives haven't been processed (if an archive has been processed,
// then we have the archive IDs in $this->idarchives)
- $doneFlags = array();
- $archiveGroups = array();
+ $doneFlags = [];
+ $archiveGroups = [];
foreach (array_merge($plugins, ['all']) as $plugin) {
$doneFlag = $this->getDoneStringForPlugin($plugin, $this->params->getIdSites());
@@ -586,7 +617,8 @@ class Archive implements ArchiveQuery
// cache id archives for plugins we haven't processed yet
if (!empty($archiveGroups)) {
- if (Rules::isArchivingEnabledFor($this->params->getIdSites(), $this->params->getSegment(), $this->getPeriodLabel())
+ if (
+ Rules::isArchivingEnabledFor($this->params->getIdSites(), $this->params->getSegment(), $this->getPeriodLabel())
&& !$this->forceFetchingWithoutLaunchingArchiving
) {
$this->cacheArchiveIdsAfterLaunching($archiveGroups, $plugins);
@@ -616,7 +648,8 @@ class Archive implements ArchiveQuery
foreach ($this->params->getIdSites() as $idSite) {
$site = new Site($idSite);
- if (Common::getRequestVar('skipArchiveSegmentToday', 0, 'int')
+ if (
+ Common::getRequestVar('skipArchiveSegmentToday', 0, 'int')
&& self::shouldSkipArchiveIfSkippingSegmentArchiveForToday($site, $period, $this->params->getSegment())
) {
Log::debug("Skipping archive %s for %s as segment today is disabled", $period->getLabel(), $period->getPrettyString());
@@ -627,8 +660,12 @@ class Archive implements ArchiveQuery
// we already know there are no stats for this period
// we add one day to make sure we don't miss the day of the website creation
if ($twoDaysAfterPeriod->isEarlier($site->getCreationDate())) {
- Log::debug("Archive site %s, %s (%s) skipped, archive is before the website was created.",
- $idSite, $period->getLabel(), $period->getPrettyString());
+ Log::debug(
+ "Archive site %s, %s (%s) skipped, archive is before the website was created.",
+ $idSite,
+ $period->getLabel(),
+ $period->getPrettyString()
+ );
continue;
}
@@ -637,8 +674,12 @@ class Archive implements ArchiveQuery
// if the starting date is in the future we know there are no visits
if ($period->getDateStart()->isLater($today)) {
- Log::debug("Archive site %s, %s (%s) skipped, archive is after today.",
- $idSite, $period->getLabel(), $period->getPrettyString());
+ Log::debug(
+ "Archive site %s, %s (%s) skipped, archive is after today.",
+ $idSite,
+ $period->getLabel(),
+ $period->getPrettyString()
+ );
continue;
}
@@ -657,7 +698,11 @@ class Archive implements ArchiveQuery
private function cacheArchiveIdsWithoutLaunching($plugins)
{
$idarchivesByReport = ArchiveSelector::getArchiveIds(
- $this->params->getIdSites(), $this->params->getPeriods(), $this->params->getSegment(), $plugins);
+ $this->params->getIdSites(),
+ $this->params->getPeriods(),
+ $this->params->getSegment(),
+ $plugins
+ );
// initialize archive ID cache for each report
foreach ($plugins as $plugin) {
@@ -686,10 +731,10 @@ class Archive implements ArchiveQuery
private function getDoneStringForPlugin($plugin, $idSites)
{
return Rules::getDoneStringFlagFor(
- $idSites,
- $this->params->getSegment(),
- $this->getPeriodLabel(),
- $plugin
+ $idSites,
+ $this->params->getSegment(),
+ $this->getPeriodLabel(),
+ $plugin
);
}
@@ -707,15 +752,17 @@ class Archive implements ArchiveQuery
*/
private function getResultIndices()
{
- $indices = array();
+ $indices = [];
- if (count($this->params->getIdSites()) > 1
+ if (
+ count($this->params->getIdSites()) > 1
|| $this->forceIndexedBySite
) {
$indices['site'] = 'idSite';
}
- if (count($this->params->getPeriods()) > 1
+ if (
+ count($this->params->getPeriods()) > 1
|| $this->forceIndexedByDate
) {
$indices['period'] = 'date';
@@ -757,7 +804,7 @@ class Archive implements ArchiveQuery
private function initializeArchiveIdCache($doneFlag)
{
if (!isset($this->idarchives[$doneFlag])) {
- $this->idarchives[$doneFlag] = array();
+ $this->idarchives[$doneFlag] = [];
}
}
@@ -795,11 +842,11 @@ class Archive implements ArchiveQuery
*/
public static function getPluginForReport($report)
{
- // Core metrics are always processed in Core, for the requested date/period/segment
if (in_array($report, Metrics::getVisitsMetricNames())) {
+ // Core metrics are always processed in Core, for the requested date/period/segment
$report = 'VisitsSummary_CoreMetrics';
- } // Goal_* metrics are processed by the Goals plugin (HACK)
- elseif (strpos($report, 'Goal_') === 0) {
+ } elseif (strpos($report, 'Goal_') === 0) {
+ // Goal_* metrics are processed by the Goals plugin (HACK)
$report = 'Goals_Metrics';
} elseif (
strrpos($report, '_returning') === strlen($report) - strlen('_returning') ||
@@ -809,7 +856,8 @@ class Archive implements ArchiveQuery
}
$plugin = substr($report, 0, strpos($report, '_'));
- if (empty($plugin)
+ if (
+ empty($plugin)
|| !\Piwik\Plugin\Manager::getInstance()->isPluginActivated($plugin)
) {
throw new \Exception("Error: The report '$report' was requested but it is not available at this stage."
@@ -835,7 +883,7 @@ class Archive implements ArchiveQuery
$periodString = $period->getRangeString();
$periodDateStr = $period->getLabel() == 'range' ? $periodString : $period->getDateStart()->toString();
- $idSites = array($site->getId());
+ $idSites = [$site->getId()];
// process for each plugin as well
foreach ($archiveGroups as $plugin) {
@@ -843,10 +891,16 @@ class Archive implements ArchiveQuery
$this->initializeArchiveIdCache($doneFlag);
$prepareResult = $coreAdminHomeApi->archiveReports(
- $site->getId(), $period->getLabel(), $periodDateStr, $this->params->getSegment()->getOriginalString(),
- $plugin, $requestedReport);
-
- if (!empty($prepareResult)
+ $site->getId(),
+ $period->getLabel(),
+ $periodDateStr,
+ $this->params->getSegment()->getOriginalString(),
+ $plugin,
+ $requestedReport
+ );
+
+ if (
+ !empty($prepareResult)
&& !empty($prepareResult['idarchives'])
) {
foreach ($prepareResult['idarchives'] as $idArchive) {
@@ -859,7 +913,7 @@ class Archive implements ArchiveQuery
private function getIdArchivesByMonth($doneFlags)
{
// order idarchives by the table month they belong to
- $idArchivesByMonth = array();
+ $idArchivesByMonth = [];
foreach (array_keys($doneFlags) as $doneFlag) {
if (empty($this->idarchives[$doneFlag])) {
diff --git a/core/Archive/ArchiveInvalidator.php b/core/Archive/ArchiveInvalidator.php
index 0ef586fe8c..585c22dd8a 100644
--- a/core/Archive/ArchiveInvalidator.php
+++ b/core/Archive/ArchiveInvalidator.php
@@ -96,7 +96,7 @@ class ArchiveInvalidator
// we do not really have to get the value first. we could simply always try to call set() and it would update or
// insert the record if needed but we do not want to lock the table (especially since there are still some
// MyISAM installations)
- $values = Option::getLike('%' . $this->rememberArchivedReportIdStart . '%');
+ $values = Option::getLike('%' . str_replace('_', '\_', $this->rememberArchivedReportIdStart) . '%');
$all = [];
foreach ($values as $name => $value) {
@@ -121,7 +121,7 @@ class ArchiveInvalidator
// we do not really have to get the value first. we could simply always try to call set() and it would update or
// insert the record if needed but we do not want to lock the table (especially since there are still some
// MyISAM installations)
- $value = Option::getLike('%' . $key . '%');
+ $value = Option::getLike('%' . str_replace('_', '\_', $key) . '%');
}
// getLike() returns an empty array rather than 'false'
@@ -154,7 +154,7 @@ class ArchiveInvalidator
public function getRememberedArchivedReportsThatShouldBeInvalidated()
{
- $reports = Option::getLike('%' . $this->rememberArchivedReportIdStart . '%_%');
+ $reports = Option::getLike('%' . str_replace('_', '\_', $this->rememberArchivedReportIdStart) . '%\_%');
$sitesPerDay = array();
@@ -204,9 +204,11 @@ class ArchiveInvalidator
public function forgetRememberedArchivedReportsToInvalidateForSite($idSite)
{
- $id = $this->buildRememberArchivedReportIdForSite($idSite) . '\_';
- $this->deleteOptionLike($id);
- Cache::clearCacheGeneral();
+ $id = $this->buildRememberArchivedReportIdForSite($idSite) . '_';
+ $hasDeletedSomething = $this->deleteOptionLike($id);
+ if ($hasDeletedSomething) {
+ Cache::clearCacheGeneral();
+ }
}
/**
@@ -220,17 +222,22 @@ class ArchiveInvalidator
// The process pid is added to the end of the entry in order to support multiple concurrent transactions.
// So this must be a deleteLike call to get all the entries, where there used to only be one.
- $this->deleteOptionLike($id);
+ return $this->deleteOptionLike($id);
}
+ /**
+ * @param $id
+ * @return bool true if a record was deleted, false otherwise.
+ * @throws \Zend_Db_Statement_Exception
+ */
private function deleteOptionLike($id)
{
// we're not using deleteLike since it maybe could cause deadlocks see https://github.com/matomo-org/matomo/issues/15545
// we want to reduce number of rows scanned and only delete specific primary key
- $keys = Option::getLike('%' . $id . '%');
+ $keys = Option::getLike('%' . str_replace('_', '\_', $id) . '%');
if (empty($keys)) {
- return;
+ return false;
}
$keys = array_keys($keys);
@@ -238,7 +245,8 @@ class ArchiveInvalidator
$placeholders = Common::getSqlStringFieldsArray($keys);
$table = Common::prefixTable('option');
- Db::query('DELETE FROM `' . $table . '` WHERE `option_name` IN (' . $placeholders . ')', $keys);
+ $db = Db::query('DELETE FROM `' . $table . '` WHERE `option_name` IN (' . $placeholders . ')', $keys);
+ return (bool) $db->rowCount();
}
/**
@@ -250,6 +258,7 @@ class ArchiveInvalidator
* @param bool $forceInvalidateNonexistantRanges set true to force inserting rows for ranges in archive_invalidations
* @param string $name null to make sure every plugin is archived when this invalidation is processed by core:archive,
* or a plugin name to only archive the specific plugin.
+ * @param bool $ignorePurgeLogDataDate
* @return InvalidationResult
* @throws \Exception
*/
@@ -280,6 +289,7 @@ class ArchiveInvalidator
&& count($dates) == 1
&& ((string)$dates[0]) == ((string)Date::factoryInTimezone('today', $tz))
) {
+ // date is for today
$hasMoreThanJustToday[$idSite] = false;
}
}
@@ -315,20 +325,27 @@ class ArchiveInvalidator
$isInvalidatingDays = $period == 'day' || $cascadeDown || empty($period);
$isNotInvalidatingSegment = empty($segment) || empty($segment->getString());
+
if ($isInvalidatingDays
&& $isNotInvalidatingSegment
) {
+
+ $hasDeletedAny = false;
+
foreach ($idSites as $idSite) {
foreach ($dates as $date) {
if (is_string($date)) {
$date = Date::factory($date);
}
- $this->forgetRememberedArchivedReportsToInvalidate($idSite, $date);
+ $hasDeletedAny = $this->forgetRememberedArchivedReportsToInvalidate($idSite, $date) || $hasDeletedAny;
}
}
+
+ if ($hasDeletedAny) {
+ Cache::clearCacheGeneral();
+ }
}
- Cache::clearCacheGeneral();
return $invalidationInfo;
}
diff --git a/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php b/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php
index f86f7f5102..9ac1edaec7 100644
--- a/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php
+++ b/core/AssetManager/UIAssetFetcher/PluginUmdAssetFetcher.php
@@ -10,6 +10,7 @@
namespace Piwik\AssetManager\UIAssetFetcher;
use Piwik\AssetManager\UIAssetFetcher;
+use Piwik\Cache;
use Piwik\Config;
use Piwik\Development;
use Piwik\Plugin\Manager;
@@ -214,6 +215,26 @@ class PluginUmdAssetFetcher extends UIAssetFetcher
return $result;
}
+ public static function getPluginDependencies($plugin)
+ {
+ $pluginDir = self::getPluginDirectory($plugin);
+ $umdMetadata = "$pluginDir/vue/dist/umd.metadata.json";
+
+ $cache = Cache::getTransientCache();
+ $cacheKey = 'PluginUmdAssetFetcher.pluginDependencies.' . $plugin;
+
+ $pluginDependencies = $cache->fetch($cacheKey);
+ if (!is_array($pluginDependencies)) {
+ $pluginDependencies = [];
+ if (is_file($umdMetadata)) {
+ $pluginDependencies = json_decode(file_get_contents($umdMetadata), true);
+ $pluginDependencies = $pluginDependencies['dependsOn'] ?? [];
+ }
+ $cache->save($cacheKey, $pluginDependencies);
+ }
+ return $cache->fetch($cacheKey);
+ }
+
private static function visitPlugin($plugin, $keepUnresolved, &$plugins, &$result)
{
// remove the plugin from the array of plugins to visit
@@ -225,17 +246,11 @@ class PluginUmdAssetFetcher extends UIAssetFetcher
}
// read the plugin dependencies, if any
- $pluginDir = self::getPluginDirectory($plugin);
- $umdMetadata = "$pluginDir/vue/dist/umd.metadata.json";
-
- $pluginDependencies = [];
- if (is_file($umdMetadata)) {
- $pluginDependencies = json_decode(file_get_contents($umdMetadata), true);
- }
+ $pluginDependencies = self::getPluginDependencies($plugin);
- if (!empty($pluginDependencies['dependsOn'])) {
+ if (!empty($pluginDependencies)) {
// visit each plugin this one depends on first, so it is loaded first
- foreach ($pluginDependencies['dependsOn'] as $pluginDependency) {
+ foreach ($pluginDependencies as $pluginDependency) {
// check if dependency is not activated
if (!in_array($pluginDependency, $plugins)
&& !in_array($pluginDependency, $result)
diff --git a/core/ExceptionHandler.php b/core/ExceptionHandler.php
index 5d97f0c77a..9e0dc4ad79 100644
--- a/core/ExceptionHandler.php
+++ b/core/ExceptionHandler.php
@@ -146,10 +146,15 @@ class ExceptionHandler
}
}
+ // Unsupported browser errors shouldn't be written to the web server log. At DEBUG logging level this error will
+ // be written to the application log instead
+ $writeErrorLog = !($ex instanceof \Piwik\Exception\NotSupportedBrowserException);
+
$hostname = Url::getRFCValidHostname();
- $hostStr = $hostname ? "[$hostname]" : '-';
- $hostStr .= " ";
- $result = Piwik_GetErrorMessagePage($message, $debugTrace, true, true, $logoHeaderUrl, $logoFaviconUrl, null, $hostStr);
+ $hostStr = $hostname ? "[$hostname] " : '- ';
+
+ $result = Piwik_GetErrorMessagePage($message, $debugTrace, true, true, $logoHeaderUrl,
+ $logoFaviconUrl, null, $hostStr, $writeErrorLog);
try {
/**
diff --git a/core/Period/Range.php b/core/Period/Range.php
index e6b3ae1357..cdebc2711a 100644
--- a/core/Period/Range.php
+++ b/core/Period/Range.php
@@ -263,7 +263,7 @@ class Range extends Period
if (strpos($strDateEnd, '-') === false) {
$timezone = $this->timezone;
}
- $endDate = Date::factory($strDateEnd, $timezone);
+ $endDate = Date::factory($strDateEnd, $timezone)->setTime("00:00:00");
} else {
throw new Exception($this->translator->translate('General_ExceptionInvalidDateRange', array($this->strDate, ' \'lastN\', \'previousN\', \'YYYY-MM-DD,YYYY-MM-DD\'')));
}
diff --git a/core/Tracker/Response.php b/core/Tracker/Response.php
index 1af52b8b41..1af52b8b41 100755..100644
--- a/core/Tracker/Response.php
+++ b/core/Tracker/Response.php
diff --git a/core/Twig.php b/core/Twig.php
index abf3549af2..5bbf10eaaa 100644
--- a/core/Twig.php
+++ b/core/Twig.php
@@ -134,13 +134,13 @@ class Twig
$chainLoader = new ChainLoader($loaders);
// Create new Twig Environment and set cache dir
- $templatesCompiledPath = StaticContainer::get('path.tmp.templates');
+ $cache = StaticContainer::get('twig.cache');
$this->twig = new Environment($chainLoader,
array(
'debug' => true, // to use {{ dump(var) }} in twig templates
'strict_variables' => true, // throw an exception if variables are invalid
- 'cache' => $templatesCompiledPath,
+ 'cache' => $cache,
)
);
$this->twig->addExtension(new DebugExtension());
diff --git a/core/Version.php b/core/Version.php
index ad030d351e..2a6a8016e9 100644
--- a/core/Version.php
+++ b/core/Version.php
@@ -20,7 +20,7 @@ final class Version
* The current Matomo version.
* @var string
*/
- const VERSION = '4.8.0';
+ const VERSION = '4.9.0-rc1';
const MAJOR_VERSION = 4;
diff --git a/core/testMinimumPhpVersion.php b/core/testMinimumPhpVersion.php
index 7e1a59d2fd..837173fa83 100644
--- a/core/testMinimumPhpVersion.php
+++ b/core/testMinimumPhpVersion.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -109,12 +110,16 @@ if (!function_exists('Piwik_GetErrorMessagePage')) {
* @param bool $optionalLinkBack If true, displays a link to go back
* @param bool|string $logoUrl The URL to the logo to use.
* @param bool|string $faviconUrl The URL to the favicon to use.
+ * @param string $errorLogPrefix String to prepend to the error in log file
+ * @param bool $writeErrorLog If true then a webserver error log will be written, defaults to true
* @return string
*/
function Piwik_GetErrorMessagePage($message, $optionalTrace = false, $optionalLinks = false, $optionalLinkBack = false,
- $logoUrl = false, $faviconUrl = false, $isCli = null, $errorLogPrefix = "")
+ $logoUrl = false, $faviconUrl = false, $isCli = null, $errorLogPrefix = '', bool $writeErrorLog = true)
{
- error_log(sprintf("${errorLogPrefix}Error in Matomo: %s", str_replace("\n", " ", strip_tags($message))));
+ if ($writeErrorLog) {
+ error_log(sprintf("${errorLogPrefix}Error in Matomo: %s", str_replace("\n", " ", strip_tags($message))));
+ }
if (!headers_sent()) {
header('Content-Type: text/html; charset=utf-8');
diff --git a/js/piwik.js b/js/piwik.js
index 41dd1af52e..7b1ba0e56b 100644
--- a/js/piwik.js
+++ b/js/piwik.js
@@ -4896,7 +4896,6 @@ if (typeof window.Matomo !== 'object') {
* initialize tracker
*/
updateDomainHash();
- setVisitorIdCookie();
/*<DEBUG>*/
/*
@@ -5000,26 +4999,30 @@ if (typeof window.Matomo !== 'object') {
};
/**
- * Get visitor ID (from first party cookie)
- *
- * @return string Visitor ID in hexits (or empty string, if not yet known)
- */
- this.getVisitorId = function () {
- return getValuesFromVisitorIdCookie().uuid;
- };
-
- /**
* Get the visitor information (from first party cookie)
*
* @return array
*/
this.getVisitorInfo = function () {
+ if (!getCookie(getCookieName('id'))) {
+ setVisitorIdCookie();
+ }
+
// Note: in a new method, we could return also return getValuesFromVisitorIdCookie()
// which returns named parameters rather than returning integer indexed array
return loadVisitorIdCookie();
};
/**
+ * Get visitor ID (from first party cookie)
+ *
+ * @return string Visitor ID in hexits (or empty string, if not yet known)
+ */
+ this.getVisitorId = function () {
+ return this.getVisitorInfo()[1];
+ };
+
+ /**
* Get the Attribution information, which is an array that contains
* the Referrer used to reach the site as well as the campaign name and keyword
* It is useful only when used in conjunction with Tracker API function setAttributionInfo()
@@ -7071,6 +7074,15 @@ if (typeof window.Matomo !== 'object') {
});
Matomo.trigger('TrackerSetup', [this]);
+
+ Matomo.addPlugin('TrackerVisitorIdCookie' + uniqueTrackerId, {
+ // if no tracking request was sent we refresh the visitor id cookie on page unload
+ unload: function () {
+ if (!hasSentTrackingRequestYet) {
+ setVisitorIdCookie();
+ }
+ }
+ });
}
function TrackerProxy() {
diff --git a/js/piwik.min.js b/js/piwik.min.js
index ea636ad0cc..ec048226eb 100644
--- a/js/piwik.min.js
+++ b/js/piwik.min.js
@@ -50,20 +50,20 @@ var dw=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mai
var du=cB(dv,"click",dw);if(du){dy+="&"+du}var dx=cy(dy,dA,"link");bM(dx,bQ,dz)}function b0(du,dt){if(du!==""){return du+dt.charAt(0).toUpperCase()+dt.slice(1)}return dt}function cm(dy){var dx,dt,dw=["","webkit","ms","moz"],dv;if(!bk){for(dt=0;dt<dw.length;dt++){dv=dw[dt];if(Object.prototype.hasOwnProperty.call(J,b0(dv,"hidden"))){if(J[b0(dv,"visibilityState")]==="prerender"){dx=true}break}}}if(dx){ar(J,dv+"visibilitychange",function du(){J.removeEventListener(dv+"visibilitychange",du,false);dy()});return}dy()}function by(){var du=bP.getVisitorId();var dt=aO();return du+dt}function cp(dt){if(!dt){return}if(!ai.hasNodeAttribute(dt,"href")){return}var du=ai.getAttributeValueFromNode(dt,"href");if(!du||aZ(du)){return}if(!bP.getVisitorId()){return}du=j(du,az);var dv=by();du=I(du,az,dv);ai.setAnyAttribute(dt,"href",du)}function br(dw){var dx=ai.getAttributeValueFromNode(dw,"href");if(!dx){return false}dx=String(dx);var du=dx.indexOf("//")===0||dx.indexOf("http://")===0||dx.indexOf("https://")===0;
if(!du){return false}var dt=dw.pathname||cr(dw.href);var dv=(dw.hostname||d(dw.href)).toLowerCase();if(aw(dv,dt)){if(!cP(c2,O(dv))){return true}return false}return false}function cO(dt){var du=dl(dt);if(du&&du.type){du.href=p(du.href);db(du.href,du.type,undefined,null,dt);return}if(cV){dt=ay(dt);if(br(dt)){cp(dt)}}}function cD(){return J.all&&!J.addEventListener}function c3(dt){var dv=dt.which;var du=(typeof dt.button);if(!dv&&du!=="undefined"){if(cD()){if(dt.button&1){dv=1}else{if(dt.button&2){dv=3}else{if(dt.button&4){dv=2}}}}else{if(dt.button===0||dt.button==="0"){dv=1}else{if(dt.button&1){dv=2}else{if(dt.button&2){dv=3}}}}}return dv}function bZ(dt){switch(c3(dt)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a7(dt){return dt.target||dt.srcElement}function c4(dt){return dt==="A"||dt==="AREA"}function aG(dt){function du(dw){var dx=a7(dw);var dy=dx.nodeName;var dv=a6(bG,"ignore");while(!c4(dy)&&dx&&dx.parentNode){dx=dx.parentNode;dy=dx.nodeName}if(dx&&c4(dy)&&!dv.test(dx.className)){return dx
}}return function(dx){dx=dx||W.event;var dy=du(dx);if(!dy){return}var dw=bZ(dx);if(dx.type==="click"){var dv=false;if(dt&&dw==="middle"){dv=true}if(dy&&!dv){cO(dy)}}else{if(dx.type==="mousedown"){if(dw==="middle"&&dy){aW=dw;bI=dy}else{aW=bI=null}}else{if(dx.type==="mouseup"){if(dw===aW&&dy===bI){cO(dy)}aW=bI=null}else{if(dx.type==="contextmenu"){cO(dy)}}}}}}function av(dw,dv,dt){var du=typeof dv;if(du==="undefined"){dv=true}ar(dw,"click",aG(dv),dt);if(dv){ar(dw,"mouseup",aG(dv),dt);ar(dw,"mousedown",aG(dv),dt);ar(dw,"contextmenu",aG(dv),dt)}}function aX(du,dx,dy){if(ck){return true}ck=true;var dz=false;var dw,dv;function dt(){dz=true}n(function(){function dA(dC){setTimeout(function(){if(!ck){return}dz=false;dy.trackVisibleContentImpressions();dA(dC)},dC)}function dB(dC){setTimeout(function(){if(!ck){return}if(dz){dz=false;dy.trackVisibleContentImpressions()}dB(dC)},dC)}if(du){dw=["scroll","resize"];for(dv=0;dv<dw.length;dv++){if(J.addEventListener){J.addEventListener(dw[dv],dt,false)}else{W.attachEvent("on"+dw[dv],dt)
-}}dB(100)}if(dx&&dx>0){dx=parseInt(dx,10);dA(dx)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dt=this.requests;this.requests=[];if(dt.length===1){bM(dt[0],bQ)}else{dp(dt,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(du){if(!this.canQueue()){dp(du,bQ);return}var dt;for(dt=0;dt<du.length;dt++){this.push(du[dt])}},push:function(dt){if(!dt){return}if(!this.canQueue()){bM(dt,bQ);return}bK.requests.push(dt);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var du="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,du)){b[du]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)}bK.sendRequests()}}}}};bo();aR();this.hasConsent=function(){return bJ};this.getVisitorId=function(){return a4().uuid};this.getVisitorInfo=function(){return cW()};this.getAttributionInfo=function(){return bS()};this.getAttributionCampaignName=function(){return bS()[0]
-};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]};this.setTrackerUrl=function(dt){aI=dt};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dv,du){if(!M(dv)||null===dv){dv=this.getTrackerUrl()}var dt=new T(dv,du);L.push(dt);u.trigger("TrackerAdded",[this]);return dt};this.getSiteId=function(){return cc};this.setSiteId=function(dt){b9(dt)};this.resetUserId=function(){bF=""};this.setUserId=function(dt){if(ac(dt)){bF=dt}};this.setVisitorId=function(du){var dt=/[0-9A-Fa-f]{16}/g;if(x(du)&&dt.test(du)){bU=du}else{ao("Invalid visitorId set"+du)}};this.getUserId=function(){return bF};this.setCustomData=function(dt,du){if(Z(dt)){at=dt}else{if(!at){at={}}at[dt]=du}};this.getCustomData=function(){return at};this.setCustomRequestProcessing=function(dt){ch=dt
-};this.appendToTrackingUrl=function(dt){c9=dt};this.getRequest=function(dt){return cy(dt)};this.addPlugin=function(dt,du){b[dt]=du};this.setCustomDimension=function(dt,du){dt=parseInt(dt,10);if(dt>0){if(!M(du)){du=""}if(!x(du)){du=String(du)}bt[dt]=du}};this.getCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0&&Object.prototype.hasOwnProperty.call(bt,dt)){return bt[dt]}};this.deleteCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0){delete bt[dt]}};this.setCustomVariable=function(du,dt,dx,dv){var dw;if(!M(dv)){dv="visit"}if(!M(dt)){return}if(!M(dx)){dx=""}if(du>0){dt=!x(dt)?String(dt):dt;dx=!x(dx)?String(dx):dx;dw=[dt.slice(0,bA),dx.slice(0,bA)];if(dv==="visit"||dv===2){cN();aV[du]=dw}else{if(dv==="page"||dv===3){b2[du]=dw}else{if(dv==="event"){cs[du]=dw}}}}};this.getCustomVariable=function(du,dv){var dt;if(!M(dv)){dv="visit"}if(dv==="page"||dv===3){dt=b2[du]}else{if(dv==="event"){dt=cs[du]}else{if(dv==="visit"||dv===2){cN();dt=aV[du]}}}if(!M(dt)||(dt&&dt[0]==="")){return false
-}return dt};this.deleteCustomVariable=function(dt,du){if(this.getCustomVariable(dt,du)){this.setCustomVariable(dt,"","",du)}};this.deleteCustomVariables=function(dt){if(dt==="page"||dt===3){b2={}}else{if(dt==="event"){cs={}}else{if(dt==="visit"||dt===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(dt){bQ=dt};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(dt){if(x(dt)){dt=dt.split("|")}dg=dt};this.addDownloadExtensions=function(du){var dt;if(x(du)){du=du.split("|")}for(dt=0;dt<du.length;dt++){dg.push(du[dt])}};this.removeDownloadExtensions=function(dv){var du,dt=[];if(x(dv)){dv=dv.split("|")}for(du=0;du<dg.length;du++){if(P(dv,dg[du])===-1){dt.push(dg[du])}}dg=dt};this.setDomains=function(dt){aC=x(dt)?[dt]:dt;var dx=false,dv=0,du;for(dv;dv<aC.length;dv++){du=String(aC[dv]);if(cP(c2,O(du))){dx=true;break}var dw=cr(du);if(dw&&dw!=="/"&&dw!=="/*"){dx=true;break}}if(!dx){aC.push(c2)}};this.enableCrossDomainLinking=function(){cV=true
-};this.disableCrossDomainLinking=function(){cV=false};this.isCrossDomainLinkingEnabled=function(){return cV};this.setCrossDomainLinkingTimeout=function(dt){a5=dt};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(dt){bG=x(dt)?[dt]:dt};this.setRequestMethod=function(dt){if(dt){dj=String(dt).toUpperCase()}else{dj=cn}if(dj==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(dt){cE=dt||aM};this.setGenerationTimeMs=function(dt){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dx,dz,dy,du,dA,dv){var dw={pf_net:dx,pf_srv:dz,pf_tfr:dy,pf_dm1:du,pf_dm2:dA,pf_onl:dv};try{dw=Q(dw,M);dw=B(dw);ct=l(dw);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}bn=false;bL=true}catch(dt){ao("setPagePerformanceTiming: "+dt.toString())
-}};this.setReferrerUrl=function(dt){bu=dt};this.setCustomUrl=function(dt){ba=b1(bT,dt)};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(dt){bp=dt};this.setPageViewId=function(dt){aQ=dt;bH=true};this.setAPIUrl=function(dt){bO=dt};this.setDownloadClasses=function(dt){bR=x(dt)?[dt]:dt};this.setLinkClasses=function(dt){be=x(dt)?[dt]:dt};this.setCampaignNameKey=function(dt){cw=x(dt)?[dt]:dt};this.setCampaignKeywordKey=function(dt){bN=x(dt)?[dt]:dt};this.discardHashTag=function(dt){bV=dt};this.setCookieNamePrefix=function(dt){bq=dt;if(aV){aV=b3()}};this.setCookieDomain=function(dt){var du=O(dt);if(!bs&&!bD(du)){ao("Can't write cookie on domain "+dt)}else{c7=du;bo()}};this.setExcludedQueryParams=function(dt){co=x(dt)?[dt]:dt};this.getCookieDomain=function(){return c7};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dv,du,dt){if(!dv){throw new Error("Missing cookie name")}if(!M(dt)){dt=cu}bB.push(dv);dn(aY(dv),du,dt,bw,c7,bY,aN)};this.getCookie=function(du){var dt=aH(aY(du));
-if(dt===0){return null}return dt};this.setCookiePath=function(dt){bw=dt;bo()};this.getCookiePath=function(dt){return bw};this.setVisitorCookieTimeout=function(dt){cS=dt*1000};this.setSessionCookieTimeout=function(dt){cu=dt*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(dt){df=dt*1000};this.setConversionAttributionFirstReferrer=function(dt){bC=dt};this.setSecureCookie=function(dt){if(dt&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=dt};this.setCookieSameSite=function(dt){dt=String(dt);dt=dt.charAt(0).toUpperCase()+dt.toLowerCase().slice(1);if(dt!=="None"&&dt!=="Lax"&&dt!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(dt==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");dt="Lax"}}aN=dt};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs
-};this.setCookieConsentGiven=function(){if(bs&&!cY){bs=false;c6=true;if(cc&&aA){aR();var dt=cy("ping=1",null,"ping");bM(dt,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cL)};this.forgetCookieConsentGiven=function(){b5(cL,bw,c7);this.disableCookies()};this.rememberCookieConsentGiven=function(du){if(du){du=du*60*60*1000}else{du=30*365*24*60*60*1000}this.setCookieConsentGiven();var dt=new Date().getTime();dn(cL,dt,du,bw,c7,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(du){var dt=g.doNotTrack||g.msDoNotTrack;cY=du&&(dt==="yes"||dt==="1");if(cY){this.disableCookies()}};this.alwaysUseSendBeacon=function(){c5=true};this.disableAlwaysUseSendBeacon=function(){c5=false};this.addListener=function(du,dt){av(du,dt,false)};this.enableLinkTracking=function(du){if(di){return}di=true;var dt=this;q(function(){au=true;var dv=J.body;av(dv,du,true)
-})};this.enableJSErrorTracking=function(){if(c0){return}c0=true;var dt=W.onerror;W.onerror=function(dy,dw,dv,dx,du){cm(function(){var dz="JavaScript Errors";var dA=dw+":"+dv;if(dx){dA+=":"+dx}if(P(cz,dz+dA+dy)===-1){cz.push(dz+dA+dy);ax(dz,dA,dy)}});if(dt){return dt(dy,dw,dv,dx,du)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(dt){dt=Math.max(dt||15,5);bb=dt*1000;if(c8!==null){dq()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(dt){if(W.location.protocol==="file:"){W.location=dt}};this.setCountPreRendered=function(dt){bk=dt};this.trackGoal=function(dt,dw,dv,du){cm(function(){c1(dt,dw,dv,du)
-})};this.trackLink=function(du,dt,dw,dv){cm(function(){db(du,dt,dw,dv)})};this.getNumTrackedPageViews=function(){return cx};this.trackPageView=function(dt,dv,du){cg=[];cT=[];cz=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cx++;b6(dt,dv,du)})}};this.disableBrowserFeatureDetection=function(){c6=false};this.enableBrowserFeatureDetection=function(){c6=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var dt=w.findContentNodes();var du=cH(dt);bK.pushMultiple(du)})})};this.trackVisibleContentImpressions=function(dt,du){if(R(cc)){return}if(!M(dt)){dt=true}if(!M(du)){du=750}aX(dt,du,this);cm(function(){n(function(){var dv=w.findContentNodes();var dw=bf(dv);bK.pushMultiple(dw)})})};this.trackContentImpression=function(dv,dt,du){if(R(cc)){return}dv=a(dv);dt=a(dt);du=a(du);if(!dv){return}dt=dt||"Unknown";cm(function(){var dw=aK(dv,dt,du);bK.push(dw)})};this.trackContentImpressionsWithinNode=function(dt){if(R(cc)||!dt){return}cm(function(){if(ck){n(function(){var du=w.findContentNodesWithinNode(dt);
-var dv=bf(du);bK.pushMultiple(dv)})}else{q(function(){var du=w.findContentNodesWithinNode(dt);var dv=cH(du);bK.pushMultiple(dv)})}})};this.trackContentInteraction=function(dv,dw,dt,du){if(R(cc)){return}dv=a(dv);dw=a(dw);dt=a(dt);du=a(du);if(!dv||!dw){return}dt=dt||"Unknown";cm(function(){var dx=aU(dv,dw,dt,du);if(dx){bK.push(dx)}})};this.trackContentInteractionNode=function(dv,du){if(R(cc)||!dv){return}var dt=null;cm(function(){dt=dk(dv,du);if(dt){bK.push(dt)}});return dt};this.logAllContentBlocksOnPage=function(){var dv=w.findContentNodes();var dt=w.collectContent(dv);var du=typeof console;if(du!=="undefined"&&console&&console.log){console.log(dt)}};this.trackEvent=function(du,dw,dt,dv,dy,dx){cm(function(){ax(du,dw,dt,dv,dy,dx)})};this.trackSiteSearch=function(dt,dv,du,dw){cg=[];cm(function(){ce(dt,dv,du,dw)})};this.setEcommerceView=function(dx,dt,dv,du){cA={};if(ac(dv)){dv=String(dv)}if(!M(dv)||dv===null||dv===false||!dv.length){dv=""}else{if(dv instanceof Array){dv=W.JSON.stringify(dv)
-}}var dw="_pkc";cA[dw]=dv;if(M(du)&&du!==null&&du!==false&&String(du).length){dw="_pkp";cA[dw]=du}if(!ac(dx)&&!ac(dt)){return}if(ac(dx)){dw="_pks";cA[dw]=dx}if(!ac(dt)){dt=""}dw="_pkn";cA[dw]=dt};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(da))};this.addEcommerceItem=function(dx,dt,dv,du,dw){if(ac(dx)){da[dx]=[String(dx),dt,dv,du,dw]}};this.removeEcommerceItem=function(dt){if(ac(dt)){dt=String(dt);delete da[dt]}};this.clearEcommerceCart=function(){da={}};this.trackEcommerceOrder=function(dt,dx,dw,dv,du,dy){b4(dt,dx,dw,dv,du,dy)};this.trackEcommerceCartUpdate=function(dt){bz(dt)};this.trackRequest=function(du,dw,dv,dt){cm(function(){var dx=cy(du,dw,dt);bM(dx,bQ,dv)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(dt){if(dt<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bK.interval=dt};this.queueRequest=function(dt){cm(function(){var du=cy(dt);
-bK.push(du)})};this.isConsentRequired=function(){return cI};this.getRememberedConsent=function(){var dt=aH(bj);if(aH(cU)){if(dt){b5(bj,bw,c7)}return null}if(!dt||dt===0){return null}return dt};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cI=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(du){bJ=true;c6=true;b5(cU,bw,c7);var dv,dt;for(dv=0;dv<cT.length;dv++){dt=typeof cT[dv];if(dt==="string"){bM(cT[dv],bQ)}else{if(dt==="object"){dp(cT[dv],bQ)}}}cT=[];if(!M(du)||du){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dv){if(dv){dv=dv*60*60*1000}else{dv=30*365*24*60*60*1000}var dt=true;this.setConsentGiven(dt);var du=new Date().getTime();dn(bj,du,dv,bw,c7,bY,aN)};this.forgetConsentGiven=function(){var dt=30*365*24*60*60*1000;b5(bj,bw,c7);dn(cU,new Date().getTime(),dt,bw,c7,bY,aN);this.forgetCookieConsentGiven();this.requireConsent()
-};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this])}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams"];
+}}dB(100)}if(dx&&dx>0){dx=parseInt(dx,10);dA(dx)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dt=this.requests;this.requests=[];if(dt.length===1){bM(dt[0],bQ)}else{dp(dt,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(du){if(!this.canQueue()){dp(du,bQ);return}var dt;for(dt=0;dt<du.length;dt++){this.push(du[dt])}},push:function(dt){if(!dt){return}if(!this.canQueue()){bM(dt,bQ);return}bK.requests.push(dt);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var du="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,du)){b[du]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)}bK.sendRequests()}}}}};bo();this.hasConsent=function(){return bJ};this.getVisitorInfo=function(){if(!aH(aY("id"))){aR()}return cW()};this.getVisitorId=function(){return this.getVisitorInfo()[1]};this.getAttributionInfo=function(){return bS()
+};this.getAttributionCampaignName=function(){return bS()[0]};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]};this.setTrackerUrl=function(dt){aI=dt};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dv,du){if(!M(dv)||null===dv){dv=this.getTrackerUrl()}var dt=new T(dv,du);L.push(dt);u.trigger("TrackerAdded",[this]);return dt};this.getSiteId=function(){return cc};this.setSiteId=function(dt){b9(dt)};this.resetUserId=function(){bF=""};this.setUserId=function(dt){if(ac(dt)){bF=dt}};this.setVisitorId=function(du){var dt=/[0-9A-Fa-f]{16}/g;if(x(du)&&dt.test(du)){bU=du}else{ao("Invalid visitorId set"+du)}};this.getUserId=function(){return bF};this.setCustomData=function(dt,du){if(Z(dt)){at=dt}else{if(!at){at={}}at[dt]=du}};this.getCustomData=function(){return at
+};this.setCustomRequestProcessing=function(dt){ch=dt};this.appendToTrackingUrl=function(dt){c9=dt};this.getRequest=function(dt){return cy(dt)};this.addPlugin=function(dt,du){b[dt]=du};this.setCustomDimension=function(dt,du){dt=parseInt(dt,10);if(dt>0){if(!M(du)){du=""}if(!x(du)){du=String(du)}bt[dt]=du}};this.getCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0&&Object.prototype.hasOwnProperty.call(bt,dt)){return bt[dt]}};this.deleteCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0){delete bt[dt]}};this.setCustomVariable=function(du,dt,dx,dv){var dw;if(!M(dv)){dv="visit"}if(!M(dt)){return}if(!M(dx)){dx=""}if(du>0){dt=!x(dt)?String(dt):dt;dx=!x(dx)?String(dx):dx;dw=[dt.slice(0,bA),dx.slice(0,bA)];if(dv==="visit"||dv===2){cN();aV[du]=dw}else{if(dv==="page"||dv===3){b2[du]=dw}else{if(dv==="event"){cs[du]=dw}}}}};this.getCustomVariable=function(du,dv){var dt;if(!M(dv)){dv="visit"}if(dv==="page"||dv===3){dt=b2[du]}else{if(dv==="event"){dt=cs[du]}else{if(dv==="visit"||dv===2){cN();
+dt=aV[du]}}}if(!M(dt)||(dt&&dt[0]==="")){return false}return dt};this.deleteCustomVariable=function(dt,du){if(this.getCustomVariable(dt,du)){this.setCustomVariable(dt,"","",du)}};this.deleteCustomVariables=function(dt){if(dt==="page"||dt===3){b2={}}else{if(dt==="event"){cs={}}else{if(dt==="visit"||dt===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(dt){bQ=dt};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(dt){if(x(dt)){dt=dt.split("|")}dg=dt};this.addDownloadExtensions=function(du){var dt;if(x(du)){du=du.split("|")}for(dt=0;dt<du.length;dt++){dg.push(du[dt])}};this.removeDownloadExtensions=function(dv){var du,dt=[];if(x(dv)){dv=dv.split("|")}for(du=0;du<dg.length;du++){if(P(dv,dg[du])===-1){dt.push(dg[du])}}dg=dt};this.setDomains=function(dt){aC=x(dt)?[dt]:dt;var dx=false,dv=0,du;for(dv;dv<aC.length;dv++){du=String(aC[dv]);if(cP(c2,O(du))){dx=true;break}var dw=cr(du);if(dw&&dw!=="/"&&dw!=="/*"){dx=true;
+break}}if(!dx){aC.push(c2)}};this.enableCrossDomainLinking=function(){cV=true};this.disableCrossDomainLinking=function(){cV=false};this.isCrossDomainLinkingEnabled=function(){return cV};this.setCrossDomainLinkingTimeout=function(dt){a5=dt};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(dt){bG=x(dt)?[dt]:dt};this.setRequestMethod=function(dt){if(dt){dj=String(dt).toUpperCase()}else{dj=cn}if(dj==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(dt){cE=dt||aM};this.setGenerationTimeMs=function(dt){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dx,dz,dy,du,dA,dv){var dw={pf_net:dx,pf_srv:dz,pf_tfr:dy,pf_dm1:du,pf_dm2:dA,pf_onl:dv};try{dw=Q(dw,M);dw=B(dw);ct=l(dw);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");
+return}bn=false;bL=true}catch(dt){ao("setPagePerformanceTiming: "+dt.toString())}};this.setReferrerUrl=function(dt){bu=dt};this.setCustomUrl=function(dt){ba=b1(bT,dt)};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(dt){bp=dt};this.setPageViewId=function(dt){aQ=dt;bH=true};this.setAPIUrl=function(dt){bO=dt};this.setDownloadClasses=function(dt){bR=x(dt)?[dt]:dt};this.setLinkClasses=function(dt){be=x(dt)?[dt]:dt};this.setCampaignNameKey=function(dt){cw=x(dt)?[dt]:dt};this.setCampaignKeywordKey=function(dt){bN=x(dt)?[dt]:dt};this.discardHashTag=function(dt){bV=dt};this.setCookieNamePrefix=function(dt){bq=dt;if(aV){aV=b3()}};this.setCookieDomain=function(dt){var du=O(dt);if(!bs&&!bD(du)){ao("Can't write cookie on domain "+dt)}else{c7=du;bo()}};this.setExcludedQueryParams=function(dt){co=x(dt)?[dt]:dt};this.getCookieDomain=function(){return c7};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dv,du,dt){if(!dv){throw new Error("Missing cookie name")
+}if(!M(dt)){dt=cu}bB.push(dv);dn(aY(dv),du,dt,bw,c7,bY,aN)};this.getCookie=function(du){var dt=aH(aY(du));if(dt===0){return null}return dt};this.setCookiePath=function(dt){bw=dt;bo()};this.getCookiePath=function(dt){return bw};this.setVisitorCookieTimeout=function(dt){cS=dt*1000};this.setSessionCookieTimeout=function(dt){cu=dt*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(dt){df=dt*1000};this.setConversionAttributionFirstReferrer=function(dt){bC=dt};this.setSecureCookie=function(dt){if(dt&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=dt};this.setCookieSameSite=function(dt){dt=String(dt);dt=dt.charAt(0).toUpperCase()+dt.toLowerCase().slice(1);if(dt!=="None"&&dt!=="Lax"&&dt!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(dt==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");
+dt="Lax"}}aN=dt};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs};this.setCookieConsentGiven=function(){if(bs&&!cY){bs=false;c6=true;if(cc&&aA){aR();var dt=cy("ping=1",null,"ping");bM(dt,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cL)};this.forgetCookieConsentGiven=function(){b5(cL,bw,c7);this.disableCookies()};this.rememberCookieConsentGiven=function(du){if(du){du=du*60*60*1000}else{du=30*365*24*60*60*1000}this.setCookieConsentGiven();var dt=new Date().getTime();dn(cL,dt,du,bw,c7,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(du){var dt=g.doNotTrack||g.msDoNotTrack;cY=du&&(dt==="yes"||dt==="1");if(cY){this.disableCookies()}};this.alwaysUseSendBeacon=function(){c5=true};this.disableAlwaysUseSendBeacon=function(){c5=false};this.addListener=function(du,dt){av(du,dt,false)};this.enableLinkTracking=function(du){if(di){return
+}di=true;var dt=this;q(function(){au=true;var dv=J.body;av(dv,du,true)})};this.enableJSErrorTracking=function(){if(c0){return}c0=true;var dt=W.onerror;W.onerror=function(dy,dw,dv,dx,du){cm(function(){var dz="JavaScript Errors";var dA=dw+":"+dv;if(dx){dA+=":"+dx}if(P(cz,dz+dA+dy)===-1){cz.push(dz+dA+dy);ax(dz,dA,dy)}});if(dt){return dt(dy,dw,dv,dx,du)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(dt){dt=Math.max(dt||15,5);bb=dt*1000;if(c8!==null){dq()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(dt){if(W.location.protocol==="file:"){W.location=dt}};
+this.setCountPreRendered=function(dt){bk=dt};this.trackGoal=function(dt,dw,dv,du){cm(function(){c1(dt,dw,dv,du)})};this.trackLink=function(du,dt,dw,dv){cm(function(){db(du,dt,dw,dv)})};this.getNumTrackedPageViews=function(){return cx};this.trackPageView=function(dt,dv,du){cg=[];cT=[];cz=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cx++;b6(dt,dv,du)})}};this.disableBrowserFeatureDetection=function(){c6=false};this.enableBrowserFeatureDetection=function(){c6=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var dt=w.findContentNodes();var du=cH(dt);bK.pushMultiple(du)})})};this.trackVisibleContentImpressions=function(dt,du){if(R(cc)){return}if(!M(dt)){dt=true}if(!M(du)){du=750}aX(dt,du,this);cm(function(){n(function(){var dv=w.findContentNodes();var dw=bf(dv);bK.pushMultiple(dw)})})};this.trackContentImpression=function(dv,dt,du){if(R(cc)){return}dv=a(dv);dt=a(dt);du=a(du);if(!dv){return}dt=dt||"Unknown";cm(function(){var dw=aK(dv,dt,du);
+bK.push(dw)})};this.trackContentImpressionsWithinNode=function(dt){if(R(cc)||!dt){return}cm(function(){if(ck){n(function(){var du=w.findContentNodesWithinNode(dt);var dv=bf(du);bK.pushMultiple(dv)})}else{q(function(){var du=w.findContentNodesWithinNode(dt);var dv=cH(du);bK.pushMultiple(dv)})}})};this.trackContentInteraction=function(dv,dw,dt,du){if(R(cc)){return}dv=a(dv);dw=a(dw);dt=a(dt);du=a(du);if(!dv||!dw){return}dt=dt||"Unknown";cm(function(){var dx=aU(dv,dw,dt,du);if(dx){bK.push(dx)}})};this.trackContentInteractionNode=function(dv,du){if(R(cc)||!dv){return}var dt=null;cm(function(){dt=dk(dv,du);if(dt){bK.push(dt)}});return dt};this.logAllContentBlocksOnPage=function(){var dv=w.findContentNodes();var dt=w.collectContent(dv);var du=typeof console;if(du!=="undefined"&&console&&console.log){console.log(dt)}};this.trackEvent=function(du,dw,dt,dv,dy,dx){cm(function(){ax(du,dw,dt,dv,dy,dx)})};this.trackSiteSearch=function(dt,dv,du,dw){cg=[];cm(function(){ce(dt,dv,du,dw)})};this.setEcommerceView=function(dx,dt,dv,du){cA={};
+if(ac(dv)){dv=String(dv)}if(!M(dv)||dv===null||dv===false||!dv.length){dv=""}else{if(dv instanceof Array){dv=W.JSON.stringify(dv)}}var dw="_pkc";cA[dw]=dv;if(M(du)&&du!==null&&du!==false&&String(du).length){dw="_pkp";cA[dw]=du}if(!ac(dx)&&!ac(dt)){return}if(ac(dx)){dw="_pks";cA[dw]=dx}if(!ac(dt)){dt=""}dw="_pkn";cA[dw]=dt};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(da))};this.addEcommerceItem=function(dx,dt,dv,du,dw){if(ac(dx)){da[dx]=[String(dx),dt,dv,du,dw]}};this.removeEcommerceItem=function(dt){if(ac(dt)){dt=String(dt);delete da[dt]}};this.clearEcommerceCart=function(){da={}};this.trackEcommerceOrder=function(dt,dx,dw,dv,du,dy){b4(dt,dx,dw,dv,du,dy)};this.trackEcommerceCartUpdate=function(dt){bz(dt)};this.trackRequest=function(du,dw,dv,dt){cm(function(){var dx=cy(du,dw,dt);bM(dx,bQ,dv)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(dt){if(dt<1000){throw new Error("Request queue interval needs to be at least 1000ms")
+}bK.interval=dt};this.queueRequest=function(dt){cm(function(){var du=cy(dt);bK.push(du)})};this.isConsentRequired=function(){return cI};this.getRememberedConsent=function(){var dt=aH(bj);if(aH(cU)){if(dt){b5(bj,bw,c7)}return null}if(!dt||dt===0){return null}return dt};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cI=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(du){bJ=true;c6=true;b5(cU,bw,c7);var dv,dt;for(dv=0;dv<cT.length;dv++){dt=typeof cT[dv];if(dt==="string"){bM(cT[dv],bQ)}else{if(dt==="object"){dp(cT[dv],bQ)}}}cT=[];if(!M(du)||du){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dv){if(dv){dv=dv*60*60*1000}else{dv=30*365*24*60*60*1000}var dt=true;this.setConsentGiven(dt);var du=new Date().getTime();dn(bj,du,dv,bw,c7,bY,aN)};this.forgetConsentGiven=function(){var dt=30*365*24*60*60*1000;b5(bj,bw,c7);dn(cU,new Date().getTime(),dt,bw,c7,bY,aN);
+this.forgetCookieConsentGiven();this.requireConsent()};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this]);u.addPlugin("TrackerVisitorIdCookie"+aB,{unload:function(){if(!aA){aR()}}})}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams"];
function ah(av,au){var at=new T(av,au);L.push(at);_paq=c(_paq,E);for(H=0;H<_paq.length;H++){if(_paq[H]){aj(_paq[H])}}_paq=new K();u.trigger("TrackerAdded",[at]);return at}ar(W,"beforeunload",am,false);ar(W,"online",function(){if(M(g.serviceWorker)){g.serviceWorker.ready.then(function(at){if(at&&at.sync){return at.sync.register("matomoSync")}},function(){})}},false);ar(W,"message",function(ay){if(!ay||!ay.origin){return}var aA,aw,au;var aB=d(ay.origin);var ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){au=d(ax[aw].getMatomoUrl());if(au===aB){aA=ax[aw];break}}if(!aA){return}var av=null;try{av=JSON.parse(ay.data)}catch(az){return}if(!av){return}function at(aE){var aG=J.getElementsByTagName("iframe");for(aw=0;aw<aG.length;aw++){var aF=aG[aw];var aC=d(aF.src);if(aF.contentWindow&&M(aF.contentWindow.postMessage)&&aC===aB){var aD=JSON.stringify(aE);aF.contentWindow.postMessage(aD,"*")}}}if(M(av.maq_initial_value)){at({maq_opted_in:av.maq_initial_value&&aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})
}else{if(M(av.maq_opted_in)){ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){aA=ax[aw];if(av.maq_opted_in){aA.rememberConsentGiven()}else{aA.forgetConsentGiven()}}at({maq_confirm_opted_in:aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;u={initialized:false,JSON:W.JSON,DOM:{addEventListener:function(aw,av,au,at){var ax=typeof at;if(ax==="undefined"){at=false}ar(aw,av,au,at)},onLoad:n,onReady:q,isNodeVisible:i,isOrWasNodeVisible:w.isNodeVisible},on:function(au,at){if(!z[au]){z[au]=[]}z[au].push(at)},off:function(av,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){if(z[av][at]===au){z[av].splice(at,1)}}},trigger:function(av,aw,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){z[av][at].apply(au||W,aw)}},addPlugin:function(at,au){b[at]=au},getTracker:function(au,at){if(!M(at)){at=this.getAsyncTracker().getSiteId()}if(!M(au)){au=this.getAsyncTracker().getTrackerUrl()
}return new T(au,at)},getAsyncTrackers:function(){return L},addTracker:function(av,au){var at;if(!L.length){at=ah(av,au)}else{at=L[0].addTracker(av,au)}return at},getAsyncTracker:function(ax,aw){var av;if(L&&L.length&&L[0]){av=L[0]}else{return ah(ax,aw)}if(!aw&&!ax){return av}if((!M(aw)||null===aw)&&av){aw=av.getSiteId()}if((!M(ax)||null===ax)&&av){ax=av.getTrackerUrl()}var au,at=0;for(at;at<L.length;at++){au=L[at];if(au&&String(au.getSiteId())===String(aw)&&au.getTrackerUrl()===ax){return au}}},retryMissedPluginCalls:function(){var au=al;al=[];var at=0;for(at;at<au.length;at++){aj(au[at])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return u});define("matomo",[],function(){return u})}return u}())}
diff --git a/lang/ca.json b/lang/ca.json
index 29e79dfdac..2ed8b30ff5 100644
--- a/lang/ca.json
+++ b/lang/ca.json
@@ -119,6 +119,7 @@
"Continue": "Continua",
"ContinueToPiwik": "Ves cap al Matomo",
"Copy": "Copia",
+ "Create": "Crea",
"CreatedByUser": "Creat per %s",
"CreationDate": "Data de creació",
"CurrentMonth": "Mes actual",
@@ -464,6 +465,7 @@
"TranslatorName": "Isaac Sánchez Barrera, Joan Juvanteny",
"UniquePurchases": "Compres úniques",
"Unknown": "Desconegut",
+ "Update": "Actualització",
"Upload": "Càrrega",
"UsePlusMinusIconsDocumentation": "Fes servir les icones de més i menys a l'esquerra per navegar.",
"UseSMTPServerForEmail": "Fer servir un servidor SMTP per el correu",
diff --git a/lang/de.json b/lang/de.json
index 66ab2fbac9..21237316a6 100644
--- a/lang/de.json
+++ b/lang/de.json
@@ -119,6 +119,7 @@
"Continue": "Weiter",
"ContinueToPiwik": "Weiter zu Matomo",
"Copy": "Kopieren",
+ "Create": "Erzeugen",
"CreatedByUser": "Erstellt von %s",
"CreationDate": "Erstellungsdatum",
"CurrentMonth": "Aktueller Monat",
@@ -464,6 +465,7 @@
"TranslatorName": "Frank Bueltge, Thorsten Taube, Arthur W. Borens, Marco Ziesing, Andreas Just, Fabian Becker, Henry Müller, Pascal Herbert, Christian W. Schneider, Michael Stenz, Itransition, Timo Besenreuther, Stefan Giehl",
"UniquePurchases": "Eindeutige Käufe",
"Unknown": "unbekannt",
+ "Update": "Aktualisieren",
"Upload": "Upload",
"UsePlusMinusIconsDocumentation": "Benutzen Sie zur Navigation die Symbole Plus und Minus auf der linken Seite.",
"UseSMTPServerForEmail": "SMTP-Server für E-Mails verwenden",
diff --git a/lang/el.json b/lang/el.json
index 2099f855ab..c6458233ae 100644
--- a/lang/el.json
+++ b/lang/el.json
@@ -119,6 +119,7 @@
"Continue": "Συνέχεια",
"ContinueToPiwik": "Συνέχεια στο Matomo",
"Copy": "Αντιγραφή",
+ "Create": "Δημιουργία",
"CreatedByUser": "δημιουργήθηκε από %s",
"CreationDate": "Ημ/νία δημιουργίας",
"CurrentMonth": "Τρέχων Μήνας",
@@ -464,6 +465,7 @@
"TranslatorName": "Jim Black, Γεώργιος Τέλλος OnSite.Net VoIP & IT Solutions, Παναγιώτης Παπάζογλου Δρ. Δασολόγος-Περιβαλλοντολόγος, Λούρδας Βασίλειος, <a href=\"https://gr.linkedin.com/in/lourdas\">Vasilis Lourdas</a>",
"UniquePurchases": "Μοναδικές Παραγγελίες",
"Unknown": "Άγνωστο",
+ "Update": "Ενημέρωση",
"Upload": "Αποστολή",
"UsePlusMinusIconsDocumentation": "Χρησιμοποιήστε τα εικονίδια + και - στα αριστερά για πλοήγηση.",
"UseSMTPServerForEmail": "Χρήση διακομιστή SMTP για ηλεκτρονική αλληλογραφία",
diff --git a/lang/id.json b/lang/id.json
index 46c3f98c26..f838c4df78 100644
--- a/lang/id.json
+++ b/lang/id.json
@@ -11,25 +11,25 @@
"AfterEntry": "setelah masuk di sini",
"All": "Semua",
"AllWebsitesDashboard": "Panel Kendali semua Situs",
- "AllowPiwikArchivingToTriggerBrowser": "Arsipkan laporan ketikan meniliknya dari peramban",
+ "AllowPiwikArchivingToTriggerBrowser": "Arsipkan laporan saat dilihat dari peramban",
"And": "dan",
"Apply": "Terapkan",
"ArchivingInlineHelp": "Untuk kunjungan situs menengah hingga tinggi, disarankan untuk mematikan pengarsipan Matomo ketika laporan ditampilkan. Kami lebih menyarankan untuk mengatur tugas Cron untuk mengolah laporan pada tiap jam.",
"ArchivingTriggerDescription": "Direkomendasikan untuk pemasangan Matomo yang lebih besar, Anda perlu %1$smengatur tugas cron%2$s untuk memproses laporan secara otomatis.",
"ArchivingTriggerSegment": "Menggunakan Segmen Khusus tetap akan memicu pemrosesan arsip.",
- "AuthenticationMethodSmtp": "Metode otentikasi untuk SMTP",
- "AverageOrderValue": "Rerata Nilai Permintaan",
+ "AuthenticationMethodSmtp": "Metode autentikasi untuk SMTP",
+ "AverageOrderValue": "Nilai Pesanan Rerata",
"AveragePrice": "Harga Rerata",
"AverageQuantity": "Kuantitas Rerata",
"AverageX": "Rata-rata %s",
"BackToPiwik": "Kembali ke Matomo",
"Broken": "Rusak",
- "BrokenDownReportDocumentation": "Hal ini dipecah menjadi berbagai laporan, yang ditampilkan dalam bagan garis di bagian bawah halaman. Anda dapat memperbesar grafik dengan mengklik laporan yang ingin Anda lihat.",
+ "BrokenDownReportDocumentation": "Hal ini dipecah menjadi berbagai laporan yang ditampilkan di dalam bagan garis di bagian bawah halaman. Anda dapat memperbesar grafik dengan mengeklik laporan yang ingin Anda lihat.",
"Cancel": "Batal",
"CannotUnzipFile": "Tidak dapat membongkar berkas %1$s: %2$s",
"ChangeInX": "Perubahan dalam %1$s",
"ChangePassword": "Ganti Sandi",
- "ChangeTagCloudView": "Perlu diketahui, bahwa Anda dapat melihat laporan dalam cara lain selain sebagai etiket awan. Gunakan kendali di bagian bawah laporan untuk melakukannya.",
+ "ChangeTagCloudView": "Perlu diketahui, bahwa Anda dapat melihat laporan dalam cara lain selain sebagai tag awan. Gunakan kontrol di bagian bawah laporan untuk melakukannya.",
"ChooseDate": "Pilih tanggal, tampilan tanggal terpilih saat ini adalah: %s",
"ChooseLanguage": "Pilih bahasa",
"ChoosePeriod": "Pilih periode",
@@ -40,15 +40,15 @@
"Close": "Tutup",
"ColumnActionsPerVisit": "Tindakan tiap Kunjungan",
"ColumnActionsPerVisitDocumentation": "Rerata jumlah tindakan (menampilkan halaman, mengunduh, atau tautan keluar) yang dilakukan selama kunjungan.",
- "ColumnAverageGenerationTime": "Waktu dibangkitkan rerata",
- "ColumnAverageGenerationTimeDocumentation": "Waktu rerata diperlukan untuk membangkitkan halaman ini. Matrik ini menyertakan waktu yang diambil peladen untuk membangkitkan halaman ramatraya, ditampah waktu yang diperlukan pengunjung untuk mengunduh tanggapan dari peladen. 'Waktu pembangktan rerata' rendah berarti situs yang lebih cepat untuk pengunjung Anda!",
+ "ColumnAverageGenerationTime": "Waktu generasi rata-rata",
+ "ColumnAverageGenerationTimeDocumentation": "Waktu rata-rata yang diperlukan untuk membuat halaman. Metrik ini mencakup waktu yang dibutuhkan server untuk membuat halaman web, ditambah waktu yang dibutuhkan pengunjung untuk mengunduh respons dari server. 'Rata-rata waktu generasi yang lebih rendah' berarti situs web yang lebih cepat untuk pengunjung Anda!",
"ColumnAverageTimeOnPage": "Waktu rerata halaman",
"ColumnAverageTimeOnPageDocumentation": "Jumlah rerata pengunjung menghabiskan waktu pada halaman ini (hanya halaman, bukan seluruh situs).",
"ColumnAvgTimeOnSite": "Rerata Waktu di Situs",
"ColumnAvgTimeOnSiteDocumentation": "Rerata lama tiap kunjungan.",
- "ColumnBounceRate": "Tingkat Pentalan",
+ "ColumnBounceRate": "Tingkat Pantulan",
"ColumnBounceRateDocumentation": "Persentase kunjungan yang hanya melihat satu halaman. Ini berarti, bahwa pengunjung meninggalkan situs langsung dari halaman awal.",
- "ColumnBounces": "Pentalan",
+ "ColumnBounces": "Pantulan",
"ColumnBouncesDocumentation": "Jumlah kunjungan yang mulai dan berakhir pada halaman ini. Ini berarti bahwa pengunjung meninggalkan situs setelah melihat hanya halaman ini.",
"ColumnConversionRate": "Tingkat Konversi",
"ColumnConversionRateDocumentation": "Persentase kunjungan yang dipicu tujuan tayangan.",
@@ -57,7 +57,7 @@
"ColumnEntrancesDocumentation": "Jumlah kunjungan yang berawal dari halaman ini.",
"ColumnExitRate": "Tingkat keluar",
"ColumnExitRateDocumentation": "Persentase kunjungan dari pengunjung yang meninggalkan situs setelah melihat halaman ini.",
- "ColumnExits": "Keluaran",
+ "ColumnExits": "Keluar",
"ColumnExitsDocumentation": "Jumlah kunjungan yang berakhir pada halaman ini.",
"ColumnGenerationTime": "Waktu pembangkitan",
"ColumnHits": "Hit",
@@ -69,13 +69,13 @@
"ColumnNbUniqVisitors": "Pengunjung unik",
"ColumnNbUniqVisitorsDocumentation": "Jumlah pengunjung tidak terduplikasi datang ke website Anda. Setiap pengguna hanya dihitung sekali, bahkan jika mereka mengunjungi website beberapa kali dalam satu hari.",
"ColumnNbUsers": "Pengguna",
- "ColumnNbUsersDocumentation": "Jumlah pengguna yang masuk-log ke situs Anda. Ini adalah jumlah pengguna aktif dengan ID Pengguna yang diatur (melalui fungsi Pelacakan 'setUserId').",
+ "ColumnNbUsersDocumentation": "Jumlah pengguna yang masuk ke situs Anda. Ini adalah jumlah pengguna aktif dengan ID Pengguna yang diatur (melalui fungsi Pelacakan 'setUserId').",
"ColumnNbVisits": "Kunjungan",
"ColumnNbVisitsDocumentation": "Jika pengunjung data ke website Anda untuk pertama kali atau jika mereka mengunjungi ke sebuah halaman lebih dari 30 menit setelah kunjungan terakhir, hal ini akan direkam sebagai kunjungan baru.",
"ColumnPageBounceRateDocumentation": "Persentase kunjungan yang berawal pada halaman ini dan meninggalkan situs langsung.",
"ColumnPageGenerationTime": "Waktu pembangkitan halaman",
"ColumnPageviews": "Tampilan Halaman",
- "ColumnPageviewsDocumentation": "Berapa kali halaman ini dikunjungi.",
+ "ColumnPageviewsDocumentation": "Jumlah kunjungan di halaman ini.",
"ColumnPercentageVisits": "%% Kunjungan",
"ColumnRevenue": "Pendapatan",
"ColumnSumTimeOnSite": "Total Waktu di Situs Web",
@@ -91,7 +91,7 @@
"ColumnViewsWithGenerationTime": "Tampilan halaman dengan waktu pembuatan",
"ColumnVisitDuration": "Lama Kunjungan (dalam detik)",
"ColumnVisitsWithConversions": "Kunjungan dengan Tayangan",
- "CompareDatesParamMustMatchComparePeriods": "Panjang pemintaan %1$s harus sesuai dengan panjang parameter (%2$s).",
+ "CompareDatesParamMustMatchComparePeriods": "Panjang parameter kueri %1$s harus cocok dengan panjang parameter kueri %2$s.",
"CompareTo": "Bandingkan dengan:",
"ComparisonCardTooltip1": "'%1$s' pada %2$s mengandung %3$s dari semua kunjungan (%4$s dari total %5$s).",
"ComparisonCardTooltip2": "Jumlah kunjungan berbeda sebanyak %1$s dibandingkan %2$s selama %3$s.",
@@ -114,25 +114,26 @@
"ComputedMetricSumDocumentation": "Total jumlah (hitungan) dari %s",
"ComputedMetricUniqueCount": "Unik %s",
"ComputedMetricUniqueCountDocumentation": "Jumlah unik dari %s",
- "ConfigFileIsNotWritable": "Berkas konfigurasi Matomo %1$s tak dapat ditulisi, beberapa perubahan Anda kemungkinan tidak tersimpan. %2$s Silakan mengubah perizinan berkas konfigurasi agar dapat ditulisi.",
+ "ConfigFileIsNotWritable": "Berkas konfigurasi Matomo %1$s tak dapat ditulis, beberapa perubahan Anda kemungkinan tidak tersimpan. %2$s Silakan mengubah perizinan berkas konfigurasi agar dapat ditulis.",
"Confirm": "Konfirmasi",
"Continue": "Lanjut",
"ContinueToPiwik": "Lanjut ke Matomo",
"Copy": "Salin",
+ "Create": "Buat",
"CreatedByUser": "dibuat oleh %s",
"CreationDate": "Tanggal pembuatan",
"CurrentMonth": "Bulan Ini",
"CurrentWeek": "Minggu Ini",
"CurrentYear": "Tahun Ini",
- "CurrentlyUsingUnsecureHttp": "Saat ini anda sedang menggunakan Matomo dengan HTTP tidak aman. Hal ini dapat membuat Matomo anda rentan terhadap eksploit. Anda juga mungkin melanggar hukum privasi, sebagaimana beberapa fitur termasuk kukis keluar tidak akan bekerja. Kami menyarankan anda mengatur Matomo untuk menggunakan SSL (HTTPS) untuk keamanan tingkat lanjut.",
- "Custom": "Berdasarkan keinginan",
+ "CurrentlyUsingUnsecureHttp": "Saat ini Anda menggunakan Matomo melalui HTTP yang tidak aman. Ini dapat membuat Matomo Anda rentan terhadap eksploitasi keamanan. Anda mungkin juga melanggar undang-undang privasi karena beberapa fitur termasuk kuki opt-out tidak akan berfungsi. Kami menyarankan Anda mengatur Matomo untuk menggunakan SSL (HTTPS) demi meningkatkan keamanan.",
+ "Custom": "Khusus",
"Daily": "Harian",
"DailyReport": "harian",
"DailyReports": "Laporan harian",
"DailySum": "jumlah harian",
"DashboardForASpecificWebsite": "Panel Kendali untuk Situs tertentu",
"DataForThisGraphHasBeenPurged": "Data untuk grafik ini berumur lebih dari %s bulan dan telah dibersihkan.",
- "DataForThisTagCloudHasBeenPurged": "Data untuk awan etiket ini berumur lebih dari %s bulan dan telah dibersihkan.",
+ "DataForThisTagCloudHasBeenPurged": "Data untuk tag awan ini berumur lebih dari %s bulan dan telah dibersihkan.",
"Date": "Tanggal",
"DateRange": "Rentang tanggal:",
"DateRangeFrom": "Dari",
@@ -141,7 +142,7 @@
"DateRangeTo": "Kepada",
"DaysHours": "%1$s hari %2$s jam",
"DaysSinceFirstVisit": "Hari sejak kujungan pertama",
- "DaysSinceLastEcommerceOrder": "Hari sejak permintaan Niaga-E terakhir",
+ "DaysSinceLastEcommerceOrder": "Hari sejak permintaan Niaga-el terakhir",
"DaysSinceLastVisit": "Hari sejak kunjungan terakhir",
"Default": "Asali",
"DefaultAppended": "(asali)",
@@ -150,7 +151,7 @@
"Desktop": "Desktop",
"Details": "Selengkapnya",
"Disabled": "Nonaktif",
- "Discount": "Potongan",
+ "Discount": "Diskon",
"DisplaySimpleTable": "Tampilan tabel sederhana",
"DisplayTableWithGoalMetrics": "Menampilkan tabel dengan pengukuran Tujuan",
"DisplayTableWithMoreMetrics": "Menampilkan tabel dengan pengukuran lebih banyak",
@@ -160,18 +161,18 @@
"DoubleClickToChangePeriod": "Klik dua kali untuk menerapkan periode ini.",
"Download": "Unduh",
"DownloadFail_FileExists": "Berkas %s telah ada!",
- "DownloadFail_FileExistsContinue": "Mencoba melanjutkan unduhan untuk %s, tapi berkas terunduh penuh telah ada!",
- "DownloadFail_HttpRequestFail": "Tidak dapat mengunduh berkas! Sesuatu telah terjadi dengan situs di mana Anda mengunduh berkas tersebut. Anda dapat mengulang kembali nanti atau memperoleh berkas sendiri.",
- "DownloadFullVersion": "%1$sUnduh%2$s versi penuh! Periksa %3$s",
- "DownloadPleaseRemoveExisting": "Bila Anda berkeinginan mengganti ini, harap menghapus berkas yang ada.",
+ "DownloadFail_FileExistsContinue": "Mencoba melanjutkan unduhan untuk %s, tetapi berkas yang diunduh sudah ada!",
+ "DownloadFail_HttpRequestFail": "Tidak dapat mengunduh berkas! Sesuatu telah terjadi dengan situs di mana Anda mengunduh berkas tersebut. Anda dapat mengulang kembali nanti atau memperoleh berkas itu sendiri.",
+ "DownloadFullVersion": "%1$sUnduh%2$s versi lengkapnya! Lihat %3$s",
+ "DownloadPleaseRemoveExisting": "Bila Anda berkeinginan menggantinya, harap menghapus berkas yang ada.",
"Downloads": "Unduhan",
- "EcommerceOrders": "Pesanan Niaga-E",
- "EcommerceVisitStatusDesc": "Kunjungi status Niaga-E pada akhir kunjungan",
- "EcommerceVisitStatusEg": "Sebagai contoh, untuk menyeleksi semua kunjungan dengan pemesanan Niaga-E, permintaan API akan mengandung %s",
+ "EcommerceOrders": "Pesanan Niaga-el",
+ "EcommerceVisitStatusDesc": "Kunjungi status Niaga-el pada akhir kunjungan",
+ "EcommerceVisitStatusEg": "Sebagai contoh, untuk menyeleksi semua kunjungan dengan pemesanan Niaga-el, permintaan API akan mengandung %s",
"Edit": "Sunting",
"EncryptedSmtpTransport": "Masukkan penyandian lapisan transpor yang dibutuhkan peladen SMTP.",
"Error": "Galat",
- "ErrorRequest": "Ups.. terdapat kesalahan selama melakukan permintaan. Mungkin peladen mendapat masalah sementara, atau mungkin Anda melakukan permintaan dengan data yang terlalu besar. Silakan coba kembali. Bila galat ini terjadi berulang, silakan %1$shubungi pengelola Matomo Anda%2$s untuk bantuan.",
+ "ErrorRequest": "Ups… terjadi masalah selama proses permintaan. Mungkin server mengalami masalah sementara atau mungkin Anda meminta laporan dengan terlalu banyak data. Silakan mencobanya kembali. Jika kesalahan ini terjadi berulang kali, silakan %1$shubungi administrator Matomo Anda%2$s untuk mendapatkan bantuan.",
"ErrorRequestFaqLink": "Lihat cara untuk menyelesaikan masalah ini di FAQ.",
"ErrorTryAgain": "Terjadi kesalahan. Silakan coba lagi nanti.",
"Errors": "Kesalahan",
@@ -186,55 +187,55 @@
"ExceptionDatabaseAccess": "Akses ke basis data ditolak",
"ExceptionDatabaseUnavailable": "Server MySQL telah hilang",
"ExceptionDatabaseVersion": "Versi %1$s Anda adalah %2$s, tetapi Matomo membtuhkan setidaknya versi %3$s.",
- "ExceptionDatabaseVersionNewerThanCodebase": "Basis kode Matomo Anda berjalan versi tua %1$s dan kami mendeteksi pangkalan data Matomo Anda telah ditingkatkan ke versi lebih baru %2$s.",
- "ExceptionDatabaseVersionNewerThanCodebaseWait": "Mungkin administrator Matomo Anda saat ini sedang menyelesaikan proses peningkatan. Silakan coba lagi dalam beberapa menit.",
- "ExceptionDirectoryToDelete": "Direktori untuk hapus: %s",
- "ExceptionFileIntegrity": "Pemerikasaa intergritas gagal: %s",
- "ExceptionFileToDelete": "Berkas akan dihapus: %s",
- "ExceptionFilesizeMismatch": "Ukuran berkas tak sesuai: %1$s (diharapkan panjang: %2$s, ditemukan: %3$s)",
- "ExceptionIncompatibleClientServerVersions": "Versi klien %1$s Anda adalah %2$s yang tidak sesuai dengan server versi %3$s.",
- "ExceptionInvalidAggregateReportsFormat": "Laporan keseluruhan bentuk '%1$s' tak sahih. Coba salah satu berikut ini sebagai pengganti: %2$s.",
+ "ExceptionDatabaseVersionNewerThanCodebase": "Basis kode Matomo Anda menjalankan versi lama %1$s dan kami telah mendeteksi bahwa Basis Data Matomo Anda telah ditingkatkan ke versi yang lebih baru %2$s.",
+ "ExceptionDatabaseVersionNewerThanCodebaseWait": "Mungkin administrator Matomo Anda saat ini sedang menyelesaikan proses pembaruan. Silakan coba lagi dalam beberapa menit.",
+ "ExceptionDirectoryToDelete": "Direktori yang akan dihapus: %s",
+ "ExceptionFileIntegrity": "Pemeriksaan integritas gagal: %s",
+ "ExceptionFileToDelete": "Berkas yang akan dihapus: %s",
+ "ExceptionFilesizeMismatch": "Ukuran berkas tidak cocok: %1$s (panjang yang diharapkan: %2$s, ditemukan: %3$s)",
+ "ExceptionIncompatibleClientServerVersions": "Versi klien %1$s Anda adalah %2$s yang mana tidak sesuai dengan server versi %3$s.",
+ "ExceptionInvalidAggregateReportsFormat": "Format laporan agregat '%1$s' tidak valid. Cobalah salah satu format berikut ini: %2$s.",
"ExceptionInvalidArchiveTimeToLive": "Waktu hidup untuk pengarsipan hari ini harus beberapa detik lebih besar dari nol",
"ExceptionInvalidDateBeforeFirstWebsite": "Tanggal '%1$s' adalah tanggal sebelum situs web pertama daring. Coba tanggal setelah %2$s(cap waktu %3$s).",
"ExceptionInvalidDateFormat": "Pola tanggal harus: %1$s atau kata kunci lain yang didukung oleh fungsi %2$s (lihat %3$s untuk informasi selengkapnya)",
"ExceptionInvalidDateRange": "Tanggal '%1$s' bukan rentang tanggal yang benar. Tanggal harus memiliki format sebagai berikut: %2$s.",
"ExceptionInvalidPeriod": "Periode '%1$s' tidak didukung. Coba salah satu berikut ini sebagai pengganti: %2$s",
- "ExceptionInvalidRendererFormat": "Penyaji format '%1$s' tak sahih. Coba salah satu berikut ini sebagai pengganti: %2$s.",
- "ExceptionInvalidReportRendererFormat": "Laporan format '%1$s' tak sahih. Coba salah satu berikut ini sebagai pengganti: %2$s.",
- "ExceptionInvalidStaticGraphType": "Grafik statis jenis '%1$s' tak sahih. Coba salah satu berikut ini sebagai pengganti: %2$s.",
- "ExceptionInvalidToken": "Kepingan tak sahih.",
+ "ExceptionInvalidRendererFormat": "Format perender '%1$s' tidak valid. Cobalah salah satu format berikut ini: %2$s.",
+ "ExceptionInvalidReportRendererFormat": "Format laporan '%1$s' tidak valid. Cobalah salah satu format berikut ini sebagai gantinya: %2$s.",
+ "ExceptionInvalidStaticGraphType": "Jenis grafik statis '%1$s' tidak valid. Cobalah salah satu dari ini sebagai gantinya: %2$s.",
+ "ExceptionInvalidToken": "Token tidak valid.",
"ExceptionLanguageFileNotFound": "Berkas bahasa '%s' tak ditemukan.",
"ExceptionMethodNotFound": "Metode '%1$s' tidak ada atau tak tersedia di modul '%2$s'.",
"ExceptionMissingFile": "Berkas hilang: %s",
- "ExceptionNonceMismatch": "Tidak dapat memeriksa kepingan dari borang ini.",
+ "ExceptionNonceMismatch": "Tidak dapat memverifikasi token keamanan pada formulir ini.",
"ExceptionNotSupportedBrowserText": "Karena masalah keamanan, peramban Anda tidak didukung. Silakan perbarui ke versi yang lebih baru.",
"ExceptionNotSupportedBrowserTitle": "Peramban Anda tidak didukung.",
"ExceptionPrivilege": "Anda tak dapat mengakses sumber daya ini karena membutuhkan akses %s.",
"ExceptionPrivilegeAccessWebsite": "Anda tidak dapat mengakses sumber daya ini sebab membutuhkan sebuah akses %1$s untuk situs web dengan id = %2$d.",
"ExceptionPrivilegeAtLeastOneWebsite": "Anda tidak dapat mengakses sumber daya ini karena membutuhkan setidaknya akses %s untuk satu situs web.",
- "ExceptionReportNotEnabled": "Laporan yang diminta tidak diaktifkan. Ini berarti biasanya plugin yang mendefinisikan laporan tidak aktif atau Anda tidak memiliki izin untuk mengakses laporan ini.",
+ "ExceptionReportNotEnabled": "Laporan yang diminta tidak diaktifkan. Ini berarti bahwa plugin yang menentukan laporan sudah dinonaktifkan atau Anda tidak memiliki izin yang cukup untuk mengakses laporan ini.",
"ExceptionReportNotFound": "Laporan yang diminta tidak tersedia.",
"ExceptionUnableToStartSession": "Tak dapat memulai sesi.",
"ExceptionUndeletableFile": "Tak dapat meghapus %s",
- "ExceptionUnexpectedDirectory": "Direktori ditemukan dalam Matomo Anda, tapi kami tidak dapat memahaminya.",
- "ExceptionUnexpectedDirectoryPleaseDelete": "Silakan haus direktori tersebut untuk menghindari kesalahan.",
- "ExceptionUnexpectedFile": "Berkas ditemukan dalam Matomo Anda, tapi kami tidak dapat memahaminya.",
+ "ExceptionUnexpectedDirectory": "Direktori ditemukan di Matomo Anda, tetapi kami tidak mengharapkannya.",
+ "ExceptionUnexpectedDirectoryPleaseDelete": "Harap hapus direktori ini untuk mencegah kesalahan.",
+ "ExceptionUnexpectedFile": "Berkas ditemukan di Matomo Anda, tetapi kami tidak mengharapkannya.",
"ExceptionUnexpectedFilePleaseDelete": "Mohon hapus berkas berikut untuk menghindari kesalahan.",
- "ExceptionUnreadableFileDisabledMethod": "Berkas konfigurasi {%1$s} tak dapat dibaca. Inang Anda kemungkungkinan mematikan %2$s.",
- "ExceptionWidgetNotEnabled": "Widget yang diminta tidak diaktifkan. Ini berarti biasanya plugin yang mendefinisikan widget tidak aktif atau Anda tidak memiliki izin untuk mengakses widget ini.",
+ "ExceptionUnreadableFileDisabledMethod": "Berkas konfigurasi {%1$s} tidak dapat dibaca. Host Anda mungkin telah menonaktifkan %2$s.",
+ "ExceptionWidgetNotEnabled": "Widget yang diminta tidak diaktifkan. Ini berarti plugin yang mendefinisikan widget tidak aktif atau Anda tidak memiliki izin untuk mengakses widget ini.",
"ExceptionWidgetNotFound": "Widget yang diminta tidak tersedia.",
"ExpandDataTableFooter": "Ubah visualisasi atau mengonfigurasi laporan",
"Export": "Ekspor",
"ExportAsImage": "Ekspor sebagai Gambar",
"ExportThisReport": "Ekspor dataset ini ke format lain",
- "Faq": "Pertanyaan yang Sering Diajukan",
- "FileIntegrityWarning": "Pemeriksaan integritas berkas gagal dan melaporkan beberapa kesalahan. Anda harus memperbaiki masalah ini dan kemudian menyegarkan halaman sampai tidak menunjukkan kesalahan.",
- "FileIntegrityWarningReupload": "Kesalahan di bawah mungkin sebagian atau gagal mengunggah berkas dari Matomo.",
- "FileIntegrityWarningReuploadBis": "Coba lagi untuk mengunggah ulang berkas mode BINARY Matomo.",
+ "Faq": "FAQ",
+ "FileIntegrityWarning": "Pemeriksaan integritas berkas gagal dan melaporkan beberapa kesalahan. Anda harus memperbaiki masalah ini kemudian menyegarkan halaman sampai tidak menunjukkan kesalahan.",
+ "FileIntegrityWarningReupload": "Kesalahan di bawah ini mungkin disebabkan oleh pengunggahan sebagian berkas Matomo atau kegagalan pengunggahan.",
+ "FileIntegrityWarningReuploadBis": "Coba unggah ulang semua berkas Matomo dalam mode BINARY.",
"First": "Pertama",
"Flatten": "Diratakan",
"ForExampleShort": "misalnya",
- "ForceSSLRecommended": "Kami menyaraknkan untuk menggunakan Matomo hanya melalui samsungan SSL. Untuk mencengah akses melalui HTTP, tambahkan %1$s ke bagian %2$s dalam berkas config/config.ini.php .",
+ "ForceSSLRecommended": "Sebaiknya gunakan Matomo melalui koneksi SSL yang aman saja. Untuk mencegah akses yang tidak aman melalui http, tambahkan %1$s ke bagian %2$s di berkas config/config.ini.php Matomo Anda.",
"ForcedSSL": "Paksa Koneksi SSL",
"Forums": "Forum",
"FromReferrer": "dari",
@@ -242,7 +243,7 @@
"GeneralSettings": "Pengaturan Umum",
"Generic": "Umum",
"GetStarted": "Memulai",
- "GiveUsYourFeedback": "Beri UmpanBalik!",
+ "GiveUsYourFeedback": "Beri kami Umpan Balik!",
"GoTo": "Menuju %s",
"GoTo2": "Pergi ke",
"Goal": "Tujuan",
@@ -260,8 +261,8 @@
"IncompletePeriod": "Periode Tidak Lengkap",
"InfoFor": "Informasi untuk %s",
"Installed": "Terpasang",
- "InvalidDateRange": "Rentang tidak sahih. Silakan ulangi lagi",
- "InvalidResponse": "Data yang diterima tak sahih.",
+ "InvalidDateRange": "Rentang Tanggal Tidak Valid, Silakan Coba Lagi",
+ "InvalidResponse": "Data yang diterima tidak valid.",
"JsTrackingTag": "Kode Pelacakan JavaScript",
"KpiMetric": "Metrik KPI",
"Language": "Bahasa",
@@ -275,7 +276,7 @@
"LoadingPopover": "Memuat %s...",
"LoadingPopoverFor": "Memuat %s untuk",
"Locale": "id_ID.UTF-8",
- "Logout": "Keluar-log",
+ "Logout": "Keluar",
"MainMetrics": "Metrik utama",
"Matches": "Cocok",
"MatomoIsACollaborativeProjectYouCanContributeAndDonateNextRelease": "%1$sMatomo%2$s, sebelumnya dikenal sebagai Piwik, adalah proyek kolaboratif yang dipersembahkan oleh anggota %7$stim Matomo%8$s serta banyak kontributor lain di seluruh dunia. <br> Jika Anda penggemar Matomo, Anda dapat membantu: cari tahu %3$sCara berpartisipasi di Matomo%4$s atau %5$sdonasi sekarang%6$s untuk membantu mendanai perilisan Matomo versi berikutnya!",
@@ -291,7 +292,7 @@
"Metrics": "Metrik",
"MetricsToPlot": "Metrik ke alur",
"MinutesSeconds": "%1$s menit %2$ss",
- "Mobile": "Bergerak",
+ "Mobile": "Seluler",
"Monthly": "Bulanan",
"MonthlyReport": "bulanan",
"MonthlyReports": "Laporan bulanan",
@@ -307,32 +308,32 @@
"NbActions": "Jumlah Tindakan",
"NbInteractions": "Jumlah interaksi",
"NbSearches": "Jumlah Pencarian Internal",
- "NeedMoreHelp": "Butuh bantuan lebih?",
- "Never": "TakPernah",
+ "NeedMoreHelp": "Butuh bantuan lebih lanjut?",
+ "Never": "Tak Pernah",
"New": "Baru",
- "NewReportsWillBeProcessedByCron": "Ketika pengarsipan Matomo tidak dipicu oleh browser, laporan baru akan diproses oleh Crontab.",
+ "NewReportsWillBeProcessedByCron": "Ketika pengarsipan Matomo tidak dipicu oleh peramban, laporan baru akan diproses oleh crontab.",
"NewUpdatePiwikX": "Ada pembaruan: Matomo %s",
- "NewVisitor": "Penjunjung Baru",
+ "NewVisitor": "Pengunjung Baru",
"NewVisits": "Kunjungan baru",
"Next": "Selanjutnya",
"No": "Tidak",
"NoDataForGraph": "Tidak ada data untuk grafik ini.",
- "NoDataForTagCloud": "Tidak ada data untuk awan etiket.",
+ "NoDataForTagCloud": "Tidak ada data untuk tag awan.",
"NotDefined": "%s tak dikenal",
"NotInstalled": "Tidak Terpasang",
"NotPossibleWithoutHttps": "Perhatian: Melakukan hal ini tanpa mengatur sebuah sertifikat SSL untuk menggunakan HTTPS akan membatalkan Matomo.",
"NotRecommended": "tidak direkomendasikan",
- "NotValid": "%s tidak sahih",
+ "NotValid": "%s tidak valid",
"Note": "Catatan",
"NumberOfVisits": "Jumlah kunjungan",
"Ok": "Ok",
"OneAction": "1 tindakan",
"OneVisit": "1 kunjungan",
- "OnlyEnterIfRequired": "Hanya masukkan nama-id bila peladen SMTP Anda mengharuskan.",
- "OnlyEnterIfRequiredPassword": "Hanya masukkan sandi bila peladen SMTP Anda mengharuskan.",
- "OnlyUsedIfUserPwdIsSet": "Hanya digunakan bila nama-id/sandi diatur, tanyakan ke penyedia Anda bila tidak yakin metode yang digunakan.",
- "OpenSourceWebAnalytics": "Analisis Ramatraya Sumber Terbuka",
- "OperationAtLeast": "Sekurangnya",
+ "OnlyEnterIfRequired": "Hanya masukkan nama pengguna jika server SMTP Anda memerlukannya.",
+ "OnlyEnterIfRequiredPassword": "Hanya masukkan kata sandi jika server SMTP Anda membutuhkannya.",
+ "OnlyUsedIfUserPwdIsSet": "Hanya digunakan jika nama pengguna/ kata sandi disetel, tanyakan ke penyedia Anda jika Anda tidak yakin dengan metode yang akan digunakan.",
+ "OpenSourceWebAnalytics": "platform analitik gratis",
+ "OperationAtLeast": "Paling sedikit",
"OperationAtMost": "Paling banyak",
"OperationContains": "Mengandung",
"OperationDoesNotContain": "Tidak mengandung",
@@ -350,27 +351,27 @@
"OrCancel": "atau %1$s Batal %2$s",
"Others": "Lainnya",
"Outlink": "Tautan keluar",
- "Outlinks": "Tautan Luar",
+ "Outlinks": "Tautan Keluar",
"OverlayRowActionTooltip": "Lihat data analitis secara langsung dalam situs Anda (buka tab baru)",
"OverlayRowActionTooltipTitle": "Buka Penghampar Halaman",
- "Overview": "Iktisar",
+ "Overview": "Ikhtisar",
"Pages": "Halaman",
"Pagination": "%1$s–%2$s dari %3$s",
"PaginationWithoutTotal": "%1$s–%2$s",
"ParameterMustIntegerBetween": "Parameter %1$s harus bilangan bulat antara %2$s dan %3$s.",
- "Password": "Sandi",
+ "Password": "Kata Sandi",
"Period": "Periode",
"Piechart": "Bagan Lingkaran",
"PiwikCannotBeUpgradedBecausePhpIsTooOld": "Matomo tidak dapat diperbarui ke versi mayor terbaru karena versi PHP Anda terlalu tua.",
"PiwikXIsAvailablePleaseNotifyPiwikAdmin": "%1$s telah tersedia. Silakan beritahu %2$s administrator Matomo %3$s.",
- "PiwikXIsAvailablePleaseUpdateNow": "Matomo %1$s tersedia. %2$sSilakan memperbarui sekarang!%3$s (lihat %4$sperubahan%5$s).",
+ "PiwikXIsAvailablePleaseUpdateNow": "Matomo %1$s tersedia. %2$sSilakan perbarui sekarang!%3$s (lihat %4$sperubahan%5$s).",
"PleaseContactYourPiwikAdministrator": "Silakan hubungi administrator Matomo Anda.",
"PleaseSpecifyValue": "Silakan tentukan nilai untuk '%s'.",
"PleaseTryAgain": "Silakan coba lagi",
"PleaseUpdatePiwik": "Silakan perbarui Matomo Anda",
"PleaseUpgradeYourPhpVersionSoYourPiwikDataStaysSecure": "Silakan tingkatkan versi PHP Anda paling tidak PHP %s sehingga analitik Matomo Anda tetap aman.",
- "Plugin": "Pengaya",
- "Plugins": "Pengaya",
+ "Plugin": "Plugin",
+ "Plugins": "Plugin",
"PoweredBy": "Dipersembahkan oleh",
"Previous": "Sebelumnya",
"PreviousDays": "Hari %s kemarin (tak termasuk hari ini)",
@@ -379,15 +380,15 @@
"PreviousYear": "Tahun sebelumnya",
"Price": "Harga",
"Print": "Cetak",
- "ProductConversionRate": "Suku Tukar Produk",
+ "ProductConversionRate": "Tingkat Konversi Produk",
"ProductRevenue": "Pendapatan Produk",
"Profiles": "Profil",
- "PurchasedProducts": "Pesan Produk",
+ "PurchasedProducts": "Produk yang Dibeli",
"Quantity": "Kuantitas",
"RangeReports": "Rentang waktu pilihan",
"ReadThisToLearnMore": "%1$sBaca ini untuk mempelajari selengkapnya.%2$s",
- "RealTime": "Waktu-nyata",
- "RearchiveTimeIntervalOnlyForTodayReports": "Hal ini mempengaruhi laporan hari ini (atau Rentang Tanggal lainnya termasuk hari ini)",
+ "RealTime": "Waktu nyata",
+ "RearchiveTimeIntervalOnlyForTodayReports": "Hal ini memengaruhi laporan hari ini (atau Rentang Tanggal lainnya termasuk hari ini)",
"Reasons": "Alasan",
"Recommended": "Direkomendasikan",
"RecordsToPlot": "Rekaman ke alur",
@@ -401,56 +402,56 @@
"ReportRatioTooltip": "'%1$s' mewakili %2$s dari %3$s %4$s dalam segmen %5$s dengan %6$s.",
"Reports": "Laporan",
"ReportsContainingTodayWillBeProcessedAtMostEvery": "Arsipkan laporan pada setiap X detik",
- "ReportsWillBeProcessedAtMostEveryHour": "Oleh karena itu laporan akan diproses paling setiap jam.",
- "RequestTimedOut": "Data yang diminta %s kehabisan waktu. Silakan coba lagi.",
+ "ReportsWillBeProcessedAtMostEveryHour": "Oleh karena itu, laporan akan diproses paling banyak setiap jam.",
+ "RequestTimedOut": "Permintaan data ke %s habis waktunya. Silakan coba lagi.",
"Required": "%s diperlukan",
"Required2": "Diperlukan",
- "ReturningVisitor": "Pengunjung Kembali",
+ "ReturningVisitor": "Pengunjung yang Kembali",
"ReturningVisitorAllVisits": "Tampilkan semua kunjngan",
"RowEvolutionRowActionTooltip": "Lihat bagaimana metrik untuk baris ini berubah seiring waktu",
- "RowEvolutionRowActionTooltipTitle": "Buka Perubahan Mentah",
+ "RowEvolutionRowActionTooltipTitle": "Buka Evolusi Baris",
"Rows": "Baris",
- "RowsToDisplay": "Baris ke tampilan",
+ "RowsToDisplay": "Baris untuk ditampilkan",
"Save": "Simpan",
- "SaveImageOnYourComputer": "Untuk menyimpan gambar ke komputer Anda, klik kanan di gambar dan pilih \"Simpan Gambar dengan Nama...\"",
+ "SaveImageOnYourComputer": "Untuk menyimpan gambar ke komputer Anda, klik kanan pada gambar dan pilih \"Save Image As...\"",
"Search": "Cari",
"SearchNoResults": "Tidak ada hasil",
"SecondsSinceFirstVisit": "Detik sejak kunjungan pertama",
- "SecondsSinceLastEcommerceOrder": "Detik sejak komersial elektronik terakhir",
+ "SecondsSinceLastEcommerceOrder": "Detik sejak Niaga-el terakhir",
"SecondsSinceLastVisit": "Detik sejak kunjungan terakhir",
"Security": "Keamanan",
"SeeAll": "lihat semua",
"SeeTheOfficialDocumentationForMoreInformation": "Lihat %1$sdokumentasi resmi%2$s untuk informasi selengkapnya.",
"SeeThisFaq": "Lihat %1$s faq ini %2$s.",
"Segment": "Segmen",
- "SelectYesIfYouWantToSendEmailsViaServer": "Pilih \"Ya\" bila Anda ingin mengirim surel melalui peladen surel daripada menggunakan fungsi mail() lokal",
+ "SelectYesIfYouWantToSendEmailsViaServer": "Pilih \"Ya\" jika Anda ingin atau harus mengirim surel melalui server ternama, bukan fungsi surel lokal",
"Settings": "Pengaturan",
"Shipping": "Pengiriman",
"Show": "tampilkan",
- "SingleWebsitesDashboard": "Panel Kendali Tunggal",
- "SmallTrafficYouCanLeaveDefault": "Untuk kunjungan kecil, Anda dapat membiarkan dalam %s detik, dan mengakses seluruh laporan dalam waktu nyata.",
+ "SingleWebsitesDashboard": "Dasbor Situs Web Tunggal",
+ "SmallTrafficYouCanLeaveDefault": "Untuk situs web dengan lalu lintas kecil, Anda dapat membiarkan dalam %s detik dan mengakses semua laporan dalam waktu nyata.",
"SmtpEncryption": "Penyandian SMTP",
"SmtpFromAddress": "Alamat pengirim SMTP",
- "SmtpFromEmailHelp": "Standar alamat email tujuan adalah noreply@%1$s. Jika email tidak dapat terkirim, Anda harus menyesuaikan alamat email tujuan sama dengan nama pengguna SMTP.",
+ "SmtpFromEmailHelp": "Nilai bawaannya adalah noreply@{DOMAIN}, dengan {DOMAIN} akan diganti dengan domain Matomo Anda \"%1$s\".<br>Jika pengirimanan surel tidak berhasil, Anda mungkin perlu menyetel alamat ini agar sesuai dengan Nama pengguna SMTP.",
"SmtpFromName": "Nama pengirim SMTP",
- "SmtpPassword": "Sandi SMTP",
+ "SmtpPassword": "Kata sandi SMTP",
"SmtpPort": "Porta SMTP",
"SmtpServerAddress": "Alamat peladen SMTP",
- "SmtpUsername": "Nama-id SMTP",
+ "SmtpUsername": "Nama pengguna SMTP",
"Source": "Sumber",
"StatisticsAreNotRecorded": "Pelacakan Kunjungan Matomo saat ini dimatikan! Akftifkan kembali dengan mengarur setting record_statistics = 1 di berkas config/config.ini.php Anda.",
- "Subtotal": "Sub-total",
+ "Subtotal": "Subtotal",
"Summary": "Ringkasan",
"Table": "Tabel",
- "TagCloud": "Awan Etiket",
- "Tax": "pajak",
- "ThankYouForUsingMatomo": "Terima kasih telah menggunakan Matomo",
+ "TagCloud": "Tag Awan",
+ "Tax": "Pajak",
+ "ThankYouForUsingMatomo": "Terima kasih karena telah menggunakan Matomo",
"TheMatomoTeam": "Tim Matomo",
"TimeAgo": "%s yang lalu",
"TimeFormat": "Format tanggal",
"TimeOnPage": "Waktu dalam halaman",
- "ToDeleteAllDirectoriesRunThisCommand": "Untuk menghapus semua direktori dalam sekali, Anda dapat menjalankan perintah berikut:",
- "ToDeleteAllFilesRunThisCommand": "Untuk menghapus semua berkas dalam sekali, Anda dapat menjalankan perintah berikut:",
+ "ToDeleteAllDirectoriesRunThisCommand": "Untuk menghapus semua direktori sekaligus, Anda dapat menjalankan perintah berikut:",
+ "ToDeleteAllFilesRunThisCommand": "Untuk menghapus semua berkas sekaligus, Anda dapat menjalankan perintah berikut:",
"Total": "Total",
"TotalRatioTooltip": "%1$s dari %2$s%3$s dalam %4$s.",
"TotalRevenue": "Total Pendapatan",
@@ -464,33 +465,34 @@
"TranslatorName": "Bayu Aditya H, Djaka PM, Hendry Lee",
"UniquePurchases": "Pembelian Unik",
"Unknown": "TakTahu",
+ "Update": "Pembaruan",
"Upload": "Unggah",
"UsePlusMinusIconsDocumentation": "Gunakan ikon plus dan minus di kiri untuk bernavigasi.",
"UseSMTPServerForEmail": "Gunakan peladen SMTP untuk surel",
"UseSSLInstall": "Kami menyarankan untuk menggunakan Matomo hanya melalui hubungan SSL yang aman. Silahkan %1$s klik di sini lanjutkan proses instalasi melalui SSL %2$s.",
"UserId": "ID pengguna",
"UserIds": "ID pengguna",
- "Username": "Nama-Id",
- "VBarGraph": "Grafik batang tegak",
+ "Username": "Nama pengguna",
+ "VBarGraph": "Grafik batang vertikal",
"ValidatorErrorCharacterTooLong": "Terdapat %1$s karakter, jumlah maksimum adalah %2$s karakter.",
"ValidatorErrorCharacterTooShort": "Hanya terdapat %1$s karakter, setidaknya harus terdapat %2$s karakter.",
"ValidatorErrorEmptyValue": "Nilai harus disertakan.",
"ValidatorErrorInvalidDateTimeFormat": "Tanggal \"%1$s\" tidak memiliki format yang benar, silakan gunakan %2$s",
- "ValidatorErrorNoValidRegex": "%sbukan merupakan regex yang valid.",
+ "ValidatorErrorNoValidRegex": "Nilai \"%s\" bukan ekspresi reguler yang valid.",
"ValidatorErrorNotANumber": "Nilai tidak berupa angka.",
- "ValidatorErrorNotEmailLike": "%sbukan merupakan alamat email yang valid.",
- "ValidatorErrorNotUrlLike": "%sbukan merupakan URL yang valid.",
- "ValidatorErrorNumberTooHigh": "Nilai \"%1$s\" terlalu tinggi. Nilai maksimum nilai harus %2$s",
+ "ValidatorErrorNotEmailLike": "Nilai \"%s\" tidak terlihat seperti surel yang valid.",
+ "ValidatorErrorNotUrlLike": "Nilai \"%s\" tidak terlihat seperti URL.",
+ "ValidatorErrorNumberTooHigh": "Nilai \"%1$s\" terlalu tinggi. Nilai maksimum harus %2$s",
"ValidatorErrorNumberTooLow": "Nilai \"%1$s\" terlalu rendah. Setidaknya nilai harus %2$s.",
- "ValidatorErrorXNotWhitelisted": "%1$stidak diizinkan, gunakan salah satu dari format: %2$s.",
+ "ValidatorErrorXNotWhitelisted": "Nilai \"%1$s\" tidak diperbolehkan, gunakan salah satu dari: %2$s.",
"Value": "Nilai",
"View": "Tampilan",
"ViewAccessRequired": "token_auth yang digunakan memiliki terlalu banyak akses untuk digunakan di permintaan URL non-API. Harap gunakan kata sandi khusus aplikasi untuk pengguna yang hanya memiliki akses untuk melihat.",
"ViewDocumentationFor": "Lihat dokumentasi untuk %1$s",
"Visit": "Kunjungan",
"VisitConvertedGoal": "Kunjungi konversi dengan Sasaran minimal satu",
- "VisitConvertedGoalId": "Kunjungi konversi ID Tujusn tertentu",
- "VisitConvertedNGoals": "Kujungi %s Sasaran konversi",
+ "VisitConvertedGoalId": "Kunjungan dikonversi ke ID Tujuan tertentu",
+ "VisitConvertedNGoals": "Kujungan mengonversi %s Tujuan",
"VisitDuration": "Rerata lama kunjungan (dalam detik)",
"VisitId": "ID pengunjung",
"VisitType": "Tipe kunjungan",
@@ -504,15 +506,15 @@
"VisitorSettings": "Pengaturan Pengunjung",
"Visitors": "Pengunjung",
"VisitsWith": "Kunjungan dengan %s",
- "VisualizationDoesNotSupportComparison": "Grafik ini tidak mendukung perbandingan antar segmen/periode.",
+ "VisualizationDoesNotSupportComparison": "Visualisasi ini tidak mendukung perbandingan segmen/ periode.",
"Warning": "Peringatan",
"WarningDebugOnDemandEnabled": "Mode pelacak %1$s telah diaktifkan. Untuk asalan keamanan hal ini harus diaktifkan hanya dalam waktu singkat. Untuk mematikannya atur %2$s ke %3$s dalam %4$s",
- "WarningDevelopmentModeOnButNotGitInstalled": "Anda saat ini menggunakan Matomo dalam mode pengembangan, tetapi tidak diinstal melalui git. Tidak disarankan untuk menggunakan Matomo mode pengembangan di lingkungan produksi.",
+ "WarningDevelopmentModeOnButNotGitInstalled": "Anda saat ini menggunakan Matomo dalam mode pengembangan, tetapi tidak dipasang melalui git. Tidak disarankan untuk menggunakan Matomo mode pengembangan di lingkungan produksi.",
"WarningFileIntegrityNoManifest": "Pemeriksaan integritas berkas tak dapat dilakukan sebab berkas manifest.inc.php tak ditemukan.",
- "WarningFileIntegrityNoManifestDeployingFromGit": "Jika Anda menyebarkan Matomo dari Git, pesan ini adalah normal.",
+ "WarningFileIntegrityNoManifestDeployingFromGit": "Jika Anda meluncurkan Matomo dari Git, pesan ini normal terjadi.",
"WarningFileIntegrityNoMd5file": "Pemeriksaan integritas berkas tak dapat diselesaikan sebab fungsi md5_file() tak ditemukan.",
"WarningPasswordStored": "%1$sPeringatan:%2$s Sandi akan disimpan dalam berkas konfigurasi yang tampak kepada semua yang dapat mengakses ini.",
- "WarningPhpVersionXIsTooOld": "Versi PHP %s yang Anda gunakan telah mencapai batas akhir End of Life (EOL). Anda didesak untuk meningkatkan ke versi saat ini, ketika menggunakan versi ini dapat mengekspos rentannya keamanan dan kutu yang telah diperbaiki pada versi PHP paling baru.",
+ "WarningPhpVersionXIsTooOld": "Versi PHP %s yang Anda gunakan telah mencapai End of Life (EOL). Anda sangat disarankan untuk meningkatkan ke terbaru, karena menggunakan versi ini dapat membuat Anda rentan terhadap kerentanan keamanan dan kesalahan yang telah diperbaiki di versi PHP yang lebih baru.",
"WarningPiwikWillStopSupportingPHPVersion": "Matomo berhenti mendukung versi PHP %1$s di versi mayor berikutnya. Perbarui PHP Anda paling tidak %2$s, sebelum hal ini terlambat!",
"Warnings": "Peringatan",
"Website": "Situs",
@@ -520,8 +522,8 @@
"WeeklyReport": "mingguan",
"WeeklyReports": "Laporan mingguan",
"WellDone": "Selamat!",
- "Widget": "Gawit",
- "Widgets": "Gawit",
+ "Widget": "Widget",
+ "Widgets": "Widget",
"XComparedToY": "%1$s dibandingkan dengan %2$s",
"XFromY": "%1$s dari %2$s",
"YearlyReport": "tahunan",
@@ -533,7 +535,7 @@
"YouMustBeLoggedIn": "Anda harus masuk untuk mengakses fungsi ini.",
"YouMustUpgradePhpVersionToReceiveLatestPiwik": "Anda harus meningkatkan versi PHP dalam rangka menerima pembaruan Matomo terbaru.",
"YourChangesHaveBeenSaved": "Perubahan Anda telah tersimpan.",
- "YourSessionHasExpired": "Sesi Anda telah habis karena tidak ada aktivitas. Harap login kembali untuk melanjutkan."
+ "YourSessionHasExpired": "Sesi Anda telah habis karena tidak ada aktivitas. Harap masuk kembali untuk melanjutkan."
},
"Mobile": {
"AboutPiwikMobile": "Tentang Matomo Mobile",
@@ -544,41 +546,41 @@
"AddPiwikDemo": "Tambahkan Demo Matomo",
"Advanced": "Tingkat lanjut",
"AnonymousAccess": "Akses Anonim",
- "AnonymousTracking": "Pelcakan Anonim",
- "AskForAnonymousTrackingPermission": "Bila diaktifkan, Matomo Bergerak akan mengirim data penggunaan anomim ke matomo.org. Bertujuan agar data ini membantu pengembang Matomo Bergerak lebih memahami bagaimana aplikasi digunakan. Informasi yang dikirim adalah: menu dan pengaturan pengeklikan, nama dan versi sistem operasi, segala galat yang tampil di Matomo Bergerak. Kami TIDAK akan melacak data analisi Anda. Data anonim ini tidak akan ditampilkan secara umum. Anda dapat mematikan/mengaktifkan pelacakan anonim di Pengaturan kapanpun.",
- "ChooseHttpTimeout": "Pilih nilai habis waktu HTTP",
- "ChooseMetric": "Pilih Metrik",
- "ChooseReport": "Pilih sebuah laporan",
- "ChooseSegment": "Pilih bidang",
- "ConfirmRemoveAccount": "Apakah Anda berkeinginan menghapus akun ini?",
- "DefaultReportDate": "Tanggak Laporan",
+ "AnonymousTracking": "Pelacakan Anonim",
+ "AskForAnonymousTrackingPermission": "Saat diaktifkan, Matomo Mobile akan mengirimkan data penggunaan anonim ke matomo.org. Tujuannya adalah untuk menggunakan data ini demi membantu pengembang Matomo Mobile untuk memahami cara aplikasi digunakan. Informasi yang dikirim adalah: menu dan pengaturan yang diklik, nama dan versi OS, kesalahan apa pun yang ditampilkan di Matomo Mobile. Kami TIDAK akan melacak data analitik Anda. Data anonim ini tidak akan pernah dipublikasikan. Anda dapat menonaktifkan/ mengaktifkan pelacakan anonim di Pengaturan kapan saja.",
+ "ChooseHttpTimeout": "Pilih nilai batas waktu HTTP",
+ "ChooseMetric": "Pilih metrik",
+ "ChooseReport": "Pilih laporan",
+ "ChooseSegment": "Pilih segmen",
+ "ConfirmRemoveAccount": "Apakah Anda berkeinginan untuk menghapus akun ini?",
+ "DefaultReportDate": "Tanggal Laporan",
"EmailUs": "Kirimi kami surel",
"EnableGraphsLabel": "Tampilkan grafik",
"EnterAuthCode": "Masukkan kode autentikasi",
- "EnterAuthCodeExplanation": "Nampaknya Anda menggunakan autentikasi dua-faktor. Mohon masukkan enam-digit kode untuk masuk ke akun Anda.",
+ "EnterAuthCodeExplanation": "Nampaknya Anda menggunakan autentikasi dua faktor. Mohon masukkan enam digit kode untuk masuk ke akun Anda.",
"EnterCorrectAuthCode": "Masukkan kode autentikasi yang benar",
"EvolutionGraph": "Grafik Riwayat",
- "ExceptionNoViewAccess": "Mohon periksan nama pengguna dan sandi lewat Anda untuk memastikan Anda memiliki access %s pada satu situs web.",
- "HelpUsToImprovePiwikMobile": "Apakah Anda ingin mengaktifkan pelacakan penggunaan anonim di Matomo Bergerak?",
+ "ExceptionNoViewAccess": "Silakan periksa nama pengguna dan kata sandi Anda dan pastikan Anda memiliki akses %s untuk setidaknya satu situs web.",
+ "HelpUsToImprovePiwikMobile": "Apakah Anda ingin mengaktifkan pelacakan penggunaan anonim di Matomo Mobile?",
"HowtoDeleteAnAccount": "Tekan lama untuk menghapus sebuah akun.",
- "HowtoDeleteAnAccountOniOS": "Tukar kiri ke kanan untuk menghapus sebuah akun",
+ "HowtoDeleteAnAccountOniOS": "Geser dari kiri ke kanan untuk menghapus sebuah akun",
"HowtoExitAndroid": "Mohon klik lagi KEMBALI untuk keluar",
- "HowtoLoginAnonymous": "Biarkan nama dan sandi kosong untuk masuk secara anonim",
- "HttpIsNotSecureWarning": "Pecahan otorisasi Matomo Anda (token_auth) terkirim dalam teks polos bila Anda menggunakan 'HTTP'. Untuk alasan tersebut, kami menyarankan menggunakan HTTPS untuk keamanan pengiriman data melalui internet. Anda yakin melanjutkannya?",
+ "HowtoLoginAnonymous": "Biarkan nama dan kata sandi kosong untuk masuk secara anonim",
+ "HttpIsNotSecureWarning": "Token otorisasi Matomo Anda (token_auth) dikirim dalam bentuk teks yang jelas jika Anda menggunakan 'HTTP'. Untuk alasan ini, kami merekomendasikan HTTPS untuk transportasi data yang aman melalui internet. Apakah Anda ingin melanjutkan?",
"HttpTimeout": "HTTP Kehabisan waktu",
"IgnoreSslError": "Abaikan Galat SSL",
- "IncompatiblePiwikVersion": "Versi Matomo yang Anda gunakan bertentangan dengan Matomo Bergerak 2. Perbarui pemasangan Matomo Anda dan coba kembali atau pasang Matomo Bergerak 1.",
+ "IncompatiblePiwikVersion": "Versi Matomo yang Anda gunakan tidak kompatibel dengan Matomo Mobile 2. Perbarui instalasi Matomo Anda dan coba lagi atau instal Matomo Mobile 1.",
"LastUpdated": "Pembaruan Terakhir: %s",
"LoadingReport": "Memuat %s",
- "LoginCredentials": "Dibutuhkan",
- "LoginToPiwikToChangeSettings": "Masuk ke peladen Matomo Anda untuk membuat dan memperbarui situs web, pengguna, atau mengubaj Pengaturan Umum seperti \"Laporan termuat asali\".",
+ "LoginCredentials": "Kredensial",
+ "LoginToPiwikToChangeSettings": "Masuk ke server Matomo Anda untuk membuat dan memperbarui situs web, pengguna, atau untuk mengubah Pengaturan Umum seperti \"Laporkan untuk memuat secara asali\".",
"LoginUseHttps": "Menggunakan https",
"MatomoMarketplace": "Lokapasar Matomo",
"MatomoMobile": "Aplikasi Seluler Matomo",
"MultiChartLabel": "Tampilkan bagan garis",
"NavigationBack": "Kembali",
"NetworkError": "Galat Jaringan",
- "NetworkErrorWithStatusCode": "Terdapat galat \"%1$s\". Permintaan memberikan status \"%2$s\", dengan URL \"%3$s\". Harap periksa URL yang Anda masukkan dan catatan galat dalam peladen ini untuk informasi tentang galat dan bagaimana menyelesaikannya.",
+ "NetworkErrorWithStatusCode": "Terjadi kesalahan \"%1$s\". Permintaan mengembalikan status \"%2$s\". URL adalah \"%3$s\". Silakan periksa URL yang Anda masukkan dan log kesalahan di server ini untuk informasi lebih lanjut tentang kesalahan dan cara untuk mengatasinya.",
"NetworkErrorWithStatusCodeShort": "Galat Jaringan %s",
"NetworkNotReachable": "Jaringan tak terjangkau",
"NoAccountIsSelected": "Anda harus memilih sebuah akun. Tambah akun baru bila Anda belum mengaturnya.",
@@ -594,13 +596,13 @@
"PullDownToRefresh": "Tekan untuk menyegarkan...",
"RatingDontRemindMe": "Jangan ingatkan lagi",
"RatingNotNow": "Jangan sekarang",
- "RatingNow": "Baik, aku akan menilai sekarang",
- "RatingPleaseRateUs": "App Bergerak Matomo merupakan Perangkat Lunak Gratis, kami sangat menghargai bila Anda meluangkan waktu sebentar untuk menilai aplikasi ini di %1$s. Bila Anda memiliki permintaan fitur baru atau laporan kutu, harap menghubungi %2$s",
+ "RatingNow": "Ok, aku akan menilainya sekarang",
+ "RatingPleaseRateUs": "Aplikasi Matomo Mobile adalah Perangkat Lunak Gratis, kami akan sangat menghargai jika Anda mau meluangkan waktu 1 menit untuk menilai aplikasi kami di %1$s. Jika Anda memiliki saran mengenai fitur baru atau laporan kesalahan, silakan hubungi %2$s",
"ReleaseToRefresh": "Lepaskan untuk menyegarkan...",
"Reloading": "Memuat ulang...",
"RequestTimedOutShort": "Galat Waktu Tunggu Jaringan",
- "RestrictedCompatibility": "Pembatasan pertentangan",
- "RestrictedCompatibilityExplanation": "Matomo versi %s yang Anda gunakan tidak sepenuhnya didukung oleh Matomo Bergerak 2. Anda mungkin mendapati beberapa kekutu. Kami menyarankan Anda memperbarui ke versi terbaru atau menggunakan Matomo Bergerak 1.",
+ "RestrictedCompatibility": "Kompatibilitas yang dibatasi",
+ "RestrictedCompatibilityExplanation": "Versi Matomo %s yang Anda gunakan tidak sepenuhnya didukung oleh Matomo Mobile 2. Anda mungkin mengalami beberapa kesalahan. Kami merekomendasikan untuk memperbarui Matomo ke versi terbaru atau menggunakan Matomo Mobile 1.",
"SaveSuccessError": "URL Matomo atau nama pengguna dan kata sandi Matomo salah.",
"SearchWebsite": "Pencarian situs",
"ShowAll": "Tampilkan semua",
@@ -608,10 +610,10 @@
"StaticGraph": "Grafik Iktisar",
"TopVisitedWebsites": "Situs kunjungan tertinggi",
"TryIt": "Cobalah!",
- "UseSearchBarHint": "Hanya situs %s pertama ditampilkan di sini. Harap menggunakan batang pencarian untuk mengakses situs Anda yang lain.",
+ "UseSearchBarHint": "Hanya situs web %s pertama yang ditampilkan di sini. Silakan gunakan bilah pencarian untuk mengakses situs web Anda yang lain.",
"ValidateSslCertificate": "Pengesahan Sertifikat SSL",
"VerifyAccount": "Memverifikasi Akun",
- "VerifyLoginData": "Pastikan bahwa nama-id dan sandi Anda sesuai.",
+ "VerifyLoginData": "Pastikan kombinasi nama pengguna dan kata sandi Anda benar.",
"YouAreOffline": "Maaf, Anda sekarang luring"
},
"RowEvolution": {
@@ -626,6 +628,6 @@
"MetricsFor": "Metrik untuk %s",
"MultiRowEvolutionTitle": "Perubahan baris berganda",
"PickARow": "Pilih baris yang dibandingkan",
- "PickAnotherRow": "Pilih baris lain yang dibandingkan"
+ "PickAnotherRow": "Pilih baris lain untuk dibandingkan"
}
}
diff --git a/lang/nb.json b/lang/nb.json
index f5b232002b..bcb47c9cad 100644
--- a/lang/nb.json
+++ b/lang/nb.json
@@ -119,6 +119,7 @@
"Continue": "Fortsett",
"ContinueToPiwik": "Fortsett til Matomo",
"Copy": "Kopier",
+ "Create": "Opprett",
"CreatedByUser": "laget av %s",
"CreationDate": "Opprettelsesdato",
"CurrentMonth": "Denne måneden",
@@ -464,6 +465,7 @@
"TranslatorName": "Hans Fredrik Nordhaug, Peter Holme Obrestad",
"UniquePurchases": "Unike kjøp",
"Unknown": "Ukjent",
+ "Update": "Oppdater",
"Upload": "Last opp",
"UsePlusMinusIconsDocumentation": "Bruk pluss- og minus-ikonene til venstre for å navigere.",
"UseSMTPServerForEmail": "Bruk SMTP-tjener for e-post",
diff --git a/lang/pt-br.json b/lang/pt-br.json
index 38929b0532..aba5a8598d 100644
--- a/lang/pt-br.json
+++ b/lang/pt-br.json
@@ -119,6 +119,7 @@
"Continue": "Continuar",
"ContinueToPiwik": "Continuar para o Matomo",
"Copy": "Copiar",
+ "Create": "Criar",
"CreatedByUser": "criado por %s",
"CreationDate": "Data de criação",
"CurrentMonth": "Mês atual",
@@ -464,6 +465,7 @@
"TranslatorName": "A. Renato, Rafael Moretti",
"UniquePurchases": "Pedidos únicos",
"Unknown": "Desconhecido",
+ "Update": "Atualizar",
"Upload": "Carregar",
"UsePlusMinusIconsDocumentation": "Use os ícones de mais e menos à esquerda para navegar.",
"UseSMTPServerForEmail": "Usar servidor SMTP para e-mail",
diff --git a/lang/si.json b/lang/si.json
index cd2a0b438c..12e10abdd6 100644
--- a/lang/si.json
+++ b/lang/si.json
@@ -1,5 +1,10 @@
{
"General": {
+ "API": "යෙ.ක්‍ර.මු.",
+ "Action": "ක්‍රියාමාර්ගය",
+ "Actions": "ක්‍රියාමාර්ග",
+ "Add": "එකතු",
+ "All": "සියල්ල",
"Locale": "si_LK.UTF-8"
}
-} \ No newline at end of file
+}
diff --git a/lang/sv.json b/lang/sv.json
index 9ff9fe09f9..5444524716 100644
--- a/lang/sv.json
+++ b/lang/sv.json
@@ -14,14 +14,14 @@
"AllowPiwikArchivingToTriggerBrowser": "Arkivera rapporter när de visas i webbläsaren",
"And": "och",
"Apply": "Verkställ",
- "ArchivingInlineHelp": "För webbplatser med medelhög till hög trafik rekommenderas att du stänger av att Matomos funktion för arkivering aktiveras från webbläsare. Istället rekommenderar vi att du konfigurerar ett cronjobb för att processa Matomorapporter varje timme.",
+ "ArchivingInlineHelp": "För webbplatser med medelhög till hög trafik rekommenderas att du stänger av Matomos funktion för arkivering att aktiveras från webbläsare. Istället rekommenderar vi att du konfigurerar ett cronjobb för att processa Matomorapporter varje timme.",
"ArchivingTriggerDescription": "För större Matomo-installationer rekommenderas att du %1$ssätter upp ett cron-jobb%2$s för att behandla rapporterna automatiskt.",
"ArchivingTriggerSegment": "Användning av anpassade segment kommer fortfarande att utlösa behandling av arkivering.",
"AuthenticationMethodSmtp": "Autentiseringsmetod för SMTP",
- "AverageOrderValue": "Genomsnittligt ordervärde",
+ "AverageOrderValue": "Genomsnittlig ordervärde",
"AveragePrice": "Genomsnittligt pris",
"AverageQuantity": "Genomsnittlig mängd",
- "AverageX": "Genomsnittlig %s",
+ "AverageX": "Genomsnitt %s",
"BackToPiwik": "Tillbaka till Matomo",
"Broken": "Bruten",
"BrokenDownReportDocumentation": "Det är indelat i olika rapporter, som visas i miniatyrdiagram längst ner på sidan. Du kan förstora graferna genom att klicka på den rapport du vill se.",
@@ -119,6 +119,7 @@
"Continue": "Fortsätt",
"ContinueToPiwik": "Fortsätt till Matomo",
"Copy": "Kopiera",
+ "Create": "Skapa",
"CreatedByUser": "skapad av %s",
"CreationDate": "Datum för skapande",
"CurrentMonth": "Denna månad",
@@ -464,6 +465,7 @@
"TranslatorName": "Fredrik Astrom, <a href=\"http://www.kb.se/\">National Library of Sweden</a>, <a href=\"https://www.facebook.com/Rabattkod-147619931946607\">Yegane Shirazi</a>, <a href=\"https://arly.se/\">ARLY</a>, <a href=\"https://whitespace.se/Matomo/\">Linn Nilsson (Whitespace)</a>",
"UniquePurchases": "Unika beställningar",
"Unknown": "Okänt",
+ "Update": "Updatera",
"Upload": "Ladda upp",
"UsePlusMinusIconsDocumentation": "Använd plus- och minusikonerna till höger för att navigera.",
"UseSMTPServerForEmail": "Använd SMTP-server för e-post",
@@ -573,7 +575,7 @@
"LoginCredentials": "Behörighet",
"LoginToPiwikToChangeSettings": "Logga in på din Matomo-server för att skapa eller uppdatera webbsidor, användare och Allmänna inställningar som ”Standardiserad rapport”",
"LoginUseHttps": "Använd https",
- "MatomoMarketplace": "Matomo Marketplace",
+ "MatomoMarketplace": "Matomo Marknadsplats",
"MatomoMobile": "Matomos mobilapp",
"MultiChartLabel": "Visa miniatyrdiagram",
"NavigationBack": "Tillbaka",
diff --git a/lang/tr.json b/lang/tr.json
index 045b2073f4..e8a634073f 100644
--- a/lang/tr.json
+++ b/lang/tr.json
@@ -119,6 +119,7 @@
"Continue": "Devam",
"ContinueToPiwik": "Matomo uygulamasını kullanmaya başlayın",
"Copy": "Kopyala",
+ "Create": "Ekle",
"CreatedByUser": "%s tarafından eklendi",
"CreationDate": "Eklenme tarihi",
"CurrentMonth": "Bu ay",
@@ -464,6 +465,7 @@
"TranslatorName": "Kaya Zeren, Fabian Becker, Emre Yazici, Emre Saraçoğlu, Uğur Eskici, <a href=\"https://sourceforge.net/u/umutarcn/profile/\">Umut ARICAN</a>",
"UniquePurchases": "Tekil satın alımlar",
"Unknown": "Bilinmiyor",
+ "Update": "Güncelle",
"Upload": "Yükle",
"UsePlusMinusIconsDocumentation": "Gezinmek için soldaki artı ve eksi simgelerini kullanın.",
"UseSMTPServerForEmail": "E-posta için SMTP sunucu kullanılsın",
diff --git a/matomo.js b/matomo.js
index ea636ad0cc..ec048226eb 100644
--- a/matomo.js
+++ b/matomo.js
@@ -50,20 +50,20 @@ var dw=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mai
var du=cB(dv,"click",dw);if(du){dy+="&"+du}var dx=cy(dy,dA,"link");bM(dx,bQ,dz)}function b0(du,dt){if(du!==""){return du+dt.charAt(0).toUpperCase()+dt.slice(1)}return dt}function cm(dy){var dx,dt,dw=["","webkit","ms","moz"],dv;if(!bk){for(dt=0;dt<dw.length;dt++){dv=dw[dt];if(Object.prototype.hasOwnProperty.call(J,b0(dv,"hidden"))){if(J[b0(dv,"visibilityState")]==="prerender"){dx=true}break}}}if(dx){ar(J,dv+"visibilitychange",function du(){J.removeEventListener(dv+"visibilitychange",du,false);dy()});return}dy()}function by(){var du=bP.getVisitorId();var dt=aO();return du+dt}function cp(dt){if(!dt){return}if(!ai.hasNodeAttribute(dt,"href")){return}var du=ai.getAttributeValueFromNode(dt,"href");if(!du||aZ(du)){return}if(!bP.getVisitorId()){return}du=j(du,az);var dv=by();du=I(du,az,dv);ai.setAnyAttribute(dt,"href",du)}function br(dw){var dx=ai.getAttributeValueFromNode(dw,"href");if(!dx){return false}dx=String(dx);var du=dx.indexOf("//")===0||dx.indexOf("http://")===0||dx.indexOf("https://")===0;
if(!du){return false}var dt=dw.pathname||cr(dw.href);var dv=(dw.hostname||d(dw.href)).toLowerCase();if(aw(dv,dt)){if(!cP(c2,O(dv))){return true}return false}return false}function cO(dt){var du=dl(dt);if(du&&du.type){du.href=p(du.href);db(du.href,du.type,undefined,null,dt);return}if(cV){dt=ay(dt);if(br(dt)){cp(dt)}}}function cD(){return J.all&&!J.addEventListener}function c3(dt){var dv=dt.which;var du=(typeof dt.button);if(!dv&&du!=="undefined"){if(cD()){if(dt.button&1){dv=1}else{if(dt.button&2){dv=3}else{if(dt.button&4){dv=2}}}}else{if(dt.button===0||dt.button==="0"){dv=1}else{if(dt.button&1){dv=2}else{if(dt.button&2){dv=3}}}}}return dv}function bZ(dt){switch(c3(dt)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a7(dt){return dt.target||dt.srcElement}function c4(dt){return dt==="A"||dt==="AREA"}function aG(dt){function du(dw){var dx=a7(dw);var dy=dx.nodeName;var dv=a6(bG,"ignore");while(!c4(dy)&&dx&&dx.parentNode){dx=dx.parentNode;dy=dx.nodeName}if(dx&&c4(dy)&&!dv.test(dx.className)){return dx
}}return function(dx){dx=dx||W.event;var dy=du(dx);if(!dy){return}var dw=bZ(dx);if(dx.type==="click"){var dv=false;if(dt&&dw==="middle"){dv=true}if(dy&&!dv){cO(dy)}}else{if(dx.type==="mousedown"){if(dw==="middle"&&dy){aW=dw;bI=dy}else{aW=bI=null}}else{if(dx.type==="mouseup"){if(dw===aW&&dy===bI){cO(dy)}aW=bI=null}else{if(dx.type==="contextmenu"){cO(dy)}}}}}}function av(dw,dv,dt){var du=typeof dv;if(du==="undefined"){dv=true}ar(dw,"click",aG(dv),dt);if(dv){ar(dw,"mouseup",aG(dv),dt);ar(dw,"mousedown",aG(dv),dt);ar(dw,"contextmenu",aG(dv),dt)}}function aX(du,dx,dy){if(ck){return true}ck=true;var dz=false;var dw,dv;function dt(){dz=true}n(function(){function dA(dC){setTimeout(function(){if(!ck){return}dz=false;dy.trackVisibleContentImpressions();dA(dC)},dC)}function dB(dC){setTimeout(function(){if(!ck){return}if(dz){dz=false;dy.trackVisibleContentImpressions()}dB(dC)},dC)}if(du){dw=["scroll","resize"];for(dv=0;dv<dw.length;dv++){if(J.addEventListener){J.addEventListener(dw[dv],dt,false)}else{W.attachEvent("on"+dw[dv],dt)
-}}dB(100)}if(dx&&dx>0){dx=parseInt(dx,10);dA(dx)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dt=this.requests;this.requests=[];if(dt.length===1){bM(dt[0],bQ)}else{dp(dt,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(du){if(!this.canQueue()){dp(du,bQ);return}var dt;for(dt=0;dt<du.length;dt++){this.push(du[dt])}},push:function(dt){if(!dt){return}if(!this.canQueue()){bM(dt,bQ);return}bK.requests.push(dt);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var du="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,du)){b[du]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)}bK.sendRequests()}}}}};bo();aR();this.hasConsent=function(){return bJ};this.getVisitorId=function(){return a4().uuid};this.getVisitorInfo=function(){return cW()};this.getAttributionInfo=function(){return bS()};this.getAttributionCampaignName=function(){return bS()[0]
-};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]};this.setTrackerUrl=function(dt){aI=dt};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dv,du){if(!M(dv)||null===dv){dv=this.getTrackerUrl()}var dt=new T(dv,du);L.push(dt);u.trigger("TrackerAdded",[this]);return dt};this.getSiteId=function(){return cc};this.setSiteId=function(dt){b9(dt)};this.resetUserId=function(){bF=""};this.setUserId=function(dt){if(ac(dt)){bF=dt}};this.setVisitorId=function(du){var dt=/[0-9A-Fa-f]{16}/g;if(x(du)&&dt.test(du)){bU=du}else{ao("Invalid visitorId set"+du)}};this.getUserId=function(){return bF};this.setCustomData=function(dt,du){if(Z(dt)){at=dt}else{if(!at){at={}}at[dt]=du}};this.getCustomData=function(){return at};this.setCustomRequestProcessing=function(dt){ch=dt
-};this.appendToTrackingUrl=function(dt){c9=dt};this.getRequest=function(dt){return cy(dt)};this.addPlugin=function(dt,du){b[dt]=du};this.setCustomDimension=function(dt,du){dt=parseInt(dt,10);if(dt>0){if(!M(du)){du=""}if(!x(du)){du=String(du)}bt[dt]=du}};this.getCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0&&Object.prototype.hasOwnProperty.call(bt,dt)){return bt[dt]}};this.deleteCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0){delete bt[dt]}};this.setCustomVariable=function(du,dt,dx,dv){var dw;if(!M(dv)){dv="visit"}if(!M(dt)){return}if(!M(dx)){dx=""}if(du>0){dt=!x(dt)?String(dt):dt;dx=!x(dx)?String(dx):dx;dw=[dt.slice(0,bA),dx.slice(0,bA)];if(dv==="visit"||dv===2){cN();aV[du]=dw}else{if(dv==="page"||dv===3){b2[du]=dw}else{if(dv==="event"){cs[du]=dw}}}}};this.getCustomVariable=function(du,dv){var dt;if(!M(dv)){dv="visit"}if(dv==="page"||dv===3){dt=b2[du]}else{if(dv==="event"){dt=cs[du]}else{if(dv==="visit"||dv===2){cN();dt=aV[du]}}}if(!M(dt)||(dt&&dt[0]==="")){return false
-}return dt};this.deleteCustomVariable=function(dt,du){if(this.getCustomVariable(dt,du)){this.setCustomVariable(dt,"","",du)}};this.deleteCustomVariables=function(dt){if(dt==="page"||dt===3){b2={}}else{if(dt==="event"){cs={}}else{if(dt==="visit"||dt===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(dt){bQ=dt};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(dt){if(x(dt)){dt=dt.split("|")}dg=dt};this.addDownloadExtensions=function(du){var dt;if(x(du)){du=du.split("|")}for(dt=0;dt<du.length;dt++){dg.push(du[dt])}};this.removeDownloadExtensions=function(dv){var du,dt=[];if(x(dv)){dv=dv.split("|")}for(du=0;du<dg.length;du++){if(P(dv,dg[du])===-1){dt.push(dg[du])}}dg=dt};this.setDomains=function(dt){aC=x(dt)?[dt]:dt;var dx=false,dv=0,du;for(dv;dv<aC.length;dv++){du=String(aC[dv]);if(cP(c2,O(du))){dx=true;break}var dw=cr(du);if(dw&&dw!=="/"&&dw!=="/*"){dx=true;break}}if(!dx){aC.push(c2)}};this.enableCrossDomainLinking=function(){cV=true
-};this.disableCrossDomainLinking=function(){cV=false};this.isCrossDomainLinkingEnabled=function(){return cV};this.setCrossDomainLinkingTimeout=function(dt){a5=dt};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(dt){bG=x(dt)?[dt]:dt};this.setRequestMethod=function(dt){if(dt){dj=String(dt).toUpperCase()}else{dj=cn}if(dj==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(dt){cE=dt||aM};this.setGenerationTimeMs=function(dt){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dx,dz,dy,du,dA,dv){var dw={pf_net:dx,pf_srv:dz,pf_tfr:dy,pf_dm1:du,pf_dm2:dA,pf_onl:dv};try{dw=Q(dw,M);dw=B(dw);ct=l(dw);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}bn=false;bL=true}catch(dt){ao("setPagePerformanceTiming: "+dt.toString())
-}};this.setReferrerUrl=function(dt){bu=dt};this.setCustomUrl=function(dt){ba=b1(bT,dt)};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(dt){bp=dt};this.setPageViewId=function(dt){aQ=dt;bH=true};this.setAPIUrl=function(dt){bO=dt};this.setDownloadClasses=function(dt){bR=x(dt)?[dt]:dt};this.setLinkClasses=function(dt){be=x(dt)?[dt]:dt};this.setCampaignNameKey=function(dt){cw=x(dt)?[dt]:dt};this.setCampaignKeywordKey=function(dt){bN=x(dt)?[dt]:dt};this.discardHashTag=function(dt){bV=dt};this.setCookieNamePrefix=function(dt){bq=dt;if(aV){aV=b3()}};this.setCookieDomain=function(dt){var du=O(dt);if(!bs&&!bD(du)){ao("Can't write cookie on domain "+dt)}else{c7=du;bo()}};this.setExcludedQueryParams=function(dt){co=x(dt)?[dt]:dt};this.getCookieDomain=function(){return c7};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dv,du,dt){if(!dv){throw new Error("Missing cookie name")}if(!M(dt)){dt=cu}bB.push(dv);dn(aY(dv),du,dt,bw,c7,bY,aN)};this.getCookie=function(du){var dt=aH(aY(du));
-if(dt===0){return null}return dt};this.setCookiePath=function(dt){bw=dt;bo()};this.getCookiePath=function(dt){return bw};this.setVisitorCookieTimeout=function(dt){cS=dt*1000};this.setSessionCookieTimeout=function(dt){cu=dt*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(dt){df=dt*1000};this.setConversionAttributionFirstReferrer=function(dt){bC=dt};this.setSecureCookie=function(dt){if(dt&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=dt};this.setCookieSameSite=function(dt){dt=String(dt);dt=dt.charAt(0).toUpperCase()+dt.toLowerCase().slice(1);if(dt!=="None"&&dt!=="Lax"&&dt!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(dt==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");dt="Lax"}}aN=dt};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs
-};this.setCookieConsentGiven=function(){if(bs&&!cY){bs=false;c6=true;if(cc&&aA){aR();var dt=cy("ping=1",null,"ping");bM(dt,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cL)};this.forgetCookieConsentGiven=function(){b5(cL,bw,c7);this.disableCookies()};this.rememberCookieConsentGiven=function(du){if(du){du=du*60*60*1000}else{du=30*365*24*60*60*1000}this.setCookieConsentGiven();var dt=new Date().getTime();dn(cL,dt,du,bw,c7,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(du){var dt=g.doNotTrack||g.msDoNotTrack;cY=du&&(dt==="yes"||dt==="1");if(cY){this.disableCookies()}};this.alwaysUseSendBeacon=function(){c5=true};this.disableAlwaysUseSendBeacon=function(){c5=false};this.addListener=function(du,dt){av(du,dt,false)};this.enableLinkTracking=function(du){if(di){return}di=true;var dt=this;q(function(){au=true;var dv=J.body;av(dv,du,true)
-})};this.enableJSErrorTracking=function(){if(c0){return}c0=true;var dt=W.onerror;W.onerror=function(dy,dw,dv,dx,du){cm(function(){var dz="JavaScript Errors";var dA=dw+":"+dv;if(dx){dA+=":"+dx}if(P(cz,dz+dA+dy)===-1){cz.push(dz+dA+dy);ax(dz,dA,dy)}});if(dt){return dt(dy,dw,dv,dx,du)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(dt){dt=Math.max(dt||15,5);bb=dt*1000;if(c8!==null){dq()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(dt){if(W.location.protocol==="file:"){W.location=dt}};this.setCountPreRendered=function(dt){bk=dt};this.trackGoal=function(dt,dw,dv,du){cm(function(){c1(dt,dw,dv,du)
-})};this.trackLink=function(du,dt,dw,dv){cm(function(){db(du,dt,dw,dv)})};this.getNumTrackedPageViews=function(){return cx};this.trackPageView=function(dt,dv,du){cg=[];cT=[];cz=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cx++;b6(dt,dv,du)})}};this.disableBrowserFeatureDetection=function(){c6=false};this.enableBrowserFeatureDetection=function(){c6=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var dt=w.findContentNodes();var du=cH(dt);bK.pushMultiple(du)})})};this.trackVisibleContentImpressions=function(dt,du){if(R(cc)){return}if(!M(dt)){dt=true}if(!M(du)){du=750}aX(dt,du,this);cm(function(){n(function(){var dv=w.findContentNodes();var dw=bf(dv);bK.pushMultiple(dw)})})};this.trackContentImpression=function(dv,dt,du){if(R(cc)){return}dv=a(dv);dt=a(dt);du=a(du);if(!dv){return}dt=dt||"Unknown";cm(function(){var dw=aK(dv,dt,du);bK.push(dw)})};this.trackContentImpressionsWithinNode=function(dt){if(R(cc)||!dt){return}cm(function(){if(ck){n(function(){var du=w.findContentNodesWithinNode(dt);
-var dv=bf(du);bK.pushMultiple(dv)})}else{q(function(){var du=w.findContentNodesWithinNode(dt);var dv=cH(du);bK.pushMultiple(dv)})}})};this.trackContentInteraction=function(dv,dw,dt,du){if(R(cc)){return}dv=a(dv);dw=a(dw);dt=a(dt);du=a(du);if(!dv||!dw){return}dt=dt||"Unknown";cm(function(){var dx=aU(dv,dw,dt,du);if(dx){bK.push(dx)}})};this.trackContentInteractionNode=function(dv,du){if(R(cc)||!dv){return}var dt=null;cm(function(){dt=dk(dv,du);if(dt){bK.push(dt)}});return dt};this.logAllContentBlocksOnPage=function(){var dv=w.findContentNodes();var dt=w.collectContent(dv);var du=typeof console;if(du!=="undefined"&&console&&console.log){console.log(dt)}};this.trackEvent=function(du,dw,dt,dv,dy,dx){cm(function(){ax(du,dw,dt,dv,dy,dx)})};this.trackSiteSearch=function(dt,dv,du,dw){cg=[];cm(function(){ce(dt,dv,du,dw)})};this.setEcommerceView=function(dx,dt,dv,du){cA={};if(ac(dv)){dv=String(dv)}if(!M(dv)||dv===null||dv===false||!dv.length){dv=""}else{if(dv instanceof Array){dv=W.JSON.stringify(dv)
-}}var dw="_pkc";cA[dw]=dv;if(M(du)&&du!==null&&du!==false&&String(du).length){dw="_pkp";cA[dw]=du}if(!ac(dx)&&!ac(dt)){return}if(ac(dx)){dw="_pks";cA[dw]=dx}if(!ac(dt)){dt=""}dw="_pkn";cA[dw]=dt};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(da))};this.addEcommerceItem=function(dx,dt,dv,du,dw){if(ac(dx)){da[dx]=[String(dx),dt,dv,du,dw]}};this.removeEcommerceItem=function(dt){if(ac(dt)){dt=String(dt);delete da[dt]}};this.clearEcommerceCart=function(){da={}};this.trackEcommerceOrder=function(dt,dx,dw,dv,du,dy){b4(dt,dx,dw,dv,du,dy)};this.trackEcommerceCartUpdate=function(dt){bz(dt)};this.trackRequest=function(du,dw,dv,dt){cm(function(){var dx=cy(du,dw,dt);bM(dx,bQ,dv)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(dt){if(dt<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bK.interval=dt};this.queueRequest=function(dt){cm(function(){var du=cy(dt);
-bK.push(du)})};this.isConsentRequired=function(){return cI};this.getRememberedConsent=function(){var dt=aH(bj);if(aH(cU)){if(dt){b5(bj,bw,c7)}return null}if(!dt||dt===0){return null}return dt};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cI=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(du){bJ=true;c6=true;b5(cU,bw,c7);var dv,dt;for(dv=0;dv<cT.length;dv++){dt=typeof cT[dv];if(dt==="string"){bM(cT[dv],bQ)}else{if(dt==="object"){dp(cT[dv],bQ)}}}cT=[];if(!M(du)||du){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dv){if(dv){dv=dv*60*60*1000}else{dv=30*365*24*60*60*1000}var dt=true;this.setConsentGiven(dt);var du=new Date().getTime();dn(bj,du,dv,bw,c7,bY,aN)};this.forgetConsentGiven=function(){var dt=30*365*24*60*60*1000;b5(bj,bw,c7);dn(cU,new Date().getTime(),dt,bw,c7,bY,aN);this.forgetCookieConsentGiven();this.requireConsent()
-};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this])}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams"];
+}}dB(100)}if(dx&&dx>0){dx=parseInt(dx,10);dA(dx)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dt=this.requests;this.requests=[];if(dt.length===1){bM(dt[0],bQ)}else{dp(dt,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(du){if(!this.canQueue()){dp(du,bQ);return}var dt;for(dt=0;dt<du.length;dt++){this.push(du[dt])}},push:function(dt){if(!dt){return}if(!this.canQueue()){bM(dt,bQ);return}bK.requests.push(dt);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var du="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,du)){b[du]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)}bK.sendRequests()}}}}};bo();this.hasConsent=function(){return bJ};this.getVisitorInfo=function(){if(!aH(aY("id"))){aR()}return cW()};this.getVisitorId=function(){return this.getVisitorInfo()[1]};this.getAttributionInfo=function(){return bS()
+};this.getAttributionCampaignName=function(){return bS()[0]};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]};this.setTrackerUrl=function(dt){aI=dt};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dv,du){if(!M(dv)||null===dv){dv=this.getTrackerUrl()}var dt=new T(dv,du);L.push(dt);u.trigger("TrackerAdded",[this]);return dt};this.getSiteId=function(){return cc};this.setSiteId=function(dt){b9(dt)};this.resetUserId=function(){bF=""};this.setUserId=function(dt){if(ac(dt)){bF=dt}};this.setVisitorId=function(du){var dt=/[0-9A-Fa-f]{16}/g;if(x(du)&&dt.test(du)){bU=du}else{ao("Invalid visitorId set"+du)}};this.getUserId=function(){return bF};this.setCustomData=function(dt,du){if(Z(dt)){at=dt}else{if(!at){at={}}at[dt]=du}};this.getCustomData=function(){return at
+};this.setCustomRequestProcessing=function(dt){ch=dt};this.appendToTrackingUrl=function(dt){c9=dt};this.getRequest=function(dt){return cy(dt)};this.addPlugin=function(dt,du){b[dt]=du};this.setCustomDimension=function(dt,du){dt=parseInt(dt,10);if(dt>0){if(!M(du)){du=""}if(!x(du)){du=String(du)}bt[dt]=du}};this.getCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0&&Object.prototype.hasOwnProperty.call(bt,dt)){return bt[dt]}};this.deleteCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0){delete bt[dt]}};this.setCustomVariable=function(du,dt,dx,dv){var dw;if(!M(dv)){dv="visit"}if(!M(dt)){return}if(!M(dx)){dx=""}if(du>0){dt=!x(dt)?String(dt):dt;dx=!x(dx)?String(dx):dx;dw=[dt.slice(0,bA),dx.slice(0,bA)];if(dv==="visit"||dv===2){cN();aV[du]=dw}else{if(dv==="page"||dv===3){b2[du]=dw}else{if(dv==="event"){cs[du]=dw}}}}};this.getCustomVariable=function(du,dv){var dt;if(!M(dv)){dv="visit"}if(dv==="page"||dv===3){dt=b2[du]}else{if(dv==="event"){dt=cs[du]}else{if(dv==="visit"||dv===2){cN();
+dt=aV[du]}}}if(!M(dt)||(dt&&dt[0]==="")){return false}return dt};this.deleteCustomVariable=function(dt,du){if(this.getCustomVariable(dt,du)){this.setCustomVariable(dt,"","",du)}};this.deleteCustomVariables=function(dt){if(dt==="page"||dt===3){b2={}}else{if(dt==="event"){cs={}}else{if(dt==="visit"||dt===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(dt){bQ=dt};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(dt){if(x(dt)){dt=dt.split("|")}dg=dt};this.addDownloadExtensions=function(du){var dt;if(x(du)){du=du.split("|")}for(dt=0;dt<du.length;dt++){dg.push(du[dt])}};this.removeDownloadExtensions=function(dv){var du,dt=[];if(x(dv)){dv=dv.split("|")}for(du=0;du<dg.length;du++){if(P(dv,dg[du])===-1){dt.push(dg[du])}}dg=dt};this.setDomains=function(dt){aC=x(dt)?[dt]:dt;var dx=false,dv=0,du;for(dv;dv<aC.length;dv++){du=String(aC[dv]);if(cP(c2,O(du))){dx=true;break}var dw=cr(du);if(dw&&dw!=="/"&&dw!=="/*"){dx=true;
+break}}if(!dx){aC.push(c2)}};this.enableCrossDomainLinking=function(){cV=true};this.disableCrossDomainLinking=function(){cV=false};this.isCrossDomainLinkingEnabled=function(){return cV};this.setCrossDomainLinkingTimeout=function(dt){a5=dt};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(dt){bG=x(dt)?[dt]:dt};this.setRequestMethod=function(dt){if(dt){dj=String(dt).toUpperCase()}else{dj=cn}if(dj==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(dt){cE=dt||aM};this.setGenerationTimeMs=function(dt){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dx,dz,dy,du,dA,dv){var dw={pf_net:dx,pf_srv:dz,pf_tfr:dy,pf_dm1:du,pf_dm2:dA,pf_onl:dv};try{dw=Q(dw,M);dw=B(dw);ct=l(dw);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");
+return}bn=false;bL=true}catch(dt){ao("setPagePerformanceTiming: "+dt.toString())}};this.setReferrerUrl=function(dt){bu=dt};this.setCustomUrl=function(dt){ba=b1(bT,dt)};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(dt){bp=dt};this.setPageViewId=function(dt){aQ=dt;bH=true};this.setAPIUrl=function(dt){bO=dt};this.setDownloadClasses=function(dt){bR=x(dt)?[dt]:dt};this.setLinkClasses=function(dt){be=x(dt)?[dt]:dt};this.setCampaignNameKey=function(dt){cw=x(dt)?[dt]:dt};this.setCampaignKeywordKey=function(dt){bN=x(dt)?[dt]:dt};this.discardHashTag=function(dt){bV=dt};this.setCookieNamePrefix=function(dt){bq=dt;if(aV){aV=b3()}};this.setCookieDomain=function(dt){var du=O(dt);if(!bs&&!bD(du)){ao("Can't write cookie on domain "+dt)}else{c7=du;bo()}};this.setExcludedQueryParams=function(dt){co=x(dt)?[dt]:dt};this.getCookieDomain=function(){return c7};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dv,du,dt){if(!dv){throw new Error("Missing cookie name")
+}if(!M(dt)){dt=cu}bB.push(dv);dn(aY(dv),du,dt,bw,c7,bY,aN)};this.getCookie=function(du){var dt=aH(aY(du));if(dt===0){return null}return dt};this.setCookiePath=function(dt){bw=dt;bo()};this.getCookiePath=function(dt){return bw};this.setVisitorCookieTimeout=function(dt){cS=dt*1000};this.setSessionCookieTimeout=function(dt){cu=dt*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(dt){df=dt*1000};this.setConversionAttributionFirstReferrer=function(dt){bC=dt};this.setSecureCookie=function(dt){if(dt&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=dt};this.setCookieSameSite=function(dt){dt=String(dt);dt=dt.charAt(0).toUpperCase()+dt.toLowerCase().slice(1);if(dt!=="None"&&dt!=="Lax"&&dt!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(dt==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");
+dt="Lax"}}aN=dt};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs};this.setCookieConsentGiven=function(){if(bs&&!cY){bs=false;c6=true;if(cc&&aA){aR();var dt=cy("ping=1",null,"ping");bM(dt,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cL)};this.forgetCookieConsentGiven=function(){b5(cL,bw,c7);this.disableCookies()};this.rememberCookieConsentGiven=function(du){if(du){du=du*60*60*1000}else{du=30*365*24*60*60*1000}this.setCookieConsentGiven();var dt=new Date().getTime();dn(cL,dt,du,bw,c7,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(du){var dt=g.doNotTrack||g.msDoNotTrack;cY=du&&(dt==="yes"||dt==="1");if(cY){this.disableCookies()}};this.alwaysUseSendBeacon=function(){c5=true};this.disableAlwaysUseSendBeacon=function(){c5=false};this.addListener=function(du,dt){av(du,dt,false)};this.enableLinkTracking=function(du){if(di){return
+}di=true;var dt=this;q(function(){au=true;var dv=J.body;av(dv,du,true)})};this.enableJSErrorTracking=function(){if(c0){return}c0=true;var dt=W.onerror;W.onerror=function(dy,dw,dv,dx,du){cm(function(){var dz="JavaScript Errors";var dA=dw+":"+dv;if(dx){dA+=":"+dx}if(P(cz,dz+dA+dy)===-1){cz.push(dz+dA+dy);ax(dz,dA,dy)}});if(dt){return dt(dy,dw,dv,dx,du)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(dt){dt=Math.max(dt||15,5);bb=dt*1000;if(c8!==null){dq()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(dt){if(W.location.protocol==="file:"){W.location=dt}};
+this.setCountPreRendered=function(dt){bk=dt};this.trackGoal=function(dt,dw,dv,du){cm(function(){c1(dt,dw,dv,du)})};this.trackLink=function(du,dt,dw,dv){cm(function(){db(du,dt,dw,dv)})};this.getNumTrackedPageViews=function(){return cx};this.trackPageView=function(dt,dv,du){cg=[];cT=[];cz=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cx++;b6(dt,dv,du)})}};this.disableBrowserFeatureDetection=function(){c6=false};this.enableBrowserFeatureDetection=function(){c6=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var dt=w.findContentNodes();var du=cH(dt);bK.pushMultiple(du)})})};this.trackVisibleContentImpressions=function(dt,du){if(R(cc)){return}if(!M(dt)){dt=true}if(!M(du)){du=750}aX(dt,du,this);cm(function(){n(function(){var dv=w.findContentNodes();var dw=bf(dv);bK.pushMultiple(dw)})})};this.trackContentImpression=function(dv,dt,du){if(R(cc)){return}dv=a(dv);dt=a(dt);du=a(du);if(!dv){return}dt=dt||"Unknown";cm(function(){var dw=aK(dv,dt,du);
+bK.push(dw)})};this.trackContentImpressionsWithinNode=function(dt){if(R(cc)||!dt){return}cm(function(){if(ck){n(function(){var du=w.findContentNodesWithinNode(dt);var dv=bf(du);bK.pushMultiple(dv)})}else{q(function(){var du=w.findContentNodesWithinNode(dt);var dv=cH(du);bK.pushMultiple(dv)})}})};this.trackContentInteraction=function(dv,dw,dt,du){if(R(cc)){return}dv=a(dv);dw=a(dw);dt=a(dt);du=a(du);if(!dv||!dw){return}dt=dt||"Unknown";cm(function(){var dx=aU(dv,dw,dt,du);if(dx){bK.push(dx)}})};this.trackContentInteractionNode=function(dv,du){if(R(cc)||!dv){return}var dt=null;cm(function(){dt=dk(dv,du);if(dt){bK.push(dt)}});return dt};this.logAllContentBlocksOnPage=function(){var dv=w.findContentNodes();var dt=w.collectContent(dv);var du=typeof console;if(du!=="undefined"&&console&&console.log){console.log(dt)}};this.trackEvent=function(du,dw,dt,dv,dy,dx){cm(function(){ax(du,dw,dt,dv,dy,dx)})};this.trackSiteSearch=function(dt,dv,du,dw){cg=[];cm(function(){ce(dt,dv,du,dw)})};this.setEcommerceView=function(dx,dt,dv,du){cA={};
+if(ac(dv)){dv=String(dv)}if(!M(dv)||dv===null||dv===false||!dv.length){dv=""}else{if(dv instanceof Array){dv=W.JSON.stringify(dv)}}var dw="_pkc";cA[dw]=dv;if(M(du)&&du!==null&&du!==false&&String(du).length){dw="_pkp";cA[dw]=du}if(!ac(dx)&&!ac(dt)){return}if(ac(dx)){dw="_pks";cA[dw]=dx}if(!ac(dt)){dt=""}dw="_pkn";cA[dw]=dt};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(da))};this.addEcommerceItem=function(dx,dt,dv,du,dw){if(ac(dx)){da[dx]=[String(dx),dt,dv,du,dw]}};this.removeEcommerceItem=function(dt){if(ac(dt)){dt=String(dt);delete da[dt]}};this.clearEcommerceCart=function(){da={}};this.trackEcommerceOrder=function(dt,dx,dw,dv,du,dy){b4(dt,dx,dw,dv,du,dy)};this.trackEcommerceCartUpdate=function(dt){bz(dt)};this.trackRequest=function(du,dw,dv,dt){cm(function(){var dx=cy(du,dw,dt);bM(dx,bQ,dv)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(dt){if(dt<1000){throw new Error("Request queue interval needs to be at least 1000ms")
+}bK.interval=dt};this.queueRequest=function(dt){cm(function(){var du=cy(dt);bK.push(du)})};this.isConsentRequired=function(){return cI};this.getRememberedConsent=function(){var dt=aH(bj);if(aH(cU)){if(dt){b5(bj,bw,c7)}return null}if(!dt||dt===0){return null}return dt};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cI=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(du){bJ=true;c6=true;b5(cU,bw,c7);var dv,dt;for(dv=0;dv<cT.length;dv++){dt=typeof cT[dv];if(dt==="string"){bM(cT[dv],bQ)}else{if(dt==="object"){dp(cT[dv],bQ)}}}cT=[];if(!M(du)||du){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dv){if(dv){dv=dv*60*60*1000}else{dv=30*365*24*60*60*1000}var dt=true;this.setConsentGiven(dt);var du=new Date().getTime();dn(bj,du,dv,bw,c7,bY,aN)};this.forgetConsentGiven=function(){var dt=30*365*24*60*60*1000;b5(bj,bw,c7);dn(cU,new Date().getTime(),dt,bw,c7,bY,aN);
+this.forgetCookieConsentGiven();this.requireConsent()};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this]);u.addPlugin("TrackerVisitorIdCookie"+aB,{unload:function(){if(!aA){aR()}}})}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams"];
function ah(av,au){var at=new T(av,au);L.push(at);_paq=c(_paq,E);for(H=0;H<_paq.length;H++){if(_paq[H]){aj(_paq[H])}}_paq=new K();u.trigger("TrackerAdded",[at]);return at}ar(W,"beforeunload",am,false);ar(W,"online",function(){if(M(g.serviceWorker)){g.serviceWorker.ready.then(function(at){if(at&&at.sync){return at.sync.register("matomoSync")}},function(){})}},false);ar(W,"message",function(ay){if(!ay||!ay.origin){return}var aA,aw,au;var aB=d(ay.origin);var ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){au=d(ax[aw].getMatomoUrl());if(au===aB){aA=ax[aw];break}}if(!aA){return}var av=null;try{av=JSON.parse(ay.data)}catch(az){return}if(!av){return}function at(aE){var aG=J.getElementsByTagName("iframe");for(aw=0;aw<aG.length;aw++){var aF=aG[aw];var aC=d(aF.src);if(aF.contentWindow&&M(aF.contentWindow.postMessage)&&aC===aB){var aD=JSON.stringify(aE);aF.contentWindow.postMessage(aD,"*")}}}if(M(av.maq_initial_value)){at({maq_opted_in:av.maq_initial_value&&aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})
}else{if(M(av.maq_opted_in)){ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){aA=ax[aw];if(av.maq_opted_in){aA.rememberConsentGiven()}else{aA.forgetConsentGiven()}}at({maq_confirm_opted_in:aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;u={initialized:false,JSON:W.JSON,DOM:{addEventListener:function(aw,av,au,at){var ax=typeof at;if(ax==="undefined"){at=false}ar(aw,av,au,at)},onLoad:n,onReady:q,isNodeVisible:i,isOrWasNodeVisible:w.isNodeVisible},on:function(au,at){if(!z[au]){z[au]=[]}z[au].push(at)},off:function(av,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){if(z[av][at]===au){z[av].splice(at,1)}}},trigger:function(av,aw,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){z[av][at].apply(au||W,aw)}},addPlugin:function(at,au){b[at]=au},getTracker:function(au,at){if(!M(at)){at=this.getAsyncTracker().getSiteId()}if(!M(au)){au=this.getAsyncTracker().getTrackerUrl()
}return new T(au,at)},getAsyncTrackers:function(){return L},addTracker:function(av,au){var at;if(!L.length){at=ah(av,au)}else{at=L[0].addTracker(av,au)}return at},getAsyncTracker:function(ax,aw){var av;if(L&&L.length&&L[0]){av=L[0]}else{return ah(ax,aw)}if(!aw&&!ax){return av}if((!M(aw)||null===aw)&&av){aw=av.getSiteId()}if((!M(ax)||null===ax)&&av){ax=av.getTrackerUrl()}var au,at=0;for(at;at<L.length;at++){au=L[at];if(au&&String(au.getSiteId())===String(aw)&&au.getTrackerUrl()===ax){return au}}},retryMissedPluginCalls:function(){var au=al;al=[];var at=0;for(at;at<au.length;at++){aj(au[at])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return u});define("matomo",[],function(){return u})}return u}())}
diff --git a/misc/cron/archive.sh b/misc/cron/archive.sh
index e05b83eac9..e05b83eac9 100755..100644
--- a/misc/cron/archive.sh
+++ b/misc/cron/archive.sh
diff --git a/node_modules/materialize-css/js/timepicker.js b/node_modules/materialize-css/js/timepicker.js
index 0b1b2fba3f..0b1b2fba3f 100755..100644
--- a/node_modules/materialize-css/js/timepicker.js
+++ b/node_modules/materialize-css/js/timepicker.js
diff --git a/package-lock.json b/package-lock.json
index 67b43b8a2b..346f42f200 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -36,6 +36,7 @@
},
"devDependencies": {
"@types/angular": "^1.8.2",
+ "@types/dotdotdot": "^1.6.36",
"@types/jest": "^26.0.24",
"@types/materialize-css": "^1.0.11",
"@types/mousetrap": "^1.6.8",
@@ -3871,6 +3872,12 @@
"@types/node": "*"
}
},
+ "node_modules/@types/dotdotdot": {
+ "version": "1.6.36",
+ "resolved": "https://registry.npmjs.org/@types/dotdotdot/-/dotdotdot-1.6.36.tgz",
+ "integrity": "sha512-QRUQ9d2UjCVAyttIMbULEK4qCPPMg3x6cDM3dSSsdC5neIRt/bDYYIqdnFdomMNosTVoFEFQMYA/eYtLB6GGYQ==",
+ "dev": true
+ },
"node_modules/@types/eslint": {
"version": "7.28.0",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz",
@@ -37669,6 +37676,12 @@
"@types/node": "*"
}
},
+ "@types/dotdotdot": {
+ "version": "1.6.36",
+ "resolved": "https://registry.npmjs.org/@types/dotdotdot/-/dotdotdot-1.6.36.tgz",
+ "integrity": "sha512-QRUQ9d2UjCVAyttIMbULEK4qCPPMg3x6cDM3dSSsdC5neIRt/bDYYIqdnFdomMNosTVoFEFQMYA/eYtLB6GGYQ==",
+ "dev": true
+ },
"@types/eslint": {
"version": "7.28.0",
"resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-7.28.0.tgz",
diff --git a/package.json b/package.json
index 92c7bcb619..d4b3143af5 100644
--- a/package.json
+++ b/package.json
@@ -54,6 +54,7 @@
},
"devDependencies": {
"@types/angular": "^1.8.2",
+ "@types/dotdotdot": "^1.6.36",
"@types/jest": "^26.0.24",
"@types/materialize-css": "^1.0.11",
"@types/mousetrap": "^1.6.8",
diff --git a/piwik.js b/piwik.js
index ea636ad0cc..ec048226eb 100644
--- a/piwik.js
+++ b/piwik.js
@@ -50,20 +50,20 @@ var dw=new RegExp("^(javascript|vbscript|jscript|mocha|livescript|ecmascript|mai
var du=cB(dv,"click",dw);if(du){dy+="&"+du}var dx=cy(dy,dA,"link");bM(dx,bQ,dz)}function b0(du,dt){if(du!==""){return du+dt.charAt(0).toUpperCase()+dt.slice(1)}return dt}function cm(dy){var dx,dt,dw=["","webkit","ms","moz"],dv;if(!bk){for(dt=0;dt<dw.length;dt++){dv=dw[dt];if(Object.prototype.hasOwnProperty.call(J,b0(dv,"hidden"))){if(J[b0(dv,"visibilityState")]==="prerender"){dx=true}break}}}if(dx){ar(J,dv+"visibilitychange",function du(){J.removeEventListener(dv+"visibilitychange",du,false);dy()});return}dy()}function by(){var du=bP.getVisitorId();var dt=aO();return du+dt}function cp(dt){if(!dt){return}if(!ai.hasNodeAttribute(dt,"href")){return}var du=ai.getAttributeValueFromNode(dt,"href");if(!du||aZ(du)){return}if(!bP.getVisitorId()){return}du=j(du,az);var dv=by();du=I(du,az,dv);ai.setAnyAttribute(dt,"href",du)}function br(dw){var dx=ai.getAttributeValueFromNode(dw,"href");if(!dx){return false}dx=String(dx);var du=dx.indexOf("//")===0||dx.indexOf("http://")===0||dx.indexOf("https://")===0;
if(!du){return false}var dt=dw.pathname||cr(dw.href);var dv=(dw.hostname||d(dw.href)).toLowerCase();if(aw(dv,dt)){if(!cP(c2,O(dv))){return true}return false}return false}function cO(dt){var du=dl(dt);if(du&&du.type){du.href=p(du.href);db(du.href,du.type,undefined,null,dt);return}if(cV){dt=ay(dt);if(br(dt)){cp(dt)}}}function cD(){return J.all&&!J.addEventListener}function c3(dt){var dv=dt.which;var du=(typeof dt.button);if(!dv&&du!=="undefined"){if(cD()){if(dt.button&1){dv=1}else{if(dt.button&2){dv=3}else{if(dt.button&4){dv=2}}}}else{if(dt.button===0||dt.button==="0"){dv=1}else{if(dt.button&1){dv=2}else{if(dt.button&2){dv=3}}}}}return dv}function bZ(dt){switch(c3(dt)){case 1:return"left";case 2:return"middle";case 3:return"right"}}function a7(dt){return dt.target||dt.srcElement}function c4(dt){return dt==="A"||dt==="AREA"}function aG(dt){function du(dw){var dx=a7(dw);var dy=dx.nodeName;var dv=a6(bG,"ignore");while(!c4(dy)&&dx&&dx.parentNode){dx=dx.parentNode;dy=dx.nodeName}if(dx&&c4(dy)&&!dv.test(dx.className)){return dx
}}return function(dx){dx=dx||W.event;var dy=du(dx);if(!dy){return}var dw=bZ(dx);if(dx.type==="click"){var dv=false;if(dt&&dw==="middle"){dv=true}if(dy&&!dv){cO(dy)}}else{if(dx.type==="mousedown"){if(dw==="middle"&&dy){aW=dw;bI=dy}else{aW=bI=null}}else{if(dx.type==="mouseup"){if(dw===aW&&dy===bI){cO(dy)}aW=bI=null}else{if(dx.type==="contextmenu"){cO(dy)}}}}}}function av(dw,dv,dt){var du=typeof dv;if(du==="undefined"){dv=true}ar(dw,"click",aG(dv),dt);if(dv){ar(dw,"mouseup",aG(dv),dt);ar(dw,"mousedown",aG(dv),dt);ar(dw,"contextmenu",aG(dv),dt)}}function aX(du,dx,dy){if(ck){return true}ck=true;var dz=false;var dw,dv;function dt(){dz=true}n(function(){function dA(dC){setTimeout(function(){if(!ck){return}dz=false;dy.trackVisibleContentImpressions();dA(dC)},dC)}function dB(dC){setTimeout(function(){if(!ck){return}if(dz){dz=false;dy.trackVisibleContentImpressions()}dB(dC)},dC)}if(du){dw=["scroll","resize"];for(dv=0;dv<dw.length;dv++){if(J.addEventListener){J.addEventListener(dw[dv],dt,false)}else{W.attachEvent("on"+dw[dv],dt)
-}}dB(100)}if(dx&&dx>0){dx=parseInt(dx,10);dA(dx)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dt=this.requests;this.requests=[];if(dt.length===1){bM(dt[0],bQ)}else{dp(dt,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(du){if(!this.canQueue()){dp(du,bQ);return}var dt;for(dt=0;dt<du.length;dt++){this.push(du[dt])}},push:function(dt){if(!dt){return}if(!this.canQueue()){bM(dt,bQ);return}bK.requests.push(dt);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var du="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,du)){b[du]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)}bK.sendRequests()}}}}};bo();aR();this.hasConsent=function(){return bJ};this.getVisitorId=function(){return a4().uuid};this.getVisitorInfo=function(){return cW()};this.getAttributionInfo=function(){return bS()};this.getAttributionCampaignName=function(){return bS()[0]
-};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]};this.setTrackerUrl=function(dt){aI=dt};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dv,du){if(!M(dv)||null===dv){dv=this.getTrackerUrl()}var dt=new T(dv,du);L.push(dt);u.trigger("TrackerAdded",[this]);return dt};this.getSiteId=function(){return cc};this.setSiteId=function(dt){b9(dt)};this.resetUserId=function(){bF=""};this.setUserId=function(dt){if(ac(dt)){bF=dt}};this.setVisitorId=function(du){var dt=/[0-9A-Fa-f]{16}/g;if(x(du)&&dt.test(du)){bU=du}else{ao("Invalid visitorId set"+du)}};this.getUserId=function(){return bF};this.setCustomData=function(dt,du){if(Z(dt)){at=dt}else{if(!at){at={}}at[dt]=du}};this.getCustomData=function(){return at};this.setCustomRequestProcessing=function(dt){ch=dt
-};this.appendToTrackingUrl=function(dt){c9=dt};this.getRequest=function(dt){return cy(dt)};this.addPlugin=function(dt,du){b[dt]=du};this.setCustomDimension=function(dt,du){dt=parseInt(dt,10);if(dt>0){if(!M(du)){du=""}if(!x(du)){du=String(du)}bt[dt]=du}};this.getCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0&&Object.prototype.hasOwnProperty.call(bt,dt)){return bt[dt]}};this.deleteCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0){delete bt[dt]}};this.setCustomVariable=function(du,dt,dx,dv){var dw;if(!M(dv)){dv="visit"}if(!M(dt)){return}if(!M(dx)){dx=""}if(du>0){dt=!x(dt)?String(dt):dt;dx=!x(dx)?String(dx):dx;dw=[dt.slice(0,bA),dx.slice(0,bA)];if(dv==="visit"||dv===2){cN();aV[du]=dw}else{if(dv==="page"||dv===3){b2[du]=dw}else{if(dv==="event"){cs[du]=dw}}}}};this.getCustomVariable=function(du,dv){var dt;if(!M(dv)){dv="visit"}if(dv==="page"||dv===3){dt=b2[du]}else{if(dv==="event"){dt=cs[du]}else{if(dv==="visit"||dv===2){cN();dt=aV[du]}}}if(!M(dt)||(dt&&dt[0]==="")){return false
-}return dt};this.deleteCustomVariable=function(dt,du){if(this.getCustomVariable(dt,du)){this.setCustomVariable(dt,"","",du)}};this.deleteCustomVariables=function(dt){if(dt==="page"||dt===3){b2={}}else{if(dt==="event"){cs={}}else{if(dt==="visit"||dt===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(dt){bQ=dt};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(dt){if(x(dt)){dt=dt.split("|")}dg=dt};this.addDownloadExtensions=function(du){var dt;if(x(du)){du=du.split("|")}for(dt=0;dt<du.length;dt++){dg.push(du[dt])}};this.removeDownloadExtensions=function(dv){var du,dt=[];if(x(dv)){dv=dv.split("|")}for(du=0;du<dg.length;du++){if(P(dv,dg[du])===-1){dt.push(dg[du])}}dg=dt};this.setDomains=function(dt){aC=x(dt)?[dt]:dt;var dx=false,dv=0,du;for(dv;dv<aC.length;dv++){du=String(aC[dv]);if(cP(c2,O(du))){dx=true;break}var dw=cr(du);if(dw&&dw!=="/"&&dw!=="/*"){dx=true;break}}if(!dx){aC.push(c2)}};this.enableCrossDomainLinking=function(){cV=true
-};this.disableCrossDomainLinking=function(){cV=false};this.isCrossDomainLinkingEnabled=function(){return cV};this.setCrossDomainLinkingTimeout=function(dt){a5=dt};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(dt){bG=x(dt)?[dt]:dt};this.setRequestMethod=function(dt){if(dt){dj=String(dt).toUpperCase()}else{dj=cn}if(dj==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(dt){cE=dt||aM};this.setGenerationTimeMs=function(dt){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dx,dz,dy,du,dA,dv){var dw={pf_net:dx,pf_srv:dz,pf_tfr:dy,pf_dm1:du,pf_dm2:dA,pf_onl:dv};try{dw=Q(dw,M);dw=B(dw);ct=l(dw);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");return}bn=false;bL=true}catch(dt){ao("setPagePerformanceTiming: "+dt.toString())
-}};this.setReferrerUrl=function(dt){bu=dt};this.setCustomUrl=function(dt){ba=b1(bT,dt)};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(dt){bp=dt};this.setPageViewId=function(dt){aQ=dt;bH=true};this.setAPIUrl=function(dt){bO=dt};this.setDownloadClasses=function(dt){bR=x(dt)?[dt]:dt};this.setLinkClasses=function(dt){be=x(dt)?[dt]:dt};this.setCampaignNameKey=function(dt){cw=x(dt)?[dt]:dt};this.setCampaignKeywordKey=function(dt){bN=x(dt)?[dt]:dt};this.discardHashTag=function(dt){bV=dt};this.setCookieNamePrefix=function(dt){bq=dt;if(aV){aV=b3()}};this.setCookieDomain=function(dt){var du=O(dt);if(!bs&&!bD(du)){ao("Can't write cookie on domain "+dt)}else{c7=du;bo()}};this.setExcludedQueryParams=function(dt){co=x(dt)?[dt]:dt};this.getCookieDomain=function(){return c7};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dv,du,dt){if(!dv){throw new Error("Missing cookie name")}if(!M(dt)){dt=cu}bB.push(dv);dn(aY(dv),du,dt,bw,c7,bY,aN)};this.getCookie=function(du){var dt=aH(aY(du));
-if(dt===0){return null}return dt};this.setCookiePath=function(dt){bw=dt;bo()};this.getCookiePath=function(dt){return bw};this.setVisitorCookieTimeout=function(dt){cS=dt*1000};this.setSessionCookieTimeout=function(dt){cu=dt*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(dt){df=dt*1000};this.setConversionAttributionFirstReferrer=function(dt){bC=dt};this.setSecureCookie=function(dt){if(dt&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=dt};this.setCookieSameSite=function(dt){dt=String(dt);dt=dt.charAt(0).toUpperCase()+dt.toLowerCase().slice(1);if(dt!=="None"&&dt!=="Lax"&&dt!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(dt==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");dt="Lax"}}aN=dt};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs
-};this.setCookieConsentGiven=function(){if(bs&&!cY){bs=false;c6=true;if(cc&&aA){aR();var dt=cy("ping=1",null,"ping");bM(dt,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cL)};this.forgetCookieConsentGiven=function(){b5(cL,bw,c7);this.disableCookies()};this.rememberCookieConsentGiven=function(du){if(du){du=du*60*60*1000}else{du=30*365*24*60*60*1000}this.setCookieConsentGiven();var dt=new Date().getTime();dn(cL,dt,du,bw,c7,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(du){var dt=g.doNotTrack||g.msDoNotTrack;cY=du&&(dt==="yes"||dt==="1");if(cY){this.disableCookies()}};this.alwaysUseSendBeacon=function(){c5=true};this.disableAlwaysUseSendBeacon=function(){c5=false};this.addListener=function(du,dt){av(du,dt,false)};this.enableLinkTracking=function(du){if(di){return}di=true;var dt=this;q(function(){au=true;var dv=J.body;av(dv,du,true)
-})};this.enableJSErrorTracking=function(){if(c0){return}c0=true;var dt=W.onerror;W.onerror=function(dy,dw,dv,dx,du){cm(function(){var dz="JavaScript Errors";var dA=dw+":"+dv;if(dx){dA+=":"+dx}if(P(cz,dz+dA+dy)===-1){cz.push(dz+dA+dy);ax(dz,dA,dy)}});if(dt){return dt(dy,dw,dv,dx,du)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(dt){dt=Math.max(dt||15,5);bb=dt*1000;if(c8!==null){dq()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(dt){if(W.location.protocol==="file:"){W.location=dt}};this.setCountPreRendered=function(dt){bk=dt};this.trackGoal=function(dt,dw,dv,du){cm(function(){c1(dt,dw,dv,du)
-})};this.trackLink=function(du,dt,dw,dv){cm(function(){db(du,dt,dw,dv)})};this.getNumTrackedPageViews=function(){return cx};this.trackPageView=function(dt,dv,du){cg=[];cT=[];cz=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cx++;b6(dt,dv,du)})}};this.disableBrowserFeatureDetection=function(){c6=false};this.enableBrowserFeatureDetection=function(){c6=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var dt=w.findContentNodes();var du=cH(dt);bK.pushMultiple(du)})})};this.trackVisibleContentImpressions=function(dt,du){if(R(cc)){return}if(!M(dt)){dt=true}if(!M(du)){du=750}aX(dt,du,this);cm(function(){n(function(){var dv=w.findContentNodes();var dw=bf(dv);bK.pushMultiple(dw)})})};this.trackContentImpression=function(dv,dt,du){if(R(cc)){return}dv=a(dv);dt=a(dt);du=a(du);if(!dv){return}dt=dt||"Unknown";cm(function(){var dw=aK(dv,dt,du);bK.push(dw)})};this.trackContentImpressionsWithinNode=function(dt){if(R(cc)||!dt){return}cm(function(){if(ck){n(function(){var du=w.findContentNodesWithinNode(dt);
-var dv=bf(du);bK.pushMultiple(dv)})}else{q(function(){var du=w.findContentNodesWithinNode(dt);var dv=cH(du);bK.pushMultiple(dv)})}})};this.trackContentInteraction=function(dv,dw,dt,du){if(R(cc)){return}dv=a(dv);dw=a(dw);dt=a(dt);du=a(du);if(!dv||!dw){return}dt=dt||"Unknown";cm(function(){var dx=aU(dv,dw,dt,du);if(dx){bK.push(dx)}})};this.trackContentInteractionNode=function(dv,du){if(R(cc)||!dv){return}var dt=null;cm(function(){dt=dk(dv,du);if(dt){bK.push(dt)}});return dt};this.logAllContentBlocksOnPage=function(){var dv=w.findContentNodes();var dt=w.collectContent(dv);var du=typeof console;if(du!=="undefined"&&console&&console.log){console.log(dt)}};this.trackEvent=function(du,dw,dt,dv,dy,dx){cm(function(){ax(du,dw,dt,dv,dy,dx)})};this.trackSiteSearch=function(dt,dv,du,dw){cg=[];cm(function(){ce(dt,dv,du,dw)})};this.setEcommerceView=function(dx,dt,dv,du){cA={};if(ac(dv)){dv=String(dv)}if(!M(dv)||dv===null||dv===false||!dv.length){dv=""}else{if(dv instanceof Array){dv=W.JSON.stringify(dv)
-}}var dw="_pkc";cA[dw]=dv;if(M(du)&&du!==null&&du!==false&&String(du).length){dw="_pkp";cA[dw]=du}if(!ac(dx)&&!ac(dt)){return}if(ac(dx)){dw="_pks";cA[dw]=dx}if(!ac(dt)){dt=""}dw="_pkn";cA[dw]=dt};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(da))};this.addEcommerceItem=function(dx,dt,dv,du,dw){if(ac(dx)){da[dx]=[String(dx),dt,dv,du,dw]}};this.removeEcommerceItem=function(dt){if(ac(dt)){dt=String(dt);delete da[dt]}};this.clearEcommerceCart=function(){da={}};this.trackEcommerceOrder=function(dt,dx,dw,dv,du,dy){b4(dt,dx,dw,dv,du,dy)};this.trackEcommerceCartUpdate=function(dt){bz(dt)};this.trackRequest=function(du,dw,dv,dt){cm(function(){var dx=cy(du,dw,dt);bM(dx,bQ,dv)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(dt){if(dt<1000){throw new Error("Request queue interval needs to be at least 1000ms")}bK.interval=dt};this.queueRequest=function(dt){cm(function(){var du=cy(dt);
-bK.push(du)})};this.isConsentRequired=function(){return cI};this.getRememberedConsent=function(){var dt=aH(bj);if(aH(cU)){if(dt){b5(bj,bw,c7)}return null}if(!dt||dt===0){return null}return dt};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cI=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(du){bJ=true;c6=true;b5(cU,bw,c7);var dv,dt;for(dv=0;dv<cT.length;dv++){dt=typeof cT[dv];if(dt==="string"){bM(cT[dv],bQ)}else{if(dt==="object"){dp(cT[dv],bQ)}}}cT=[];if(!M(du)||du){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dv){if(dv){dv=dv*60*60*1000}else{dv=30*365*24*60*60*1000}var dt=true;this.setConsentGiven(dt);var du=new Date().getTime();dn(bj,du,dv,bw,c7,bY,aN)};this.forgetConsentGiven=function(){var dt=30*365*24*60*60*1000;b5(bj,bw,c7);dn(cU,new Date().getTime(),dt,bw,c7,bY,aN);this.forgetCookieConsentGiven();this.requireConsent()
-};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this])}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams"];
+}}dB(100)}if(dx&&dx>0){dx=parseInt(dx,10);dA(dx)}})}var bK={enabled:true,requests:[],timeout:null,interval:2500,sendRequests:function(){var dt=this.requests;this.requests=[];if(dt.length===1){bM(dt[0],bQ)}else{dp(dt,bQ)}},canQueue:function(){return !m&&this.enabled},pushMultiple:function(du){if(!this.canQueue()){dp(du,bQ);return}var dt;for(dt=0;dt<du.length;dt++){this.push(du[dt])}},push:function(dt){if(!dt){return}if(!this.canQueue()){bM(dt,bQ);return}bK.requests.push(dt);if(this.timeout){clearTimeout(this.timeout);this.timeout=null}this.timeout=setTimeout(function(){bK.timeout=null;bK.sendRequests()},bK.interval);var du="RequestQueue"+aB;if(!Object.prototype.hasOwnProperty.call(b,du)){b[du]={unload:function(){if(bK.timeout){clearTimeout(bK.timeout)}bK.sendRequests()}}}}};bo();this.hasConsent=function(){return bJ};this.getVisitorInfo=function(){if(!aH(aY("id"))){aR()}return cW()};this.getVisitorId=function(){return this.getVisitorInfo()[1]};this.getAttributionInfo=function(){return bS()
+};this.getAttributionCampaignName=function(){return bS()[0]};this.getAttributionCampaignKeyword=function(){return bS()[1]};this.getAttributionReferrerTimestamp=function(){return bS()[2]};this.getAttributionReferrerUrl=function(){return bS()[3]};this.setTrackerUrl=function(dt){aI=dt};this.getTrackerUrl=function(){return aI};this.getMatomoUrl=function(){return aa(this.getTrackerUrl(),bO)};this.getPiwikUrl=function(){return this.getMatomoUrl()};this.addTracker=function(dv,du){if(!M(dv)||null===dv){dv=this.getTrackerUrl()}var dt=new T(dv,du);L.push(dt);u.trigger("TrackerAdded",[this]);return dt};this.getSiteId=function(){return cc};this.setSiteId=function(dt){b9(dt)};this.resetUserId=function(){bF=""};this.setUserId=function(dt){if(ac(dt)){bF=dt}};this.setVisitorId=function(du){var dt=/[0-9A-Fa-f]{16}/g;if(x(du)&&dt.test(du)){bU=du}else{ao("Invalid visitorId set"+du)}};this.getUserId=function(){return bF};this.setCustomData=function(dt,du){if(Z(dt)){at=dt}else{if(!at){at={}}at[dt]=du}};this.getCustomData=function(){return at
+};this.setCustomRequestProcessing=function(dt){ch=dt};this.appendToTrackingUrl=function(dt){c9=dt};this.getRequest=function(dt){return cy(dt)};this.addPlugin=function(dt,du){b[dt]=du};this.setCustomDimension=function(dt,du){dt=parseInt(dt,10);if(dt>0){if(!M(du)){du=""}if(!x(du)){du=String(du)}bt[dt]=du}};this.getCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0&&Object.prototype.hasOwnProperty.call(bt,dt)){return bt[dt]}};this.deleteCustomDimension=function(dt){dt=parseInt(dt,10);if(dt>0){delete bt[dt]}};this.setCustomVariable=function(du,dt,dx,dv){var dw;if(!M(dv)){dv="visit"}if(!M(dt)){return}if(!M(dx)){dx=""}if(du>0){dt=!x(dt)?String(dt):dt;dx=!x(dx)?String(dx):dx;dw=[dt.slice(0,bA),dx.slice(0,bA)];if(dv==="visit"||dv===2){cN();aV[du]=dw}else{if(dv==="page"||dv===3){b2[du]=dw}else{if(dv==="event"){cs[du]=dw}}}}};this.getCustomVariable=function(du,dv){var dt;if(!M(dv)){dv="visit"}if(dv==="page"||dv===3){dt=b2[du]}else{if(dv==="event"){dt=cs[du]}else{if(dv==="visit"||dv===2){cN();
+dt=aV[du]}}}if(!M(dt)||(dt&&dt[0]==="")){return false}return dt};this.deleteCustomVariable=function(dt,du){if(this.getCustomVariable(dt,du)){this.setCustomVariable(dt,"","",du)}};this.deleteCustomVariables=function(dt){if(dt==="page"||dt===3){b2={}}else{if(dt==="event"){cs={}}else{if(dt==="visit"||dt===2){aV={}}}}};this.storeCustomVariablesInCookie=function(){bW=true};this.setLinkTrackingTimer=function(dt){bQ=dt};this.getLinkTrackingTimer=function(){return bQ};this.setDownloadExtensions=function(dt){if(x(dt)){dt=dt.split("|")}dg=dt};this.addDownloadExtensions=function(du){var dt;if(x(du)){du=du.split("|")}for(dt=0;dt<du.length;dt++){dg.push(du[dt])}};this.removeDownloadExtensions=function(dv){var du,dt=[];if(x(dv)){dv=dv.split("|")}for(du=0;du<dg.length;du++){if(P(dv,dg[du])===-1){dt.push(dg[du])}}dg=dt};this.setDomains=function(dt){aC=x(dt)?[dt]:dt;var dx=false,dv=0,du;for(dv;dv<aC.length;dv++){du=String(aC[dv]);if(cP(c2,O(du))){dx=true;break}var dw=cr(du);if(dw&&dw!=="/"&&dw!=="/*"){dx=true;
+break}}if(!dx){aC.push(c2)}};this.enableCrossDomainLinking=function(){cV=true};this.disableCrossDomainLinking=function(){cV=false};this.isCrossDomainLinkingEnabled=function(){return cV};this.setCrossDomainLinkingTimeout=function(dt){a5=dt};this.getCrossDomainLinkingUrlParameter=function(){return t(az)+"="+t(by())};this.setIgnoreClasses=function(dt){bG=x(dt)?[dt]:dt};this.setRequestMethod=function(dt){if(dt){dj=String(dt).toUpperCase()}else{dj=cn}if(dj==="GET"){this.disableAlwaysUseSendBeacon()}};this.setRequestContentType=function(dt){cE=dt||aM};this.setGenerationTimeMs=function(dt){ao("setGenerationTimeMs is no longer supported since Matomo 4. The call will be ignored. The replacement is setPagePerformanceTiming.")};this.setPagePerformanceTiming=function(dx,dz,dy,du,dA,dv){var dw={pf_net:dx,pf_srv:dz,pf_tfr:dy,pf_dm1:du,pf_dm2:dA,pf_onl:dv};try{dw=Q(dw,M);dw=B(dw);ct=l(dw);if(ct===""){ao("setPagePerformanceTiming() called without parameters. This function needs to be called with at least one performance parameter.");
+return}bn=false;bL=true}catch(dt){ao("setPagePerformanceTiming: "+dt.toString())}};this.setReferrerUrl=function(dt){bu=dt};this.setCustomUrl=function(dt){ba=b1(bT,dt)};this.getCurrentUrl=function(){return ba||bT};this.setDocumentTitle=function(dt){bp=dt};this.setPageViewId=function(dt){aQ=dt;bH=true};this.setAPIUrl=function(dt){bO=dt};this.setDownloadClasses=function(dt){bR=x(dt)?[dt]:dt};this.setLinkClasses=function(dt){be=x(dt)?[dt]:dt};this.setCampaignNameKey=function(dt){cw=x(dt)?[dt]:dt};this.setCampaignKeywordKey=function(dt){bN=x(dt)?[dt]:dt};this.discardHashTag=function(dt){bV=dt};this.setCookieNamePrefix=function(dt){bq=dt;if(aV){aV=b3()}};this.setCookieDomain=function(dt){var du=O(dt);if(!bs&&!bD(du)){ao("Can't write cookie on domain "+dt)}else{c7=du;bo()}};this.setExcludedQueryParams=function(dt){co=x(dt)?[dt]:dt};this.getCookieDomain=function(){return c7};this.hasCookies=function(){return"1"===cb()};this.setSessionCookie=function(dv,du,dt){if(!dv){throw new Error("Missing cookie name")
+}if(!M(dt)){dt=cu}bB.push(dv);dn(aY(dv),du,dt,bw,c7,bY,aN)};this.getCookie=function(du){var dt=aH(aY(du));if(dt===0){return null}return dt};this.setCookiePath=function(dt){bw=dt;bo()};this.getCookiePath=function(dt){return bw};this.setVisitorCookieTimeout=function(dt){cS=dt*1000};this.setSessionCookieTimeout=function(dt){cu=dt*1000};this.getSessionCookieTimeout=function(){return cu};this.setReferralCookieTimeout=function(dt){df=dt*1000};this.setConversionAttributionFirstReferrer=function(dt){bC=dt};this.setSecureCookie=function(dt){if(dt&&location.protocol!=="https:"){ao("Error in setSecureCookie: You cannot use `Secure` on http.");return}bY=dt};this.setCookieSameSite=function(dt){dt=String(dt);dt=dt.charAt(0).toUpperCase()+dt.toLowerCase().slice(1);if(dt!=="None"&&dt!=="Lax"&&dt!=="Strict"){ao("Ignored value for sameSite. Please use either Lax, None, or Strict.");return}if(dt==="None"){if(location.protocol==="https:"){this.setSecureCookie(true)}else{ao("sameSite=None cannot be used on http, reverted to sameSite=Lax.");
+dt="Lax"}}aN=dt};this.disableCookies=function(){bs=true;if(cc){aJ()}};this.areCookiesEnabled=function(){return !bs};this.setCookieConsentGiven=function(){if(bs&&!cY){bs=false;c6=true;if(cc&&aA){aR();var dt=cy("ping=1",null,"ping");bM(dt,bQ)}}};this.requireCookieConsent=function(){if(this.getRememberedCookieConsent()){return false}this.disableCookies();return true};this.getRememberedCookieConsent=function(){return aH(cL)};this.forgetCookieConsentGiven=function(){b5(cL,bw,c7);this.disableCookies()};this.rememberCookieConsentGiven=function(du){if(du){du=du*60*60*1000}else{du=30*365*24*60*60*1000}this.setCookieConsentGiven();var dt=new Date().getTime();dn(cL,dt,du,bw,c7,bY,aN)};this.deleteCookies=function(){aJ()};this.setDoNotTrack=function(du){var dt=g.doNotTrack||g.msDoNotTrack;cY=du&&(dt==="yes"||dt==="1");if(cY){this.disableCookies()}};this.alwaysUseSendBeacon=function(){c5=true};this.disableAlwaysUseSendBeacon=function(){c5=false};this.addListener=function(du,dt){av(du,dt,false)};this.enableLinkTracking=function(du){if(di){return
+}di=true;var dt=this;q(function(){au=true;var dv=J.body;av(dv,du,true)})};this.enableJSErrorTracking=function(){if(c0){return}c0=true;var dt=W.onerror;W.onerror=function(dy,dw,dv,dx,du){cm(function(){var dz="JavaScript Errors";var dA=dw+":"+dv;if(dx){dA+=":"+dx}if(P(cz,dz+dA+dy)===-1){cz.push(dz+dA+dy);ax(dz,dA,dy)}});if(dt){return dt(dy,dw,dv,dx,du)}return false}};this.disablePerformanceTracking=function(){a8=false};this.enableHeartBeatTimer=function(dt){dt=Math.max(dt||15,5);bb=dt*1000;if(c8!==null){dq()}};this.disableHeartBeatTimer=function(){if(bb||aS){if(W.removeEventListener){W.removeEventListener("focus",bg);W.removeEventListener("blur",aD);W.removeEventListener("visibilitychange",a0)}else{if(W.detachEvent){W.detachEvent("onfocus",bg);W.detachEvent("onblur",aD);W.detachEvent("visibilitychange",a0)}}}bb=null;aS=false};this.killFrame=function(){if(W.location!==W.top.location){W.top.location=W.location}};this.redirectFile=function(dt){if(W.location.protocol==="file:"){W.location=dt}};
+this.setCountPreRendered=function(dt){bk=dt};this.trackGoal=function(dt,dw,dv,du){cm(function(){c1(dt,dw,dv,du)})};this.trackLink=function(du,dt,dw,dv){cm(function(){db(du,dt,dw,dv)})};this.getNumTrackedPageViews=function(){return cx};this.trackPageView=function(dt,dv,du){cg=[];cT=[];cz=[];if(R(cc)){cm(function(){ad(aI,bO,cc)})}else{cm(function(){cx++;b6(dt,dv,du)})}};this.disableBrowserFeatureDetection=function(){c6=false};this.enableBrowserFeatureDetection=function(){c6=true};this.trackAllContentImpressions=function(){if(R(cc)){return}cm(function(){q(function(){var dt=w.findContentNodes();var du=cH(dt);bK.pushMultiple(du)})})};this.trackVisibleContentImpressions=function(dt,du){if(R(cc)){return}if(!M(dt)){dt=true}if(!M(du)){du=750}aX(dt,du,this);cm(function(){n(function(){var dv=w.findContentNodes();var dw=bf(dv);bK.pushMultiple(dw)})})};this.trackContentImpression=function(dv,dt,du){if(R(cc)){return}dv=a(dv);dt=a(dt);du=a(du);if(!dv){return}dt=dt||"Unknown";cm(function(){var dw=aK(dv,dt,du);
+bK.push(dw)})};this.trackContentImpressionsWithinNode=function(dt){if(R(cc)||!dt){return}cm(function(){if(ck){n(function(){var du=w.findContentNodesWithinNode(dt);var dv=bf(du);bK.pushMultiple(dv)})}else{q(function(){var du=w.findContentNodesWithinNode(dt);var dv=cH(du);bK.pushMultiple(dv)})}})};this.trackContentInteraction=function(dv,dw,dt,du){if(R(cc)){return}dv=a(dv);dw=a(dw);dt=a(dt);du=a(du);if(!dv||!dw){return}dt=dt||"Unknown";cm(function(){var dx=aU(dv,dw,dt,du);if(dx){bK.push(dx)}})};this.trackContentInteractionNode=function(dv,du){if(R(cc)||!dv){return}var dt=null;cm(function(){dt=dk(dv,du);if(dt){bK.push(dt)}});return dt};this.logAllContentBlocksOnPage=function(){var dv=w.findContentNodes();var dt=w.collectContent(dv);var du=typeof console;if(du!=="undefined"&&console&&console.log){console.log(dt)}};this.trackEvent=function(du,dw,dt,dv,dy,dx){cm(function(){ax(du,dw,dt,dv,dy,dx)})};this.trackSiteSearch=function(dt,dv,du,dw){cg=[];cm(function(){ce(dt,dv,du,dw)})};this.setEcommerceView=function(dx,dt,dv,du){cA={};
+if(ac(dv)){dv=String(dv)}if(!M(dv)||dv===null||dv===false||!dv.length){dv=""}else{if(dv instanceof Array){dv=W.JSON.stringify(dv)}}var dw="_pkc";cA[dw]=dv;if(M(du)&&du!==null&&du!==false&&String(du).length){dw="_pkp";cA[dw]=du}if(!ac(dx)&&!ac(dt)){return}if(ac(dx)){dw="_pks";cA[dw]=dx}if(!ac(dt)){dt=""}dw="_pkn";cA[dw]=dt};this.getEcommerceItems=function(){return JSON.parse(JSON.stringify(da))};this.addEcommerceItem=function(dx,dt,dv,du,dw){if(ac(dx)){da[dx]=[String(dx),dt,dv,du,dw]}};this.removeEcommerceItem=function(dt){if(ac(dt)){dt=String(dt);delete da[dt]}};this.clearEcommerceCart=function(){da={}};this.trackEcommerceOrder=function(dt,dx,dw,dv,du,dy){b4(dt,dx,dw,dv,du,dy)};this.trackEcommerceCartUpdate=function(dt){bz(dt)};this.trackRequest=function(du,dw,dv,dt){cm(function(){var dx=cy(du,dw,dt);bM(dx,bQ,dv)})};this.ping=function(){this.trackRequest("ping=1",null,null,"ping")};this.disableQueueRequest=function(){bK.enabled=false};this.setRequestQueueInterval=function(dt){if(dt<1000){throw new Error("Request queue interval needs to be at least 1000ms")
+}bK.interval=dt};this.queueRequest=function(dt){cm(function(){var du=cy(dt);bK.push(du)})};this.isConsentRequired=function(){return cI};this.getRememberedConsent=function(){var dt=aH(bj);if(aH(cU)){if(dt){b5(bj,bw,c7)}return null}if(!dt||dt===0){return null}return dt};this.hasRememberedConsent=function(){return !!this.getRememberedConsent()};this.requireConsent=function(){cI=true;bJ=this.hasRememberedConsent();if(!bJ){bs=true}y++;b["CoreConsent"+y]={unload:function(){if(!bJ){aJ()}}}};this.setConsentGiven=function(du){bJ=true;c6=true;b5(cU,bw,c7);var dv,dt;for(dv=0;dv<cT.length;dv++){dt=typeof cT[dv];if(dt==="string"){bM(cT[dv],bQ)}else{if(dt==="object"){dp(cT[dv],bQ)}}}cT=[];if(!M(du)||du){this.setCookieConsentGiven()}};this.rememberConsentGiven=function(dv){if(dv){dv=dv*60*60*1000}else{dv=30*365*24*60*60*1000}var dt=true;this.setConsentGiven(dt);var du=new Date().getTime();dn(bj,du,dv,bw,c7,bY,aN)};this.forgetConsentGiven=function(){var dt=30*365*24*60*60*1000;b5(bj,bw,c7);dn(cU,new Date().getTime(),dt,bw,c7,bY,aN);
+this.forgetCookieConsentGiven();this.requireConsent()};this.isUserOptedOut=function(){return !bJ};this.optUserOut=this.forgetConsentGiven;this.forgetUserOptOut=function(){this.setConsentGiven(false)};n(function(){setTimeout(function(){bL=true},0)});u.trigger("TrackerSetup",[this]);u.addPlugin("TrackerVisitorIdCookie"+aB,{unload:function(){if(!aA){aR()}}})}function K(){return{push:aj}}function c(ay,ax){var az={};var av,aw;for(av=0;av<ax.length;av++){var at=ax[av];az[at]=1;for(aw=0;aw<ay.length;aw++){if(ay[aw]&&ay[aw][0]){var au=ay[aw][0];if(at===au){aj(ay[aw]);delete ay[aw];if(az[au]>1&&au!=="addTracker"&&au!=="enableLinkTracking"){ao("The method "+au+' is registered more than once in "_paq" variable. Only the last call has an effect. Please have a look at the multiple Matomo trackers documentation: https://developer.matomo.org/guides/tracking-javascript-guide#multiple-piwik-trackers')}az[au]++}}}}return ay}var E=["addTracker","forgetCookieConsentGiven","requireCookieConsent","disableBrowserFeatureDetection","disableCookies","setTrackerUrl","setAPIUrl","enableCrossDomainLinking","setCrossDomainLinkingTimeout","setSessionCookieTimeout","setVisitorCookieTimeout","setCookieNamePrefix","setCookieSameSite","setSecureCookie","setCookiePath","setCookieDomain","setDomains","setUserId","setVisitorId","setSiteId","alwaysUseSendBeacon","disableAlwaysUseSendBeacon","enableLinkTracking","setCookieConsentGiven","requireConsent","setConsentGiven","disablePerformanceTracking","setPagePerformanceTiming","setExcludedQueryParams"];
function ah(av,au){var at=new T(av,au);L.push(at);_paq=c(_paq,E);for(H=0;H<_paq.length;H++){if(_paq[H]){aj(_paq[H])}}_paq=new K();u.trigger("TrackerAdded",[at]);return at}ar(W,"beforeunload",am,false);ar(W,"online",function(){if(M(g.serviceWorker)){g.serviceWorker.ready.then(function(at){if(at&&at.sync){return at.sync.register("matomoSync")}},function(){})}},false);ar(W,"message",function(ay){if(!ay||!ay.origin){return}var aA,aw,au;var aB=d(ay.origin);var ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){au=d(ax[aw].getMatomoUrl());if(au===aB){aA=ax[aw];break}}if(!aA){return}var av=null;try{av=JSON.parse(ay.data)}catch(az){return}if(!av){return}function at(aE){var aG=J.getElementsByTagName("iframe");for(aw=0;aw<aG.length;aw++){var aF=aG[aw];var aC=d(aF.src);if(aF.contentWindow&&M(aF.contentWindow.postMessage)&&aC===aB){var aD=JSON.stringify(aE);aF.contentWindow.postMessage(aD,"*")}}}if(M(av.maq_initial_value)){at({maq_opted_in:av.maq_initial_value&&aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})
}else{if(M(av.maq_opted_in)){ax=u.getAsyncTrackers();for(aw=0;aw<ax.length;aw++){aA=ax[aw];if(av.maq_opted_in){aA.rememberConsentGiven()}else{aA.forgetConsentGiven()}}at({maq_confirm_opted_in:aA.hasConsent(),maq_url:aA.getMatomoUrl(),maq_optout_by_default:aA.isConsentRequired()})}}},false);Date.prototype.getTimeAlias=Date.prototype.getTime;u={initialized:false,JSON:W.JSON,DOM:{addEventListener:function(aw,av,au,at){var ax=typeof at;if(ax==="undefined"){at=false}ar(aw,av,au,at)},onLoad:n,onReady:q,isNodeVisible:i,isOrWasNodeVisible:w.isNodeVisible},on:function(au,at){if(!z[au]){z[au]=[]}z[au].push(at)},off:function(av,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){if(z[av][at]===au){z[av].splice(at,1)}}},trigger:function(av,aw,au){if(!z[av]){return}var at=0;for(at;at<z[av].length;at++){z[av][at].apply(au||W,aw)}},addPlugin:function(at,au){b[at]=au},getTracker:function(au,at){if(!M(at)){at=this.getAsyncTracker().getSiteId()}if(!M(au)){au=this.getAsyncTracker().getTrackerUrl()
}return new T(au,at)},getAsyncTrackers:function(){return L},addTracker:function(av,au){var at;if(!L.length){at=ah(av,au)}else{at=L[0].addTracker(av,au)}return at},getAsyncTracker:function(ax,aw){var av;if(L&&L.length&&L[0]){av=L[0]}else{return ah(ax,aw)}if(!aw&&!ax){return av}if((!M(aw)||null===aw)&&av){aw=av.getSiteId()}if((!M(ax)||null===ax)&&av){ax=av.getTrackerUrl()}var au,at=0;for(at;at<L.length;at++){au=L[at];if(au&&String(au.getSiteId())===String(aw)&&au.getTrackerUrl()===ax){return au}}},retryMissedPluginCalls:function(){var au=al;al=[];var at=0;for(at;at<au.length;at++){aj(au[at])}}};if(typeof define==="function"&&define.amd){define("piwik",[],function(){return u});define("matomo",[],function(){return u})}return u}())}
diff --git a/plugins/API/API.php b/plugins/API/API.php
index 2d7241122e..b8ff74519b 100644
--- a/plugins/API/API.php
+++ b/plugins/API/API.php
@@ -745,7 +745,7 @@ class API extends \Piwik\Plugin\API
$segmentsNeedActionsInfo = array('visitConvertedGoalId',
'pageUrl', 'pageTitle', 'siteSearchKeyword', 'siteSearchCategory', 'siteSearchCount',
'entryPageTitle', 'entryPageUrl', 'exitPageTitle', 'exitPageUrl',
- 'outlinkUrl', 'downloadUrl', 'eventUrl', 'orderId', 'productViewName', 'productViewSku', 'productViewPrice',
+ 'outlinkUrl', 'downloadUrl', 'eventUrl', 'orderId', 'revenueOrder', 'revenueAbandonedCart', 'productViewName', 'productViewSku', 'productViewPrice',
'productViewCategory1', 'productViewCategory2', 'productViewCategory3', 'productViewCategory4', 'productViewCategory5'
);
$isCustomVariablePage = stripos($segmentName, 'customVariablePage') !== false;
diff --git a/plugins/API/lang/ga.json b/plugins/API/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/API/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/API/lang/id.json b/plugins/API/lang/id.json
index d5a96d1e01..f9f326be9a 100644
--- a/plugins/API/lang/id.json
+++ b/plugins/API/lang/id.json
@@ -4,7 +4,7 @@
"EvolutionMetricName": "%s Evolusi",
"GenerateVisits": "Jika Anda tidak memiliki data hari ini, Anda dapat membuatnya beberapa menggunakan plugin %1$s dengan membuka 'Pengembangan → Generator Pengunjung' di area administrasi Matomo.",
"Glossary": "Glosarium",
- "KeepTokenSecret": "token_auth ini merupakan hal yang rahasia sebagaimana nama-id dan sandi Anda, %1$s sehingga jangan memberitahukannya%2$s!",
+ "KeepTokenSecret": "token_auth ini merupakan hal yang rahasia sebagaimana nama pengguna dan kata sandi Anda, %1$s jadi jangan memberitahukannya%2$s!",
"LearnAboutCommonlyUsedTerms2": "Pelajari tentang istilah yang umum digunakan untuk memaksimalkan analitik Matomo.",
"LoadedAPIs": "Memuat %s API",
"MainMetricsReportDocumentation": "Laporan ini memberikan gambaran umum tentang metrik terpenting di semua kategori dan plugin.",
@@ -12,7 +12,7 @@
"PluginDescription": "Semua data di Matomo tersedia melalui API yang sederhana. Plugin ini adalah titik masuk layanan web yang dapat Anda hubungkan untuk mendapatkan data analitik web Anda dalam format XML, JSON, PHP, CSV, dll.",
"ReportingApiReference": "Referensi Pelaporan API",
"TopLinkTooltip": "Akses data Analitik Web Anda secara terprogram melalui API sederhana di JSON, XML, dll.",
- "UserAuthentication": "Otentikasi pengguna",
- "UsingTokenAuth": "Jika Anda ingin %1$smeminta data dalam skrip, crontab, dll.%2$s Anda perlu menambahkan parameter URL '%3$s' ke API memanggil URL yang memerlukan autentikasi."
+ "UserAuthentication": "Autentikasi pengguna",
+ "UsingTokenAuth": "Jika Anda ingin %1$smeminta data dalam skrip, crontab, dll.%2$s Anda perlu menambahkan parameter URL '%3$s' ke panggilan API untuk URL yang memerlukan autentikasi."
}
}
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_revenueAbandonedCart__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_revenueAbandonedCart__API.getSuggestedValuesForSegment.xml
new file mode 100644
index 0000000000..addecb936b
--- /dev/null
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_revenueAbandonedCart__API.getSuggestedValuesForSegment.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result/> \ No newline at end of file
diff --git a/plugins/API/tests/System/expected/test_AutoSuggestAPITest_revenueOrder__API.getSuggestedValuesForSegment.xml b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_revenueOrder__API.getSuggestedValuesForSegment.xml
new file mode 100644
index 0000000000..addecb936b
--- /dev/null
+++ b/plugins/API/tests/System/expected/test_AutoSuggestAPITest_revenueOrder__API.getSuggestedValuesForSegment.xml
@@ -0,0 +1,2 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result/> \ No newline at end of file
diff --git a/plugins/Actions/lang/id.json b/plugins/Actions/lang/id.json
index f58644eb39..9609cd3a5a 100644
--- a/plugins/Actions/lang/id.json
+++ b/plugins/Actions/lang/id.json
@@ -2,12 +2,12 @@
"Actions": {
"ActionType": "Jenis Tindakan",
"ActionTypes": "Jenis Tindakan",
- "ActionsInVisit": "TIndakan saat berkunjung",
- "AvgGenerationTimeTooltip": "Rerata berdasar %1$s kunjungan %2$s antara %3$s dan %4$s",
+ "ActionsInVisit": "Tindakan dalam Kunjungan",
+ "AvgGenerationTimeTooltip": "Rata-rata berdasarkan %1$s hit (s) %2$s antara %3$s dan %4$s",
"Behaviour": "Perilaku",
"ColumnActionURL": "URL tindakan",
- "ColumnClickedURL": "Klik Tautan Keluar",
- "ColumnClickedURLs": "Klik Tautan Keluar",
+ "ColumnClickedURL": "Tautan Keluar yang Diklik",
+ "ColumnClickedURLs": "Tautan Keluar yang Diklik",
"ColumnClicks": "Klik",
"ColumnClicksDocumentation": "Jumlah tautan ini diklik.",
"ColumnDownloadURL": "URL Unduhan",
@@ -23,7 +23,7 @@
"ColumnNoResultKeyword": "Kata Kunci dengan Tanpa Hasil Pencarian",
"ColumnPageName": "Nama Halaman",
"ColumnPageURL": "URL Halaman",
- "ColumnPageViewPosition": "Posisi untuk meninjau halaman",
+ "ColumnPageViewPosition": "Posisi Tampilan Halaman",
"ColumnPagesPerSearch": "Halaman Hasil Pencarian",
"ColumnPagesPerSearchDocumentation": "Pengunjung akan melakukan pencarian dalam situs Anda, dan terkadang mengeklik \"Selanjutnya\" untuk melihat hasil lebih. Ini merupakan jumlah rerata halaman ditampilkan untuk kata kunci ini.",
"ColumnSearchCategory": "Kategori Pencarian",
@@ -36,8 +36,8 @@
"ColumnUniqueClicks": "Klik Unik",
"ColumnUniqueClicksDocumentation": "Jumlah kunjungan yang melibatkan klik pada tautan ini. Jika tautan diklik beberapa kali selama satu kali kunjungan, ini hanya dihitung sekali.",
"ColumnUniqueDownloads": "Unduhan Unik",
- "ColumnUniqueOutlinks": "Tautan Luar Unik",
- "DownloadsReportDocumentation": "Dalam laporan ini, Anda dapat melihat berkas yang diunduh oleh pengunjung. %s Apa yang Matomo hitung adalah yang mengeklik tautan unduhan. Namun, bila unduhan sudah lengkap atau belum Matomo tidak mengetahuinya.",
+ "ColumnUniqueOutlinks": "Tautan Keluar yang Unik",
+ "DownloadsReportDocumentation": "Dalam laporan ini, Anda dapat melihat berkas yang diunduh oleh pengunjung. %s Apa yang Matomo hitung adalah yang mengeklik tautan unduhan. Kondisi unduhan yang sudah lengkap atau belum, Matomo tidak mengetahuinya.",
"DownloadsSubcategoryHelp1": "Dalam laporan ini, Anda dapat melihat berkas mana yang telah diunduh oleh pengunjung Anda.",
"DownloadsSubcategoryHelp2": "Apa yang Matomo hitung sebagai unduhan adalah klik tautan unduhan. Apakah unduhan selesai atau tidak, Matomo tidak mengetahuinya.",
"EntryPageTitles": "Judul halaman masuk",
@@ -52,34 +52,34 @@
"ExitPagesSubcategoryHelp2": "URL keluar ditampilkan sebagai struktur folder.",
"MainMetricsReportDocumentation": "Laporan ini memberikan gambaran yang sangat mendasar tentang tindakan apa yang dilakukan oleh pengunjung di situs web Anda.",
"OneSearch": "1 pencarian",
- "OutlinkDocumentation": "Tautan keluar merupakan tautan yang mengarahkan keluar pengunjung dari situs Anda (ke ranah lainnya).",
- "OutlinksReportDocumentation": "Laporan ini menampilkan laporan secara berurutan tautan keluar URL yang diklik oleh pengunjung Anda.",
- "OutlinksSubcategoryHelp1": "Laporan ini menunjukkan daftar hierarki URL tautan keluar yang diklik oleh pengunjung Anda. Outlink adalah tautan yang mengarahkan pengunjung menjauh dari situs web Anda (ke domain lain).",
- "PageTitlesReportDocumentation": "Laporan ini mengandung informasi tentang judul halaman yang telah dikunjungi. %1$s Judul halaman merupakan Etiket %2$s HTML yang kebanyakan peramban ditampilkan di judul jendela.",
+ "OutlinkDocumentation": "Tautan keluar merupakan tautan yang mengarahkan pengunjung untuk keluar dari situs Anda (ke domain lainnya).",
+ "OutlinksReportDocumentation": "Laporan ini menunjukkan daftar hierarki URL tautan keluar yang diklik oleh pengunjung Anda.",
+ "OutlinksSubcategoryHelp1": "Laporan ini menunjukkan daftar hierarki URL tautan keluar yang diklik oleh pengunjung Anda. Tautan keluar adalah tautan yang mengarahkan pengunjung menjauh dari situs web Anda (ke domain lain).",
+ "PageTitlesReportDocumentation": "Laporan ini berisi informasi tentang judul halaman yang telah dikunjungi. %1$s Judul halaman adalah Tag HTML %2$s yang ditampilkan sebagian besar peramban di judul jendelanya.",
"PageTitlesSubcategoryHelp1": "Laporan ini berisi informasi tentang judul halaman yang telah dikunjungi.",
- "PageTitlesSubcategoryHelp2": "Judul halaman adalah HTML &amp;lt;title&amp;gt; Tanda yang ditampilkan sebagian besar peramban di judul jendela mereka.",
+ "PageTitlesSubcategoryHelp2": "Judul halaman adalah HTML &amp;lt;title&amp;gt; Tag yang ditampilkan sebagian besar peramban di judul jendela mereka.",
"PageUrls": "URL Halaman",
"PageViewsByVisitor": "Jumlah dari berapa kali halaman ini dilihat oleh pengunjung dari semua pengunjung",
- "PagesReportDocumentation": "Laporan ini mengandung informasi tentang URL halaman yang dikunjungi. %s Tabel diatur berurutan, URL ditampilkan sebagai struktur map.",
+ "PagesReportDocumentation": "Laporan ini berisi informasi tentang URL halaman yang telah dikunjungi. %s Tabel diatur secara hierarkis, URL ditampilkan sebagai struktur folder.",
"PagesSubcategoryHelp1": "Laporan ini berisi informasi tentang URL halaman yang telah dikunjungi.",
"PagesSubcategoryHelp2": "Tabel diatur secara hierarkis, URL ditampilkan sebagai struktur folder.",
"PagesSubcategoryHelp3": "Gunakan ikon plus dan minus di kiri untuk bernavigasi.",
"PluginDescription": "Laporan tentang tampilan halaman dan judul halaman. Memungkinkan Anda untuk mengukur mesin pencari situs web internal Anda. Secara otomatis melacak klik pada tautan eksternal dan unduhan berkas.",
- "RevisitedPages": "Halaman-halaman yang dilihat lebih dari sekali",
- "SiteSearchCategories": "Kategori-kategori (Pencarian situs)",
- "SiteSearchCategories1": "Lapotan ini mendaftar Kategori dipilih oleh pengunjung ketika membuat Pencarian di situs Anda.",
- "SiteSearchCategories2": "Misalnya, situs Niaga-E biasanya memiliki pemilih \"Kategori\" yang membatasi pencarian pengunjung terhadap seluruh produk dalam Kategori tertentu.",
+ "RevisitedPages": "Halaman yang dilihat lebih dari satu kali",
+ "SiteSearchCategories": "Kategori (Pencarian situs)",
+ "SiteSearchCategories1": "Laporan ini mencantumkan Kategori yang dipilih oleh pengunjung saat mereka melakukan Penelusuran di situs web Anda.",
+ "SiteSearchCategories2": "Misalnya, situs Niaga-el biasanya memiliki pemilih \"Kategori\" yang membatasi pencarian pengunjung terhadap seluruh produk dalam Kategori tertentu.",
"SiteSearchCategory": "Kategori (Pencarian situs)",
"SiteSearchFollowingPagesDoc": "Ketika pengnjung melakukan pencarian di situs Anda, mereka mencari sebagian halaman, isi, produk, atau layanan. Laporan ini mendaftar halaman paling banyak diklik dalam pencarian dalam. Dengan kata lain, daftar halaman paling dicari oleh pengunjung telah tersedia di situs Anda.",
- "SiteSearchIntro": "Melacak pencarian dibuat oleh pengunjung dalam situs Anda merupakan sebuah cara efektif untuk mempelajari tentang apa yang pengunjung Anda cari, ini dapat membantu menemukan gagasan untuk muatan baru, produk Niaga-E baru potensial dicari oleh pelanggan, dan peningkatan umum pengalaman pengunjung dalam situs Anda.",
+ "SiteSearchIntro": "Melacak pencarian yang dilakukan pengunjung di situs web Anda adalah cara yang sangat efektif untuk mempelajari lebih lanjut tentang apa yang dicari audiens Anda, ini dapat membantu dalam menemukan ide untuk membuat konten baru, produk Niaga-el baru yang mungkin dicari oleh calon pelanggan, dan secara umum meningkatkan pengalaman pengunjung di situs web Anda.",
"SiteSearchKeyword": "Kata Kunci (Pencarian Situs)",
"SiteSearchKeywordCount": "Perhitungan kata kunci (Pencarian situs)",
"SiteSearchKeywordCounts": "Perhitungan kata kunci (Pencarian situs)",
"SiteSearchKeywords": "Kata Kunci (Pencarian Situs)",
- "SiteSearchKeywordsDocumentation": "Laporan ini mendaftar Kata Kunci pencarian pengunjung dalam Mesin Pencari dalam Anda.",
- "SiteSearchKeywordsNoResultDocumentation": "Laporan ini mendaftar Kata Kunci Pencarian yang tidak menemukan hasil Pencarian apapun: kemungkinan algoritma pencarian dapat ditingkatkan, atau mungkin pengunjung Anda mencari muatan yang mungkin tidak (atau belum) tersedia di situs Anda?",
- "SiteSearchSubcategoryHelp1": "Bagian Pencarian Situs menunjukkan kata kunci yang digunakan pengunjung saat mencari situs web Anda. Hal ini juga menampilkan halaman mana yang dilihat pengguna setelah melakukan pencarian dan kata kunci pencarian di tempat mana yang tidak menghasilkan hasil sama sekali.",
- "SiteSearchSubcategoryHelp2": "Laporan-laporan ini dapat memberi Anda ide tentang konten yang tidak ada di situs Anda, wawasan tentang apa yang dicari pengunjung Anda tetapi tidak dapat ditemukan dengan mudah, dan masih banyak lagi.",
+ "SiteSearchKeywordsDocumentation": "Laporan ini mencantumkan Kata Kunci Penelusuran yang ditelusuri oleh pengunjung di Mesin Pencari internal Anda.",
+ "SiteSearchKeywordsNoResultDocumentation": "Laporan ini mencantumkan Kata Kunci Penelusuran yang tidak menampilkan hasil Penelusuran apa pun: mungkin algoritma mesin telusur dapat ditingkatkan, atau mungkin pengunjung Anda mencari konten yang belum ada di situs web Anda?",
+ "SiteSearchSubcategoryHelp1": "Bagian Pencarian Situs menunjukkan kata kunci yang digunakan oleh pengunjung saat mencari situs web Anda. Hal ini juga menampilkan halaman mana yang dilihat pengguna setelah melakukan pencarian dan kata kunci pencarian di tempat mana yang tidak menghasilkan hasil sama sekali.",
+ "SiteSearchSubcategoryHelp2": "Laporan ini dapat memberi Anda ide tentang konten yang tidak ada di situs Anda, wawasan tentang apa yang dicari oleh pengunjung Anda, tetapi tidak dapat ditemukan dengan mudah, dan masih banyak lagi.",
"SiteSearchSubcategoryHelp3": "Pelajari lebih lanjut di panduan Pencarian Situs.",
"SubmenuPageTitles": "Judul halaman",
"SubmenuPagesEntry": "Halaman masuk",
@@ -89,10 +89,10 @@
"WidgetEntryPageTitles": "Judul Halaman Masuk",
"WidgetExitPageTitles": "Judul Halaman Keluar",
"WidgetPageTitles": "Judul Halaman",
- "WidgetPageTitlesFollowingSearch": "Judul Halaman Diikuti Pencarian Situs",
- "WidgetPageUrlsFollowingSearch": "Halaman Diikuti Situs Pencarian Situs",
+ "WidgetPageTitlesFollowingSearch": "Judul Halaman Setelah Pencarian Situs",
+ "WidgetPageUrlsFollowingSearch": "Halaman Setelah Pencarian Situs",
"WidgetPagesEntry": "Halaman Masuk",
- "WidgetPagesExit": "Halamana Keluar",
+ "WidgetPagesExit": "Halaman Keluar",
"WidgetSearchCategories": "Kategori Pencarian",
"WidgetSearchKeywords": "Kata Kunci Pencarian Situs",
"WidgetSearchNoResultKeywords": "Kata Kunci Pencarian dengan Tanpa Hasil"
diff --git a/plugins/Actions/tests/System/ApiInvalidParameterTypeTest.php b/plugins/Actions/tests/System/ApiInvalidParameterTypeTest.php
new file mode 100644
index 0000000000..74cd77502b
--- /dev/null
+++ b/plugins/Actions/tests/System/ApiInvalidParameterTypeTest.php
@@ -0,0 +1,80 @@
+<?php
+/**
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+namespace Piwik\Plugins\Actions\tests\System;
+
+use Piwik\API\Request;
+use Piwik\Archive;
+use Piwik\DataTable;
+use Piwik\Tests\Framework\Fixture;
+use Piwik\Tests\Framework\TestCase\IntegrationTestCase;
+
+/**
+ * @group ApiInvalidParameterTypeTest
+ */
+class ApiInvalidParameterTypeTest extends IntegrationTestCase
+{
+ public function test_actionUrlSegmentValueIsProperlyEncoded_inActionsReports()
+ {
+ $url = 'http://example+site.org/a+b/index.html';
+
+ $idSite = Fixture::createWebsite('2012-03-04 00:00:00');
+ $t = Fixture::getTracker($idSite, '2015-03-04 03:24:00');
+ $t->setUrl($url);
+ Fixture::checkResponse($t->doTrackPageView('a page+view'));
+
+ // Attempt to call an API method with a string idSubtable value
+ try {
+
+ /** @var DataTable $urls */
+ $urls = Request::processRequest('Actions.getPageUrls', [
+ 'idSite' => $idSite,
+ 'idSubtable' => 'undefined', // This is invalid
+ 'period' => 'day',
+ 'date' => '2015-03-04',
+ 'flat' => '1',
+ ]);
+
+ $this->fail('Exception was not thrown');
+
+ } catch (\Throwable $e) {
+ $this->assertStringStartsWith('idSubtable needs to be a number', $e->getMessage());
+ }
+
+ // Attempt to call the same API method with a numeric idSubtable value
+ /** @var DataTable $urls */
+ $urls = Request::processRequest('Actions.getPageUrls', [
+ 'idSite' => $idSite,
+ 'idSubtable' => 1, // valid
+ 'period' => 'day',
+ 'date' => '2015-03-04',
+ 'flat' => '1',
+ ]);
+
+ $this->assertEquals(1, $urls->getRowsCount());
+
+ // Attempt to call the same API method with the 'all' idSubtable value
+ /** @var DataTable $urls */
+ $urls = Request::processRequest('Actions.getPageUrls', [
+ 'idSite' => $idSite,
+ 'idSubtable' => Archive::ID_SUBTABLE_LOAD_ALL_SUBTABLES, // valid
+ 'period' => 'day',
+ 'date' => '2015-03-04',
+ 'flat' => '1',
+ ]);
+
+ $this->assertEquals(1, $urls->getRowsCount());
+
+ }
+
+ protected static function configureFixture($fixture)
+ {
+ parent::configureFixture($fixture);
+ $fixture->createSuperUser = true;
+ }
+} \ No newline at end of file
diff --git a/plugins/Annotations/lang/ga.json b/plugins/Annotations/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Annotations/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Contents/lang/ga.json b/plugins/Contents/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Contents/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Contents/lang/id.json b/plugins/Contents/lang/id.json
index ab3e8d9707..00cfa20eae 100644
--- a/plugins/Contents/lang/id.json
+++ b/plugins/Contents/lang/id.json
@@ -1,11 +1,24 @@
{
"Contents": {
- "Impressions": "Impresi",
+ "ContentImpression": "Impresi Konten",
"ContentInteraction": "Interaksi Konten",
"ContentInteractions": "Interaksi Konten",
- "InteractionRate": "Nilai Interaksi",
"ContentName": "Nama Konten",
+ "ContentNameReportDocumentation": "Laporan ini menunjukkan nama konten yang berinteraksi dengan pengunjung Anda dan yang dilihat oleh pengunjung Anda.",
+ "ContentNames": "Nama Konten",
"ContentPiece": "Potongan Konten",
- "Contents": "Konten"
+ "ContentPieceReportDocumentation": "Laporan ini menunjukkan bagian konten yang dilihat oleh pengunjung Anda dan yang berinteraksi dengan pengunjung Anda.",
+ "ContentPieces": "Potongan Konten",
+ "ContentTarget": "Target Konten",
+ "ContentTargets": "Target Konten",
+ "Contents": "Konten",
+ "ContentsSubcategoryHelp1": "Pelacakan konten membantu Anda dalam menentukan popularitas konten tertentu di halaman mana pun di situs web atau aplikasi Anda. Bagian ini melaporkan jumlah tayangan dan interaksi yang diterima berbagai konten di situs Anda.",
+ "ContentsSubcategoryHelp2": "Pelajari lebih lanjut di panduan Pelacakan Konten.",
+ "Impressions": "Impresi",
+ "ImpressionsMetricDocumentation": "Frekuensi blok konten, seperti spanduk atau iklan, ditampilkan di halaman.",
+ "InteractionRate": "Nilai Interaksi",
+ "InteractionRateMetricDocumentation": "Rasio impresi konten terhadap interaksi.",
+ "InteractionsMetricDocumentation": "Frekuensi interaksi blok konten (misalnya, 'klik' pada spanduk atau iklan).",
+ "PluginDescription": "Pelacakan konten dan spanduk memungkinkan Anda untuk mengukur kinerja (tampilan, klik, CTR) dari setiap konten di halaman Anda (Iklan spanduk, gambar, bentuk apa pun)."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Contents/tests/System/expected/test_Contents_Contents.getContentNames_lastN__API.getProcessedReport_day.xml b/plugins/Contents/tests/System/expected/test_Contents_Contents.getContentNames_lastN__API.getProcessedReport_day.xml
index 2e6b89c715..2e6b89c715 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_Contents.getContentNames_lastN__API.getProcessedReport_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_Contents.getContentNames_lastN__API.getProcessedReport_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents_Contents.getContentPieces_lastN__API.getProcessedReport_day.xml b/plugins/Contents/tests/System/expected/test_Contents_Contents.getContentPieces_lastN__API.getProcessedReport_day.xml
index 60e5b513c9..60e5b513c9 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_Contents.getContentPieces_lastN__API.getProcessedReport_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_Contents.getContentPieces_lastN__API.getProcessedReport_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_day.xml b/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_day.xml
index fb6ce6eb1c..fb6ce6eb1c 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_month.xml b/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_month.xml
index a50c3d0d2c..a50c3d0d2c 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_month.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentNames_month.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_day.xml b/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_day.xml
index fca86f9cea..fca86f9cea 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_month.xml b/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_month.xml
index d169477e38..d169477e38 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_month.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents__Contents.getContentPieces_month.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_day.xml b/plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_day.xml
index d4941a6730..d4941a6730 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_month.xml b/plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_month.xml
index d4941a6730..d4941a6730 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_month.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents__Live.getLastVisitsDetails_month.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Actions.getPageUrls_day.xml b/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Actions.getPageUrls_day.xml
index bc4d78ee71..bc4d78ee71 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Actions.getPageUrls_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Actions.getPageUrls_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentNames_day.xml b/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentNames_day.xml
index fb6ce6eb1c..fb6ce6eb1c 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentNames_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentNames_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentPieces_day.xml b/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentPieces_day.xml
index fca86f9cea..fca86f9cea 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentPieces_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Contents.getContentPieces_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Live.getLastVisitsDetails_day.xml b/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Live.getLastVisitsDetails_day.xml
index d4941a6730..d4941a6730 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Live.getLastVisitsDetails_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_contentInteractionMatch__Live.getLastVisitsDetails_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Actions.getPageUrls_day.xml b/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Actions.getPageUrls_day.xml
index bc4d78ee71..bc4d78ee71 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Actions.getPageUrls_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Actions.getPageUrls_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentNames_day.xml b/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentNames_day.xml
index fb6ce6eb1c..fb6ce6eb1c 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentNames_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentNames_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentPieces_day.xml b/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentPieces_day.xml
index fca86f9cea..fca86f9cea 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentPieces_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Contents.getContentPieces_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Live.getLastVisitsDetails_day.xml b/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Live.getLastVisitsDetails_day.xml
index d4941a6730..d4941a6730 100755..100644
--- a/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Live.getLastVisitsDetails_day.xml
+++ b/plugins/Contents/tests/System/expected/test_Contents_contentTargetMatch__Live.getLastVisitsDetails_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Actions.getPageUrls_day.xml b/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Actions.getPageUrls_day.xml
index bc4d78ee71..bc4d78ee71 100755..100644
--- a/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Actions.getPageUrls_day.xml
+++ b/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Actions.getPageUrls_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentNames_day.xml b/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentNames_day.xml
index fb6ce6eb1c..fb6ce6eb1c 100755..100644
--- a/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentNames_day.xml
+++ b/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentNames_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentPieces_day.xml b/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentPieces_day.xml
index fca86f9cea..fca86f9cea 100755..100644
--- a/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentPieces_day.xml
+++ b/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Contents.getContentPieces_day.xml
diff --git a/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Live.getLastVisitsDetails_day.xml b/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Live.getLastVisitsDetails_day.xml
index d4941a6730..d4941a6730 100755..100644
--- a/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Live.getLastVisitsDetails_day.xml
+++ b/plugins/Contents/tests/System/expected/test_ContentscontentNameOrPieceMatch__Live.getLastVisitsDetails_day.xml
diff --git a/plugins/CoreAdminHome/lang/de.json b/plugins/CoreAdminHome/lang/de.json
index e41bd6add0..9a61ca63ef 100644
--- a/plugins/CoreAdminHome/lang/de.json
+++ b/plugins/CoreAdminHome/lang/de.json
@@ -125,6 +125,7 @@
"SendPluginUpdateCommunication": "Sende mir eine E-Mail wenn eine neue Plugin-Aktualisierung zur Verfügung steht",
"SendPluginUpdateCommunicationHelp": "Der Hauptadministrator wird per E-Mail benachrichtigt, sobald eine neue Version eines Plugins zur Verfügung steht.",
"SettingsSaveSuccess": "Einstellungen aktualisiert.",
+ "SinglePageApplicationDescription": "Wenn Sie eine Single-Page-Anwendung (SPA) oder eine progressive Webanwendung (PWA) aufzeichnen, lesen Sie bitte %1$sdiesen Leitfaden%2$s.",
"Solution": "Lösung",
"StableReleases": "Sollte Matomo eine wichtige Komponente Ihres Unternehmens sein, empfehlen wir Ihnen den letzten stabilen Release zu verwenden. Sollten Sie die letzte Beta Version verwenden und einen Fehler finden oder einen Vorschlag haben, %1$slesen Sie bitte hier%2$s.",
"SystemPluginSettings": "Globale Plugin Einstellungen",
diff --git a/plugins/CoreAdminHome/lang/fr.json b/plugins/CoreAdminHome/lang/fr.json
index afae017813..e5046c64e8 100644
--- a/plugins/CoreAdminHome/lang/fr.json
+++ b/plugins/CoreAdminHome/lang/fr.json
@@ -125,6 +125,7 @@
"SendPluginUpdateCommunication": "Envoyer un courriel lorsqu'une mise à jour d'une extension est disponible",
"SendPluginUpdateCommunicationHelp": "Un courriel sera envoyé aux super utilisateurs quand une nouvelle version d'une extension sera disponible.",
"SettingsSaveSuccess": "Paramètres mis à jour.",
+ "SinglePageApplicationDescription": "Si vous suivez une application à page unique (SPA) ou une application Web progressive (PWA), veuillez consulter %1$sce guide%2$s.",
"Solution": "solution",
"StableReleases": "Si Matomo est essentiel pour votre entreprise, nous vous recommandons d'utiliser la dernière version stable. Si vous utilisez la dernière version bêta et que vous trouverez un bogue ou avez une suggestion, %1$scliquez ici%2$s svp.",
"SystemPluginSettings": "Paramètres des extensions",
diff --git a/plugins/CoreAdminHome/lang/ga.json b/plugins/CoreAdminHome/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/CoreAdminHome/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/CoreAdminHome/lang/id.json b/plugins/CoreAdminHome/lang/id.json
index 7dd1072d7e..1eabfc47c1 100644
--- a/plugins/CoreAdminHome/lang/id.json
+++ b/plugins/CoreAdminHome/lang/id.json
@@ -1,93 +1,167 @@
{
"CoreAdminHome": {
- "AddNewTrustedHost": "Tambahkan host terpercaya",
+ "AddNewTrustedHost": "Tambahkan host tepercaya yang baru",
"Administration": "Administrasi",
"ArchivingSettings": "Pengaturan pengarsipan",
"BrandingSettings": "Pengaturan merek",
- "BruteForce": "Brute Force",
- "CheckToOptIn": "Centang kotak ini agar terekam.",
- "ClickHereToOptIn": "Klik di sini agar terekam.",
- "ClickHereToOptOut": "Klik di sini agar tak-terekam.",
- "ConfirmDeleteAllTrackingFailures": "Anda yakin ingin menghapus semua kegagalan pelacakan?",
- "ConfirmDeleteThisTrackingFailure": "Anda yakin ingin menghapus kegagalan pelacakan ini?",
- "Cors": "Cors",
+ "BruteForce": "Paksaan",
+ "CheckToOptIn": "Centang kotak ini untuk ikut serta.",
+ "ClickHereToOptIn": "Klik di sini untuk ikut serta.",
+ "ClickHereToOptOut": "Klik di sini untuk memilih keluar.",
+ "ConfirmDeleteAllTrackingFailures": "Apakah Anda yakin ingin menghapus semua kegagalan pelacakan?",
+ "ConfirmDeleteThisTrackingFailure": "Apakah Anda yakin ingin menghapus kegagalan pelacakan ini?",
+ "Cors": "CORS",
"CorsDomains": "Domain Cross-Origin Resource Sharing (CORS)",
+ "CorsDomainsHelp": "Anda dapat menentukan domain atau subdomain seperti http://contoh.com atau http://statistik.contoh.com atau untuk mengizinkan permintaan lintas domain untuk semua domain, cukup tambahkan *",
"CustomLogoFeedbackInfo": "Jika Anda menyesuaikan logo Matomo, Anda mungkin juga tertarik untuk menyembunyikan tautan %1$s di menu atas. Untuk melakukannya, Anda mematikan pengaya Umpan Balik di halaman %2$s Pengelolaan Pengaya%3$s.",
"CustomLogoHelpText": "Anda dapat Anda dapat menyesuaikan logo Matomo yang akan ditampilkan dalam antarmuka pengguna dan laporan surel.",
- "EmailServerSettings": "Pengaturan peladen Surel",
- "ForBetaTestersOnly": "Hanya untuk pemeriksa beta saja",
+ "DeleteAllFailures": "Hapus semua kegagalan",
+ "DevelopmentProcess": "Proses pengembangan kami mencakup ribuan pengujian otomatis. Penguji Beta memainkan peran kunci dalam mencapai \"Kebijakan tanpa kesalahan\" di Matomo.",
+ "EmailServerSettings": "Pengaturan server surel",
+ "ErrorEmailFromAddressNotValid": "SMTP tidak valid",
+ "FaviconUpload": "Pilih Favicon untuk diunggah",
+ "FileUploadDisabled": "Pengunggahan berkas tidak diaktifkan dalam konfigurasi PHP Anda. Untuk mengunggah logo khusus Anda, harap setel %s di php.ini dan mulai ulang server web Anda.",
+ "ForBetaTestersOnly": "Hanya untuk penguji beta saja",
"HttpTrackingApi": "API Pelacakan HTTP",
+ "HttpTrackingApiDescription": "%1$sHTTP Tracking API%2$s memungkinkan Anda untuk melacak apa pun. Ini akan berguna jika Anda menggunakan bahasa pemrograman yang belum memiliki SDK. Mungkin juga berguna saat Anda ingin melacak perangkat atau aplikasi dengan cara khusus.",
"ImageTracking": "Pelacakan Gambar",
"ImageTrackingIntro1": "Ketika pengunjung mematikan JavaScript, atau ketika JavaScript tidak dapat digunakan, Anda dapat menggunakan tautan pelacakan gambar untuk melacak pengunjung.",
- "ImageTrackingIntro2": "Bangitkan tautan di bawah dan salin-tempel HTML hasil ke halaman. Bila Anda menggunakan ini sebagai pengganti bila terjadi kegagalan pelacakan JavaScript, Anda dapat mengelilingi ini dengan etiket %1$s.",
- "ImageTrackingIntro3": "Untuk seluruh daftar opsi yang Anda dapat gunakan untuk tautan pelacakan gambar, lihat %1$sDokumentasi API Pelacakan%2$s.",
+ "ImageTrackingIntro2": "Buat tautan di bawah ini dan salin-tempel HTML yang dihasilkan di halaman. Jika Anda menggunakan ini sebagai pengganti untuk pelacakan JavaScript, Anda dapat mengapitnya dalam tag %1$s.",
+ "ImageTrackingIntro3": "Untuk seluruh daftar opsi yang dapat Anda gunakan dengan tautan pelacakan gambar, lihat %1$sDokumentasi API Pelacakan%2$s.",
"ImageTrackingLink": "Tautan Pelacakan Gambar",
+ "ImportFromGoogleAnalytics": "Impor dari Google Analytics",
+ "ImportFromGoogleAnalyticsDescription": "Jika Anda memiliki atribut Google Analytics dan beralih ke Matomo, Anda dapat mengimpor data yang ada menggunakan plugin %1$sGoogleAnalyticsImporter%2$s.",
"ImportingServerLogs": "Mengimpor Catatan Peladen",
"ImportingServerLogsDesc": "Sebuah cara alternatif untuk melacak pengunjung melalui peramban (melalui JavaScript atau tautan gambar) adalah secara berkelanjutan mengimpor catatan peladen. Pelajari selengkapnya tentang %1$sAnalisis Berkas Catatan Peladen%2$s.",
- "InvalidPluginsWarning": "Pengaya berikut ini tidak sesuai dengan %1$s dan tidak dapat dimuat: %2$s.",
- "InvalidPluginsYouCanUninstall": "Anda dapat memperbarui atau menghapus pengaya berikut dalam halaman %1$sKelola Pengaya%2$s.",
+ "InvalidPluginsWarning": "Plugin berikut ini tidak kompatibel dengan %1$s dan tidak dapat dimuat: %2$s.",
+ "InvalidPluginsYouCanUninstall": "Anda dapat memperbarui atau mencopot pemasangan plugin ini di halaman %1$sKelola Plugin%2$s.",
+ "JSTrackingIntro1": "Anda dapat melacak pengunjung situs web Anda dengan berbagai cara. Cara yang disarankan untuk melakukannya adalah melalui JavaScript. Untuk menggunakan metode ini, Anda harus memastikan setiap halaman pada situs web Anda memiliki beberapa kode JavaScript, yang mana bisa Anda buat di sini.",
"JSTrackingIntro2": "Sekali Anda memiliki kode pelacakan JavaScript untuk situs Anda, salin dan tempel dalam setiap halaman yang ingin dilacak menggunakan Matomo.",
+ "JSTrackingIntro3a": "Di sebagian besar situs web, blog, CMS, dll. Anda dapat menggunakan plugin yang sudah jadi untuk melakukan pekerjaan teknis untuk Anda. (Lihat daftar plugin %1$s kami yang digunakan untuk mengintegrasikan Matomo%2$s.)",
+ "JSTrackingIntro3b": "Jika tidak ada plugin, Anda dapat mengedit templat situs web dan menambahkan kode pelacakan JavaScript ke &lt;/head&gt; tag yang sering didefinisikan di dalam 'header.php', 'header.tpl', atau berkas templat serupa.",
"JSTrackingIntro4": "Bila Anda tidak ingin menggunakan JavaScript untuk melacak pengunjung, %1$sbuat sebuah gambar pelacakan di tautan berikut%2$s.",
- "JSTrackingIntro5": "Bila Anda berkeinginan lebih dari melacak tampilan halaman, harap periksa %1$sDokumentas Pelacakan Javascript Matomo%2$s untuk daftar fungsi yang tersedia. Gunakan funsi tersebut untuk melacak tujuan Anda, variabel kustom, pemesanan niaga-e, keranjang dibuang, dan lebih.",
+ "JSTrackingIntro5": "Jika Anda ingin melakukan lebih dari sekadar melacak tampilan halaman, silakan lihat daftar fungsi yang tersedia di %1$sdokumentasi Pelacakan Javascript Matomo%2$s. Dengan menggunakan fungsi ini, Anda dapat melacak sasaran, variabel khusus, pesanan niaga-el, troli yang ditinggalkan, dan masih banyak lagi.",
"JSTracking_CampaignKwdParam": "Parameter Kata Kunci Kampanye",
"JSTracking_CampaignNameParam": "Parameter Nama Kampanye",
- "JSTracking_CustomCampaignQueryParam": "Gunakan nama parameter kueri kustom untuk untuk nama kampanye dan kata kunci",
+ "JSTracking_CodeNoteBeforeClosingHead": "Pastikan kode ini ada di setiap halaman situs web Anda. Sebaiknya tempelkan segera sebelum tag penutup %1$s.",
+ "JSTracking_CodeNoteBeforeClosingHeadEmail": "Pastikan kode ini disematkan dalam elemen skrip di setiap halaman situs web Anda. Kami merekomendasikan untuk menempelkannya segera sebelum tag penutup kepala.",
+ "JSTracking_CrossDomain": "Secara bawaan, ID pengunjung yang mengidentifikasi pengunjung unik disimpan di kuki peramban pihak pertama yang hanya dapat diakses oleh halaman di domain yang sama. Mengaktifkan penautan lintas domain memungkinkan Anda untuk melacak semua tindakan dan tampilan halaman pengunjung tertentu ke dalam kunjungan yang sama bahkan saat mereka melihat halaman di beberapa domain. Setiap kali pengguna mengeklik tautan ke salah satu URL alias situs web Anda, itu akan menambahkan parameter URL pk_vid yang meneruskan ID Pengunjung.",
+ "JSTracking_CrossDomain_NeedsMultipleDomains": "Catatan: Untuk menggunakan penautan lintas domain, Anda harus menentukan lebih dari satu nama domain (URL) untuk situs web Anda.",
+ "JSTracking_CustomCampaignQueryParam": "Gunakan nama parameter kueri khusus untuk nama &amp; kata kunci kampanye",
"JSTracking_CustomCampaignQueryParamDesc": "Catatan: %1$sMatomo akan secara otomastis mendeteksi parameter Google Analytics.%2$s",
- "JSTracking_DisableCookies": "Nonaktifkan semua pelacakan cookies",
- "JSTracking_EnableCrossDomainLinking": "Mengaktifkan cross domain linking",
- "JSTracking_EnableDoNotTrack": "Mengaktifkan pendeteksian Jangan-Lacak sisi klien",
- "JSTracking_EnableDoNotTrackDesc": "Sehingga permintaan pelacakan tidak akan dikirim bila pengunjung tidak ingin terlacak.",
- "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Catatan: Dukungan Jangan-Lacak sisi peladen telah diaktifkan, sehingga opsi ini tidak memiliki pengaruh.",
- "JSTracking_GroupPageTitlesByDomain": "Tambah judul halaman untuk situs ranah tersebut saat pelacakan",
- "JSTracking_GroupPageTitlesByDomainDesc1": "Sehingga bila seseorang mengunjungi halaman 'Tentang' dalam blog, %1$s ini akan terekam sebagai 'blog / Tentang'. Ini akan mempermudah melakuka tinjauan terhadap lalu lintas berdasar subranah.",
- "JSTracking_MergeAliases": "Dalam laporan \"Tautan keluar\", sembunyikan klik untuk untuk mengetahui URL alias dari",
+ "JSTracking_DisableCookies": "Nonaktifkan semua kuki pelacakan",
+ "JSTracking_DisableCookiesDesc": "Menonaktifkan semua kuki pihak pertama. Kuki Matomo yang ada untuk situs web ini akan dihapus pada tampilan halaman berikutnya.",
+ "JSTracking_EnableCrossDomainLinking": "Mengaktifkan penautan lintas domain",
+ "JSTracking_EnableDoNotTrack": "Mengaktifkan pendeteksian Jangan Lacak sisi klien",
+ "JSTracking_EnableDoNotTrackDesc": "Jadi permintaan pelacakan tidak akan dikirim bila pengunjung tidak ingin terlacak.",
+ "JSTracking_EnableDoNotTrack_AlreadyEnabled": "Catatan: Dukungan Jangan Lacak sisi peladen telah diaktifkan, sehingga opsi ini tidak akan berpengaruh.",
+ "JSTracking_EndNote": "Catatan: Anda dapat membuat kode pelacakan khusus di bagian admin %1$sKode Pelacakan%2$s.",
+ "JSTracking_GroupPageTitlesByDomain": "Tambahkan domain situs ke judul halaman saat sedang melacak",
+ "JSTracking_GroupPageTitlesByDomainDesc1": "Jadi jika seseorang mengunjungi halaman 'Tentang' di blog.%1$s maka akan dicatat sebagai 'blog / Tentang'. Ini adalah cara termudah untuk mendapatkan ikhtisar lalu lintas Anda berdasarkan subdomain.",
+ "JSTracking_MergeAliases": "Dalam laporan \"Tautan Keluar\", sembunyikan klik menuju URL alias yang diketahui",
"JSTracking_MergeAliasesDesc": "Sehingga bila mengeklik tautan terhadap URL Alias (misal %s) tidak akan dihitung sebagai \"Tautan keluar\".",
- "JSTracking_MergeSubdomains": "Lacak seluruh pengunjung subranah dari",
- "JSTracking_MergeSubdomainsDesc": "Sehingga bila satu pengunjung mengunjungi %1$s dan %2$s, mereka akan terhiting sebagai pengunjung.",
- "JSTracking_PageCustomVars": "Melacak variabel kustom untuk setiap tampilan halaman",
- "JSTracking_PageCustomVarsDesc": "Sebagai contoh, dengan nama variabel \"Kategori\" dengan nilai \"Kerta Putih\".",
+ "JSTracking_MergeSubdomains": "Lacak pengunjung di semua subdomain dari",
+ "JSTracking_MergeSubdomainsDesc": "Jadi jika satu pengunjung mengunjungi %1$s dan %2$s, mereka akan dihitung sebagai pengunjung unik.",
+ "JSTracking_PageCustomVars": "Melacak variabel khusus untuk setiap tampilan halaman",
+ "JSTracking_PageCustomVarsDesc": "Misalnya, dengan nama variabel \"Kategori\" dan nilai \"Kertas Putih\".",
"JSTracking_TrackNoScript": "Lacak pengguna dengan JavaScript dinonaktifkan",
- "JSTracking_VisitorCustomVars": "Lacak variabel kustom untuk pengunjung ini",
+ "JSTracking_VisitorCustomVars": "Lacak variabel khusus untuk pengunjung ini",
"JSTracking_VisitorCustomVarsDesc": "Sebagai contoh, dengan nama variabel \"Jenis\" dengan nilai \"Pelanggan\".",
"JavaScriptTracking": "Pelacakan JavaScript",
+ "JsTrackingCodeMissingEmail1": "Beberapa hari yang lalu, Anda menambahkan situs web '%s' ke Matomo Analytics Anda. Kami baru saja memeriksa dan Matomo Anda tampaknya tidak memiliki catatan lalu lintas untuk situs web ini.",
+ "JsTrackingCodeMissingEmail2": "Untuk mulai melacak data dan mendapatkan wawasan tentang pengguna, Anda harus menyiapkan pelacakan di situs web atau aplikasi seluler Anda. Untuk situs web, cukup sematkan kode pelacakan tepat sebelum tag %s.",
+ "JsTrackingCodeMissingEmail3": "Untuk menemukan dan menyesuaikan kode pelacakan Anda, %1$sklik di sini%2$s (atau lihat %3$spanduan Klien Pelacakan JavaScript Klien%4$s).",
"LearnMore": "Pelajari",
+ "LogoNotWriteableInstruction": "Untuk menggunakan logo khusus Anda sendiri, berikan izin menulis ke direktori ini: %1$s Matomo membutuhkan akses tulis untuk logo Anda yang disimpan di dalam berkas %2$s.",
"LogoUpload": "Pilih Logo untuk diunggah",
+ "LogoUploadFailed": "Berkas yang diunggah tidak dapat diproses. Silakan periksa apakah berkas tersebut memiliki format yang valid.",
"LogoUploadHelp": "Harap mengunggah berkas dalam bentuk %1$s dengan tinggi minimal %2$s pixel.",
+ "LtsReleases": "Versi DJP (Dukungan Jangka Panjang) hanya menerima keamanan dan perbaikan kesalahan.",
"MenuDevelopment": "Pengembangan",
"MenuDiagnostic": "Diagnosis",
"MenuGeneralSettings": "Pengaturan Umum",
"MenuMeasurables": "Terukur",
"MenuSystem": "Sistem",
- "OptOutComplete": "Jangan-Lacak selesai. Bila Anda mengunjungi situs ini, Anda tidak akan terekam oleh perangkat Analisis Ramatraya.",
- "OptOutCompleteBis": "Perhatikan bahwa jika Anda menghapus kuki Anda, menghapus kuki Jangan-Lacak, atau jika Anda mengganti komputer atau peramban ramatraya, Anda perlu melakukan prosedur Jangan-Lacak lagi.",
- "OptOutExplanation": "Matomo berdedikasi untuk menyediakan privasi Internet. Agar pengunjung Anda memiliki pilihan untuk tidak terekam oleh Analisis Ramatraya Matomo, Anda dapat menambahkan kode HTML di salah satu halaman situs Anda, misalnya di halaman Kebijakan Privasi.",
- "OptOutForYourVisitors": "Matomo Jangan-Lacakan untuk Pengunjung",
+ "MissingTrackingCodeEmailSubject": "Tidak ada lalu lintas untuk %s yang tercatat di Matomo Analytics, mulailah sekarang",
+ "NTrackingFailures": "%s kegagalan pelacakan",
+ "NoKnownFailures": "Tidak ada kegagalan pelacakan yang diketahui.",
+ "OptOutComplete": "Jangan Lacak selesai. Bila Anda mengunjungi situs ini, Anda tidak akan terekam oleh alat Analisis Web.",
+ "OptOutCompleteBis": "Perhatikan bahwa jika Anda menghapus kuki Anda, menghapus kuki Jangan Lacak, atau jika Anda mengganti komputer atau peramban web, Anda perlu melakukan prosedur Jangan Lacak lagi.",
+ "OptOutDntFound": "Anda tidak dilacak karena peramban Anda melaporkan bahwa Anda tidak menginginkannya. Ini adalah pengaturan peramban Anda sehingga Anda tidak dapat ikut serta sampai Anda menonaktifkan fitur 'Jangan Lacak'.",
+ "OptOutErrorNoCookies": "Fitur Jangan Lacak mengharuskan kuki untuk diaktifkan.",
+ "OptOutErrorNotHttps": "Fitur Jangan Lacak mungkin tidak berfungsi karena situs ini tidak dimuat melalui HTTPS. Muat ulang halaman untuk memeriksa apakah status Jangan Lacak Anda berubah.",
+ "OptOutErrorWindowOpen": "Fitur Jangan Lacak mungkin tidak berfungsi karena sepertinya popup diblokir. Muat ulang halaman untuk memeriksa apakah status Jangan Lacak Anda berubah.",
+ "OptOutExplanation": "Matomo berdedikasi untuk menyediakan privasi di Internet. Demi memberikan pengunjung Anda pilihan untuk keluar dari Matomo Web Analytics, Anda dapat menambahkan kode HTML berikut di salah satu halaman situs web Anda, misalnya di halaman Kebijakan Privasi.",
+ "OptOutExplanationIntro": "Kode ini akan menampilkan iFrame yang berisi tautan bagi pengunjung Anda untuk memilih keluar dari Matomo dengan menyetel kuki Jangan Lacak di peramban web mereka. Lihat di bawah (atau %1$sklik di sini%2$s) untuk melihat konten yang akan ditampilkan oleh iFrame.",
+ "OptOutForYourVisitors": "Matomo memilih untuk tidak melacak pengunjung Anda",
+ "OptingYouOut": "Mengeluarkan Anda, harap tunggu…",
"PersonalPluginSettings": "Pengaturan Plugin Pribadi",
"PiwikIsInstalledAt": "Matomo terpasang di",
+ "PluginSettingChangeNotAllowed": "Anda tidak diperbolehkan untuk mengubah nilai pengaturan \"%1$s\" di plugin \"%2$s\"",
+ "PluginSettingReadNotAllowed": "Anda tidak diperbolehkan untuk membaca nilai pengaturan \"%1$s\" di plugin \"%2$s\"",
"PluginSettings": "Pengaturan Plugin",
- "ReleaseChannel": "Rilis kanal",
+ "PluginSettingsIntro": "Di sini Anda dapat mengubah pengaturan untuk plugin pihak ketiga berikut ini:",
+ "PluginSettingsSaveFailed": "Tidak dapat menyimpan pengaturan plugin",
+ "PluginSettingsSaveSuccess": "Pengaturan plugin diperbarui.",
+ "PluginSettingsValueNotAllowed": "Nilai untuk kolom \"%1$s\" di plugin \"%2$s\" tidak diizinkan",
+ "Problem": "Masalah",
+ "ProtocolNotDetectedCorrectly": "Anda sedang melihat Matomo melalui koneksi SSL yang aman (menggunakan HTTPS), tetapi Matomo hanya dapat mendeteksi koneksi yang tidak aman di server.",
+ "ProtocolNotDetectedCorrectlySolution": "Untuk memastikan Matomo secara aman meminta dan menyajikan konten Anda melalui HTTPS, Anda dapat mengedit berkas %1$s dan mengatur proksi Anda, atau Anda dapat menambahkan baris %2$s di bawah bagian %3$s. %4$sPelajari lebih lanjut%5$s",
+ "ReleaseChannel": "Saluran rilis",
+ "SecurityNotificationAllTokenAuthDeletedBody": "Seseorang telah menghapus semua token autentikasi di akun Anda.",
+ "SecurityNotificationCheckTwoFactor": "Silakan periksa aplikasi atau perangkat autentikasi dua faktor Anda.",
+ "SecurityNotificationEmailSubject": "Notifikasi Keamanan",
+ "SecurityNotificationIfItWasYou": "Jika itu Anda, lanjutkan. Jika Anda tidak mengenali aktivitas ini, harap atur ulang kata sandi Anda.",
+ "SecurityNotificationRecoveryCodesRegeneratedBody": "Seseorang telah membuat kode pemulihan autentikasi dua faktor baru untuk akun Anda.",
+ "SecurityNotificationRecoveryCodesShowedBody": "Seseorang telah melihat kode pemulihan autentikasi dua faktor akun Anda.",
+ "SecurityNotificationSettingsChangedByOtherSuperUserBody": "Pengguna super lain (%1$s) memodifikasi pengaturan sistem. Pengaturan yang terpengaruh: %2$s. Jika Anda mengetahui tentang kegiatan ini, lanjutkan. Jika Anda tidak mengenali aktivitas ini, harap hubungi pengguna super lainnya.",
+ "SecurityNotificationSettingsChangedByUserBody": "Seseorang sudah mengubah pengaturan sistem. Pengaturan yang terpengaruh: %s.",
+ "SecurityNotificationTokenAuthCreatedBody": "Seseorang telah membuat token autentikasi (deskripsi: %s) di akun Anda. Jika bukan Anda, hapus tokennya.",
+ "SecurityNotificationTokenAuthDeletedBody": "Seseorang telah menghapus token autentikasi (deskripsi: %s) di akun Anda.",
+ "SecurityNotificationTwoFactorAuthDisabledBody": "Seseorang sudah menonaktifkan autentikasi dua faktor di akun Anda.",
+ "SecurityNotificationTwoFactorAuthEnabledBody": "Seseorang telah mengaktifkan autentikasi dua faktor di akun Anda.",
+ "SecurityNotificationUserCreatedBody": "Seseorang telah membuat pengguna baru (login: %s) di akun Anda.",
+ "SecurityNotificationUserDeletedBody": "Seseorang telah menghapus pengguna (login: %s) di akun Anda.",
+ "SendPluginUpdateCommunication": "Mengirim surel saat pembaruan plugin telah tersedia",
+ "SendPluginUpdateCommunicationHelp": "Surel akan dikirimkan ke Pengguna Super ketika ada plugin versi baru yang tersedia.",
+ "SettingsSaveSuccess": "Pengaturan diperbarui.",
+ "SinglePageApplicationDescription": "Jika Anda melacak single-page application (SPA) atau aplikasi web progresif (AWP), silakan lihat %1$spanduan ini%2$s.",
"Solution": "Solusi",
- "StableReleases": "Bila Matomo merupakan hal yang penting dalam usaha Anda, kami menyarankan Anda menggunakan rilis stabil terkini. \tBila Anda menggunakan beta terkini dan Anda menemukan sebuah kutu atau sebuah sarah, harap %1$slihat di sini%2$s.",
+ "StableReleases": "Bila Matomo merupakan hal yang penting dalam usaha Anda, kami menyarankan Anda menggunakan rilis stabil terkini. \tBila Anda menggunakan beta terkini dan Anda menemukan sebuah kesalahan atau memiliki sebuah saran, harap %1$slihat di sini%2$s.",
"SystemPluginSettings": "Pengaturan Sistem Plugin",
"TrackAGoal": "Lacak sebuah Tujuan",
"TrackingCode": "Kode Palacakan",
- "TrustedHostConfirm": "Apakah Anda yakin mengubah nama inang terpercaya Matomo?",
- "TrustedHostSettings": "Nama Inang Terpercaya",
- "TwoFactorAuth": "Otentikasi dua faktor",
+ "TrackingCodeIntro": "Matomo menawarkan berbagai cara untuk menyematkan kode pelacakan untuk situs web, aplikasi seluler, dan bahkan untuk perangkat atau aplikasi apa pun.",
+ "TrackingFailureAuthenticationProblem": "Permintaan tidak diautentikasi tetapi autentikasi diperlukan.",
+ "TrackingFailureAuthenticationSolution": "Atur atau perbaiki \"token_auth\" dalam permintaan pelacakan Anda.",
+ "TrackingFailureInvalidSiteProblem": "Situs tersebut tidak ada.",
+ "TrackingFailureInvalidSiteSolution": "Perbarui idSite yang diatur di pelacak.",
+ "TrackingFailures": "Kegagalan pelacakan",
+ "TrackingFailuresEmail1": "Ini hanya untuk memberi tahu Anda bahwa %s jenis kegagalan pelacakan telah terjadi dalam beberapa hari terakhir.",
+ "TrackingFailuresEmail2": "Untuk melihat semua permintaan pelacakan yang gagal %1$sklik di sini%2$s.",
+ "TrackingFailuresEmailSubject": "Kegagalan pelacakan dalam Matomo Analytics Anda",
+ "TrackingFailuresIntroduction": "Halaman ini mencantumkan kegagalan pelacakan yang terjadi selama %s hari terakhir. Harap perhatikan bahwa hanya jenis kegagalan pelacakan yang paling umum yang dicatat dan tidak semuanya.",
+ "TrackingURL": "URL Pelacakan",
+ "TrustedHostConfirm": "Apakah Anda yakin ingin mengubah nama host Matomo yang tepercaya?",
+ "TrustedHostSettings": "Nama Host Matomo Tepercaya",
+ "TwoFactorAuth": "Autentikasi dua faktor",
"UiDemo": "Demo UI",
- "UncheckToOptOut": "Hapus centang kotak ini untuk memilih keluar.",
+ "UncheckToOptOut": "Hapus centang pada kotak ini untuk memilih keluar.",
"UpdateSettings": "Perbarui pengaturan",
"UseCustomLogo": "Gunakan logo kustom",
- "ValidPiwikHostname": "Nama Inang Sahih Matomo",
+ "ValidPiwikHostname": "Nama Host Matomo yang Valid",
+ "ViewAllTrackingFailures": "Lihat semua kegagalan pelacakan",
"WhatIsNew": "Yang baru",
"WhatIsNewNoChanges": "Belum ada yang baru",
"WhatIsNewNoChangesTitle": "Tidak ada perubahan",
"WhatIsNewTitle": "Berikut yang baru dari Matomo",
"WhatIsNewTooltip": "Pelajari apa yang baru di Matomo",
- "WithOptionalRevenue": "dengan pendapatan tersesuaikan",
- "YouAreNotOptedOut": "Anda tidak memilih keluar.",
- "YouAreOptedOut": "Anda sekarang tak-terekam.",
- "YouMayOptOut": "Anda kemungkinan memilih untuk tidak menyimpan nomor identifikasi unik kuki analisis ramatraya yang diberikan ke komputer Anda untuk menghindari pengumpulan dan analisis data yang dikumpulkan di situs ini.",
- "YouMayOptOutBis": "Untuk membuat pilihan itu, silakan klik di bawah ini untuk menerima kuki Jangan-Lacak."
+ "WithOptionalRevenue": "dengan pendapatan opsional",
+ "YouAreNotOptedOut": "Anda tidak memilih untuk keluar.",
+ "YouAreOptedOut": "Anda sekarang tak terekam.",
+ "YouMayOptOut": "Anda dapat memilih untuk tidak memiliki nomor identifikasi kuki analitik web unik yang ditetapkan ke komputer Anda untuk menghindari agregasi dan analisis data yang dikumpulkan di situs web ini.",
+ "YouMayOptOut2": "Anda dapat memilih untuk mencegah situs web ini untuk mengumpulkan dan menganalisis tindakan yang Anda ambil di sini.",
+ "YouMayOptOut3": "Melakukannya akan melindungi privasi Anda, tetapi juga akan mencegah pemilik untuk belajar dari tindakan Anda dan menciptakan pengalaman yang lebih baik untuk Anda dan pengguna lain.",
+ "YouMayOptOutBis": "Untuk membuat pilihan itu, silakan klik di bawah ini untuk menerima kuki Jangan Lacak."
}
}
diff --git a/plugins/CoreAdminHome/lang/pt-br.json b/plugins/CoreAdminHome/lang/pt-br.json
index 271520f311..f29cd04744 100644
--- a/plugins/CoreAdminHome/lang/pt-br.json
+++ b/plugins/CoreAdminHome/lang/pt-br.json
@@ -125,6 +125,7 @@
"SendPluginUpdateCommunication": "Envie um e-mail quando uma atualização de plugin estiver disponível",
"SendPluginUpdateCommunicationHelp": "Um e-mail será enviado para os Super Usuários quando houver uma nova versão disponível para um plugin.",
"SettingsSaveSuccess": "Configurações atualizadas.",
+ "SinglePageApplicationDescription": "Se você estiver acompanhando um aplicativo de página única (SPA) ou aplicativo da Web progressivo (PWA), consulte %1$seste guia%2$s.",
"Solution": "Solução",
"StableReleases": "Se o Matomo é uma parte crítica do seu negócio, recomendamos que você use a última versão estável. Se você usar a versão beta mais recente e encontrar uma falha ou tiver alguma sugestão, por favor, %1$sveja aqui%2$s.",
"SystemPluginSettings": "Configurações de Plugin do Sistema",
diff --git a/plugins/CoreAdminHome/lang/tr.json b/plugins/CoreAdminHome/lang/tr.json
index ed2f63f6f7..df9e9ec933 100644
--- a/plugins/CoreAdminHome/lang/tr.json
+++ b/plugins/CoreAdminHome/lang/tr.json
@@ -125,6 +125,7 @@
"SendPluginUpdateCommunication": "Uygulama eki güncellemeleri e-posta ile bildirilsin",
"SendPluginUpdateCommunicationHelp": "Bu seçenek etkinleştirildiğinde, yayınlanan uygulama eki güncellemeleri e-posta ile süper kullanıcılara bildirilir.",
"SettingsSaveSuccess": "Ayarlar güncellendi.",
+ "SinglePageApplicationDescription": "Tek sayfalık bir uygulamayı (SPA) veya aşamalı web uygulamasını (PWA) izliyorsanız, lütfen %1$sbu rehbere%2$s bakın.",
"Solution": "Çözüm",
"StableReleases": "Matomo işinizin önemli bir parçasıysa, son kararlı sürümü kullanmanız önerilir. Son beta sürümünü kullanıyorsanız ve bir hata ya da öneri bildirmek isterseniz, %1$sburaya bakabilirsiniz%2$s.",
"SystemPluginSettings": "Sistem uygulama eki ayarları",
diff --git a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
index e10c6076ba..f513f1c008 100644
--- a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
+++ b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.js
@@ -154,7 +154,7 @@ var external_CoreHome_ = __webpack_require__("19dc");
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue?vue&type=template&id=2e0370c8
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue?vue&type=template&id=ed65b600
var _hoisted_1 = {
class: "form-group row"
@@ -238,13 +238,13 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
})
}, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.enableBrowserTriggerArchivingValue]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "form-description",
- innerHTML: _ctx.archivingTriggerDesc,
+ innerHTML: _ctx.$sanitize(_ctx.archivingTriggerDesc),
style: {
"margin-left": "4px"
}
}, null, 8, _hoisted_6)])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "form-help",
- innerHTML: _ctx.archivingInlineHelp
+ innerHTML: _ctx.$sanitize(_ctx.archivingInlineHelp)
}, null, 8, _hoisted_8)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", _hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ReportsContainingTodayWillBeProcessedAtMostEvery')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "text",
"onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
@@ -262,7 +262,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
_: 1
}, 8, ["content-title"]);
}
-// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue?vue&type=template&id=2e0370c8
+// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue?vue&type=template&id=ed65b600
// EXTERNAL MODULE: external "CorePluginsAdmin"
var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
@@ -385,61 +385,61 @@ ArchivingSettingsvue_type_script_lang_ts.render = render
},
directiveName: 'matomoArchivingSettings'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue?vue&type=template&id=7915a926
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue?vue&type=template&id=1802cbc6
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_1 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_1 = {
id: "logoSettings"
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_2 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_2 = {
id: "logoUploadForm",
ref: "logoUploadForm",
method: "post",
enctype: "multipart/form-data",
action: "index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo"
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_3 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_3 = {
key: 0
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_4 = ["value"];
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_4 = ["value"];
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "hidden",
name: "force_api_session",
value: "1"
}, null, -1);
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_6 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_6 = {
key: 0
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_7 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_7 = {
key: 0,
class: "alert alert-warning uploaderror"
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_8 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_8 = {
class: "row"
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_9 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_9 = {
class: "col s12"
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_10 = ["src"];
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_11 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_10 = ["src"];
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_11 = {
class: "row"
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_12 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_12 = {
class: "col s12"
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_13 = ["src"];
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_14 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_13 = ["src"];
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_14 = {
key: 1
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_15 = ["innerHTML"];
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_16 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_15 = ["innerHTML"];
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_16 = {
key: 1
};
-var BrandingSettingsvue_type_template_id_7915a926_hoisted_17 = {
+var BrandingSettingsvue_type_template_id_1802cbc6_hoisted_17 = {
class: "alert alert-warning"
};
-function BrandingSettingsvue_type_template_id_7915a926_render(_ctx, _cache, $props, $setup, $data, $options) {
+function BrandingSettingsvue_type_template_id_1802cbc6_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
@@ -462,15 +462,15 @@ function BrandingSettingsvue_type_template_id_7915a926_render(_ctx, _cache, $pro
}),
title: _ctx.translate('CoreAdminHome_UseCustomLogo'),
"inline-help": _ctx.help
- }, null, 8, ["model-value", "title", "inline-help"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("form", BrandingSettingsvue_type_template_id_7915a926_hoisted_2, [_ctx.fileUploadEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 8, ["model-value", "title", "inline-help"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("form", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_2, [_ctx.fileUploadEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "hidden",
name: "token_auth",
value: _ctx.tokenAuth
- }, null, 8, BrandingSettingsvue_type_template_id_7915a926_hoisted_4), BrandingSettingsvue_type_template_id_7915a926_hoisted_5, _ctx.logosWriteable ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Transition"], {
+ }, null, 8, BrandingSettingsvue_type_template_id_1802cbc6_hoisted_4), BrandingSettingsvue_type_template_id_1802cbc6_hoisted_5, _ctx.logosWriteable ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Transition"], {
name: "fade-out"
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [_ctx.showUploadError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_LogoUploadFailed')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)];
+ return [_ctx.showUploadError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_LogoUploadFailed')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)];
}),
_: 1
}), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
@@ -482,14 +482,14 @@ function BrandingSettingsvue_type_template_id_7915a926_render(_ctx, _cache, $pro
}),
title: _ctx.translate('CoreAdminHome_LogoUpload'),
"inline-help": _ctx.translate('CoreAdminHome_LogoUploadHelp', 'JPG / PNG / GIF', '110')
- }, null, 8, ["model-value", "title", "inline-help"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ }, null, 8, ["model-value", "title", "inline-help"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
src: _ctx.pathUserLogoWithBuster,
id: "currentLogo",
style: {
"max-height": "150px"
},
ref: "currentLogo"
- }, null, 8, BrandingSettingsvue_type_template_id_7915a926_hoisted_10)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, BrandingSettingsvue_type_template_id_1802cbc6_hoisted_10)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "file",
name: "customFavicon",
"model-value": _ctx.customFavicon,
@@ -498,16 +498,16 @@ function BrandingSettingsvue_type_template_id_7915a926_render(_ctx, _cache, $pro
}),
title: _ctx.translate('CoreAdminHome_FaviconUpload'),
"inline-help": _ctx.translate('CoreAdminHome_LogoUploadHelp', 'JPG / PNG / GIF', '16')
- }, null, 8, ["model-value", "title", "inline-help"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ }, null, 8, ["model-value", "title", "inline-help"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
src: _ctx.pathUserFaviconWithBuster,
id: "currentFavicon",
width: "16",
height: "16",
ref: "currentFavicon"
- }, null, 8, BrandingSettingsvue_type_template_id_7915a926_hoisted_13)])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.logosWriteable ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ }, null, 8, BrandingSettingsvue_type_template_id_1802cbc6_hoisted_13)])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.logosWriteable ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "alert alert-warning",
- innerHTML: _ctx.logosNotWriteableWarning
- }, null, 8, BrandingSettingsvue_type_template_id_7915a926_hoisted_15)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.fileUploadEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_7915a926_hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_FileUploadDisabled', "file_uploads=1")), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.enabled]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ innerHTML: _ctx.$sanitize(_ctx.logosNotWriteableWarning)
+ }, null, 8, BrandingSettingsvue_type_template_id_1802cbc6_hoisted_15)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.fileUploadEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", BrandingSettingsvue_type_template_id_1802cbc6_hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_FileUploadDisabled', "file_uploads=1")), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.enabled]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
onConfirm: _cache[3] || (_cache[3] = function ($event) {
return _ctx.save();
}),
@@ -517,7 +517,7 @@ function BrandingSettingsvue_type_template_id_7915a926_render(_ctx, _cache, $pro
_: 1
}, 8, ["content-title"]);
}
-// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue?vue&type=template&id=7915a926
+// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue?vue&type=template&id=1802cbc6
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue?vue&type=script&lang=ts
@@ -711,7 +711,7 @@ var _window = window,
-BrandingSettingsvue_type_script_lang_ts.render = BrandingSettingsvue_type_template_id_7915a926_render
+BrandingSettingsvue_type_script_lang_ts.render = BrandingSettingsvue_type_template_id_1802cbc6_render
/* harmony default export */ var BrandingSettings = (BrandingSettingsvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.adapter.ts
@@ -1018,58 +1018,58 @@ SmtpSettingsvue_type_script_lang_ts.render = SmtpSettingsvue_type_template_id_a9
},
directiveName: 'matomoSmtpSettings'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=af452db6
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=79b5d52d
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_1 = {
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_1 = {
id: "js-code-options"
};
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_4 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_5 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_4 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_5 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_8 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_8 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_11 = ["innerHTML"];
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_11 = ["innerHTML"];
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",
target: "_blank",
rel: "noopener"
}, "WordPress", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",
target: "_blank",
rel: "noopener"
}, "Squarespace", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",
target: "_blank",
rel: "noopener"
}, "Wix", -1);
-var JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
+var JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" | ");
var _hoisted_20 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "https://matomo.org/faq/how-to-install/faq_19424/",
@@ -1195,7 +1195,7 @@ var _hoisted_58 = {
var _hoisted_59 = {
class: "col s12"
};
-function JsTrackingCodeGeneratorvue_type_template_id_af452db6_render(_ctx, _cache, $props, $setup, $data, $options) {
+function JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
@@ -1207,15 +1207,15 @@ function JsTrackingCodeGeneratorvue_type_template_id_af452db6_render(_ctx, _cach
"content-title": _ctx.translate('CoreAdminHome_JavaScriptTracking')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro1')) + " ", 1), JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_2, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro2')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.jsTrackingIntro3a
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: ' ' + _ctx.jsTrackingIntro3b
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_5), JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_6, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.jsTrackingIntro4a
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_8), JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_9, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.jsTrackingIntro5
- }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_11), JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_12, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_InstallationGuides')) + " : ", 1), JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_14, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_15, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_16, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_17, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_18, JsTrackingCodeGeneratorvue_type_template_id_af452db6_hoisted_19, _hoisted_20, _hoisted_21, _hoisted_22, _hoisted_23, _hoisted_24, _hoisted_25, _hoisted_26]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro1')) + " ", 1), JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_2, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_JSTrackingIntro2')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro3a)
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(' ' + _ctx.jsTrackingIntro3b)
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_5), JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_6, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro4a)
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_8), JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_9, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.jsTrackingIntro5)
+ }, null, 8, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_11), JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_12, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_InstallationGuides')) + " : ", 1), JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_14, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_15, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_16, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_17, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_18, JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_hoisted_19, _hoisted_20, _hoisted_21, _hoisted_22, _hoisted_23, _hoisted_24, _hoisted_25, _hoisted_26]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "site",
name: "js-tracker-website",
class: "jsTrackingCodeWebsite",
@@ -1235,9 +1235,9 @@ function JsTrackingCodeGeneratorvue_type_template_id_af452db6_render(_ctx, _cach
textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.trackingCode),
ref: "trackingCode"
}, null, 8, _hoisted_30), [[_directive_select_on_focus, {}]])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_32, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.mergeSubdomainsDesc
+ innerHTML: _ctx.$sanitize(_ctx.mergeSubdomainsDesc)
}, null, 8, _hoisted_33), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.learnMoreText
+ innerHTML: _ctx.$sanitize(_ctx.learnMoreText)
}, null, 8, _hoisted_34)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "javascript-tracking-all-subdomains",
@@ -1374,7 +1374,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_af452db6_render(_ctx, _cach
}, null, 8, ["model-value", "disabled", "title", "inline-help"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
id: "jsTrackCampaignParamsInlineHelp",
class: "inline-help-node",
- innerHTML: _ctx.jsTrackCampaignParamsInlineHelp
+ innerHTML: _ctx.$sanitize(_ctx.jsTrackCampaignParamsInlineHelp)
}, null, 8, _hoisted_54), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "checkbox",
name: "custom-campaign-query-params-check",
@@ -1414,7 +1414,7 @@ function JsTrackingCodeGeneratorvue_type_template_id_af452db6_render(_ctx, _cach
_: 1
}, 8, ["content-title"]);
}
-// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=af452db6
+// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=template&id=79b5d52d
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue?vue&type=script&lang=ts
@@ -1694,7 +1694,7 @@ var piwikPath = window.location.pathname.substring(0, window.location.pathname.l
-JsTrackingCodeGeneratorvue_type_script_lang_ts.render = JsTrackingCodeGeneratorvue_type_template_id_af452db6_render
+JsTrackingCodeGeneratorvue_type_script_lang_ts.render = JsTrackingCodeGeneratorvue_type_template_id_79b5d52d_render
/* harmony default export */ var JsTrackingCodeGenerator = (JsTrackingCodeGeneratorvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.adapter.ts
@@ -1721,38 +1721,38 @@ JsTrackingCodeGeneratorvue_type_script_lang_ts.render = JsTrackingCodeGeneratorv
},
directiveName: 'matomoJsTrackingCodeGenerator'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue?vue&type=template&id=5c57c814
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue?vue&type=template&id=700a4ae8
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_1 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_1 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
name: "image-tracking-link"
}, null, -1);
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_2 = {
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_2 = {
id: "image-tracking-code-options"
};
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_3 = ["innerHTML"];
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_4 = ["innerHTML"];
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_5 = {
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_3 = ["innerHTML"];
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_4 = ["innerHTML"];
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_5 = {
id: "image-tracking-goal-sub"
};
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_6 = {
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_6 = {
class: "row"
};
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_7 = {
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_7 = {
class: "col s12 m6"
};
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_8 = {
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_8 = {
class: "col s12 m6"
};
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_9 = {
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_9 = {
id: "image-link-output-section"
};
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_10 = {
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_10 = {
id: "image-tracking-text"
};
-var ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_11 = ["textContent"];
-function ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_render(_ctx, _cache, $props, $setup, $data, $options) {
+var ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_11 = ["textContent"];
+function ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
@@ -1764,11 +1764,11 @@ function ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_render(_ctx, _c
anchor: "imageTracking"
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_1, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
- innerHTML: _ctx.imageTrackingIntro
- }, null, 8, ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
- innerHTML: _ctx.imageTrackingIntro3
- }, null, 8, ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ return [ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_1, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
+ innerHTML: _ctx.$sanitize(_ctx.imageTrackingIntro)
+ }, null, 8, ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
+ innerHTML: _ctx.$sanitize(_ctx.imageTrackingIntro3)
+ }, null, 8, ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "site",
name: "image-tracker-website",
modelValue: _ctx.site,
@@ -1799,7 +1799,7 @@ function ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_render(_ctx, _c
}),
disabled: _ctx.isLoading,
title: _ctx.translate('CoreAdminHome_TrackAGoal')
- }, null, 8, ["model-value", "disabled", "title"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "disabled", "title"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "select",
name: "image-tracker-goal",
options: _ctx.siteGoals,
@@ -1810,7 +1810,7 @@ function ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_render(_ctx, _c
_ctx.updateTrackingCode();
})
- }, null, 8, ["options", "disabled", "model-value"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["options", "disabled", "model-value"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "image-revenue",
"model-value": _ctx.revenue,
@@ -1822,15 +1822,15 @@ function ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_render(_ctx, _c
disabled: _ctx.isLoading,
"full-width": true,
title: "".concat(_ctx.translate('CoreAdminHome_WithOptionalRevenue'), " ").concat(_ctx.currentSiteCurrency)
- }, null, 8, ["model-value", "disabled", "title"])])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.trackGoal]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_ImageTrackingLink')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", {
+ }, null, 8, ["model-value", "disabled", "title"])])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.trackGoal]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CoreAdminHome_ImageTrackingLink')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", {
textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.trackingCode),
ref: "trackingCode"
- }, null, 8, ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_hoisted_11), [[_directive_select_on_focus, {}]])])])])];
+ }, null, 8, ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_hoisted_11), [[_directive_select_on_focus, {}]])])])])];
}),
_: 1
}, 8, ["content-title"]);
}
-// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue?vue&type=template&id=5c57c814
+// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue?vue&type=template&id=700a4ae8
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue?vue&type=script&lang=ts
function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
@@ -2033,7 +2033,7 @@ var ImageTrackingCodeGeneratorvue_type_script_lang_ts_piwikPath = window.locatio
-ImageTrackingCodeGeneratorvue_type_script_lang_ts.render = ImageTrackingCodeGeneratorvue_type_template_id_5c57c814_render
+ImageTrackingCodeGeneratorvue_type_script_lang_ts.render = ImageTrackingCodeGeneratorvue_type_template_id_700a4ae8_render
/* harmony default export */ var ImageTrackingCodeGenerator = (ImageTrackingCodeGeneratorvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.adapter.ts
diff --git a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
index a5949ce039..4f51c76e89 100644
--- a/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
+++ b/plugins/CoreAdminHome/vue/dist/CoreAdminHome.umd.min.js
@@ -1,34 +1,34 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CoreAdminHome"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CoreAdminHome"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CoreAdminHome/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ArchivingSettings",(function(){return E})),n.d(t,"BrandingSettings",(function(){return z})),n.d(t,"SmtpSettings",(function(){return te})),n.d(t,"JsTrackingCodeGenerator",(function(){return bt})),n.d(t,"ImageTrackingCodeGenerator",(function(){return Gt})),n.d(t,"TrackingFailures",(function(){return bn})),"undefined"!==typeof window){var o=window.document.currentScript,a=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var r=n("19dc"),i=n("8bbf"),l={class:"form-group row"},c={class:"col s12"},s={class:"col s12 m6"},d={class:"form-description",style:{"margin-left":"4px"}},u={for:"enableBrowserTriggerArchiving2"},m=["innerHTML"],g={class:"col s12 m6"},p=["innerHTML"],b={class:"form-group row"},h={class:"col s12"},j={class:"input-field col s12 m6"},v=["disabled"],f={class:"form-description"},O={class:"col s12 m6"},C={key:0,class:"form-help"},k={key:0},V=Object(i["createElementVNode"])("br",null,null,-1),S=Object(i["createElementVNode"])("br",null,null,-1),N=Object(i["createElementVNode"])("br",null,null,-1);function y(e,t,n,o,a,r){var y=Object(i["resolveComponent"])("SaveButton"),T=Object(i["resolveComponent"])("ContentBlock");return Object(i["openBlock"])(),Object(i["createBlock"])(T,{"content-title":e.translate("CoreAdminHome_ArchivingSettings"),anchor:"archivingSettings",class:"matomo-archiving-settings"},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("div",l,[Object(i["createElementVNode"])("h3",c,Object(i["toDisplayString"])(e.translate("General_AllowPiwikArchivingToTriggerBrowser")),1),Object(i["createElementVNode"])("div",s,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving1",name:"enableBrowserTriggerArchiving",value:"1","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_Yes")),1),Object(i["createElementVNode"])("span",d,Object(i["toDisplayString"])(e.translate("General_Default")),1)])]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",u,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving2",name:"enableBrowserTriggerArchiving",value:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_No")),1),Object(i["createElementVNode"])("span",{class:"form-description",innerHTML:e.archivingTriggerDesc,style:{"margin-left":"4px"}},null,8,m)])])]),Object(i["createElementVNode"])("div",g,[Object(i["createElementVNode"])("div",{class:"form-help",innerHTML:e.archivingInlineHelp},null,8,p)])]),Object(i["createElementVNode"])("div",b,[Object(i["createElementVNode"])("h3",h,Object(i["toDisplayString"])(e.translate("General_ReportsContainingTodayWillBeProcessedAtMostEvery")),1),Object(i["createElementVNode"])("div",j,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.todayArchiveTimeToLiveValue=t}),id:"todayArchiveTimeToLive",disabled:!e.isGeneralSettingsAdminEnabled},null,8,v),[[i["vModelText"],e.todayArchiveTimeToLiveValue]]),Object(i["createElementVNode"])("span",f,Object(i["toDisplayString"])(e.translate("General_RearchiveTimeIntervalOnlyForTodayReports")),1)]),Object(i["createElementVNode"])("div",O,[e.isGeneralSettingsAdminEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",C,[e.showWarningCron?(Object(i["openBlock"])(),Object(i["createElementBlock"])("strong",k,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_NewReportsWillBeProcessedByCron")),1),V,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_ReportsWillBeProcessedAtMostEveryHour"))+" "+Object(i["toDisplayString"])(e.translate("General_IfArchivingIsFastYouCanSetupCronRunMoreOften")),1),S])):Object(i["createCommentVNode"])("",!0),Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_SmallTrafficYouCanLeaveDefault",e.todayArchiveTimeToLiveDefault))+" ",1),N,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_MediumToHighTrafficItIsRecommendedTo",1800,3600)),1)])):Object(i["createCommentVNode"])("",!0)])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(y,{saving:e.isLoading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])])])]})),_:1},8,["content-title"])}var T=n("a5a2"),A=Object(i["defineComponent"])({props:{enableBrowserTriggerArchiving:Boolean,showSegmentArchiveTriggerInfo:Boolean,isGeneralSettingsAdminEnabled:Boolean,showWarningCron:Boolean,todayArchiveTimeToLive:Number,todayArchiveTimeToLiveDefault:Number},components:{ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},data:function(){return{isLoading:!1,enableBrowserTriggerArchivingValue:this.enableBrowserTriggerArchiving?1:0,todayArchiveTimeToLiveValue:this.todayArchiveTimeToLive}},watch:{enableBrowserTriggerArchiving:function(e){this.enableBrowserTriggerArchivingValue=e?1:0},todayArchiveTimeToLive:function(e){this.todayArchiveTimeToLiveValue=e}},computed:{archivingTriggerDesc:function(){var e="";return e+=Object(r["translate"])("General_ArchivingTriggerDescription",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),this.showSegmentArchiveTriggerInfo&&(e+=Object(r["translate"])("General_ArchivingTriggerSegment")),e},archivingInlineHelp:function(){var e=Object(r["translate"])("General_ArchivingInlineHelp");return e+="<br/>",e+=Object(r["translate"])("General_SeeTheOfficialDocumentationForMoreInformation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),e}},methods:{save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setArchiveSettings"},{enableBrowserTriggerArchiving:this.enableBrowserTriggerArchivingValue,todayArchiveTimeToLive:this.todayArchiveTimeToLiveValue}).then((function(){e.isLoading=!1;var t=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(t)})).finally((function(){e.isLoading=!1}))}}});A.render=y;var E=A,w=(Object(r["createAngularJsAdapter"])({component:E,scope:{enableBrowserTriggerArchiving:{angularJsBind:"<"},showSegmentArchiveTriggerInfo:{angularJsBind:"<"},isGeneralSettingsAdminEnabled:{angularJsBind:"<"},showWarningCron:{angularJsBind:"<"},todayArchiveTimeToLive:{angularJsBind:"<"},todayArchiveTimeToLiveDefault:{angularJsBind:"<"}},directiveName:"matomoArchivingSettings"}),{id:"logoSettings"}),_={id:"logoUploadForm",ref:"logoUploadForm",method:"post",enctype:"multipart/form-data",action:"index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo"},H={key:0},D=["value"],B=Object(i["createElementVNode"])("input",{type:"hidden",name:"force_api_session",value:"1"},null,-1),L={key:0},U={key:0,class:"alert alert-warning uploaderror"},x={class:"row"},F={class:"col s12"},I=["src"],G={class:"row"},P={class:"col s12"},M=["src"],J={key:1},q=["innerHTML"],R={key:1},W={class:"alert alert-warning"};
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CoreAdminHome"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CoreAdminHome"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var a=t[o]={i:o,l:!1,exports:{}};return e[o].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(o,a,function(t){return e[t]}.bind(null,a));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CoreAdminHome/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ArchivingSettings",(function(){return E})),n.d(t,"BrandingSettings",(function(){return Y})),n.d(t,"SmtpSettings",(function(){return te})),n.d(t,"JsTrackingCodeGenerator",(function(){return bt})),n.d(t,"ImageTrackingCodeGenerator",(function(){return Gt})),n.d(t,"TrackingFailures",(function(){return bn})),"undefined"!==typeof window){var o=window.document.currentScript,a=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var r=n("19dc"),i=n("8bbf"),l={class:"form-group row"},c={class:"col s12"},s={class:"col s12 m6"},d={class:"form-description",style:{"margin-left":"4px"}},u={for:"enableBrowserTriggerArchiving2"},m=["innerHTML"],g={class:"col s12 m6"},p=["innerHTML"],b={class:"form-group row"},h={class:"col s12"},j={class:"input-field col s12 m6"},v=["disabled"],f={class:"form-description"},O={class:"col s12 m6"},C={key:0,class:"form-help"},k={key:0},V=Object(i["createElementVNode"])("br",null,null,-1),S=Object(i["createElementVNode"])("br",null,null,-1),N=Object(i["createElementVNode"])("br",null,null,-1);function y(e,t,n,o,a,r){var y=Object(i["resolveComponent"])("SaveButton"),T=Object(i["resolveComponent"])("ContentBlock");return Object(i["openBlock"])(),Object(i["createBlock"])(T,{"content-title":e.translate("CoreAdminHome_ArchivingSettings"),anchor:"archivingSettings",class:"matomo-archiving-settings"},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("div",l,[Object(i["createElementVNode"])("h3",c,Object(i["toDisplayString"])(e.translate("General_AllowPiwikArchivingToTriggerBrowser")),1),Object(i["createElementVNode"])("div",s,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving1",name:"enableBrowserTriggerArchiving",value:"1","onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_Yes")),1),Object(i["createElementVNode"])("span",d,Object(i["toDisplayString"])(e.translate("General_Default")),1)])]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("label",u,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"radio",id:"enableBrowserTriggerArchiving2",name:"enableBrowserTriggerArchiving",value:"0","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.enableBrowserTriggerArchivingValue=t})},null,512),[[i["vModelRadio"],e.enableBrowserTriggerArchivingValue]]),Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.translate("General_No")),1),Object(i["createElementVNode"])("span",{class:"form-description",innerHTML:e.$sanitize(e.archivingTriggerDesc),style:{"margin-left":"4px"}},null,8,m)])])]),Object(i["createElementVNode"])("div",g,[Object(i["createElementVNode"])("div",{class:"form-help",innerHTML:e.$sanitize(e.archivingInlineHelp)},null,8,p)])]),Object(i["createElementVNode"])("div",b,[Object(i["createElementVNode"])("h3",h,Object(i["toDisplayString"])(e.translate("General_ReportsContainingTodayWillBeProcessedAtMostEvery")),1),Object(i["createElementVNode"])("div",j,[Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.todayArchiveTimeToLiveValue=t}),id:"todayArchiveTimeToLive",disabled:!e.isGeneralSettingsAdminEnabled},null,8,v),[[i["vModelText"],e.todayArchiveTimeToLiveValue]]),Object(i["createElementVNode"])("span",f,Object(i["toDisplayString"])(e.translate("General_RearchiveTimeIntervalOnlyForTodayReports")),1)]),Object(i["createElementVNode"])("div",O,[e.isGeneralSettingsAdminEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",C,[e.showWarningCron?(Object(i["openBlock"])(),Object(i["createElementBlock"])("strong",k,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("General_NewReportsWillBeProcessedByCron")),1),V,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_ReportsWillBeProcessedAtMostEveryHour"))+" "+Object(i["toDisplayString"])(e.translate("General_IfArchivingIsFastYouCanSetupCronRunMoreOften")),1),S])):Object(i["createCommentVNode"])("",!0),Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_SmallTrafficYouCanLeaveDefault",e.todayArchiveTimeToLiveDefault))+" ",1),N,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_MediumToHighTrafficItIsRecommendedTo",1800,3600)),1)])):Object(i["createCommentVNode"])("",!0)])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(y,{saving:e.isLoading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])])])]})),_:1},8,["content-title"])}var T=n("a5a2"),A=Object(i["defineComponent"])({props:{enableBrowserTriggerArchiving:Boolean,showSegmentArchiveTriggerInfo:Boolean,isGeneralSettingsAdminEnabled:Boolean,showWarningCron:Boolean,todayArchiveTimeToLive:Number,todayArchiveTimeToLiveDefault:Number},components:{ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},data:function(){return{isLoading:!1,enableBrowserTriggerArchivingValue:this.enableBrowserTriggerArchiving?1:0,todayArchiveTimeToLiveValue:this.todayArchiveTimeToLive}},watch:{enableBrowserTriggerArchiving:function(e){this.enableBrowserTriggerArchivingValue=e?1:0},todayArchiveTimeToLive:function(e){this.todayArchiveTimeToLiveValue=e}},computed:{archivingTriggerDesc:function(){var e="";return e+=Object(r["translate"])("General_ArchivingTriggerDescription",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),this.showSegmentArchiveTriggerInfo&&(e+=Object(r["translate"])("General_ArchivingTriggerSegment")),e},archivingInlineHelp:function(){var e=Object(r["translate"])("General_ArchivingInlineHelp");return e+="<br/>",e+=Object(r["translate"])("General_SeeTheOfficialDocumentationForMoreInformation",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/docs/setup-auto-archiving/">',"</a>"),e}},methods:{save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setArchiveSettings"},{enableBrowserTriggerArchiving:this.enableBrowserTriggerArchivingValue,todayArchiveTimeToLive:this.todayArchiveTimeToLiveValue}).then((function(){e.isLoading=!1;var t=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(t)})).finally((function(){e.isLoading=!1}))}}});A.render=y;var E=A,w=(Object(r["createAngularJsAdapter"])({component:E,scope:{enableBrowserTriggerArchiving:{angularJsBind:"<"},showSegmentArchiveTriggerInfo:{angularJsBind:"<"},isGeneralSettingsAdminEnabled:{angularJsBind:"<"},showWarningCron:{angularJsBind:"<"},todayArchiveTimeToLive:{angularJsBind:"<"},todayArchiveTimeToLiveDefault:{angularJsBind:"<"}},directiveName:"matomoArchivingSettings"}),{id:"logoSettings"}),_={id:"logoUploadForm",ref:"logoUploadForm",method:"post",enctype:"multipart/form-data",action:"index.php?module=CoreAdminHome&format=json&action=uploadCustomLogo"},H={key:0},D=["value"],B=Object(i["createElementVNode"])("input",{type:"hidden",name:"force_api_session",value:"1"},null,-1),L={key:0},U={key:0,class:"alert alert-warning uploaderror"},x={class:"row"},F={class:"col s12"},I=["src"],G={class:"row"},P={class:"col s12"},M=["src"],J={key:1},q=["innerHTML"],R={key:1},W={class:"alert alert-warning"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function K(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_BrandingSettings"),anchor:"brandingSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_CustomLogoHelpText")),1),Object(i["createVNode"])(l,{name:"useCustomLogo",uicontrol:"checkbox","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onUseCustomLogoChange(t)}),title:e.translate("CoreAdminHome_UseCustomLogo"),"inline-help":e.help},null,8,["model-value","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",w,[Object(i["createElementVNode"])("form",_,[e.fileUploadEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",H,[Object(i["createElementVNode"])("input",{type:"hidden",name:"token_auth",value:e.tokenAuth},null,8,D),B,e.logosWriteable?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createVNode"])(i["Transition"],{name:"fade-out"},{default:Object(i["withCtx"])((function(){return[e.showUploadError?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",U,Object(i["toDisplayString"])(e.translate("CoreAdminHome_LogoUploadFailed")),1)):Object(i["createCommentVNode"])("",!0)]})),_:1}),Object(i["createVNode"])(l,{uicontrol:"file",name:"customLogo","model-value":e.customLogo,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onCustomLogoChange(t)}),title:e.translate("CoreAdminHome_LogoUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","110")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",x,[Object(i["createElementVNode"])("div",F,[Object(i["createElementVNode"])("img",{src:e.pathUserLogoWithBuster,id:"currentLogo",style:{"max-height":"150px"},ref:"currentLogo"},null,8,I)])]),Object(i["createVNode"])(l,{uicontrol:"file",name:"customFavicon","model-value":e.customFavicon,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onFaviconChange(t)}),title:e.translate("CoreAdminHome_FaviconUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","16")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",G,[Object(i["createElementVNode"])("div",P,[Object(i["createElementVNode"])("img",{src:e.pathUserFaviconWithBuster,id:"currentFavicon",width:"16",height:"16",ref:"currentFavicon"},null,8,M)])])])):Object(i["createCommentVNode"])("",!0),e.logosWriteable?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",J,[Object(i["createElementVNode"])("div",{class:"alert alert-warning",innerHTML:e.logosNotWriteableWarning},null,8,q)]))])):Object(i["createCommentVNode"])("",!0),e.fileUploadEnabled?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",R,[Object(i["createElementVNode"])("div",W,Object(i["toDisplayString"])(e.translate("CoreAdminHome_FileUploadDisabled","file_uploads=1")),1)]))],512)],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[3]||(t[3]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var Q=window,$=Q.$,Y=Object(i["defineComponent"])({props:{fileUploadEnabled:{type:Boolean,required:!0},logosWriteable:{type:Boolean,required:!0},useCustomLogo:{type:Boolean,required:!0},pathUserLogoDirectory:{type:String,required:!0},pathUserLogo:{type:String,required:!0},pathUserLogoSmall:{type:String,required:!0},pathUserLogoSvg:{type:String,required:!0},hasUserLogo:{type:Boolean,required:!0},pathUserFavicon:{type:String,required:!0},hasUserFavicon:{type:Boolean,required:!0},isPluginsAdminEnabled:{type:Boolean,required:!0}},components:{Field:T["Field"],ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},data:function(){return{isLoading:!1,enabled:this.useCustomLogo,customLogo:this.pathUserLogo,customFavicon:this.pathUserFavicon,showUploadError:!1,currentLogoSrcExists:this.hasUserLogo,currentFaviconSrcExists:this.hasUserFavicon,currentLogoCacheBuster:(new Date).getTime(),currentFaviconCacheBuster:(new Date).getTime()}},computed:{tokenAuth:function(){return r["Matomo"].token_auth},logosNotWriteableWarning:function(){return Object(r["translate"])("CoreAdminHome_LogoNotWriteableInstruction","<code>".concat(this.pathUserLogoDirectory,"</code><br/>"),"".concat(this.pathUserLogo,", ").concat(this.pathUserLogoSmall,", ").concat(this.pathUserLogoSvg))},help:function(){if(this.isPluginsAdminEnabled){var e='"'.concat(Object(r["translate"])("General_GiveUsYourFeedback"),'"'),t='<a href="?module=CorePluginsAdmin&action=plugins" rel="noreferrer noopener" target="_blank">';return Object(r["translate"])("CoreAdminHome_CustomLogoFeedbackInfo",e,t,"</a>")}},pathUserLogoWithBuster:function(){return this.currentLogoSrcExists&&this.pathUserLogo?"".concat(this.pathUserLogo,"?").concat(this.currentLogoCacheBuster):""},pathUserFaviconWithBuster:function(){return this.currentFaviconSrcExists&&this.pathUserFavicon?"".concat(this.pathUserFavicon,"?").concat(this.currentFaviconCacheBuster):""}},methods:{onUseCustomLogoChange:function(e){this.enabled=e},onCustomLogoChange:function(e){this.customLogo=e,this.updateLogo()},onFaviconChange:function(e){this.customFavicon=e,this.updateLogo()},save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setBrandingSettings"},{useCustomLogo:this.enabled?"1":"0"}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))},updateLogo:function(){var e=this,t=!!this.customLogo,n=!!this.customFavicon;if(t||n){this.showUploadError=!1;var o="upload".concat((new Date).getTime()),a=$('<iframe name="'.concat(o,'" />'));a.css("display","none"),a.on("load",(function(){setTimeout((function(){var o=($(a.contents()).find("body").html()||"").trim();"0"===o?e.showUploadError=!0:(t&&(e.currentLogoSrcExists=!0,e.currentLogoCacheBuster=(new Date).getTime()),n&&(e.currentFaviconSrcExists=!0,e.currentFaviconCacheBuster=(new Date).getTime())),"1"!==o&&"0"!==o||a.remove()}),1e3)})),$("body:first").append(a);var r=$(this.$refs.logoUploadForm);r.attr("target",o),r.submit(),this.customLogo="",this.customFavicon=""}}}});Y.render=K;var z=Y,X=(Object(r["createAngularJsAdapter"])({component:z,scope:{fileUploadEnabled:{angularJsBind:"<"},logosWriteable:{angularJsBind:"<"},useCustomLogo:{angularJsBind:"<"},pathUserLogoDirectory:{angularJsBind:"<"},pathUserLogo:{angularJsBind:"<"},pathUserLogoSmall:{angularJsBind:"<"},pathUserLogoSvg:{angularJsBind:"<"},hasUserLogo:{angularJsBind:"<"},pathUserFavicon:{angularJsBind:"<"},hasUserFavicon:{angularJsBind:"<"},isPluginsAdminEnabled:{angularJsBind:"<"}},directiveName:"matomoBrandingSettings"}),{id:"smtpSettings"});
+ */function $(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_BrandingSettings"),anchor:"brandingSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_CustomLogoHelpText")),1),Object(i["createVNode"])(l,{name:"useCustomLogo",uicontrol:"checkbox","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onUseCustomLogoChange(t)}),title:e.translate("CoreAdminHome_UseCustomLogo"),"inline-help":e.help},null,8,["model-value","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",w,[Object(i["createElementVNode"])("form",_,[e.fileUploadEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",H,[Object(i["createElementVNode"])("input",{type:"hidden",name:"token_auth",value:e.tokenAuth},null,8,D),B,e.logosWriteable?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createVNode"])(i["Transition"],{name:"fade-out"},{default:Object(i["withCtx"])((function(){return[e.showUploadError?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",U,Object(i["toDisplayString"])(e.translate("CoreAdminHome_LogoUploadFailed")),1)):Object(i["createCommentVNode"])("",!0)]})),_:1}),Object(i["createVNode"])(l,{uicontrol:"file",name:"customLogo","model-value":e.customLogo,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onCustomLogoChange(t)}),title:e.translate("CoreAdminHome_LogoUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","110")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",x,[Object(i["createElementVNode"])("div",F,[Object(i["createElementVNode"])("img",{src:e.pathUserLogoWithBuster,id:"currentLogo",style:{"max-height":"150px"},ref:"currentLogo"},null,8,I)])]),Object(i["createVNode"])(l,{uicontrol:"file",name:"customFavicon","model-value":e.customFavicon,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onFaviconChange(t)}),title:e.translate("CoreAdminHome_FaviconUpload"),"inline-help":e.translate("CoreAdminHome_LogoUploadHelp","JPG / PNG / GIF","16")},null,8,["model-value","title","inline-help"]),Object(i["createElementVNode"])("div",G,[Object(i["createElementVNode"])("div",P,[Object(i["createElementVNode"])("img",{src:e.pathUserFaviconWithBuster,id:"currentFavicon",width:"16",height:"16",ref:"currentFavicon"},null,8,M)])])])):Object(i["createCommentVNode"])("",!0),e.logosWriteable?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",J,[Object(i["createElementVNode"])("div",{class:"alert alert-warning",innerHTML:e.$sanitize(e.logosNotWriteableWarning)},null,8,q)]))])):Object(i["createCommentVNode"])("",!0),e.fileUploadEnabled?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",R,[Object(i["createElementVNode"])("div",W,Object(i["toDisplayString"])(e.translate("CoreAdminHome_FileUploadDisabled","file_uploads=1")),1)]))],512)],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[3]||(t[3]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var K=window,z=K.$,Q=Object(i["defineComponent"])({props:{fileUploadEnabled:{type:Boolean,required:!0},logosWriteable:{type:Boolean,required:!0},useCustomLogo:{type:Boolean,required:!0},pathUserLogoDirectory:{type:String,required:!0},pathUserLogo:{type:String,required:!0},pathUserLogoSmall:{type:String,required:!0},pathUserLogoSvg:{type:String,required:!0},hasUserLogo:{type:Boolean,required:!0},pathUserFavicon:{type:String,required:!0},hasUserFavicon:{type:Boolean,required:!0},isPluginsAdminEnabled:{type:Boolean,required:!0}},components:{Field:T["Field"],ContentBlock:r["ContentBlock"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},data:function(){return{isLoading:!1,enabled:this.useCustomLogo,customLogo:this.pathUserLogo,customFavicon:this.pathUserFavicon,showUploadError:!1,currentLogoSrcExists:this.hasUserLogo,currentFaviconSrcExists:this.hasUserFavicon,currentLogoCacheBuster:(new Date).getTime(),currentFaviconCacheBuster:(new Date).getTime()}},computed:{tokenAuth:function(){return r["Matomo"].token_auth},logosNotWriteableWarning:function(){return Object(r["translate"])("CoreAdminHome_LogoNotWriteableInstruction","<code>".concat(this.pathUserLogoDirectory,"</code><br/>"),"".concat(this.pathUserLogo,", ").concat(this.pathUserLogoSmall,", ").concat(this.pathUserLogoSvg))},help:function(){if(this.isPluginsAdminEnabled){var e='"'.concat(Object(r["translate"])("General_GiveUsYourFeedback"),'"'),t='<a href="?module=CorePluginsAdmin&action=plugins" rel="noreferrer noopener" target="_blank">';return Object(r["translate"])("CoreAdminHome_CustomLogoFeedbackInfo",e,t,"</a>")}},pathUserLogoWithBuster:function(){return this.currentLogoSrcExists&&this.pathUserLogo?"".concat(this.pathUserLogo,"?").concat(this.currentLogoCacheBuster):""},pathUserFaviconWithBuster:function(){return this.currentFaviconSrcExists&&this.pathUserFavicon?"".concat(this.pathUserFavicon,"?").concat(this.currentFaviconCacheBuster):""}},methods:{onUseCustomLogoChange:function(e){this.enabled=e},onCustomLogoChange:function(e){this.customLogo=e,this.updateLogo()},onFaviconChange:function(e){this.customFavicon=e,this.updateLogo()},save:function(){var e=this;this.isLoading=!0,r["AjaxHelper"].post({module:"API",method:"CoreAdminHome.setBrandingSettings"},{useCustomLogo:this.enabled?"1":"0"}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))},updateLogo:function(){var e=this,t=!!this.customLogo,n=!!this.customFavicon;if(t||n){this.showUploadError=!1;var o="upload".concat((new Date).getTime()),a=z('<iframe name="'.concat(o,'" />'));a.css("display","none"),a.on("load",(function(){setTimeout((function(){var o=(z(a.contents()).find("body").html()||"").trim();"0"===o?e.showUploadError=!0:(t&&(e.currentLogoSrcExists=!0,e.currentLogoCacheBuster=(new Date).getTime()),n&&(e.currentFaviconSrcExists=!0,e.currentFaviconCacheBuster=(new Date).getTime())),"1"!==o&&"0"!==o||a.remove()}),1e3)})),z("body:first").append(a);var r=z(this.$refs.logoUploadForm);r.attr("target",o),r.submit(),this.customLogo="",this.customFavicon=""}}}});Q.render=$;var Y=Q,X=(Object(r["createAngularJsAdapter"])({component:Y,scope:{fileUploadEnabled:{angularJsBind:"<"},logosWriteable:{angularJsBind:"<"},useCustomLogo:{angularJsBind:"<"},pathUserLogoDirectory:{angularJsBind:"<"},pathUserLogo:{angularJsBind:"<"},pathUserLogoSmall:{angularJsBind:"<"},pathUserLogoSvg:{angularJsBind:"<"},hasUserLogo:{angularJsBind:"<"},pathUserFavicon:{angularJsBind:"<"},hasUserFavicon:{angularJsBind:"<"},isPluginsAdminEnabled:{angularJsBind:"<"}},directiveName:"matomoBrandingSettings"}),{id:"smtpSettings"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Z(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_EmailServerSettings"),anchor:"mailSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"mailUseSmtp",modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),title:e.translate("General_UseSMTPServerForEmail"),"inline-help":e.translate("General_SelectYesIfYouWantToSendEmailsViaServer")},null,8,["modelValue","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",X,[Object(i["createVNode"])(l,{uicontrol:"text",name:"mailHost","model-value":e.mailHost,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onUpdateMailHost(t)}),title:e.translate("General_SmtpServerAddress")},null,8,["model-value","title"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailPort",modelValue:e.mailPort,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.mailPort=t}),title:e.translate("General_SmtpPort"),"inline-help":e.translate("General_OptionalSmtpPort")},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailType",modelValue:e.mailType,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.mailType=t}),title:e.translate("General_AuthenticationMethodSmtp"),options:e.mailTypes,"inline-help":e.translate("General_OnlyUsedIfUserPwdIsSet")},null,8,["modelValue","title","options","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailUsername",modelValue:e.mailUsername,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.mailUsername=t}),title:e.translate("General_SmtpUsername"),"inline-help":e.translate("General_OnlyEnterIfRequired"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"password",name:"mailPassword","model-value":e.mailPassword,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.onMailPasswordChange(t)}),onClick:t[6]||(t[6]=function(t){!e.passwordChanged&&t.target.select()}),title:e.translate("General_SmtpPassword"),"inline-help":e.passwordHelp,autocomplete:!1},null,8,["model-value","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromAddress",modelValue:e.mailFromAddress,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.mailFromAddress=t}),title:e.translate("General_SmtpFromAddress"),"inline-help":e.translate("General_SmtpFromEmailHelp",e.mailHost),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromName",modelValue:e.mailFromName,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.mailFromName=t}),title:e.translate("General_SmtpFromName"),"inline-help":e.translate("General_NameShownInTheSenderColumn"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailEncryption",modelValue:e.mailEncryption,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.mailEncryption=t}),title:e.translate("General_SmtpEncryption"),options:e.mailEncryptions,"inline-help":e.translate("General_EncryptedSmtpTransport")},null,8,["modelValue","title","options","inline-help"])],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[10]||(t[10]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var ee=Object(i["defineComponent"])({props:{mail:{type:Object,required:!0},mailTypes:{type:Object,required:!0},mailEncryptions:{type:Object,required:!0}},data:function(){var e=this.mail;return{isLoading:!1,enabled:"smtp"===e.transport,mailHost:e.host,passwordChanged:!1,mailPort:e.port,mailType:e.type,mailUsername:e.username,mailPassword:e.password?"******":"",mailFromAddress:e.noreply_email_address,mailFromName:e.noreply_email_name,mailEncryption:e.encryption}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},computed:{passwordHelp:function(){var e="".concat(Object(r["translate"])("General_OnlyEnterIfRequiredPassword"),"<br/>"),t="".concat(Object(r["translate"])("General_WarningPasswordStored","<strong>","</strong>"),"<br/>");return"".concat(e,"\n").concat(t)}},methods:{onUpdateMailHost:function(e){this.mailHost=e,this.passwordChanged||(this.mailPassword="",this.passwordChanged=!0)},onMailPasswordChange:function(e){this.mailPassword=e,this.passwordChanged=!0},save:function(){var e=this;this.isLoading=!0;var t={mailUseSmtp:this.enabled?"1":"0",mailPort:this.mailPort,mailHost:this.mailHost,mailType:this.mailType,mailUsername:this.mailUsername,mailFromAddress:this.mailFromAddress,mailFromName:this.mailFromName,mailEncryption:this.mailEncryption};this.passwordChanged&&(t.mailPassword=this.mailPassword),r["AjaxHelper"].post({module:"CoreAdminHome",action:"setMailSettings"},t,{withTokenInUrl:!0}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}}});ee.render=Z;var te=ee,ne=(Object(r["createAngularJsAdapter"])({component:te,scope:{mail:{angularJsBind:"<"},mailTypes:{angularJsBind:"<"},mailEncryptions:{angularJsBind:"<"}},directiveName:"matomoSmtpSettings"}),{id:"js-code-options"}),oe=Object(i["createElementVNode"])("br",null,null,-1),ae=Object(i["createElementVNode"])("br",null,null,-1),re=["innerHTML"],ie=["innerHTML"],le=Object(i["createElementVNode"])("br",null,null,-1),ce=Object(i["createElementVNode"])("br",null,null,-1),se=["innerHTML"],de=Object(i["createElementVNode"])("br",null,null,-1),ue=Object(i["createElementVNode"])("br",null,null,-1),me=["innerHTML"],ge=Object(i["createElementVNode"])("br",null,null,-1),pe=Object(i["createElementVNode"])("br",null,null,-1),be=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",target:"_blank",rel:"noopener"},"WordPress",-1),he=Object(i["createTextVNode"])(" | "),je=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",target:"_blank",rel:"noopener"},"Squarespace",-1),ve=Object(i["createTextVNode"])(" | "),fe=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",target:"_blank",rel:"noopener"},"Wix",-1),Oe=Object(i["createTextVNode"])(" | "),Ce=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/how-to-install/faq_19424/",target:"_blank",rel:"noopener"},"SharePoint",-1),ke=Object(i["createTextVNode"])(" | "),Ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/",target:"_blank",rel:"noopener"},"Joomla",-1),Se=Object(i["createTextVNode"])(" | "),Ne=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/",target:"_blank",rel:"noopener"},"Shopify",-1),ye=Object(i["createTextVNode"])(" | "),Te=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager/",target:"_blank",rel:"noopener"},"Google Tag Manager",-1),Ae={id:"javascript-output-section"},Ee={class:"valign-wrapper trackingHelpHeader matchWidth"},we={id:"javascript-text"},_e=["textContent"],He={id:"optional-js-tracking-options"},De={id:"jsTrackAllSubdomainsInlineHelp",class:"inline-help-node"},Be=["innerHTML"],Le=["innerHTML"],Ue={id:"jsTrackGroupByDomainInlineHelp",class:"inline-help-node"},xe={id:"jsTrackAllAliasesInlineHelp",class:"inline-help-node"},Fe={id:"javascript-advanced-options"},Ie={id:"javascript-tracking-visitor-cv"},Ge={class:"row"},Pe={class:"col s12 m3"},Me={class:"col s12 m3"},Je={class:"col s12 m6 l3"},qe=["onKeydown"],Re={class:"col s12 m6 l3"},We=["onKeydown"],Ke={class:"row"},Qe={class:"col s12"},$e=Object(i["createElementVNode"])("span",{class:"icon-add"},null,-1),Ye={id:"jsCrossDomain",class:"inline-help-node"},ze=Object(i["createElementVNode"])("br",null,null,-1),Xe={id:"jsDoNotTrackInlineHelp",class:"inline-help-node"},Ze={key:0},et=Object(i["createElementVNode"])("br",null,null,-1),tt=["innerHTML"],nt={id:"js-campaign-query-param-extra"},ot={class:"row"},at={class:"col s12"},rt={class:"row"},it={class:"col s12"};
+ */function Z(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("form");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{"content-title":e.translate("CoreAdminHome_EmailServerSettings"),anchor:"mailSettings"},{default:Object(i["withCtx"])((function(){return[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"mailUseSmtp",modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),title:e.translate("General_UseSMTPServerForEmail"),"inline-help":e.translate("General_SelectYesIfYouWantToSendEmailsViaServer")},null,8,["modelValue","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",X,[Object(i["createVNode"])(l,{uicontrol:"text",name:"mailHost","model-value":e.mailHost,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.onUpdateMailHost(t)}),title:e.translate("General_SmtpServerAddress")},null,8,["model-value","title"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailPort",modelValue:e.mailPort,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.mailPort=t}),title:e.translate("General_SmtpPort"),"inline-help":e.translate("General_OptionalSmtpPort")},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailType",modelValue:e.mailType,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.mailType=t}),title:e.translate("General_AuthenticationMethodSmtp"),options:e.mailTypes,"inline-help":e.translate("General_OnlyUsedIfUserPwdIsSet")},null,8,["modelValue","title","options","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailUsername",modelValue:e.mailUsername,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.mailUsername=t}),title:e.translate("General_SmtpUsername"),"inline-help":e.translate("General_OnlyEnterIfRequired"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"password",name:"mailPassword","model-value":e.mailPassword,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.onMailPasswordChange(t)}),onClick:t[6]||(t[6]=function(t){!e.passwordChanged&&t.target.select()}),title:e.translate("General_SmtpPassword"),"inline-help":e.passwordHelp,autocomplete:!1},null,8,["model-value","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromAddress",modelValue:e.mailFromAddress,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.mailFromAddress=t}),title:e.translate("General_SmtpFromAddress"),"inline-help":e.translate("General_SmtpFromEmailHelp",e.mailHost),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"mailFromName",modelValue:e.mailFromName,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.mailFromName=t}),title:e.translate("General_SmtpFromName"),"inline-help":e.translate("General_NameShownInTheSenderColumn"),autocomplete:!1},null,8,["modelValue","title","inline-help"]),Object(i["createVNode"])(l,{uicontrol:"select",name:"mailEncryption",modelValue:e.mailEncryption,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.mailEncryption=t}),title:e.translate("General_SmtpEncryption"),options:e.mailEncryptions,"inline-help":e.translate("General_EncryptedSmtpTransport")},null,8,["modelValue","title","options","inline-help"])],512),[[i["vShow"],e.enabled]]),Object(i["createVNode"])(c,{onConfirm:t[10]||(t[10]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512),[[d]])]})),_:1},8,["content-title"])}var ee=Object(i["defineComponent"])({props:{mail:{type:Object,required:!0},mailTypes:{type:Object,required:!0},mailEncryptions:{type:Object,required:!0}},data:function(){var e=this.mail;return{isLoading:!1,enabled:"smtp"===e.transport,mailHost:e.host,passwordChanged:!1,mailPort:e.port,mailType:e.type,mailUsername:e.username,mailPassword:e.password?"******":"",mailFromAddress:e.noreply_email_address,mailFromName:e.noreply_email_name,mailEncryption:e.encryption}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"],SaveButton:T["SaveButton"]},directives:{Form:T["Form"]},computed:{passwordHelp:function(){var e="".concat(Object(r["translate"])("General_OnlyEnterIfRequiredPassword"),"<br/>"),t="".concat(Object(r["translate"])("General_WarningPasswordStored","<strong>","</strong>"),"<br/>");return"".concat(e,"\n").concat(t)}},methods:{onUpdateMailHost:function(e){this.mailHost=e,this.passwordChanged||(this.mailPassword="",this.passwordChanged=!0)},onMailPasswordChange:function(e){this.mailPassword=e,this.passwordChanged=!0},save:function(){var e=this;this.isLoading=!0;var t={mailUseSmtp:this.enabled?"1":"0",mailPort:this.mailPort,mailHost:this.mailHost,mailType:this.mailType,mailUsername:this.mailUsername,mailFromAddress:this.mailFromAddress,mailFromName:this.mailFromName,mailEncryption:this.mailEncryption};this.passwordChanged&&(t.mailPassword=this.mailPassword),r["AjaxHelper"].post({module:"CoreAdminHome",action:"setMailSettings"},t,{withTokenInUrl:!0}).then((function(){var e=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_SettingsSaveSuccess"),type:"transient",id:"generalSettings",context:"success"});r["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}}});ee.render=Z;var te=ee,ne=(Object(r["createAngularJsAdapter"])({component:te,scope:{mail:{angularJsBind:"<"},mailTypes:{angularJsBind:"<"},mailEncryptions:{angularJsBind:"<"}},directiveName:"matomoSmtpSettings"}),{id:"js-code-options"}),oe=Object(i["createElementVNode"])("br",null,null,-1),ae=Object(i["createElementVNode"])("br",null,null,-1),re=["innerHTML"],ie=["innerHTML"],le=Object(i["createElementVNode"])("br",null,null,-1),ce=Object(i["createElementVNode"])("br",null,null,-1),se=["innerHTML"],de=Object(i["createElementVNode"])("br",null,null,-1),ue=Object(i["createElementVNode"])("br",null,null,-1),me=["innerHTML"],ge=Object(i["createElementVNode"])("br",null,null,-1),pe=Object(i["createElementVNode"])("br",null,null,-1),be=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/",target:"_blank",rel:"noopener"},"WordPress",-1),he=Object(i["createTextVNode"])(" | "),je=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-integrate-matomo-with-squarespace-website/",target:"_blank",rel:"noopener"},"Squarespace",-1),ve=Object(i["createTextVNode"])(" | "),fe=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-wix/",target:"_blank",rel:"noopener"},"Wix",-1),Oe=Object(i["createTextVNode"])(" | "),Ce=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/how-to-install/faq_19424/",target:"_blank",rel:"noopener"},"SharePoint",-1),ke=Object(i["createTextVNode"])(" | "),Ve=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-analytics-tracking-code-on-joomla/",target:"_blank",rel:"noopener"},"Joomla",-1),Se=Object(i["createTextVNode"])(" | "),Ne=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-my-shopify-store/",target:"_blank",rel:"noopener"},"Shopify",-1),ye=Object(i["createTextVNode"])(" | "),Te=Object(i["createElementVNode"])("a",{href:"https://matomo.org/faq/new-to-piwik/how-do-i-use-matomo-analytics-within-gtm-google-tag-manager/",target:"_blank",rel:"noopener"},"Google Tag Manager",-1),Ae={id:"javascript-output-section"},Ee={class:"valign-wrapper trackingHelpHeader matchWidth"},we={id:"javascript-text"},_e=["textContent"],He={id:"optional-js-tracking-options"},De={id:"jsTrackAllSubdomainsInlineHelp",class:"inline-help-node"},Be=["innerHTML"],Le=["innerHTML"],Ue={id:"jsTrackGroupByDomainInlineHelp",class:"inline-help-node"},xe={id:"jsTrackAllAliasesInlineHelp",class:"inline-help-node"},Fe={id:"javascript-advanced-options"},Ie={id:"javascript-tracking-visitor-cv"},Ge={class:"row"},Pe={class:"col s12 m3"},Me={class:"col s12 m3"},Je={class:"col s12 m6 l3"},qe=["onKeydown"],Re={class:"col s12 m6 l3"},We=["onKeydown"],$e={class:"row"},Ke={class:"col s12"},ze=Object(i["createElementVNode"])("span",{class:"icon-add"},null,-1),Qe={id:"jsCrossDomain",class:"inline-help-node"},Ye=Object(i["createElementVNode"])("br",null,null,-1),Xe={id:"jsDoNotTrackInlineHelp",class:"inline-help-node"},Ze={key:0},et=Object(i["createElementVNode"])("br",null,null,-1),tt=["innerHTML"],nt={id:"js-campaign-query-param-extra"},ot={class:"row"},at={class:"col s12"},rt={class:"row"},it={class:"col s12"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function lt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{anchor:"javaScriptTracking","content-title":e.translate("CoreAdminHome_JavaScriptTracking")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",ne,[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro1"))+" ",1),oe,ae,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro2"))+" ",1),Object(i["createElementVNode"])("span",{innerHTML:e.jsTrackingIntro3a},null,8,re),Object(i["createElementVNode"])("span",{innerHTML:" "+e.jsTrackingIntro3b},null,8,ie),le,ce,Object(i["createElementVNode"])("span",{innerHTML:e.jsTrackingIntro4a},null,8,se),de,ue,Object(i["createElementVNode"])("span",{innerHTML:e.jsTrackingIntro5},null,8,me),ge,pe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("SitesManager_InstallationGuides"))+" : ",1),be,he,je,ve,fe,Oe,Ce,ke,Ve,Se,Ne,ye,Te]),Object(i["createVNode"])(l,{uicontrol:"site",name:"js-tracker-website",class:"jsTrackingCodeWebsite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createElementVNode"])("div",Ae,[Object(i["createElementVNode"])("div",Ee,[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("General_JsTrackingTag")),1),Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead","</head>")),1)]),Object(i["createElementVNode"])("button",{class:"btn",id:"emailJsBtn",onClick:t[1]||(t[1]=function(t){return e.sendEmail()})},Object(i["toDisplayString"])(e.translate("SitesManager_EmailInstructionsButton")),1)]),Object(i["createElementVNode"])("div",we,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{class:"codeblock",textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,_e),[[s,{}]])])]),Object(i["createElementVNode"])("div",He,[Object(i["createElementVNode"])("div",De,[Object(i["createElementVNode"])("span",{innerHTML:e.mergeSubdomainsDesc},null,8,Be),Object(i["createElementVNode"])("span",{innerHTML:e.learnMoreText},null,8,Le)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-subdomains","model-value":e.trackAllSubdomains,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackAllSubdomains=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeSubdomains")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllSubdomainsInlineHelp"},null,8,["model-value","disabled","introduction","title"])]),Object(i["createElementVNode"])("div",Ue,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1",e.currentSiteHost)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-group-by-domain","model-value":e.groupByDomain,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.groupByDomain=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomain"),"inline-help":"#jsTrackGroupByDomainInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",xe,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_MergeAliasesDesc",e.currentSiteAlias)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-aliases","model-value":e.trackAllAliases,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.trackAllAliases=t,e.updateTrackingCode()}),disabled:e.isLoading,title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeAliases")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllAliasesInlineHelp"},null,8,["model-value","disabled","title"])]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-noscript","model-value":e.trackNoScript,"onUpdate:modelValue":t[5]||(t[5]=function(t){e.trackNoScript=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_TrackNoScript")},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("Mobile_Advanced")),1),Object(i["createElementVNode"])("p",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[6]||(t[6]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!0}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Show")),513),[[i["vShow"],!e.showAdvanced]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[7]||(t[7]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!1}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Hide")),513),[[i["vShow"],e.showAdvanced]])]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Fe,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-visitor-cv-check","model-value":e.trackCustomVars,"onUpdate:modelValue":t[8]||(t[8]=function(t){e.trackCustomVars=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_VisitorCustomVars"),"inline-help":e.translate("CoreAdminHome_JSTracking_VisitorCustomVarsDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ie,[Object(i["createElementVNode"])("div",Ge,[Object(i["createElementVNode"])("div",Pe,Object(i["toDisplayString"])(e.translate("General_Name")),1),Object(i["createElementVNode"])("div",Me,Object(i["toDisplayString"])(e.translate("General_Value")),1)]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.customVars,(function(t,n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{class:"row",key:n},[Object(i["createElementVNode"])("div",Je,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-name",onKeydown:function(t){return e.onCustomVarNameKeydown(t,n)},placeholder:"e.g. Type"},null,40,qe)]),Object(i["createElementVNode"])("div",Re,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-value",onKeydown:function(t){return e.onCustomVarValueKeydown(t,n)},placeholder:"e.g. Customer"},null,40,We)])])})),128)),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ke,[Object(i["createElementVNode"])("div",Qe,[Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[9]||(t[9]=function(t){return e.addCustomVar()}),class:"add-custom-variable"},[$e,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_Add")),1)])])],512),[[i["vShow"],e.canAddMoreCustomVariables]])],512),[[i["vShow"],e.trackCustomVars]]),Object(i["createElementVNode"])("div",Ye,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain"))+" ",1),ze,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains")),1)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-cross-domain","model-value":e.crossDomain,"onUpdate:modelValue":t[10]||(t[10]=function(t){e.crossDomain=t,e.updateTrackingCode(),e.onCrossDomainToggle()}),disabled:e.isLoading||!e.hasManySiteUrls,title:e.translate("CoreAdminHome_JSTracking_EnableCrossDomainLinking"),"inline-help":"#jsCrossDomain"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Xe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrackDesc"))+" ",1),e.serverSideDoNotTrackEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",Ze,[et,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled")),1)])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-do-not-track","model-value":e.doNotTrack,"onUpdate:modelValue":t[11]||(t[11]=function(t){e.doNotTrack=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack"),"inline-help":"#jsDoNotTrackInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-disable-cookies","model-value":e.disableCookies,"onUpdate:modelValue":t[12]||(t[12]=function(t){e.disableCookies=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_DisableCookies"),"inline-help":e.translate("CoreAdminHome_JSTracking_DisableCookiesDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["createElementVNode"])("div",{id:"jsTrackCampaignParamsInlineHelp",class:"inline-help-node",innerHTML:e.jsTrackCampaignParamsInlineHelp},null,8,tt),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"custom-campaign-query-params-check","model-value":e.useCustomCampaignParams,"onUpdate:modelValue":t[13]||(t[13]=function(t){e.useCustomCampaignParams=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CustomCampaignQueryParam"),"inline-help":"#jsTrackCampaignParamsInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",nt,[Object(i["createElementVNode"])("div",ot,[Object(i["createElementVNode"])("div",at,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-name-query-param","model-value":e.customCampaignName,"onUpdate:modelValue":t[14]||(t[14]=function(t){e.customCampaignName=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignNameParam")},null,8,["model-value","disabled","title"])])]),Object(i["createElementVNode"])("div",rt,[Object(i["createElementVNode"])("div",it,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-keyword-query-param","model-value":e.customCampaignKeyword,"onUpdate:modelValue":t[15]||(t[15]=function(t){e.customCampaignKeyword=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignKwdParam")},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.useCustomCampaignParams]])],512),[[i["vShow"],e.showAdvanced]])]})),_:1},8,["content-title"])}function ct(e){var t=new URL(e);return t.hostname}function st(e){return e.map((function(e){return[e.name,e.value]}))}var dt=window,ut=dt.$,mt=window.location.host,gt=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),pt=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0},maxCustomVariables:Number,serverSideDoNotTrackEnabled:Boolean},data:function(){return{showAdvanced:!1,site:this.defaultSite,trackingCode:"",trackAllSubdomains:!1,isLoading:!1,siteUrls:{},siteExcludedQueryParams:{},crossDomain:!1,groupByDomain:!1,trackAllAliases:!1,trackNoScript:!1,trackCustomVars:!1,customVars:[],canAddMoreCustomVariables:!!this.maxCustomVariables&&this.maxCustomVariables>0,doNotTrack:!1,disableCookies:!1,useCustomCampaignParams:!1,customCampaignName:"",customCampaignKeyword:"",trackingCodeAbortController:null,isHighlighting:!1}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},created:function(){this.onCustomVarNameKeydown=Object(r["debounce"])(this.onCustomVarNameKeydown,100),this.onCustomVarValueKeydown=Object(r["debounce"])(this.onCustomVarValueKeydown,100),this.addCustomVar(),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t=this,n=e.id,o=[];this.siteUrls[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteUrlsFromId",idSite:n,filter_limit:"-1"}).then((function(e){t.siteUrls[n]=e||[]})))),this.siteExcludedQueryParams[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"Overlay.getExcludedQueryParameters",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedQueryParams[n]=e||[]})))),Promise.all(o).then((function(){t.isLoading=!1,t.updateCurrentSiteInfo(),t.updateTrackingCode()}))},sendEmail:function(){var e=Object(r["translate"])("SitesManager_EmailInstructionsSubject");e=encodeURIComponent(e);var t=this.trackingCode;t=t.replace(/<[^>]+>/g,"");var n="".concat(Object(r["translate"])("SitesManager_JsTrackingTagHelp"),". ").concat(Object(r["translate"])("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail","'head"),"\n").concat(t);n=encodeURIComponent(n);var o="mailto:?subject=".concat(e,"&body=").concat(n);window.location.href=o},onCrossDomainToggle:function(){this.crossDomain&&(this.trackAllAliases=!0)},updateTrackingCode:function(){var e=this,t=this.site,n={piwikUrl:"".concat(mt).concat(gt),groupPageTitlesByDomain:this.groupByDomain?1:0,mergeSubdomains:this.trackAllSubdomains?1:0,mergeAliasUrls:this.trackAllAliases?1:0,visitorCustomVariables:this.trackCustomVars?st(this.customVars):0,customCampaignNameQueryParam:null,customCampaignKeywordParam:null,doNotTrack:this.doNotTrack?1:0,disableCookies:this.disableCookies?1:0,crossDomain:this.crossDomain?1:0,trackNoScript:this.trackNoScript?1:0,forceMatomoEndpoint:1};this.siteExcludedQueryParams[t.id]&&(n.excludedQueryParams=this.siteExcludedQueryParams[t.id]),this.useCustomCampaignParams&&(n.customCampaignNameQueryParam=this.customCampaignName,n.customCampaignKeywordParam=this.customCampaignKeyword),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getJavascriptTag",idSite:t.id},n,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))},updateCurrentSiteInfo:function(){this.hasManySiteUrls||(this.crossDomain=!1)},addCustomVar:function(){this.canAddMoreCustomVariables&&this.customVars.push({name:"",value:""}),this.canAddMoreCustomVariables=!!this.maxCustomVariables&&this.maxCustomVariables>this.customVars.length},onCustomVarNameKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].name=e.target.value,n.updateTrackingCode()}))},onCustomVarValueKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].value=e.target.value,n.updateTrackingCode()}))}},computed:{hasManySiteUrls:function(){var e=this.site;return this.siteUrls[e.id]&&this.siteUrls[e.id].length>1},currentSiteHost:function(){var e,t=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[0];return t?ct(t):""},currentSiteAlias:function(){var e,t="x.".concat(this.currentSiteHost),n=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[1];return n||t},currentSiteName:function(){return r["Matomo"].helper.htmlEntities(this.site.name)},jsTrackingIntro3a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3a",'<a href="https://matomo.org/integrate/" rel="noreferrer noopener" target="_blank">',"</a>")},jsTrackingIntro3b:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3b")},jsTrackingIntro4a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro4",'<a href="#image-tracking-link">',"</a>")},jsTrackingIntro5:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro5",'<a rel="noreferrer noopener" target="_blank" href="https://developer.matomo.org/guides/tracking-javascript-guide">',"</a>")},mergeSubdomainsDesc:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_MergeSubdomainsDesc","x.".concat(this.currentSiteHost),"y.".concat(this.currentSiteHost))},learnMoreText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#measuring-domains-andor-sub-domains";return Object(r["translate"])("General_LearnMore",' (<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>)")},jsTrackCampaignParamsInlineHelp:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_CustomCampaignQueryParamDesc",'<a href="https://matomo.org/faq/general/#faq_119" rel="noreferrer noopener" target="_blank">',"</a>")}}});pt.render=lt;var bt=pt,ht=(Object(r["createAngularJsAdapter"])({component:bt,scope:{defaultSite:{angularJsBind:"<"},maxCustomVariables:{angularJsBind:"<"},serverSideDoNotTrackEnabled:{angularJsBind:"<"}},directiveName:"matomoJsTrackingCodeGenerator"}),Object(i["createElementVNode"])("a",{name:"image-tracking-link"},null,-1)),jt={id:"image-tracking-code-options"},vt=["innerHTML"],ft=["innerHTML"],Ot={id:"image-tracking-goal-sub"},Ct={class:"row"},kt={class:"col s12 m6"},Vt={class:"col s12 m6"},St={id:"image-link-output-section"},Nt={id:"image-tracking-text"},yt=["textContent"];
+ */function lt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{anchor:"javaScriptTracking","content-title":e.translate("CoreAdminHome_JavaScriptTracking")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",ne,[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro1"))+" ",1),oe,ae,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTrackingIntro2"))+" ",1),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro3a)},null,8,re),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(" "+e.jsTrackingIntro3b)},null,8,ie),le,ce,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro4a)},null,8,se),de,ue,Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.jsTrackingIntro5)},null,8,me),ge,pe,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("SitesManager_InstallationGuides"))+" : ",1),be,he,je,ve,fe,Oe,Ce,ke,Ve,Se,Ne,ye,Te]),Object(i["createVNode"])(l,{uicontrol:"site",name:"js-tracker-website",class:"jsTrackingCodeWebsite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createElementVNode"])("div",Ae,[Object(i["createElementVNode"])("div",Ee,[Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("General_JsTrackingTag")),1),Object(i["createElementVNode"])("p",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHead","</head>")),1)]),Object(i["createElementVNode"])("button",{class:"btn",id:"emailJsBtn",onClick:t[1]||(t[1]=function(t){return e.sendEmail()})},Object(i["toDisplayString"])(e.translate("SitesManager_EmailInstructionsButton")),1)]),Object(i["createElementVNode"])("div",we,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{class:"codeblock",textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,_e),[[s,{}]])])]),Object(i["createElementVNode"])("div",He,[Object(i["createElementVNode"])("div",De,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mergeSubdomainsDesc)},null,8,Be),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.learnMoreText)},null,8,Le)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-subdomains","model-value":e.trackAllSubdomains,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackAllSubdomains=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeSubdomains")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllSubdomainsInlineHelp"},null,8,["model-value","disabled","introduction","title"])]),Object(i["createElementVNode"])("div",Ue,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomainDesc1",e.currentSiteHost)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-group-by-domain","model-value":e.groupByDomain,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.groupByDomain=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_GroupPageTitlesByDomain"),"inline-help":"#jsTrackGroupByDomainInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",xe,Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_MergeAliasesDesc",e.currentSiteAlias)),1),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-all-aliases","model-value":e.trackAllAliases,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.trackAllAliases=t,e.updateTrackingCode()}),disabled:e.isLoading,title:"".concat(e.translate("CoreAdminHome_JSTracking_MergeAliases")," ").concat(e.currentSiteName),"inline-help":"#jsTrackAllAliasesInlineHelp"},null,8,["model-value","disabled","title"])]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-noscript","model-value":e.trackNoScript,"onUpdate:modelValue":t[5]||(t[5]=function(t){e.trackNoScript=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_TrackNoScript")},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("Mobile_Advanced")),1),Object(i["createElementVNode"])("p",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[6]||(t[6]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!0}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Show")),513),[[i["vShow"],!e.showAdvanced]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[7]||(t[7]=Object(i["withModifiers"])((function(t){return e.showAdvanced=!1}),["prevent"]))},Object(i["toDisplayString"])(e.translate("General_Hide")),513),[[i["vShow"],e.showAdvanced]])]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Fe,[Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-visitor-cv-check","model-value":e.trackCustomVars,"onUpdate:modelValue":t[8]||(t[8]=function(t){e.trackCustomVars=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_VisitorCustomVars"),"inline-help":e.translate("CoreAdminHome_JSTracking_VisitorCustomVarsDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ie,[Object(i["createElementVNode"])("div",Ge,[Object(i["createElementVNode"])("div",Pe,Object(i["toDisplayString"])(e.translate("General_Name")),1),Object(i["createElementVNode"])("div",Me,Object(i["toDisplayString"])(e.translate("General_Value")),1)]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.customVars,(function(t,n){return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{class:"row",key:n},[Object(i["createElementVNode"])("div",Je,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-name",onKeydown:function(t){return e.onCustomVarNameKeydown(t,n)},placeholder:"e.g. Type"},null,40,qe)]),Object(i["createElementVNode"])("div",Re,[Object(i["createElementVNode"])("input",{type:"text",class:"custom-variable-value",onKeydown:function(t){return e.onCustomVarValueKeydown(t,n)},placeholder:"e.g. Customer"},null,40,We)])])})),128)),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",$e,[Object(i["createElementVNode"])("div",Ke,[Object(i["createElementVNode"])("a",{href:"javascript:;",onClick:t[9]||(t[9]=function(t){return e.addCustomVar()}),class:"add-custom-variable"},[ze,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("General_Add")),1)])])],512),[[i["vShow"],e.canAddMoreCustomVariables]])],512),[[i["vShow"],e.trackCustomVars]]),Object(i["createElementVNode"])("div",Qe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain"))+" ",1),Ye,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_CrossDomain_NeedsMultipleDomains")),1)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-cross-domain","model-value":e.crossDomain,"onUpdate:modelValue":t[10]||(t[10]=function(t){e.crossDomain=t,e.updateTrackingCode(),e.onCrossDomainToggle()}),disabled:e.isLoading||!e.hasManySiteUrls,title:e.translate("CoreAdminHome_JSTracking_EnableCrossDomainLinking"),"inline-help":"#jsCrossDomain"},null,8,["model-value","disabled","title"]),Object(i["createElementVNode"])("div",Xe,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrackDesc"))+" ",1),e.serverSideDoNotTrackEnabled?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",Ze,[et,Object(i["createTextVNode"])(" "+Object(i["toDisplayString"])(e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack_AlreadyEnabled")),1)])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-do-not-track","model-value":e.doNotTrack,"onUpdate:modelValue":t[11]||(t[11]=function(t){e.doNotTrack=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_EnableDoNotTrack"),"inline-help":"#jsDoNotTrackInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"javascript-tracking-disable-cookies","model-value":e.disableCookies,"onUpdate:modelValue":t[12]||(t[12]=function(t){e.disableCookies=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_DisableCookies"),"inline-help":e.translate("CoreAdminHome_JSTracking_DisableCookiesDesc")},null,8,["model-value","disabled","title","inline-help"]),Object(i["createElementVNode"])("div",{id:"jsTrackCampaignParamsInlineHelp",class:"inline-help-node",innerHTML:e.$sanitize(e.jsTrackCampaignParamsInlineHelp)},null,8,tt),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"custom-campaign-query-params-check","model-value":e.useCustomCampaignParams,"onUpdate:modelValue":t[13]||(t[13]=function(t){e.useCustomCampaignParams=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CustomCampaignQueryParam"),"inline-help":"#jsTrackCampaignParamsInlineHelp"},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",nt,[Object(i["createElementVNode"])("div",ot,[Object(i["createElementVNode"])("div",at,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-name-query-param","model-value":e.customCampaignName,"onUpdate:modelValue":t[14]||(t[14]=function(t){e.customCampaignName=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignNameParam")},null,8,["model-value","disabled","title"])])]),Object(i["createElementVNode"])("div",rt,[Object(i["createElementVNode"])("div",it,[Object(i["createVNode"])(l,{uicontrol:"text",name:"custom-campaign-keyword-query-param","model-value":e.customCampaignKeyword,"onUpdate:modelValue":t[15]||(t[15]=function(t){e.customCampaignKeyword=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_JSTracking_CampaignKwdParam")},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.useCustomCampaignParams]])],512),[[i["vShow"],e.showAdvanced]])]})),_:1},8,["content-title"])}function ct(e){var t=new URL(e);return t.hostname}function st(e){return e.map((function(e){return[e.name,e.value]}))}var dt=window,ut=dt.$,mt=window.location.host,gt=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),pt=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0},maxCustomVariables:Number,serverSideDoNotTrackEnabled:Boolean},data:function(){return{showAdvanced:!1,site:this.defaultSite,trackingCode:"",trackAllSubdomains:!1,isLoading:!1,siteUrls:{},siteExcludedQueryParams:{},crossDomain:!1,groupByDomain:!1,trackAllAliases:!1,trackNoScript:!1,trackCustomVars:!1,customVars:[],canAddMoreCustomVariables:!!this.maxCustomVariables&&this.maxCustomVariables>0,doNotTrack:!1,disableCookies:!1,useCustomCampaignParams:!1,customCampaignName:"",customCampaignKeyword:"",trackingCodeAbortController:null,isHighlighting:!1}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},created:function(){this.onCustomVarNameKeydown=Object(r["debounce"])(this.onCustomVarNameKeydown,100),this.onCustomVarValueKeydown=Object(r["debounce"])(this.onCustomVarValueKeydown,100),this.addCustomVar(),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t=this,n=e.id,o=[];this.siteUrls[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteUrlsFromId",idSite:n,filter_limit:"-1"}).then((function(e){t.siteUrls[n]=e||[]})))),this.siteExcludedQueryParams[n]||(this.isLoading=!0,o.push(r["AjaxHelper"].fetch({module:"API",method:"Overlay.getExcludedQueryParameters",idSite:n,filter_limit:"-1"}).then((function(e){t.siteExcludedQueryParams[n]=e||[]})))),Promise.all(o).then((function(){t.isLoading=!1,t.updateCurrentSiteInfo(),t.updateTrackingCode()}))},sendEmail:function(){var e=Object(r["translate"])("SitesManager_EmailInstructionsSubject");e=encodeURIComponent(e);var t=this.trackingCode;t=t.replace(/<[^>]+>/g,"");var n="".concat(Object(r["translate"])("SitesManager_JsTrackingTagHelp"),". ").concat(Object(r["translate"])("CoreAdminHome_JSTracking_CodeNoteBeforeClosingHeadEmail","'head"),"\n").concat(t);n=encodeURIComponent(n);var o="mailto:?subject=".concat(e,"&body=").concat(n);window.location.href=o},onCrossDomainToggle:function(){this.crossDomain&&(this.trackAllAliases=!0)},updateTrackingCode:function(){var e=this,t=this.site,n={piwikUrl:"".concat(mt).concat(gt),groupPageTitlesByDomain:this.groupByDomain?1:0,mergeSubdomains:this.trackAllSubdomains?1:0,mergeAliasUrls:this.trackAllAliases?1:0,visitorCustomVariables:this.trackCustomVars?st(this.customVars):0,customCampaignNameQueryParam:null,customCampaignKeywordParam:null,doNotTrack:this.doNotTrack?1:0,disableCookies:this.disableCookies?1:0,crossDomain:this.crossDomain?1:0,trackNoScript:this.trackNoScript?1:0,forceMatomoEndpoint:1};this.siteExcludedQueryParams[t.id]&&(n.excludedQueryParams=this.siteExcludedQueryParams[t.id]),this.useCustomCampaignParams&&(n.customCampaignNameQueryParam=this.customCampaignName,n.customCampaignKeywordParam=this.customCampaignKeyword),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getJavascriptTag",idSite:t.id},n,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))},updateCurrentSiteInfo:function(){this.hasManySiteUrls||(this.crossDomain=!1)},addCustomVar:function(){this.canAddMoreCustomVariables&&this.customVars.push({name:"",value:""}),this.canAddMoreCustomVariables=!!this.maxCustomVariables&&this.maxCustomVariables>this.customVars.length},onCustomVarNameKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].name=e.target.value,n.updateTrackingCode()}))},onCustomVarValueKeydown:function(e,t){var n=this;setTimeout((function(){n.customVars[t].value=e.target.value,n.updateTrackingCode()}))}},computed:{hasManySiteUrls:function(){var e=this.site;return this.siteUrls[e.id]&&this.siteUrls[e.id].length>1},currentSiteHost:function(){var e,t=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[0];return t?ct(t):""},currentSiteAlias:function(){var e,t="x.".concat(this.currentSiteHost),n=null===(e=this.siteUrls[this.site.id])||void 0===e?void 0:e[1];return n||t},currentSiteName:function(){return r["Matomo"].helper.htmlEntities(this.site.name)},jsTrackingIntro3a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3a",'<a href="https://matomo.org/integrate/" rel="noreferrer noopener" target="_blank">',"</a>")},jsTrackingIntro3b:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro3b")},jsTrackingIntro4a:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro4",'<a href="#image-tracking-link">',"</a>")},jsTrackingIntro5:function(){return Object(r["translate"])("CoreAdminHome_JSTrackingIntro5",'<a rel="noreferrer noopener" target="_blank" href="https://developer.matomo.org/guides/tracking-javascript-guide">',"</a>")},mergeSubdomainsDesc:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_MergeSubdomainsDesc","x.".concat(this.currentSiteHost),"y.".concat(this.currentSiteHost))},learnMoreText:function(){var e="https://developer.matomo.org/guides/tracking-javascript-guide#measuring-domains-andor-sub-domains";return Object(r["translate"])("General_LearnMore",' (<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>)")},jsTrackCampaignParamsInlineHelp:function(){return Object(r["translate"])("CoreAdminHome_JSTracking_CustomCampaignQueryParamDesc",'<a href="https://matomo.org/faq/general/#faq_119" rel="noreferrer noopener" target="_blank">',"</a>")}}});pt.render=lt;var bt=pt,ht=(Object(r["createAngularJsAdapter"])({component:bt,scope:{defaultSite:{angularJsBind:"<"},maxCustomVariables:{angularJsBind:"<"},serverSideDoNotTrackEnabled:{angularJsBind:"<"}},directiveName:"matomoJsTrackingCodeGenerator"}),Object(i["createElementVNode"])("a",{name:"image-tracking-link"},null,-1)),jt={id:"image-tracking-code-options"},vt=["innerHTML"],ft=["innerHTML"],Ot={id:"image-tracking-goal-sub"},Ct={class:"row"},kt={class:"col s12 m6"},Vt={class:"col s12 m6"},St={id:"image-link-output-section"},Nt={id:"image-tracking-text"},yt=["textContent"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Tt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{"content-title":e.translate("CoreAdminHome_ImageTracking"),anchor:"imageTracking"},{default:Object(i["withCtx"])((function(){return[ht,Object(i["createElementVNode"])("div",jt,[Object(i["createElementVNode"])("p",{innerHTML:e.imageTrackingIntro},null,8,vt),Object(i["createElementVNode"])("p",{innerHTML:e.imageTrackingIntro3},null,8,ft),Object(i["createVNode"])(l,{uicontrol:"site",name:"image-tracker-website",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"image-tracker-action-name","model-value":e.pageName,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.pageName=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:e.translate("Actions_ColumnPageName")},null,8,["model-value","disabled","introduction","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"image-tracking-goal-check","model-value":e.trackGoal,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackGoal=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_TrackAGoal")},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ot,[Object(i["createElementVNode"])("div",Ct,[Object(i["createElementVNode"])("div",kt,[Object(i["createVNode"])(l,{uicontrol:"select",name:"image-tracker-goal",options:e.siteGoals,disabled:e.isLoading,"model-value":e.trackIdGoal,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.trackIdGoal=t,e.updateTrackingCode()})},null,8,["options","disabled","model-value"])]),Object(i["createElementVNode"])("div",Vt,[Object(i["createVNode"])(l,{uicontrol:"text",name:"image-revenue","model-value":e.revenue,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.revenue=t,e.updateTrackingCode()}),disabled:e.isLoading,"full-width":!0,title:"".concat(e.translate("CoreAdminHome_WithOptionalRevenue")," ").concat(e.currentSiteCurrency)},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.trackGoal]]),Object(i["createElementVNode"])("div",St,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ImageTrackingLink")),1),Object(i["createElementVNode"])("div",Nt,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,yt),[[s,{}]])])])])]})),_:1},8,["content-title"])}function At(e,t){return Dt(e)||Ht(e,t)||wt(e,t)||Et()}function Et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function wt(e,t){if(e){if("string"===typeof e)return _t(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_t(e,t):void 0}}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,a,r=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(o=n.next()).done);i=!0)if(r.push(o.value),t&&r.length===t)break}catch(c){l=!0,a=c}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return r}}function Dt(e){if(Array.isArray(e))return e}var Bt=null,Lt=window,Ut=Lt.$,xt=window.location.host,Ft=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),It=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},data:function(){return{isLoading:!1,site:this.defaultSite,pageName:"",trackGoal:!1,trackIdGoal:null,revenue:"",trackingCode:"",sites:{},goals:{},trackingCodeAbortController:null,isHighlighting:!1}},created:function(){this.updateTrackingCode=Object(r["debounce"])(this.updateTrackingCode),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t,n,o,a=this;return this.trackIdGoal=null,Bt?t=Promise.resolve(Bt):(this.isLoading=!0,t=r["AjaxHelper"].fetch({method:"SitesManager.getCurrencySymbols",filter_limit:"-1"})),this.sites[e.id]?n=Promise.resolve(this.sites[e.id]):(this.isLoading=!0,n=r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteFromId",idSite:e.id})),this.goals[e.id]?o=Promise.resolve(this.goals[e.id]):(this.isLoading=!0,o=r["AjaxHelper"].fetch({module:"API",method:"Goals.getGoals",filter_limit:"-1",idSite:e.id})),Promise.all([t,n,o]).then((function(t){var n=At(t,3),o=n[0],r=n[1],i=n[2];a.isLoading=!1,Bt=o,a.sites[e.id]=r,a.goals[e.id]=i,a.updateTrackingCode()}))},updateTrackingCode:function(){var e=this,t={piwikUrl:"".concat(xt).concat(Ft),actionName:this.pageName,forceMatomoEndpoint:1};this.trackGoal&&this.trackIdGoal&&(t.idGoal=this.trackIdGoal,t.revenue=this.revenue),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getImageTrackingCode",idSite:this.site.id},t,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=Ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))}},computed:{currentSiteCurrency:function(){return Bt?Bt[(this.sites[this.site.id].currency||"").toUpperCase()]:""},siteGoals:function(){var e=this.goals[this.site.id];return[{key:"",value:Object(r["translate"])("UserCountryMap_None")}].concat(Object.values(e||[]).map((function(e){return{key:"".concat(e.idgoal),value:e.name}})))},imageTrackingIntro:function(){var e=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro1"),t=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro2","<code>&lt;noscript&gt;&lt;/noscript&gt;</code>");return"".concat(e," ").concat(t)},imageTrackingIntro3:function(){var e="https://matomo.org/docs/tracking-api/reference/";return Object(r["translate"])("CoreAdminHome_ImageTrackingIntro3",'<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>")}}});It.render=Tt;var Gt=It,Pt=(Object(r["createAngularJsAdapter"])({component:Gt,scope:{defaultSite:{angularJsBind:"<"}},directiveName:"matomoImageTrackingCodeGenerator"}),Object(i["createElementVNode"])("br",null,null,-1)),Mt=Object(i["createElementVNode"])("br",null,null,-1),Jt=["value"],qt={class:"action"},Rt={colspan:"7"},Wt=Object(i["createElementVNode"])("span",{class:"icon-ok"},null,-1),Kt={class:"ui-confirm",id:"confirmDeleteAllTrackingFailures"},Qt=["value"],$t=["value"],Yt={class:"ui-confirm",id:"confirmDeleteThisTrackingFailure"},zt=["value"],Xt=["value"];
+ */function Tt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("ContentBlock"),s=Object(i["resolveDirective"])("select-on-focus");return Object(i["openBlock"])(),Object(i["createBlock"])(c,{"content-title":e.translate("CoreAdminHome_ImageTracking"),anchor:"imageTracking"},{default:Object(i["withCtx"])((function(){return[ht,Object(i["createElementVNode"])("div",jt,[Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro)},null,8,vt),Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.imageTrackingIntro3)},null,8,ft),Object(i["createVNode"])(l,{uicontrol:"site",name:"image-tracker-website",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),introduction:e.translate("General_Website")},null,8,["modelValue","introduction"]),Object(i["createVNode"])(l,{uicontrol:"text",name:"image-tracker-action-name","model-value":e.pageName,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.pageName=t,e.updateTrackingCode()}),disabled:e.isLoading,introduction:e.translate("General_Options"),title:e.translate("Actions_ColumnPageName")},null,8,["model-value","disabled","introduction","title"]),Object(i["createVNode"])(l,{uicontrol:"checkbox",name:"image-tracking-goal-check","model-value":e.trackGoal,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.trackGoal=t,e.updateTrackingCode()}),disabled:e.isLoading,title:e.translate("CoreAdminHome_TrackAGoal")},null,8,["model-value","disabled","title"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",Ot,[Object(i["createElementVNode"])("div",Ct,[Object(i["createElementVNode"])("div",kt,[Object(i["createVNode"])(l,{uicontrol:"select",name:"image-tracker-goal",options:e.siteGoals,disabled:e.isLoading,"model-value":e.trackIdGoal,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.trackIdGoal=t,e.updateTrackingCode()})},null,8,["options","disabled","model-value"])]),Object(i["createElementVNode"])("div",Vt,[Object(i["createVNode"])(l,{uicontrol:"text",name:"image-revenue","model-value":e.revenue,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.revenue=t,e.updateTrackingCode()}),disabled:e.isLoading,"full-width":!0,title:"".concat(e.translate("CoreAdminHome_WithOptionalRevenue")," ").concat(e.currentSiteCurrency)},null,8,["model-value","disabled","title"])])])],512),[[i["vShow"],e.trackGoal]]),Object(i["createElementVNode"])("div",St,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ImageTrackingLink")),1),Object(i["createElementVNode"])("div",Nt,[Object(i["withDirectives"])(Object(i["createElementVNode"])("pre",{textContent:Object(i["toDisplayString"])(e.trackingCode),ref:"trackingCode"},null,8,yt),[[s,{}]])])])])]})),_:1},8,["content-title"])}function At(e,t){return Dt(e)||Ht(e,t)||wt(e,t)||Et()}function Et(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function wt(e,t){if(e){if("string"===typeof e)return _t(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?_t(e,t):void 0}}function _t(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Ht(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,a,r=[],i=!0,l=!1;try{for(n=n.call(e);!(i=(o=n.next()).done);i=!0)if(r.push(o.value),t&&r.length===t)break}catch(c){l=!0,a=c}finally{try{i||null==n["return"]||n["return"]()}finally{if(l)throw a}}return r}}function Dt(e){if(Array.isArray(e))return e}var Bt=null,Lt=window,Ut=Lt.$,xt=window.location.host,Ft=window.location.pathname.substring(0,window.location.pathname.lastIndexOf("/")),It=Object(i["defineComponent"])({props:{defaultSite:{type:Object,required:!0}},components:{ContentBlock:r["ContentBlock"],Field:T["Field"]},directives:{SelectOnFocus:r["SelectOnFocus"]},data:function(){return{isLoading:!1,site:this.defaultSite,pageName:"",trackGoal:!1,trackIdGoal:null,revenue:"",trackingCode:"",sites:{},goals:{},trackingCodeAbortController:null,isHighlighting:!1}},created:function(){this.updateTrackingCode=Object(r["debounce"])(this.updateTrackingCode),this.site&&this.site.id&&this.onSiteChanged(this.site)},watch:{site:function(e){this.onSiteChanged(e)}},methods:{onSiteChanged:function(e){var t,n,o,a=this;return this.trackIdGoal=null,Bt?t=Promise.resolve(Bt):(this.isLoading=!0,t=r["AjaxHelper"].fetch({method:"SitesManager.getCurrencySymbols",filter_limit:"-1"})),this.sites[e.id]?n=Promise.resolve(this.sites[e.id]):(this.isLoading=!0,n=r["AjaxHelper"].fetch({module:"API",method:"SitesManager.getSiteFromId",idSite:e.id})),this.goals[e.id]?o=Promise.resolve(this.goals[e.id]):(this.isLoading=!0,o=r["AjaxHelper"].fetch({module:"API",method:"Goals.getGoals",filter_limit:"-1",idSite:e.id})),Promise.all([t,n,o]).then((function(t){var n=At(t,3),o=n[0],r=n[1],i=n[2];a.isLoading=!1,Bt=o,a.sites[e.id]=r,a.goals[e.id]=i,a.updateTrackingCode()}))},updateTrackingCode:function(){var e=this,t={piwikUrl:"".concat(xt).concat(Ft),actionName:this.pageName,forceMatomoEndpoint:1};this.trackGoal&&this.trackIdGoal&&(t.idGoal=this.trackIdGoal,t.revenue=this.revenue),this.trackingCodeAbortController&&(this.trackingCodeAbortController.abort(),this.trackingCodeAbortController=null),this.trackingCodeAbortController=new AbortController,r["AjaxHelper"].post({module:"API",format:"json",method:"SitesManager.getImageTrackingCode",idSite:this.site.id},t,{abortController:this.trackingCodeAbortController}).then((function(t){e.trackingCodeAbortController=null,e.trackingCode=t.value;var n=Ut(e.$refs.trackingCode);n&&!e.isHighlighting&&(e.isHighlighting=!0,n.effect("highlight",{complete:function(){e.isHighlighting=!1}},1500))}))}},computed:{currentSiteCurrency:function(){return Bt?Bt[(this.sites[this.site.id].currency||"").toUpperCase()]:""},siteGoals:function(){var e=this.goals[this.site.id];return[{key:"",value:Object(r["translate"])("UserCountryMap_None")}].concat(Object.values(e||[]).map((function(e){return{key:"".concat(e.idgoal),value:e.name}})))},imageTrackingIntro:function(){var e=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro1"),t=Object(r["translate"])("CoreAdminHome_ImageTrackingIntro2","<code>&lt;noscript&gt;&lt;/noscript&gt;</code>");return"".concat(e," ").concat(t)},imageTrackingIntro3:function(){var e="https://matomo.org/docs/tracking-api/reference/";return Object(r["translate"])("CoreAdminHome_ImageTrackingIntro3",'<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>")}}});It.render=Tt;var Gt=It,Pt=(Object(r["createAngularJsAdapter"])({component:Gt,scope:{defaultSite:{angularJsBind:"<"}},directiveName:"matomoImageTrackingCodeGenerator"}),Object(i["createElementVNode"])("br",null,null,-1)),Mt=Object(i["createElementVNode"])("br",null,null,-1),Jt=["value"],qt={class:"action"},Rt={colspan:"7"},Wt=Object(i["createElementVNode"])("span",{class:"icon-ok"},null,-1),$t={class:"ui-confirm",id:"confirmDeleteAllTrackingFailures"},Kt=["value"],zt=["value"],Qt={class:"ui-confirm",id:"confirmDeleteThisTrackingFailure"},Yt=["value"],Xt=["value"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Zt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("ActivityIndicator"),c=Object(i["resolveComponent"])("FailureRow"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("content-table");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{class:"matomoTrackingFailures","content-title":e.translate("CoreAdminHome_TrackingFailures")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_TrackingFailuresIntroduction","2"))+" ",1),Pt,Mt,Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{class:"btn deleteAllFailures",type:"button",onClick:t[0]||(t[0]=function(t){return e.deleteAll()}),value:e.translate("CoreAdminHome_DeleteAllFailures")},null,8,Jt),[[i["vShow"],!e.isLoading&&e.failures.length>0]])]),Object(i["createVNode"])(l,{loading:e.isLoading},null,8,["loading"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("table",null,[Object(i["createElementVNode"])("thead",null,[Object(i["createElementVNode"])("tr",null,[Object(i["createElementVNode"])("th",{onClick:t[1]||(t[1]=function(t){return e.changeSortOrder("idsite")})},Object(i["toDisplayString"])(e.translate("General_Measurable")),1),Object(i["createElementVNode"])("th",{onClick:t[2]||(t[2]=function(t){return e.changeSortOrder("problem")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_Problem")),1),Object(i["createElementVNode"])("th",{onClick:t[3]||(t[3]=function(t){return e.changeSortOrder("solution")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_Solution")),1),Object(i["createElementVNode"])("th",{onClick:t[4]||(t[4]=function(t){return e.changeSortOrder("date_first_occurred")})},Object(i["toDisplayString"])(e.translate("General_Date")),1),Object(i["createElementVNode"])("th",{onClick:t[5]||(t[5]=function(t){return e.changeSortOrder("url")})},Object(i["toDisplayString"])(e.translate("Actions_ColumnPageURL")),1),Object(i["createElementVNode"])("th",{onClick:t[6]||(t[6]=function(t){return e.changeSortOrder("request_url")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_TrackingURL")),1),Object(i["createElementVNode"])("th",qt,Object(i["toDisplayString"])(e.translate("General_Action")),1)])]),Object(i["createElementVNode"])("tbody",null,[Object(i["createElementVNode"])("tr",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("td",Rt,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_NoKnownFailures"))+" ",1),Wt],512),[[i["vShow"],!e.isLoading&&0===e.failures.length]])]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.sortedFailures,(function(n,o){return Object(i["openBlock"])(),Object(i["createElementBlock"])("tr",{key:o},[Object(i["createVNode"])(c,{failure:n,onDelete:t[7]||(t[7]=function(t){return e.deleteFailure(t.idSite,t.idFailure)})},null,8,["failure"])])})),128))])],512),[[d]]),Object(i["createElementVNode"])("div",Kt,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ConfirmDeleteAllTrackingFailures")),1),Object(i["createElementVNode"])("input",{type:"button",role:"yes",value:e.translate("General_Yes")},null,8,Qt),Object(i["createElementVNode"])("input",{type:"button",role:"no",value:e.translate("General_No")},null,8,$t)]),Object(i["createElementVNode"])("div",Yt,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ConfirmDeleteThisTrackingFailure")),1),Object(i["createElementVNode"])("input",{type:"button",role:"yes",value:e.translate("General_Yes")},null,8,zt),Object(i["createElementVNode"])("input",{type:"button",role:"no",value:e.translate("General_No")},null,8,Xt)])]})),_:1},8,["content-title"])}var en=[":href"],tn={class:"datetime"},nn=["title"],on=["title"];function an(e,t,n,o,a,r){return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.site_name)+" ("+Object(i["toDisplayString"])(e.translate("General_Id"))+" "+Object(i["toDisplayString"])(e.failure.idsite)+")",1),Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.problem),1),Object(i["createElementVNode"])("td",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.failure.solution)+" ",1),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{rel:"noopener noreferrer",":href":e.failure.solution_url},Object(i["toDisplayString"])(e.translate("CoreAdminHome_LearnMore")),9,en),[[i["vShow"],e.failure.solution_url]])]),Object(i["createElementVNode"])("td",tn,Object(i["toDisplayString"])(e.failure.pretty_date_first_occurred),1),Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.url),1),Object(i["createElementVNode"])("td",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("span",{onClick:t[0]||(t[0]=function(t){return e.showFullRequestUrl=!0}),title:e.translate("CoreHome_ClickToSeeFullInformation")},Object(i["toDisplayString"])(e.limtedRequestUrl)+"...",9,nn),[[i["vShow"],!e.showFullRequestUrl]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.failure.request_url),513),[[i["vShow"],e.failure.showFullRequestUrl]])]),Object(i["createElementVNode"])("td",null,[Object(i["createElementVNode"])("span",{class:"table-action icon-delete",onClick:t[1]||(t[1]=function(t){return e.deleteFailure(e.failure.idsite,e.failure.idfailure)}),title:e.translate("General_Delete")},null,8,on)])],64)}var rn=Object(i["defineComponent"])({props:{failure:{type:Object,required:!0}},emits:["delete"],data:function(){return{showFullRequestUrl:!1}},computed:{limtedRequestUrl:function(){return this.failure.request_url.substring(0,100)}},methods:{deleteFailure:function(e,t){this.$emit("delete",{idSite:e,idFailure:t})}}});rn.render=an;var ln=rn;function cn(e){return mn(e)||un(e)||dn(e)||sn()}function sn(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function dn(e,t){if(e){if("string"===typeof e)return gn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?gn(e,t):void 0}}function un(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function mn(e){if(Array.isArray(e))return gn(e)}function gn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var pn=Object(i["defineComponent"])({components:{ContentBlock:r["ContentBlock"],ActivityIndicator:r["ActivityIndicator"],FailureRow:ln},directives:{ContentTable:r["ContentTable"]},data:function(){return{failures:[],sortColumn:"idsite",sortReverse:!1,isLoading:!1}},created:function(){this.fetchAll()},methods:{changeSortOrder:function(e){this.sortColumn===e?this.sortReverse=!this.sortReverse:this.sortColumn=e},fetchAll:function(){var e=this;this.failures=[],this.isLoading=!0,r["AjaxHelper"].fetch({method:"CoreAdminHome.getTrackingFailures",filter_limit:"-1"}).then((function(t){e.failures=t,e.isLoading=!1})).finally((function(){e.isLoading=!1}))},deleteAll:function(){var e=this;r["Matomo"].helper.modalConfirm("#confirmDeleteAllTrackingFailures",{yes:function(){e.failures=[],r["AjaxHelper"].fetch({method:"CoreAdminHome.deleteAllTrackingFailures"}).then((function(){e.fetchAll()}))}})},deleteFailure:function(e,t){var n=this;r["Matomo"].helper.modalConfirm("#confirmDeleteThisTrackingFailure",{yes:function(){n.failures=[],r["AjaxHelper"].fetch({method:"CoreAdminHome.deleteTrackingFailure",idSite:e,idFailure:t}).then((function(){n.fetchAll()}))}})}},computed:{sortedFailures:function(){var e=this.sortColumn,t=cn(this.failures);return this.sortReverse?t.sort((function(t,n){return t[e]>n[e]?-1:t[e]<n[e]?1:0})):t.sort((function(t,n){return t[e]<n[e]?-1:t[e]>n[e]?1:0})),t}}});pn.render=Zt;var bn=pn;
+ */function Zt(e,t,n,o,a,r){var l=Object(i["resolveComponent"])("ActivityIndicator"),c=Object(i["resolveComponent"])("FailureRow"),s=Object(i["resolveComponent"])("ContentBlock"),d=Object(i["resolveDirective"])("content-table");return Object(i["openBlock"])(),Object(i["createBlock"])(s,{class:"matomoTrackingFailures","content-title":e.translate("CoreAdminHome_TrackingFailures")},{default:Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_TrackingFailuresIntroduction","2"))+" ",1),Pt,Mt,Object(i["withDirectives"])(Object(i["createElementVNode"])("input",{class:"btn deleteAllFailures",type:"button",onClick:t[0]||(t[0]=function(t){return e.deleteAll()}),value:e.translate("CoreAdminHome_DeleteAllFailures")},null,8,Jt),[[i["vShow"],!e.isLoading&&e.failures.length>0]])]),Object(i["createVNode"])(l,{loading:e.isLoading},null,8,["loading"]),Object(i["withDirectives"])(Object(i["createElementVNode"])("table",null,[Object(i["createElementVNode"])("thead",null,[Object(i["createElementVNode"])("tr",null,[Object(i["createElementVNode"])("th",{onClick:t[1]||(t[1]=function(t){return e.changeSortOrder("idsite")})},Object(i["toDisplayString"])(e.translate("General_Measurable")),1),Object(i["createElementVNode"])("th",{onClick:t[2]||(t[2]=function(t){return e.changeSortOrder("problem")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_Problem")),1),Object(i["createElementVNode"])("th",{onClick:t[3]||(t[3]=function(t){return e.changeSortOrder("solution")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_Solution")),1),Object(i["createElementVNode"])("th",{onClick:t[4]||(t[4]=function(t){return e.changeSortOrder("date_first_occurred")})},Object(i["toDisplayString"])(e.translate("General_Date")),1),Object(i["createElementVNode"])("th",{onClick:t[5]||(t[5]=function(t){return e.changeSortOrder("url")})},Object(i["toDisplayString"])(e.translate("Actions_ColumnPageURL")),1),Object(i["createElementVNode"])("th",{onClick:t[6]||(t[6]=function(t){return e.changeSortOrder("request_url")})},Object(i["toDisplayString"])(e.translate("CoreAdminHome_TrackingURL")),1),Object(i["createElementVNode"])("th",qt,Object(i["toDisplayString"])(e.translate("General_Action")),1)])]),Object(i["createElementVNode"])("tbody",null,[Object(i["createElementVNode"])("tr",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("td",Rt,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("CoreAdminHome_NoKnownFailures"))+" ",1),Wt],512),[[i["vShow"],!e.isLoading&&0===e.failures.length]])]),(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.sortedFailures,(function(n,o){return Object(i["openBlock"])(),Object(i["createElementBlock"])("tr",{key:o},[Object(i["createVNode"])(c,{failure:n,onDelete:t[7]||(t[7]=function(t){return e.deleteFailure(t.idSite,t.idFailure)})},null,8,["failure"])])})),128))])],512),[[d]]),Object(i["createElementVNode"])("div",$t,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ConfirmDeleteAllTrackingFailures")),1),Object(i["createElementVNode"])("input",{type:"button",role:"yes",value:e.translate("General_Yes")},null,8,Kt),Object(i["createElementVNode"])("input",{type:"button",role:"no",value:e.translate("General_No")},null,8,zt)]),Object(i["createElementVNode"])("div",Qt,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("CoreAdminHome_ConfirmDeleteThisTrackingFailure")),1),Object(i["createElementVNode"])("input",{type:"button",role:"yes",value:e.translate("General_Yes")},null,8,Yt),Object(i["createElementVNode"])("input",{type:"button",role:"no",value:e.translate("General_No")},null,8,Xt)])]})),_:1},8,["content-title"])}var en=[":href"],tn={class:"datetime"},nn=["title"],on=["title"];function an(e,t,n,o,a,r){return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.site_name)+" ("+Object(i["toDisplayString"])(e.translate("General_Id"))+" "+Object(i["toDisplayString"])(e.failure.idsite)+")",1),Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.problem),1),Object(i["createElementVNode"])("td",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.failure.solution)+" ",1),Object(i["withDirectives"])(Object(i["createElementVNode"])("a",{rel:"noopener noreferrer",":href":e.failure.solution_url},Object(i["toDisplayString"])(e.translate("CoreAdminHome_LearnMore")),9,en),[[i["vShow"],e.failure.solution_url]])]),Object(i["createElementVNode"])("td",tn,Object(i["toDisplayString"])(e.failure.pretty_date_first_occurred),1),Object(i["createElementVNode"])("td",null,Object(i["toDisplayString"])(e.failure.url),1),Object(i["createElementVNode"])("td",null,[Object(i["withDirectives"])(Object(i["createElementVNode"])("span",{onClick:t[0]||(t[0]=function(t){return e.showFullRequestUrl=!0}),title:e.translate("CoreHome_ClickToSeeFullInformation")},Object(i["toDisplayString"])(e.limtedRequestUrl)+"...",9,nn),[[i["vShow"],!e.showFullRequestUrl]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null,Object(i["toDisplayString"])(e.failure.request_url),513),[[i["vShow"],e.failure.showFullRequestUrl]])]),Object(i["createElementVNode"])("td",null,[Object(i["createElementVNode"])("span",{class:"table-action icon-delete",onClick:t[1]||(t[1]=function(t){return e.deleteFailure(e.failure.idsite,e.failure.idfailure)}),title:e.translate("General_Delete")},null,8,on)])],64)}var rn=Object(i["defineComponent"])({props:{failure:{type:Object,required:!0}},emits:["delete"],data:function(){return{showFullRequestUrl:!1}},computed:{limtedRequestUrl:function(){return this.failure.request_url.substring(0,100)}},methods:{deleteFailure:function(e,t){this.$emit("delete",{idSite:e,idFailure:t})}}});rn.render=an;var ln=rn;function cn(e){return mn(e)||un(e)||dn(e)||sn()}function sn(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function dn(e,t){if(e){if("string"===typeof e)return gn(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?gn(e,t):void 0}}function un(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function mn(e){if(Array.isArray(e))return gn(e)}function gn(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var pn=Object(i["defineComponent"])({components:{ContentBlock:r["ContentBlock"],ActivityIndicator:r["ActivityIndicator"],FailureRow:ln},directives:{ContentTable:r["ContentTable"]},data:function(){return{failures:[],sortColumn:"idsite",sortReverse:!1,isLoading:!1}},created:function(){this.fetchAll()},methods:{changeSortOrder:function(e){this.sortColumn===e?this.sortReverse=!this.sortReverse:this.sortColumn=e},fetchAll:function(){var e=this;this.failures=[],this.isLoading=!0,r["AjaxHelper"].fetch({method:"CoreAdminHome.getTrackingFailures",filter_limit:"-1"}).then((function(t){e.failures=t,e.isLoading=!1})).finally((function(){e.isLoading=!1}))},deleteAll:function(){var e=this;r["Matomo"].helper.modalConfirm("#confirmDeleteAllTrackingFailures",{yes:function(){e.failures=[],r["AjaxHelper"].fetch({method:"CoreAdminHome.deleteAllTrackingFailures"}).then((function(){e.fetchAll()}))}})},deleteFailure:function(e,t){var n=this;r["Matomo"].helper.modalConfirm("#confirmDeleteThisTrackingFailure",{yes:function(){n.failures=[],r["AjaxHelper"].fetch({method:"CoreAdminHome.deleteTrackingFailure",idSite:e,idFailure:t}).then((function(){n.fetchAll()}))}})}},computed:{sortedFailures:function(){var e=this.sortColumn,t=cn(this.failures);return this.sortReverse?t.sort((function(t,n){return t[e]>n[e]?-1:t[e]<n[e]?1:0})):t.sort((function(t,n){return t[e]<n[e]?-1:t[e]>n[e]?1:0})),t}}});pn.render=Zt;var bn=pn;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue b/plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue
index 88f6be0b23..fdde5d2fe4 100644
--- a/plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue
+++ b/plugins/CoreAdminHome/vue/src/ArchivingSettings/ArchivingSettings.vue
@@ -42,14 +42,14 @@
<span>{{ translate('General_No') }}</span>
<span
class="form-description"
- v-html="archivingTriggerDesc"
+ v-html="$sanitize(archivingTriggerDesc)"
style="margin-left: 4px;"
>
</span>
</label>
</p>
</div><div class="col s12 m6">
- <div class="form-help" v-html="archivingInlineHelp">
+ <div class="form-help" v-html="$sanitize(archivingInlineHelp)">
</div>
</div>
</div>
diff --git a/plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue b/plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue
index f15dbea525..631250639c 100644
--- a/plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue
+++ b/plugins/CoreAdminHome/vue/src/BrandingSettings/BrandingSettings.vue
@@ -83,7 +83,7 @@
</div>
<div v-if="!logosWriteable">
- <div class="alert alert-warning" v-html="logosNotWriteableWarning"/>
+ <div class="alert alert-warning" v-html="$sanitize(logosNotWriteableWarning)"/>
</div>
</div>
<div v-if="!fileUploadEnabled">
diff --git a/plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue b/plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue
index 67b1d3d5e1..0e8f02e1d8 100644
--- a/plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue
+++ b/plugins/CoreAdminHome/vue/src/ImageTrackingCodeGenerator/ImageTrackingCodeGenerator.vue
@@ -13,8 +13,8 @@
<div id="image-tracking-code-options">
- <p v-html="imageTrackingIntro"></p>
- <p v-html="imageTrackingIntro3"></p>
+ <p v-html="$sanitize(imageTrackingIntro)"></p>
+ <p v-html="$sanitize(imageTrackingIntro3)"></p>
<!-- website -->
<Field
diff --git a/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue b/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
index 491a92a5d0..de0dfb784c 100644
--- a/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
+++ b/plugins/CoreAdminHome/vue/src/JsTrackingCodeGenerator/JsTrackingCodeGenerator.vue
@@ -14,12 +14,12 @@
{{ translate('CoreAdminHome_JSTrackingIntro1') }}
<br/><br/>
{{ translate('CoreAdminHome_JSTrackingIntro2') }}
- <span v-html="jsTrackingIntro3a"></span>
- <span v-html="' ' + jsTrackingIntro3b"></span>
+ <span v-html="$sanitize(jsTrackingIntro3a)"></span>
+ <span v-html="$sanitize(' ' + jsTrackingIntro3b)"></span>
<br/><br/>
- <span v-html="jsTrackingIntro4a"></span>
+ <span v-html="$sanitize(jsTrackingIntro4a)"></span>
<br/><br/>
- <span v-html="jsTrackingIntro5"></span>
+ <span v-html="$sanitize(jsTrackingIntro5)"></span>
<br><br/>
{{ translate('SitesManager_InstallationGuides') }} :
<a href="https://matomo.org/faq/new-to-piwik/how-do-i-install-the-matomo-tracking-code-on-wordpress/"
@@ -68,8 +68,8 @@
<div id="optional-js-tracking-options">
<!-- track across all subdomains -->
<div id="jsTrackAllSubdomainsInlineHelp" class="inline-help-node">
- <span v-html="mergeSubdomainsDesc"></span>
- <span v-html="learnMoreText"></span>
+ <span v-html="$sanitize(mergeSubdomainsDesc)"></span>
+ <span v-html="$sanitize(learnMoreText)"></span>
</div>
<Field
@@ -233,7 +233,7 @@
<!-- custom campaign name/keyword query params -->
<div id="jsTrackCampaignParamsInlineHelp"
class="inline-help-node"
- v-html="jsTrackCampaignParamsInlineHelp">
+ v-html="$sanitize(jsTrackCampaignParamsInlineHelp)">
</div>
<Field
diff --git a/plugins/CoreHome/Columns/ServerMinute.php b/plugins/CoreHome/Columns/ServerMinute.php
index 8f2c761d3f..ec1128351f 100644
--- a/plugins/CoreHome/Columns/ServerMinute.php
+++ b/plugins/CoreHome/Columns/ServerMinute.php
@@ -16,7 +16,7 @@ class ServerMinute extends ActionDimension
protected $columnName = 'server_time';
protected $segmentName = 'actionServerMinute';
protected $sqlSegment = 'MINUTE(log_link_visit_action.server_time)';
- protected $nameSingular = 'VisitTime_ColumnServerMinute';
+ protected $nameSingular = 'VisitTime_ColumnUTCMinute';
protected $type = self::TYPE_DATETIME;
protected $acceptValues = '0, 1, 2, 3, ..., 56, 57, 58, 59';
diff --git a/plugins/CoreHome/Columns/ServerTime.php b/plugins/CoreHome/Columns/ServerTime.php
index d2005f11fa..9c41d89db5 100644
--- a/plugins/CoreHome/Columns/ServerTime.php
+++ b/plugins/CoreHome/Columns/ServerTime.php
@@ -23,7 +23,7 @@ class ServerTime extends ActionDimension
protected $columnType = 'DATETIME NOT NULL';
protected $segmentName = 'actionServerHour';
protected $sqlSegment = 'HOUR(log_link_visit_action.server_time)';
- protected $nameSingular = 'VisitTime_ColumnServerHour';
+ protected $nameSingular = 'VisitTime_ColumnSiteHour';
protected $type = self::TYPE_DATETIME;
public function __construct()
diff --git a/plugins/CoreHome/Columns/VisitFirstActionMinute.php b/plugins/CoreHome/Columns/VisitFirstActionMinute.php
index 1db6e914f4..47e2d0ff66 100644
--- a/plugins/CoreHome/Columns/VisitFirstActionMinute.php
+++ b/plugins/CoreHome/Columns/VisitFirstActionMinute.php
@@ -23,7 +23,7 @@ class VisitFirstActionMinute extends VisitDimension
protected $sqlSegment = 'MINUTE(log_visit.visit_first_action_time)';
protected $segmentName = 'visitStartServerMinute';
protected $acceptValues = '0, 1, 2, 3, ..., 56, 57, 58, 59';
- protected $nameSingular = 'VisitTime_ColumnVisitStartServerMinute';
+ protected $nameSingular = 'VisitTime_ColumnVisitStartUTCMinute';
public function __construct()
{
diff --git a/plugins/CoreHome/Columns/VisitFirstActionTime.php b/plugins/CoreHome/Columns/VisitFirstActionTime.php
index 5f76c50763..56ee0231ed 100644
--- a/plugins/CoreHome/Columns/VisitFirstActionTime.php
+++ b/plugins/CoreHome/Columns/VisitFirstActionTime.php
@@ -26,7 +26,7 @@ class VisitFirstActionTime extends VisitDimension
protected $sqlSegment = 'HOUR(log_visit.visit_first_action_time)';
protected $segmentName = 'visitStartServerHour';
protected $acceptValues = '0, 1, 2, 3, ..., 20, 21, 22, 23';
- protected $nameSingular = 'VisitTime_ColumnVisitStartServerHour';
+ protected $nameSingular = 'VisitTime_ColumnVisitStartSiteHour';
public function __construct()
{
diff --git a/plugins/CoreHome/Columns/VisitLastActionDate.php b/plugins/CoreHome/Columns/VisitLastActionDate.php
index 6b2fd67563..9f0d1cdaf9 100644
--- a/plugins/CoreHome/Columns/VisitLastActionDate.php
+++ b/plugins/CoreHome/Columns/VisitLastActionDate.php
@@ -19,7 +19,7 @@ class VisitLastActionDate extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerDate';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerDate';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCDate';
protected $sqlSegment = 'DATE(log_visit.visit_last_action_time)';
protected $acceptValues = '2018-12-31, 2018-03-20, ...';
diff --git a/plugins/CoreHome/Columns/VisitLastActionDayOfMonth.php b/plugins/CoreHome/Columns/VisitLastActionDayOfMonth.php
index e3ef6bd8a1..c263c17cf3 100644
--- a/plugins/CoreHome/Columns/VisitLastActionDayOfMonth.php
+++ b/plugins/CoreHome/Columns/VisitLastActionDayOfMonth.php
@@ -18,7 +18,7 @@ class VisitLastActionDayOfMonth extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerDayOfMonth';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerDayOfMonth';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCDayOfMonth';
protected $sqlSegment = 'DAYOFMONTH(log_visit.visit_last_action_time)';
protected $acceptValues = '0, 1, 2, 3, ..., 29, 30, 31';
diff --git a/plugins/CoreHome/Columns/VisitLastActionDayOfWeek.php b/plugins/CoreHome/Columns/VisitLastActionDayOfWeek.php
index 81c5df338e..9bd42bdc0d 100644
--- a/plugins/CoreHome/Columns/VisitLastActionDayOfWeek.php
+++ b/plugins/CoreHome/Columns/VisitLastActionDayOfWeek.php
@@ -20,7 +20,7 @@ class VisitLastActionDayOfWeek extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerDayOfWeek';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerDayOfWeek';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCDayOfWeek';
protected $sqlSegment = 'DAYOFWEEK(log_visit.visit_last_action_time)';
protected $acceptValues = '1, 2, 3, 4, 5, 6, 7';
diff --git a/plugins/CoreHome/Columns/VisitLastActionDayOfYear.php b/plugins/CoreHome/Columns/VisitLastActionDayOfYear.php
index b00cea3c08..5e3449851f 100644
--- a/plugins/CoreHome/Columns/VisitLastActionDayOfYear.php
+++ b/plugins/CoreHome/Columns/VisitLastActionDayOfYear.php
@@ -18,7 +18,7 @@ class VisitLastActionDayOfYear extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerDayOfYear';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerDayOfYear';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCDayOfYear';
protected $sqlSegment = 'DAYOFYEAR(log_visit.visit_last_action_time)';
protected $acceptValues = '1, 2, 3, 4, ..., 365, 366';
diff --git a/plugins/CoreHome/Columns/VisitLastActionMinute.php b/plugins/CoreHome/Columns/VisitLastActionMinute.php
index b3b50fbd52..a465916cbd 100644
--- a/plugins/CoreHome/Columns/VisitLastActionMinute.php
+++ b/plugins/CoreHome/Columns/VisitLastActionMinute.php
@@ -25,7 +25,7 @@ class VisitLastActionMinute extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerMinute';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerMinute';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCMinute';
protected $sqlSegment = 'MINUTE(log_visit.visit_last_action_time)';
protected $acceptValues = '0, 1, 2, 3, ..., 56, 57, 58, 59';
diff --git a/plugins/CoreHome/Columns/VisitLastActionMonth.php b/plugins/CoreHome/Columns/VisitLastActionMonth.php
index 92094685e2..369d8bf776 100644
--- a/plugins/CoreHome/Columns/VisitLastActionMonth.php
+++ b/plugins/CoreHome/Columns/VisitLastActionMonth.php
@@ -20,7 +20,7 @@ class VisitLastActionMonth extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerMonth';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerMonth';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCMonth';
protected $sqlSegment = 'MONTH(log_visit.visit_last_action_time)';
protected $acceptValues = '1, 2, 3, ..., 11, 12';
diff --git a/plugins/CoreHome/Columns/VisitLastActionQuarter.php b/plugins/CoreHome/Columns/VisitLastActionQuarter.php
index f55daec3e7..1966169456 100644
--- a/plugins/CoreHome/Columns/VisitLastActionQuarter.php
+++ b/plugins/CoreHome/Columns/VisitLastActionQuarter.php
@@ -18,7 +18,7 @@ class VisitLastActionQuarter extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerQuarter';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerQuarter';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCQuarter';
protected $sqlSegment = 'QUARTER(log_visit.visit_last_action_time)';
protected $acceptValues = '1, 2, 3, 4';
diff --git a/plugins/CoreHome/Columns/VisitLastActionSecond.php b/plugins/CoreHome/Columns/VisitLastActionSecond.php
index 34dd1552bd..2915898832 100644
--- a/plugins/CoreHome/Columns/VisitLastActionSecond.php
+++ b/plugins/CoreHome/Columns/VisitLastActionSecond.php
@@ -18,7 +18,7 @@ class VisitLastActionSecond extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerSecond';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerSecond';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCSecond';
protected $sqlSegment = 'SECOND(log_visit.visit_last_action_time)';
protected $acceptValues = '0, 1, 2, 3, ..., 58, 59';
diff --git a/plugins/CoreHome/Columns/VisitLastActionTime.php b/plugins/CoreHome/Columns/VisitLastActionTime.php
index 2ec021f68f..f40643f99c 100644
--- a/plugins/CoreHome/Columns/VisitLastActionTime.php
+++ b/plugins/CoreHome/Columns/VisitLastActionTime.php
@@ -32,7 +32,7 @@ class VisitLastActionTime extends VisitDimension
{
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerHour';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndSiteHour';
protected $sqlSegment = 'HOUR(log_visit.visit_last_action_time)';
protected $segmentName = 'visitServerHour';
protected $acceptValues = '0, 1, 2, 3, ..., 20, 21, 22, 23';
diff --git a/plugins/CoreHome/Columns/VisitLastActionWeekOfYear.php b/plugins/CoreHome/Columns/VisitLastActionWeekOfYear.php
index 2f3db58d97..44c21a067f 100644
--- a/plugins/CoreHome/Columns/VisitLastActionWeekOfYear.php
+++ b/plugins/CoreHome/Columns/VisitLastActionWeekOfYear.php
@@ -18,7 +18,7 @@ class VisitLastActionWeekOfYear extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerWeekOfYear';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerWeekOfYear';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCWeekOfYear';
protected $sqlSegment = 'WEEKOFYEAR(log_visit.visit_last_action_time)';
protected $acceptValues = '1, 2, 3, 4, ..., 51, 52, 53';
diff --git a/plugins/CoreHome/Columns/VisitLastActionYear.php b/plugins/CoreHome/Columns/VisitLastActionYear.php
index ffc3d2929e..18d05db6e8 100644
--- a/plugins/CoreHome/Columns/VisitLastActionYear.php
+++ b/plugins/CoreHome/Columns/VisitLastActionYear.php
@@ -18,7 +18,7 @@ class VisitLastActionYear extends VisitDimension
protected $columnName = 'visit_last_action_time';
protected $type = self::TYPE_DATETIME;
protected $segmentName = 'visitEndServerYear';
- protected $nameSingular = 'VisitTime_ColumnVisitEndServerYear';
+ protected $nameSingular = 'VisitTime_ColumnVisitEndUTCYear';
protected $sqlSegment = 'YEAR(log_visit.visit_last_action_time)';
protected $acceptValues = '2016, 2017, 2018, ..., 9998, 9999';
diff --git a/plugins/CoreHome/javascripts/broadcast.js b/plugins/CoreHome/javascripts/broadcast.js
index fe3b262b32..44ace8fe19 100644
--- a/plugins/CoreHome/javascripts/broadcast.js
+++ b/plugins/CoreHome/javascripts/broadcast.js
@@ -504,8 +504,6 @@ var broadcast = {
* handler.
*/
propagateNewPopoverParameter: function (handlerName, value) {
- var $location = angular.element(document).injector().get('$location');
-
var popover = '';
if (handlerName && '' != value && 'undefined' != typeof value) {
popover = handlerName + ':' + value;
@@ -524,15 +522,10 @@ var broadcast = {
}
}
- var $window = piwikHelper.getAngularDependency('$window');
- var urlStr = $window.location.hash;
- urlStr = broadcast.updateParamValue('popover=' + encodeURIComponent(popover), urlStr);
- urlStr = urlStr.replace(/^[#?]+/, '');
- $location.search(urlStr);
-
- setTimeout(function () {
- angular.element(document).injector().get('$rootScope').$apply();
- }, 1);
+ var MatomoUrl = window.CoreHome.MatomoUrl;
+ MatomoUrl.updateHash(
+ Object.assign({}, MatomoUrl.hashParsed.value, { popover }),
+ );
},
/**
diff --git a/plugins/CoreHome/lang/fr.json b/plugins/CoreHome/lang/fr.json
index d505dd0cd4..88c2350c15 100644
--- a/plugins/CoreHome/lang/fr.json
+++ b/plugins/CoreHome/lang/fr.json
@@ -9,7 +9,7 @@
"CheckForUpdates": "Vérifier les mises à jour",
"CheckPiwikOut": "Vérifiez sur Matomo !",
"ChooseX": "Choisir %1$s",
- "ClickRowToExpandOrContract": "Cliquez sur cette rangée pour afficher ou masquer le sous-tableau",
+ "ClickRowToExpandOrContract": "Cliquez sur cette rangée pour afficher ou masquer le sous-tableau.",
"ClickToEditX": "Cliquer pour éditer %s",
"ClickToSeeFullInformation": "Cliquer pour voir le détail de l'information",
"CloseSearch": "Recherche précise",
@@ -39,8 +39,8 @@
"ExitZenMode": "Quitter le mode Zen (afficher les menus)",
"ExpandSubtables": "Élargir les sous-tables",
"ExportFormat": "Format d'export",
- "ExportTooltip": "Remarque : pour utiliser l'URL d'export générée, vous devez spécifier un jeton d'authentification d'application. Vous pouvez configurer ces jetons dans Administration -> Sécurité -> Jetons d'authentification.",
- "ExportTooltipWithLink": "Remarque : pour utiliser l'URL d'export générée, vous devez spécifier un jeton d'authentification d'application. Vous pouvez configurer ces jetons dans %1$s[Administration -> Sécurité -> Jetons d'authentification]%2$s. Remplacez %3$s dans l'URL d'export par votre jeton. Attention : ne partagez jamais l'URL contenant votre jeton avec quelqu'un d'autre.",
+ "ExportTooltip": "Remarque : pour utiliser l'URL d'export générée, vous devez spécifier un jeton d'authentification d'application. Vous pouvez configurer ces jetons dans Administration -&gt; Sécurité -&gt; Jetons d'authentification.",
+ "ExportTooltipWithLink": "Remarque : pour utiliser l'URL d'export générée, vous devez spécifier un jeton d'authentification d'application. Vous pouvez configurer ces jetons dans %1$s[Administration -&gt; Sécurité -&gt; Jetons d'authentification]%2$s. Remplacez %3$s dans l'URL d'export par votre jeton. Attention : ne partagez jamais l'URL contenant votre jeton avec quelqu'un d'autre.",
"ExternalHelp": "Aide (nouvel onglet)",
"FlattenDataTable": "Le rapport est hiérarchique %s L'aplatir",
"FlattenReport": "Aplatir le rapport",
@@ -53,7 +53,7 @@
"InjectedHostNonSuperUserWarning": "%1$sCliquez ici pour accéder à Matomo de manière sécurisé%2$s et supprimer cette alerte. Vous pouvez aussi contacter votre administrateur Matomo and l'avertir de ce problème (%3$sCliquez ici pour envoyer un message%4$s).",
"InjectedHostSuperUserWarning": "Matomo est probablement mal configuré (par exemple, si Matomo a récemment été déplacé vers un nouveau serveur ou une nouvelle URL). Vous pouvez ou %1$scliquer ici et l'ajouter %2$s en tant que nom d'hôte Matomo valide (si vous lui faites confiance)%3$s, ou %4$s cliquer ici et accéder %5$s à Matomo de manière sécurisée%6$s.",
"InjectedHostWarningIntro": "Vous accédez maintenant à Matomo depuis %1$s, mais Matomo a été configuré pour s'exécuter à cette adresse : %2$s.",
- "JavascriptDisabled": "JavaScript doit être activé pour que vous puissiez utiliser Matomo de manière basique.<br />Cependant, il semble que JasvaScript ne soit pas supporté ou soit désactivé sur votre navigateur.<br />Pour utiliser l'interface basique, activez JavaScript en modifiant les options de votre navigateur, ensuite %1$sessayez encore%2$s.<br />",
+ "JavascriptDisabled": "JavaScript doit être activé pour que vous puissiez utiliser Matomo de manière standard.<br>Cependant, il semble que JasvaScript ne soit pas supporté ou soit désactivé sur votre navigateur.<br>Pour utiliser l'interface standard, activez JavaScript en modifiant les options de votre navigateur, ensuite %1$sessayez encore%2$s.<br>",
"JsDidntLoad": "Votre navigateur n'a pas été en mesure de charger les scripts de la page.",
"LeadingAnalyticsPlatformRespectsYourPrivacy": "La première plateforme d'analyses statistiques libre qui respecte votre vie privée.",
"MacPageDown": "Fn + flèche Droite",
@@ -79,7 +79,7 @@
"ReportGeneratedXAgo": "Rapport généré il y a %s",
"ReportType": "Type de rapport",
"ReportWithMetadata": "Rapport avec métadonnées",
- "ReportingCategoryHelpPrefix": "Comment la page de rapport \"%1$s > %2$s\" m'a-t-elle aidée ?",
+ "ReportingCategoryHelpPrefix": "Comment la page de rapport \"%1$s &gt; %2$s\" m'a-t-elle aidée ?",
"RowLimit": "Limite de rang",
"SearchOnMatomo": "Rechercher '%1$s' sur Matomo.org",
"SeeAvailableVersions": "Voir les versions disponibles",
diff --git a/plugins/CoreHome/lang/ga.json b/plugins/CoreHome/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/CoreHome/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/CoreHome/lang/hi.json b/plugins/CoreHome/lang/hi.json
index 52aa7e356d..21b90c82ab 100644
--- a/plugins/CoreHome/lang/hi.json
+++ b/plugins/CoreHome/lang/hi.json
@@ -1,17 +1,27 @@
{
"CoreHome": {
"CategoryNoData": "इस श्रेणी में कोई डेटा नहीं. \"सभी लोगों को शामिल\" करने का प्रयास करें.",
+ "ChangePeriod": "अवधि बदलें",
+ "ChangeVisualization": "विज़ुअलाइज़ेशन बदलें",
"CheckForUpdates": "अद्यतन देखें",
"CheckPiwikOut": "Matomo जाँच करें!",
+ "ChooseX": "%1$s चुनें",
"ClickToEditX": "%s को संपादित करने के लिए क्लिक करें",
+ "ClickToSeeFullInformation": "पूरी जानकारी देखने के लिए क्लिक करें",
+ "CloseSearch": "खोज बंद करें",
"CloseWidgetDirections": "आप विजेट के शीर्ष पर 'X' आइकन पर क्लिक करके इस विजेट बंद कर सकते हैं.",
"DataForThisReportHasBeenPurged": "इस रिपोर्ट के लिए डेटा %s महीनोंकी तुलना में अधिक पुराना है और शुद्ध किया गया है.",
"DataTableExcludeAggregateRows": "कुल पंक्तियों %s को दिखाया जाता है उन्हें छुपाने",
+ "DataTableHowToSearch": "Enter दबाएँ या खोज करने के लिए खोज चिह्न क्लिक करें",
"DataTableIncludeAggregateRows": "कुल पंक्तियों को छिपा रहे हैं, %s उन्हें दिखाओ",
+ "DateInvalid": "दिया गया दिनांक और अवधि संयोजन अमान्य है। कृपया दिनांक चयनकर्ता में एक मान्य दिनांक चुनें।",
"Default": "डिफ़ॉल्ट",
"DonateCall1": "Matomo उपयोग करने के लिए आपके कुछ भी खर्च नहीं होंगे, लेकिन यह मतलब नहीं बनाने के लिए कोई खर्च नहीं लगता है.",
"DonateCall2": "Matomo के बढ़ने और फूलने के लिए आपके निरंतर समर्थन की जरूरत है.",
+ "EndShortcut": "समाप्ति",
+ "EnterZenMode": "ज़ेन मोड में प्रवेश करें (मेन्यू छुपाएं)",
"ExcludeRowsWithLowPopulation": "सभी पंक्तियों %s को दिखाया जाता है कम आबादी बाहर निकालें",
+ "ExitZenMode": "ज़ेन मोड से बाहर निकलें (मेन्यू दिखाएँ)",
"ExternalHelp": "सहायता (नए टैब में खुलती है)",
"FlattenDataTable": "रिपोर्ट श्रेणीबद्ध %s है यह फ्लैट बनाओ है",
"IncludeRowsWithLowPopulation": "कम आबादी के साथ पंक्तियाँ छिपे %s हुए हैं, सभी पंक्तियों दिखाएँ",
@@ -29,12 +39,12 @@
"ShowJSCode": "सम्मिलित करने के लिए जावास्क्रिप्ट कोड दिखाएँ",
"SubscribeAndBecomePiwikSupporter": "एक Matomo समर्थक बनने के लिए एक सुरक्षित क्रेडिट कार्ड भुगतान पृष्ठ (पेपैल) के लिए आगे बढ़ें!",
"SupportPiwik": "पिविक को अपना सहयोग दें।",
+ "SystemSummaryPhpVersion": "PHP संस्करण",
"TableNoData": "इस तालिका के लिए कोई डेटा नहीं है .",
"ThereIsNoDataForThisReport": "इस रिपोर्ट के लिए कोई डाटा नहीं है.",
"UnFlattenDataTable": "रिपोर्ट फ्लैट %s है इसे श्रेणीबद्ध करें",
"ViewAllPiwikVideoTutorials": "सभी Matomo वीडियो ट्यूटोरियल देखें",
"WebAnalyticsReports": "वेब विश्लेषिकी रिपोर्टें",
- "YouAreUsingTheLatestVersion": "आप Matomo का नवीनतम संस्करण का उपयोग कर रहे हैं!",
- "SystemSummaryPhpVersion": "PHP संस्करण"
+ "YouAreUsingTheLatestVersion": "आप Matomo का नवीनतम संस्करण का उपयोग कर रहे हैं!"
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreHome/lang/id.json b/plugins/CoreHome/lang/id.json
index 1d5d0d7eb8..2f83b6813e 100644
--- a/plugins/CoreHome/lang/id.json
+++ b/plugins/CoreHome/lang/id.json
@@ -1,46 +1,132 @@
{
"CoreHome": {
+ "AdblockIsMaybeUsed": "Jika Anda menggunakan pemblokir iklan, harap nonaktifkan untuk situs ini untuk memastikan Matomo berfungsi tanpa masalah.",
+ "AddTotalsRowDataTable": "Laporan tidak menampilkan baris total %s Tampilkan baris total",
"CategoryNoData": "Tak ada data untuk kategori ini. Coba untuk \"Masukkan seluruh populasi\".",
+ "ChangeCurrentWebsite": "Pilih situs web, situs web yang saat ini dipilih: %s",
+ "ChangePeriod": "Ubah periode",
"ChangeVisualization": "Ubah visualisasi",
"CheckForUpdates": "Periksa pembaruan",
"CheckPiwikOut": "Periksa Matomo!",
"ChooseX": "Pilih %1$s",
+ "ClickRowToExpandOrContract": "Klik baris ini untuk memperluas atau mengontrak subtabel.",
"ClickToEditX": "Klik untuk mengubah %s",
"ClickToSeeFullInformation": "Klik untuk melihat informasi lengkap",
- "CloseWidgetDirections": "Anda dapat menutup gawit ini dengan mengeklik ikon 'X' di atas gawit.",
+ "CloseSearch": "Tutup pencarian",
+ "CloseWidgetDirections": "Anda dapat menutup widget ini dengan mengklik ikon 'X' di bagian atas widget.",
+ "CssDidntLoad": "Peramban Anda tidak dapat memuat gaya halaman ini.",
+ "CustomLimit": "Batas khusus",
+ "DataForThisReportHasBeenDisabled": "Segmentasi untuk laporan ini saat ini dinonaktifkan. Silakan periksa %1$sFAQ ini%2$s untuk detail selengkapnya.",
"DataForThisReportHasBeenPurged": "Data untuk laporan ini telah berumur lebih dari %s bulan dan telah dibersihkan.",
- "DataTableExcludeAggregateRows": "Keseluruhan baris ditampilkan %s Sembunyikan sekarang",
- "DataTableIncludeAggregateRows": "Keseluruhan baris tersembunyi %s Tampilkan sekarang",
+ "DataTableCombineDimensions": "Dimensi ditampilkan secara terpisah %s Tampilkan dimensi gabungan",
+ "DataTableExcludeAggregateRows": "Baris agregat ditampilkan %s Sembunyikan",
+ "DataTableHowToSearch": "Tekan enter atau klik ikon pencarian untuk mencari",
+ "DataTableIncludeAggregateRows": "Baris agregat disembunyikan %s Perlihatkan",
+ "DataTableShowDimensions": "Dimensi digabungkan %s Tampilkan dimensi secara terpisah",
+ "DateInvalid": "Kombinasi tanggal dan periode yang diberikan tidak valid. Harap pilih tanggal yang valid di pemilih tanggal.",
"Default": "asali",
- "DonateCall1": "Matomo akan selalu tidak membebani Anda biaya, tapi bukan berarti bahwa biaya tidak berarti bagi kami.",
+ "DevicesSubcategoryHelp": "Bagian Perangkat membantu Anda memahami teknologi yang digunakan oleh pengunjung untuk mengakses situs. Anda akan melihat laporan tentang jenis perangkat dan model tertentu untuk memungkinkan Anda mengoptimalkan situs Anda untuk perangkat yang paling populer.",
+ "DonateCall1": "Anda tidak perlu mengeluarkan biaya apa pun untuk memakai Matomo, tetapi bukan berarti kami tidak mengeluarkan biaya apa pun untuk membuatnya.",
"DonateCall2": "Matomo membutuhkan bantuan berkelanjutan Anda untuk tumbuh dan berkembang.",
- "ExcludeRowsWithLowPopulation": "Seluruh baris telah ditampilkan %s Populasi rendah dikecualikan",
- "FlattenDataTable": "Laporan ditampilkan berurutan %s Buat tetap",
- "IncludeRowsWithLowPopulation": "Baris dengan populasi rendah telah tersembunyi %s Tampilkan seluruh baris",
- "InjectedHostEmailBody": "Halo, saya mencoba mengakses Matomo hari ini dan menemukan peringatan nama inang tidak dikenal.",
- "InjectedHostEmailSubject": "Matomo telah diakses menggunakan nama inang tidak dikenal: %s",
+ "DonateCall3": "Jika Anda merasa bahwa Matomo telah memberi nilai signifikan bagi bisnis atau usaha Anda, %1$sharap pertimbangkan untuk menyumbang%2$s atau %3$smembeli fitur premium%4$s. Setiap sen akan sangat membantu.",
+ "EndDate": "Tanggal Akhir",
+ "EndShortcut": "Akhir",
+ "EngagementSubcategoryHelp1": "Bagian Keterlibatan memberikan laporan yang membantu menghitung jumlah pengunjung baru dan pengunjun yang kembali. Anda juga dapat meninjau laporan yang memecah waktu rata-rata dan jumlah halaman per kunjungan, serta frekuensi pengunjung yang mengunjungi situs Anda dan jumlah hari kunjungan.",
+ "EngagementSubcategoryHelp2": "Ini dapat membantu Anda untuk mengoptimalkan frekuensi dan tingkat interaksi kunjungan demi memaksimalkan jangkauan Anda.",
+ "EnterZenMode": "Masuk ke mode Zen (sembunyikan menu)",
+ "ExceptionNotAllowlistedIP": "Anda tidak dapat menggunakan Matomo karena IP Anda %s tidak diperbolehkan.",
+ "ExcludeRowsWithLowPopulation": "Semua baris ditampilkan %s Kecualikan populasi yang rendah",
+ "ExitZenMode": "Keluar dari mode Zen (tampilkan menu)",
+ "ExpandSubtables": "Perluas subtabel",
+ "ExportFormat": "Format ekspor",
+ "ExportTooltip": "Catatan: Untuk menggunakan URL ekspor yang dihasilkan, Anda harus menentukan autentikasi token aplikasi. Anda dapat mengonfigurasi token ini di Admin -&gt; Keamanan -&gt; Token Auths.",
+ "ExportTooltipWithLink": "Catatan: Untuk menggunakan URL ekspor yang dihasilkan, Anda harus menentukan autentikasi token aplikasi. Anda dapat mengonfigurasi token ini di %1$s[Admin -&gt; Keamanan -&gt; Auths Tokens]%2$s. Ganti %3$s di URL Ekspor dengan token Auth Anda. Peringatan: Jangan pernah membagikan URL yang berisi token asli kepada orang lain.",
+ "ExternalHelp": "Bantuan (terbuka di tab baru)",
+ "FlattenDataTable": "Laporan ini hierarkis %s Tampilkan secara datar",
+ "FlattenReport": "Ratakan laporan",
+ "FormatMetrics": "Format metrik",
+ "HideExportUrl": "Sembunyikan URL Ekspor",
+ "HomeShortcut": "Beranda",
+ "IncludeRowsWithLowPopulation": "Baris dengan populasi rendah disembunyikan %s Tampilkan semua baris",
+ "InjectedHostEmailBody": "Halo, saya mencoba mengakses Matomo hari ini dan menemukan peringatan nama host yang tidak dikenal.",
+ "InjectedHostEmailSubject": "Matomo diakses dengan nama host yang tidak diketahui: %s",
"InjectedHostNonSuperUserWarning": "%1$sKlik di sini untuk mengkases Matomo secara aman%2$s dan menghapus peringatan ini. Anda juga dapat menghubungi pengelola Matomo Anda dan memberi tahu tentang permasalahan ini (%3$sklik di sini untuk surel%4$s).",
- "InjectedHostSuperUserWarning": "Matomo mungkin salah konfigurasi (sebagai contoh, bila Matomo baru saja dipindah ke peladen atau URL baru). Anda dapat memilih %1$sklik di sini dan menambah%2$s sebagai nama inang Matomo sahih (bila Anda mempercayai ini)%3$s, atau %4$sklik di sini dan menuju %5$s akses Matomo secara aman%6$s.",
+ "InjectedHostSuperUserWarning": "Matomo mungkin salah dikonfigurasi (misalnya, jika Matomo baru saja dipindahkan ke server atau URL baru). Anda dapat %1$sklik di sini dan menambahkan %2$s sebagai nama host Matomo yang valid (jika Anda memercayainya)%3$s atau %4$sklik di sini dan pergi ke %5$s untuk mengakses Matomo dengan aman%6$s.",
"InjectedHostWarningIntro": "Sekarang Anda mengakses Matomo dari %1$s, tetapi Matomo telah diatur untuk berjalan di alamat ini: %2$s.",
+ "JavascriptDisabled": "JavaScript harus diaktifkan agar Anda dapat menggunakan Matomo dalam tampilan standar.<br>Namun, tampaknya JavaScript dinonaktifkan atau tidak didukung oleh peramban Anda.<br>Untuk menggunakan tampilan standar, aktifkan JavaScript dengan mengubah opsi peramban Anda , lalu %1$scoba lagi%2$s.<br>",
+ "JsDidntLoad": "Peramban Anda tidak dapat memuat skrip halaman ini.",
+ "LeadingAnalyticsPlatformRespectsYourPrivacy": "Platform analitik terbuka terkemuka yang menghormati privasi Anda.",
+ "MacPageDown": "Fn + Panah kanan",
+ "MacPageUp": "Fn + Panah kiri",
+ "MainNavigation": "Navigasi utama",
"Menu": "Menu",
+ "MenuEntries": "Entri menu",
"NoPrivilegesAskPiwikAdmin": "Anda masuk sebagai '%1$s' tetapi sepertinya Anda tidak memiliki izin apapun di Matomo. %2$s Tanyakan kepada pengelola Matomo Anda (klik untuk kirim surel)%3$s untuk memberikan akses 'Lihat' ke situs.",
+ "NoSuchPage": "Halaman ini tidak ada",
+ "OneClickUpdateNotPossibleAsMultiServerEnvironment": "Pembaruan sekali klik tidak tersedia karena Anda menggunakan Matomo dengan banyak server. Silakan unduh versi terbaru dari %1$s untuk melanjutkan.",
+ "OnlyForSuperUserAccess": "Widget ini ditampilkan di dasbor bawaan hanya untuk pengguna yang memiliki akses Pengguna Super.",
+ "PageDownShortcutDescription": "untuk sampai ke bagian bawah halaman",
+ "PageUpShortcutDescription": "untuk sampai ke bagian atas halaman",
+ "PeriodHasOnlyRawData": "Sepertinya laporan untuk periode ini belum diproses. Apakah Anda ingin melihat apa yang terjadi sekarang? Lihat %1$sLog kunjungan%2$s atau pilih periode tanggal yang berbeda hingga laporan dibuat.",
"PeriodRange": "Rentang",
+ "PivotBySubtable": "Laporan ini tidak dipivot %1$s Dipivot berdasarkan %2$s",
+ "Profilable": "Dapat diprofilkan",
+ "QuickAccessTitle": "Telusuri %s. Gunakan tombol panah untuk menavigasi hasil pencarian. Pintasan: Tekan 'f' untuk mencari.",
+ "QuickLinks": "Tautan Cepat",
+ "ReadMoreOnlineGuide": "Baca lebih lanjut tentang topik ini di panduan daring.",
+ "RemoveTotalsRowDataTable": "Laporan menunjukkan baris total %s Hapus baris total",
"ReportGeneratedOn": "Laporan dibuat dalam %s",
"ReportGeneratedXAgo": "Laporan dibuat %s lalu",
- "SearchOnMatomo": "Cari '%1$s' pada Matomo.org",
- "SharePiwikShort": "Matomo! Analisis ramatraya sumber terbuka dan gratis. Miliki sendiri data Anda.",
- "ShareThis": "Bagi ini",
+ "ReportType": "Tipe laporan",
+ "ReportWithMetadata": "Laporan dengan metadata",
+ "ReportingCategoryHelpPrefix": "Bagaimana halaman pelaporan \"%1$s &gt; %2$s\" membantu saya?",
+ "RowLimit": "Batas baris",
+ "SearchOnMatomo": "Cari '%1$s' di Matomo.org",
+ "SeeAvailableVersions": "Lihat Versi yang Tersedia",
+ "Segments": "Segmen",
+ "SharePiwikLong": "Hai! Saya baru saja menemukan perangkat lunak gratis yang hebat yaitu Matomo!\n\nMatomo memungkinkan Anda untuk melacak pengunjung situs web Anda secara gratis. Anda benar-benar harus mengeceknya!",
+ "SharePiwikShort": "Matomo! Analisis web gratis/libre. Miliki data Anda.",
+ "ShareThis": "Bagikan ini",
+ "ShortcutCalendar": "untuk membuka kalender (d singkatan dari Tanggal)",
+ "ShortcutHelp": "untuk menampilkan bantuan ini",
+ "ShortcutSearch": "untuk membuka pencarian (f singkatan dari Cari)",
+ "ShortcutSegmentSelector": "untuk membuka pemilih Segmen",
+ "ShortcutWebsiteSelector": "untuk membuka pemilih Situs Web",
+ "ShortcutZenMode": "untuk mode Zen",
+ "ShortcutsAvailable": "Pintasan yang tersedia",
+ "ShowExportUrl": "Tampilkan URL Ekspor",
"ShowJSCode": "Tampilkan kode JavaScript untuk disisipkan",
"SkipToContent": "Lewati ke konten",
- "SubscribeAndBecomePiwikSupporter": "Meneruskan ke halaman pembayaran aman kartu kredit (Paypal) untuk to menjadi pendukung Matomo!",
- "SupportPiwik": "Dukung!",
+ "SoftwareSubcategoryHelp": "Bagian Perangkat Lunak menunjukkan sistem operasi, peramban, dan plugin yang digunakan oleh pengunjung Anda untuk mengakses situs sehingga Anda dapat mengoptimalkan situs untuk memastikannya kompatibel sepenuhnya dengan konfigurasi yang paling populer.",
+ "StandardReport": "Laporan standar",
+ "StartDate": "Tanggal Awal",
+ "SubscribeAndBecomePiwikSupporter": "Lanjutkan ke halaman pembayaran kartu kredit yang aman (Paypal) untuk menjadi Pendukung Matomo!",
+ "SupportPiwik": "Dukung Matomo!",
+ "SupportUsOn": "Dukung kami di",
"SystemSummaryMysqlVersion": "Versi MySQL",
+ "SystemSummaryNActivatedPlugins": "%d plugin yang diaktifkan",
+ "SystemSummaryNSegments": "%1$d segmen",
+ "SystemSummaryNSegmentsWithBreakdown": "%1$d segmen (%2$s telah diproses sebelumnya, %3$s diproses secara waktu nyata)",
+ "SystemSummaryNWebsites": "%d situs web",
"SystemSummaryPhpVersion": "Versi PHP",
"SystemSummaryPiwikVersion": "Versi Matomo",
+ "SystemSummaryWidget": "Ringkasan Sistem",
+ "TableNoData": "Tidak ada data untuk tabel ini.",
+ "TechDeprecationWarning": "Mulai dari versi Matomo %1$s, Matomo akan mengakhiri dukungan untuk %2$s. Untuk informasi lebih lanjut %3$slihat postingan blog kami.%4$s",
+ "ThanksFromAllOfUs": "Terima kasih dari kami semua di Matomo!",
"ThereIsNoDataForThisReport": "Tidak ada data untuk laporan ini.",
- "UnFlattenDataTable": "Laporan ditampilkan tetap %s Buat berurutan",
+ "UnFlattenDataTable": "Laporan ditampilkan secara datar %s Buat berurutan",
+ "UndoPivotBySubtable": "Laporan ini telah dipivot %s Batalkan pivot",
"ViewAllPiwikVideoTutorials": "Tampilkan seluruh Video Tutorial Matomo",
+ "VisitStatusOrdered": "Dipesan",
+ "VisitStatusOrderedThenAbandoned": "Dipesan lalu Keranjang Ditinggalkan",
+ "VisitTypeReturning": "Kembali",
+ "VisitTypeReturningCustomer": "Pelanggan yang Kembali",
+ "VisitorsCategoryHelp1": "Halaman Pengunjung memberi tahu Anda banyak hal tentang siapa pengunjung Anda. Hal-hal seperti dari mana pengunjung Anda berasal, perangkat dan peramban apa yang mereka gunakan, dan kapan mereka biasanya mengunjungi situs web Anda. Pahami secara keseluruhan siapa audiens Anda dan cari anomali untuk melihat bagaimana audiens Anda bisa tumbuh.",
+ "VisitorsCategoryHelp2": "Selain informasi umum tentang pengunjung, Anda juga dapat menggunakan %1$sLog Kunjungan%2$s untuk melihat apa yang terjadi di setiap kunjungan individu.",
+ "VisitorsOverviewHelp": "Ikhtisar Pengunjung membantu Anda dalam memahami popularitas situs Anda. Ini dilakukan dengan menyediakan bagan yang menunjukkan berapa banyak kunjungan yang diterima situs Anda selama periode yang dipilih dan tingkat keterlibatan rata-rata untuk fitur utama, seperti pencarian dan unduhan.",
"WebAnalyticsReports": "Laporan Analisis Web",
- "YouAreUsingTheLatestVersion": "Anda menggunakan versi termutakhir Matomo!"
+ "YouAreUsingTheLatestVersion": "Anda menggunakan versi Matomo terbaru!",
+ "YourDonationWillHelp": "Donasi Anda secara langsung akan membantu mendanai fitur dan peningkatan baru untuk platform analitik sumber terbuka ini. Ini berarti komunitas akan selalu mendapat manfaat dari alat yang melindungi privasi dan memungkinkan Anda untuk tetap mengontrol data Anda."
}
}
diff --git a/plugins/CoreHome/lang/nb.json b/plugins/CoreHome/lang/nb.json
index 5c79572c3e..5b482aced5 100644
--- a/plugins/CoreHome/lang/nb.json
+++ b/plugins/CoreHome/lang/nb.json
@@ -1,6 +1,7 @@
{
"CoreHome": {
"AdblockIsMaybeUsed": "Hvis du bruker en ad-blocker, vennligst deaktiver den for dette nettstedet for å forsikre deg om at Matomo fungerer som det skal.",
+ "AddTotalsRowDataTable": "Rapporten viser ikke totalt antall rader %s Vis totalt antall",
"CategoryNoData": "Ingen data i denne kategorien. Prøv å velge «Inkluder hele populasjonen».",
"ChangeCurrentWebsite": "Velg et nettsted. Nettstedet som nå er valgt er: %s",
"ChangePeriod": "Endre periode",
@@ -13,6 +14,7 @@
"ClickToSeeFullInformation": "Klikk her for å se mer informasjon",
"CloseSearch": "Lukk søk",
"CloseWidgetDirections": "Du kan lukke dette elementet ved å klikke på X-ikonet over widgeten.",
+ "CssDidntLoad": "Nettleseren din kunne ikke laste inn sidestilen.",
"CustomLimit": "Egendefinert grense",
"DataForThisReportHasBeenDisabled": "Inndeling er avskrudd for denne rapporten. Sjekk %1$softe stilte spørsmål%2$s for flere detaljer.",
"DataForThisReportHasBeenPurged": "Dataene for denne rapporten er mer enn %s måneder gamle og har blitt fjernet.",
@@ -20,17 +22,25 @@
"DataTableExcludeAggregateRows": "Aggregerte rader vises %s Skjul dem",
"DataTableHowToSearch": "Trykk enter eller klikk på søkeikonet for å søke",
"DataTableIncludeAggregateRows": "Aggregerte rader er skjult %s Vis dem",
+ "DataTableShowDimensions": "Dimensjoner er kombinert %s Vis dimensjoner separert",
"DateInvalid": "Angitt kombinasjon av dato og periode er ugyldig. Velg en gyldig dato i datovelgeren.",
"Default": "standard",
+ "DevicesSubcategoryHelp": "Enhetsdelen hjelper deg å forstå teknologien dine besøkende bruker for å besøke nettsiden din. Du vil finne rapporter om hvilken type enhet og spesifikke modeller for å skru på og optimisere din side for de mest populære enhetene.",
"DonateCall1": "Det vil aldri koste noe å bruke Matomo, men det betyr ikke at det ikke koster oss noe å lage.",
"DonateCall2": "Matomo trenger din fortsatte støtte for å vokse og blomstre.",
+ "DonateCall3": "Hvis u synes Matomo har gitt din virksomhet økt verdi kan du %1$sdonere%2$s eller %3$skjøpe en premiumsfunksjon%4$s. Hvert øre bidrar.",
"EndDate": "Sluttdato",
"EndShortcut": "Slutt",
+ "EngagementSubcategoryHelp1": "Interaksjonsdelen gir deg rapporter som hjelper deg å anslå hvor mange nye og tilbakevendende besøk du får. Du kan også gjennomse rapporter som gir gjennomsnittlig tid og antall sider per besøk, sågar også antall ganger en besøkende har vært på siden din, og hvor lenge det vanligvis går mellom avlagt besøk.",
+ "EngagementSubcategoryHelp2": "Dette kan hjelpe deg å optimalisere for frekvens og høy-interaksjonsbesøk i tillegg til å maksimere din rekkevidde.",
+ "EnterZenMode": "Gå inn i Zen-modus (skjul menyene)",
"ExceptionNotAllowlistedIP": "Du kan ikke bruke denne Matomo-installasjonen fordi din IP (%s) ikke tillates.",
"ExcludeRowsWithLowPopulation": "All rader vises %s Ekskluder lav populasjon",
"ExitZenMode": "Avslutt Zen-modus (vis menyene)",
"ExpandSubtables": "Fold ut undertabeller",
"ExportFormat": "Eksportformat",
+ "ExportTooltip": "Merk: for å bruke generert eksportnettadresse må du angi en programsymbolidentitetsbekreftelse. Du kan sette opp disse symbolene i Administrasjon → Sikkerhet → Symbolidentitetsbekreftelser.",
+ "ExportTooltipWithLink": "Merk: For å bruke en generert eksportnettadresse må du angi en programsymbolidentitetsbekreftelse. Du kan sette opp disse symbolene i %1$s[Administrasjon → Sikkerhet → Identitetbekreftelsessymboler]%2$s. Erstatt %3$s i eksportnettadressen med ditt identitetbekreftelsessymbol. Advarsel: Aldri del nettadressen som har det virkelige symbolet med noen andre.",
"ExternalHelp": "Hjelp (åpnes i ny fane)",
"FlattenDataTable": "Rapporten er hierarkisk %s Gjør den flat",
"FlattenReport": "Fold sammen rapport",
@@ -43,6 +53,9 @@
"InjectedHostNonSuperUserWarning": "%1$sKlikk her for å få sikker tilgang til Matomo%2$s og for å fjerne denne advarselen. Du vil kanskje også kontakte din Matomo-administrator for å varsle dem om dette problemet (%3$sklikk her for å sende e-post%4$s).",
"InjectedHostSuperUserWarning": "Matomo kan være feilkonfigurert (for eksempel hvis Matomo nylig var flyttet til en ny tjener eller ny URL). Du kan enten %1$sklikke her og legge til %2$s som et gyldig Matomo-vertsnavn (hvis du stoler på det)%3$s eller %4$sklikk her og gå til %5$s for sikker tilgang til Matomo%6$s.",
"InjectedHostWarningIntro": "Du har tilgang til Matomo fra %1$s, men Matomo er konfigurert til å kjøre på adressen: %2$s.",
+ "JavascriptDisabled": "JavaScript må skrus på for at du skal kunne bruke Matomo i forvalgt visning.<br>Dog ser det ut til at det enten er avslått eller ustøttet i din nettleser.<br>For å bruke forvalgt visning kan du skru på JavaScript ved å endre dine nettleservalg, og så %1$sprøve igjen%2$s.<br>",
+ "JsDidntLoad": "Nettleseren din kunne ikke laste inn skript fra denne siden.",
+ "LeadingAnalyticsPlatformRespectsYourPrivacy": "Den ledende åpne analyseplattformen som respekterer personvernet.",
"MacPageDown": "Fn+høyrepil",
"MacPageUp": "Fn+venstrepil",
"MainNavigation": "Hovednavigasjon",
@@ -50,23 +63,33 @@
"MenuEntries": "Menyvalg",
"NoPrivilegesAskPiwikAdmin": "Du er logget inn som «%1$s», men det ser ut til at du ikke har noen rettigheter satt i Matomo. %2$s Be din Matomo-administrator (klikk for å sende e-post)%3$s å gi deg «vis»-tilgang til et nettsted.",
"NoSuchPage": "Denne siden finnes ikke",
+ "OneClickUpdateNotPossibleAsMultiServerEnvironment": "Énklikksoppdateringen er ikke tilgjengelig siden du bruker Matomo med flere tjenere. Last ned siste versjon fra %1$s for å fortsette.",
"OnlyForSuperUserAccess": "Denne widgeten vises kun i standardoversikten for brukere som har superbruker-tilgang.",
"PageDownShortcutDescription": "for å komme til bunnen av siden",
"PageUpShortcutDescription": "for å komme til toppen av siden",
+ "PeriodHasOnlyRawData": "Det ser ut til at rapporter for denne perioden ikke har blitt behandlet enda. Ønsker du å finne ut hva som skjer nå? Sjekk ut %1$sbesøksloggen%2$s eller velg et annet datofølge til rapportene er generert.",
"PeriodRange": "Periode",
"PivotBySubtable": "Denne rapporten er ikke pivotert %1$s Pivot etter %2$s",
"Profilable": "Profilerbar",
"QuickAccessTitle": "Søk etter %s. Bruk piltastene for å navigere i søkeresultatene. Snarvei: trykk «f» for å søke.",
"QuickLinks": "Hurtiglenker",
+ "ReadMoreOnlineGuide": "Les mer om dette emnet i den nettbaserte veiledningen.",
+ "RemoveTotalsRowDataTable": "Rapporten viser totalt antall rader %s Fjern total",
"ReportGeneratedOn": "Rapport generert %s",
"ReportGeneratedXAgo": "Rapport generert for %s siden",
+ "ReportType": "Rapporttype",
"ReportWithMetadata": "Rapport med metadata",
+ "ReportingCategoryHelpPrefix": "Hvordan hjelper «%1$s &gt; %2$s»-rapportsiden meg?",
+ "RowLimit": "Radgrense",
"SearchOnMatomo": "Søk etter «%1$s» på Matomo.org",
"SeeAvailableVersions": "Vis tilgjengelige versjoner",
"Segments": "Segmenter",
+ "SharePiwikLong": "Hei. Du bør prøve den frie programvaren Matomo.\n\nDen lar deg spore besøk på nettisden din.",
"SharePiwikShort": "Matomo! Gratis og åpen kildekode for nettstatistikk. Du eier dataene.",
"ShareThis": "Del dette",
+ "ShortcutCalendar": "for å åpne kalenderen (d står for dato)",
"ShortcutHelp": "for å vise denne hjelpen",
+ "ShortcutSearch": "for å åpne søket (f står for finn)",
"ShortcutSegmentSelector": "for å åpne segmentvelger",
"ShortcutWebsiteSelector": "for å åpne nettsidevelger",
"ShortcutZenMode": "for Zen-modus",
@@ -74,6 +97,7 @@
"ShowExportUrl": "Vis eksport-nettadresse",
"ShowJSCode": "Vis JavaScript-koden til å sette inn på din nettside",
"SkipToContent": "Hopp til innhold",
+ "SoftwareSubcategoryHelp": "Programvaredelen viser operativsystemene, nettleserne og programtilleggene dine besøkende bruker for å besøke siden, slik at du kan optimalisere den for å sikre at den er kompatibel med de mest populære oppsettene.",
"StandardReport": "Forvalgt rapport",
"StartDate": "Startdato",
"SubscribeAndBecomePiwikSupporter": "Fortsett til en sikker betalingsside for kredittkort (Paypal) for å bli en Matomo-støttespiller!",
@@ -88,6 +112,7 @@
"SystemSummaryPiwikVersion": "Matomo-versjon",
"SystemSummaryWidget": "Systemsammendrag",
"TableNoData": "Ingen data for denne tabellen.",
+ "TechDeprecationWarning": "Fra Matomo versjon %1$s vil støtten for %2$s slutte. Mer info er å finne i %3$sdenne bloggposten%4$s.",
"ThanksFromAllOfUs": "Takk til deg fra alle oss i Matomo.",
"ThereIsNoDataForThisReport": "Det finnes ingen data for denne rapporten.",
"UnFlattenDataTable": "Rapporten er flat %s Gjør den hierarkisk",
@@ -97,7 +122,11 @@
"VisitStatusOrderedThenAbandoned": "Bestilt, men forlot handlekurven",
"VisitTypeReturning": "Tilbakevendende",
"VisitTypeReturningCustomer": "Tidligere kunde",
+ "VisitorsCategoryHelp1": "Besøkssiden forteller deg noe om hvem dine besøkende er. Hvor de besøkte fra, hvilke enheter og nettlesere de brukte, og når de vanligvis besøker nettsiden din. Du kan i de store tallene forstå hvem publikumet ditt består av, og se etter avvik for å finne ut hvordan du kan øke besøkstallene.",
+ "VisitorsCategoryHelp2": "I tillegg til generell info om dine besøkende, kan du også bruke %1$sbesøksloggen%2$s for å finne ut hva som skjedde for hvert enkelte besøk.",
+ "VisitorsOverviewHelp": "Besøksoversikten hjelper deg å forstå hvor populær nettsiden din er. Diagrammer som viser hvor mange besøk den mottar over en valgt periode og gjennomsnittlig interaksjonsnivå for nøkkelaktiviteter tilbys, som f.eks. søk og nedlastninger.",
"WebAnalyticsReports": "Nettstatistikkrapporter",
- "YouAreUsingTheLatestVersion": "Du bruker den nyeste versjonen av Matomo!"
+ "YouAreUsingTheLatestVersion": "Du bruker den nyeste versjonen av Matomo!",
+ "YourDonationWillHelp": "Donasjonen din går direkte til utvikling av nye funksjoner og forbedringer i denne frie analyseplattformen. Dette betyr at gemenskapen alltid nyter godt av et verktøy som hegner om personvernet og lar deg kontrollere din data."
}
}
diff --git a/plugins/CoreHome/lang/sv.json b/plugins/CoreHome/lang/sv.json
index 1b03cfa511..3dffcf2d35 100644
--- a/plugins/CoreHome/lang/sv.json
+++ b/plugins/CoreHome/lang/sv.json
@@ -74,7 +74,7 @@
"QuickAccessTitle": "Sök efter %s. Använd piltangenterna för att navigera i sökresultatet. Genväg: Tryck på 'f' för att söka.",
"QuickLinks": "Snabblänkar",
"ReadMoreOnlineGuide": "Läs mer om ämnet i onlineguiden.",
- "RemoveTotalsRowDataTable": "Rapporten visar totalt antal rader 1%s Ta bort totalt antal rader",
+ "RemoveTotalsRowDataTable": "Rapporten visar totalt antal rader %s Ta bort totalt antal rader",
"ReportGeneratedOn": "Rapporten genererades på %s",
"ReportGeneratedXAgo": "Rapporten genererades för %s sen",
"ReportType": "Rapporttyp",
diff --git a/plugins/CoreHome/lang/tr.json b/plugins/CoreHome/lang/tr.json
index c2fdf1eb0a..c9821f099a 100644
--- a/plugins/CoreHome/lang/tr.json
+++ b/plugins/CoreHome/lang/tr.json
@@ -16,7 +16,7 @@
"CloseWidgetDirections": "Üst kısımdaki 'X' simgesine tıklayarak bu pano bileşenini kapatabilirsiniz.",
"CssDidntLoad": "Tarayıcınız bu sayfanın biçemini yükleyemedi.",
"CustomLimit": "Özel sayı",
- "DataForThisReportHasBeenDisabled": "Şu anda bu rapor için dilimlere ayırma devre dışı bırakılmış. Ayrıntılı bilgi almak için %1$sthis SSS%2$s bölümüne bakabilirsiniz.",
+ "DataForThisReportHasBeenDisabled": "Şu anda bu rapor için dilimlere ayırma devre dışı bırakılmış. Ayrıntılı bilgi almak için %1$sbu SSS%2$s bölümüne bakabilirsiniz.",
"DataForThisReportHasBeenPurged": "Bu raporda bulunan veriler %s ay öncesine ait olduğundan atıldı.",
"DataTableCombineDimensions": "Boyutlar ayrı görüntüleniyor %s Boyutları birleştirerek görüntüle",
"DataTableExcludeAggregateRows": "Tüm satırlar görüntüleniyor %s Gizle",
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.js b/plugins/CoreHome/vue/dist/CoreHome.umd.js
index 8dcae0bb73..f96639c60f 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.js
@@ -9633,33 +9633,33 @@ window.angular.module('piwikApp.service').factory('reportMetadataModel', functio
}
};
});
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=999e513a
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=4261d57b
-var WidgetLoadervue_type_template_id_999e513a_hoisted_1 = {
+var WidgetLoadervue_type_template_id_4261d57b_hoisted_1 = {
key: 0
};
-var WidgetLoadervue_type_template_id_999e513a_hoisted_2 = {
+var WidgetLoadervue_type_template_id_4261d57b_hoisted_2 = {
class: "notification system notification-error"
};
-var WidgetLoadervue_type_template_id_999e513a_hoisted_3 = {
+var WidgetLoadervue_type_template_id_4261d57b_hoisted_3 = {
key: 0,
rel: "noreferrer noopener",
target: "_blank",
href: "https://matomo.org/faq/troubleshooting/faq_19489/"
};
-var WidgetLoadervue_type_template_id_999e513a_hoisted_4 = {
+var WidgetLoadervue_type_template_id_4261d57b_hoisted_4 = {
class: "theWidgetContent",
ref: "widgetContent"
};
-function WidgetLoadervue_type_template_id_999e513a_render(_ctx, _cache, $props, $setup, $data, $options) {
+function WidgetLoadervue_type_template_id_4261d57b_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
"loading-message": _ctx.loadingMessage,
loading: _ctx.loading
- }, null, 8, ["loading-message", "loading"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [_ctx.widgetName ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h2", WidgetLoadervue_type_template_id_999e513a_hoisted_1, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.widgetName), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetLoadervue_type_template_id_999e513a_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ErrorRequest', '', '')) + " ", 1), _ctx.hasErrorFaqLink ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", WidgetLoadervue_type_template_id_999e513a_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ErrorRequestFaqLink')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.loadingFailed]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetLoadervue_type_template_id_999e513a_hoisted_4, null, 512)]);
+ }, null, 8, ["loading-message", "loading"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [_ctx.widgetName ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h2", WidgetLoadervue_type_template_id_4261d57b_hoisted_1, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.widgetName), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetLoadervue_type_template_id_4261d57b_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ErrorRequest', '', '')) + " ", 1), _ctx.hasErrorFaqLink ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("a", WidgetLoadervue_type_template_id_4261d57b_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ErrorRequestFaqLink')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.loadingFailed]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", WidgetLoadervue_type_template_id_4261d57b_hoisted_4, null, 512)]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=999e513a
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=template&id=4261d57b
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue?vue&type=script&lang=ts
@@ -9832,11 +9832,13 @@ function WidgetLoadervue_type_template_id_999e513a_render(_ctx, _cache, $props,
var $rootScope = Matomo_Matomo.helper.getAngularDependency('$rootScope');
var scope = $rootScope.$new();
- _this.currentScope = scope;
- Matomo_Matomo.helper.compileVueEntryComponents($content);
+ _this.currentScope = scope; // compile angularjs first since it will modify all dom nodes, breaking vue bindings
+ // if they are present
+
Matomo_Matomo.helper.compileAngularComponents($content, {
scope: scope
});
+ Matomo_Matomo.helper.compileVueEntryComponents($content);
Notifications_store.parseNotificationDivs();
setTimeout(function () {
Matomo_Matomo.postEvent('widget:loaded', {
@@ -9871,7 +9873,7 @@ function WidgetLoadervue_type_template_id_999e513a_render(_ctx, _cache, $props,
-WidgetLoadervue_type_script_lang_ts.render = WidgetLoadervue_type_template_id_999e513a_render
+WidgetLoadervue_type_script_lang_ts.render = WidgetLoadervue_type_template_id_4261d57b_render
/* harmony default export */ var WidgetLoader = (WidgetLoadervue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.adapter.ts
@@ -11551,34 +11553,37 @@ Sparklinevue_type_script_lang_ts.render = Sparklinevue_type_template_id_693cd955
directiveName: 'piwikSparkline',
restrict: 'E'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/Progressbar/Progressbar.vue?vue&type=template&id=086b2ffe
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/Progressbar/Progressbar.vue?vue&type=template&id=0048ddd7
-var Progressbarvue_type_template_id_086b2ffe_hoisted_1 = {
+var Progressbarvue_type_template_id_0048ddd7_hoisted_1 = {
class: "progressbar"
};
-var Progressbarvue_type_template_id_086b2ffe_hoisted_2 = {
+var Progressbarvue_type_template_id_0048ddd7_hoisted_2 = {
class: "progress"
};
-var Progressbarvue_type_template_id_086b2ffe_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
- src: "plugins/Morpheus/images/loading-blue.gif"
+var Progressbarvue_type_template_id_0048ddd7_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ src: "plugins/Morpheus/images/loading-blue.gif",
+ style: {
+ "margin-right": "3.5px"
+ }
}, null, -1);
-var Progressbarvue_type_template_id_086b2ffe_hoisted_4 = ["innerHTML"];
-function Progressbarvue_type_template_id_086b2ffe_render(_ctx, _cache, $props, $setup, $data, $options) {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Progressbarvue_type_template_id_086b2ffe_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", Progressbarvue_type_template_id_086b2ffe_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+var Progressbarvue_type_template_id_0048ddd7_hoisted_4 = ["innerHTML"];
+function Progressbarvue_type_template_id_0048ddd7_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", Progressbarvue_type_template_id_0048ddd7_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", Progressbarvue_type_template_id_0048ddd7_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "determinate",
style: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeStyle"])([{
"width": "0"
}, {
width: "".concat(_ctx.actualProgress, "%")
}])
- }, null, 4)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Progressbarvue_type_template_id_086b2ffe_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 4)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Progressbarvue_type_template_id_0048ddd7_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "label",
innerHTML: _ctx.$sanitize(_ctx.label)
- }, null, 8, Progressbarvue_type_template_id_086b2ffe_hoisted_4)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !!_ctx.label]])]);
+ }, null, 8, Progressbarvue_type_template_id_0048ddd7_hoisted_4)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !!_ctx.label]])]);
}
-// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Progressbar/Progressbar.vue?vue&type=template&id=086b2ffe
+// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Progressbar/Progressbar.vue?vue&type=template&id=0048ddd7
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CoreHome/vue/src/Progressbar/Progressbar.vue?vue&type=script&lang=ts
@@ -11610,7 +11615,7 @@ function Progressbarvue_type_template_id_086b2ffe_render(_ctx, _cache, $props, $
-Progressbarvue_type_script_lang_ts.render = Progressbarvue_type_template_id_086b2ffe_render
+Progressbarvue_type_script_lang_ts.render = Progressbarvue_type_template_id_0048ddd7_render
/* harmony default export */ var Progressbar = (Progressbarvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CoreHome/vue/src/Progressbar/Progressbar.adapter.ts
diff --git a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
index 7764c289ce..c708da4c4a 100644
--- a/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
+++ b/plugins/CoreHome/vue/dist/CoreHome.umd.min.js
@@ -461,7 +461,7 @@ function tc(){return{get pages(){return Cl.pages.value},findPageInCategory:funct
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-window.angular.module("piwikApp.service").factory("reportMetadataModel",(function(){return{get reports(){return lc.reports.value},findReport:lc.findReport.bind(lc),fetchReportMetadata:function(){return lc.fetchReportMetadata().then((function(e){return Et(e)}))}}}));var cc={key:0},sc={class:"notification system notification-error"},uc={key:0,rel:"noreferrer noopener",target:"_blank",href:"https://matomo.org/faq/troubleshooting/faq_19489/"},dc={class:"theWidgetContent",ref:"widgetContent"};function pc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("ActivityIndicator");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createVNode"])(l,{"loading-message":e.loadingMessage,loading:e.loading},null,8,["loading-message","loading"]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[e.widgetName?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",cc,Object(a["toDisplayString"])(e.widgetName),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",sc,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_ErrorRequest","",""))+" ",1),e.hasErrorFaqLink?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",uc,Object(a["toDisplayString"])(e.translate("General_ErrorRequestFaqLink")),1)):Object(a["createCommentVNode"])("",!0)])],512),[[a["vShow"],e.loadingFailed]]),Object(a["createElementVNode"])("div",dc,null,512)])}var mc=Object(a["defineComponent"])({props:{widgetParams:Object,widgetName:String},components:{ActivityIndicator:ho},data:function(){return{loading:!1,loadingFailed:!1,changeCounter:0,currentScope:null,lastWidgetAbortController:null}},watch:{widgetParams:function(e){e&&this.loadWidgetUrl(e,this.changeCounter+=1)}},computed:{loadingMessage:function(){return this.widgetName?C("General_LoadingPopover",this.widgetName):C("General_LoadingData")},hasErrorFaqLink:function(){var e=S.config.enable_general_settings_admin,t=S.config.enable_plugins_admin;return S.hasSuperUserAccess&&(e||t)}},mounted:function(){this.widgetParams&&this.loadWidgetUrl(this.widgetParams,this.changeCounter+=1)},unmounted:function(){this.cleanupLastWidgetContent()},methods:{abortHttpRequestIfNeeded:function(){this.lastWidgetAbortController&&(this.lastWidgetAbortController.abort(),this.lastWidgetAbortController=null)},cleanupLastWidgetContent:function(){var e=this.$refs.widgetContent;e&&(e.innerHTML=""),this.currentScope&&this.currentScope.$destroy()},getWidgetUrl:function(e){var t=Ce.parsed.value,n=Object.assign({},e||{}),r=Object.keys(Object.assign(Object.assign({},Ce.hashParsed.value),{},{idSite:"",period:"",date:"",segment:"",widget:""}));return r.forEach((function(e){"category"!==e&&"subcategory"!==e&&(e in n||(n[e]=t[e]))})),Or.isComparisonEnabled()&&(n=Object.assign(Object.assign({},n),{},{comparePeriods:t.comparePeriods,compareDates:t.compareDates,compareSegments:t.compareSegments})),e&&"showtitle"in e||(n.showtitle="1"),S.shouldPropagateTokenAuth&&t.token_auth&&(S.broadcast.isWidgetizeRequestWithoutSession()||(n.force_api_session="1"),n.token_auth=t.token_auth),n.random=Math.floor(1e4*Math.random()),n},loadWidgetUrl:function(e,t){var n=this;this.loading=!0,this.abortHttpRequestIfNeeded(),this.cleanupLastWidgetContent(),this.lastWidgetAbortController=new AbortController,Xe.fetch(this.getWidgetUrl(e),{format:"html",headers:{"X-Requested-With":"XMLHttpRequest"},abortController:this.lastWidgetAbortController}).then((function(r){if(t===n.changeCounter&&r&&"string"===typeof r){n.lastWidgetAbortController=null,n.loading=!1,n.loadingFailed=!1;var i=n.$refs.widgetContent;window.$(i).html(r);var a=window.$(i).children();if(n.widgetName){var o=a.find("> .card-content .card-title");o.length||(o=a.find("> h2")),o.length&&o.html(S.helper.htmlEntities(n.widgetName))}var l=S.helper.getAngularDependency("$rootScope"),c=l.$new();n.currentScope=c,S.helper.compileVueEntryComponents(a),S.helper.compileAngularComponents(a,{scope:c}),fl.parseNotificationDivs(),setTimeout((function(){S.postEvent("widget:loaded",{parameters:e,element:a})}))}})).catch((function(e){t===n.changeCounter&&(n.lastWidgetAbortController=null,n.cleanupLastWidgetContent(),n.loading=!1,"abort"!==e.xhrStatus&&(n.loadingFailed=!0))}))}}});mc.render=pc;var fc=mc;
+window.angular.module("piwikApp.service").factory("reportMetadataModel",(function(){return{get reports(){return lc.reports.value},findReport:lc.findReport.bind(lc),fetchReportMetadata:function(){return lc.fetchReportMetadata().then((function(e){return Et(e)}))}}}));var cc={key:0},sc={class:"notification system notification-error"},uc={key:0,rel:"noreferrer noopener",target:"_blank",href:"https://matomo.org/faq/troubleshooting/faq_19489/"},dc={class:"theWidgetContent",ref:"widgetContent"};function pc(e,t,n,r,i,o){var l=Object(a["resolveComponent"])("ActivityIndicator");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["createVNode"])(l,{"loading-message":e.loadingMessage,loading:e.loading},null,8,["loading-message","loading"]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[e.widgetName?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",cc,Object(a["toDisplayString"])(e.widgetName),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",sc,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_ErrorRequest","",""))+" ",1),e.hasErrorFaqLink?(Object(a["openBlock"])(),Object(a["createElementBlock"])("a",uc,Object(a["toDisplayString"])(e.translate("General_ErrorRequestFaqLink")),1)):Object(a["createCommentVNode"])("",!0)])],512),[[a["vShow"],e.loadingFailed]]),Object(a["createElementVNode"])("div",dc,null,512)])}var mc=Object(a["defineComponent"])({props:{widgetParams:Object,widgetName:String},components:{ActivityIndicator:ho},data:function(){return{loading:!1,loadingFailed:!1,changeCounter:0,currentScope:null,lastWidgetAbortController:null}},watch:{widgetParams:function(e){e&&this.loadWidgetUrl(e,this.changeCounter+=1)}},computed:{loadingMessage:function(){return this.widgetName?C("General_LoadingPopover",this.widgetName):C("General_LoadingData")},hasErrorFaqLink:function(){var e=S.config.enable_general_settings_admin,t=S.config.enable_plugins_admin;return S.hasSuperUserAccess&&(e||t)}},mounted:function(){this.widgetParams&&this.loadWidgetUrl(this.widgetParams,this.changeCounter+=1)},unmounted:function(){this.cleanupLastWidgetContent()},methods:{abortHttpRequestIfNeeded:function(){this.lastWidgetAbortController&&(this.lastWidgetAbortController.abort(),this.lastWidgetAbortController=null)},cleanupLastWidgetContent:function(){var e=this.$refs.widgetContent;e&&(e.innerHTML=""),this.currentScope&&this.currentScope.$destroy()},getWidgetUrl:function(e){var t=Ce.parsed.value,n=Object.assign({},e||{}),r=Object.keys(Object.assign(Object.assign({},Ce.hashParsed.value),{},{idSite:"",period:"",date:"",segment:"",widget:""}));return r.forEach((function(e){"category"!==e&&"subcategory"!==e&&(e in n||(n[e]=t[e]))})),Or.isComparisonEnabled()&&(n=Object.assign(Object.assign({},n),{},{comparePeriods:t.comparePeriods,compareDates:t.compareDates,compareSegments:t.compareSegments})),e&&"showtitle"in e||(n.showtitle="1"),S.shouldPropagateTokenAuth&&t.token_auth&&(S.broadcast.isWidgetizeRequestWithoutSession()||(n.force_api_session="1"),n.token_auth=t.token_auth),n.random=Math.floor(1e4*Math.random()),n},loadWidgetUrl:function(e,t){var n=this;this.loading=!0,this.abortHttpRequestIfNeeded(),this.cleanupLastWidgetContent(),this.lastWidgetAbortController=new AbortController,Xe.fetch(this.getWidgetUrl(e),{format:"html",headers:{"X-Requested-With":"XMLHttpRequest"},abortController:this.lastWidgetAbortController}).then((function(r){if(t===n.changeCounter&&r&&"string"===typeof r){n.lastWidgetAbortController=null,n.loading=!1,n.loadingFailed=!1;var i=n.$refs.widgetContent;window.$(i).html(r);var a=window.$(i).children();if(n.widgetName){var o=a.find("> .card-content .card-title");o.length||(o=a.find("> h2")),o.length&&o.html(S.helper.htmlEntities(n.widgetName))}var l=S.helper.getAngularDependency("$rootScope"),c=l.$new();n.currentScope=c,S.helper.compileAngularComponents(a,{scope:c}),S.helper.compileVueEntryComponents(a),fl.parseNotificationDivs(),setTimeout((function(){S.postEvent("widget:loaded",{parameters:e,element:a})}))}})).catch((function(e){t===n.changeCounter&&(n.lastWidgetAbortController=null,n.cleanupLastWidgetContent(),n.loading=!1,"abort"!==e.xhrStatus&&(n.loadingFailed=!0))}))}}});mc.render=pc;var fc=mc;
/*!
* Matomo - free/libre analytics platform
*
@@ -510,7 +510,7 @@ window.angular.module("piwikApp.service").factory("reportMetadataModel",(functio
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function Xs(e){return{restrict:"A",scope:{reportTitle:"@",requestParams:"@",reportFormats:"@",apiMethod:"@",maxFilterLimit:"@"},link:function(t,n){var r={instance:null,value:{reportTitle:t.reportTitle,requestParams:t.requestParams,reportFormats:"string"===typeof t.reportFormats?JSON.parse(t.reportFormats):t.reportFormats,apiMethod:t.apiMethod,maxFilterLimit:parseInt(t.maxFilterLimit,10),onClose:function(){e((function(){window.angular.element(document).injector().get("$rootScope").$apply()}),10)}},oldValue:null,modifiers:{},dir:{}};Ks.mounted(n[0],r)}}}Xs.$inject=["$timeout"],window.angular.module("piwikApp").directive("piwikReportExport",Xs);var Zs=["src"];function eu(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("img",{src:e.sparklineUrl},null,8,Zs)}var tu=Object(a["defineComponent"])({props:{seriesIndices:Array,params:Object},data:function(){return{isWidget:!1}},mounted:function(){this.isWidget=!!this.$el.closest("[widgetId]")},computed:{sparklineUrl:function(){var e=this.seriesIndices,t=this.params,n=S.getSparklineColors();e&&(n.lineColor=n.lineColor.filter((function(t,n){return-1!==e.indexOf(n)})));var r=JSON.stringify(n),i={forceView:"1",viewDataTable:"sparkline",widget:this.isWidget?"1":"0",showtitle:"1",colors:r,random:Date.now(),date:this.defaultDate},a=new Xe,o=a.mixinDefaultGetParams(Object.assign(Object.assign({},i),t)),l=Ce.parsed.value.token_auth;return l&&l.length&&S.shouldPropagateTokenAuth&&(o.token_auth=l),"?".concat(Ce.stringify(o))},defaultDate:function(){if("range"===S.period)return"".concat(S.startDateString,",").concat(S.endDateString);var e=_.getLastNRange(S.period,30,S.currentDateString).getDateRange(),t=new Date(S.minDateYear,S.minDateMonth-1,S.minDateDay);e[0]<t&&(e[0]=t);var n=E(e[0]),r=E(e[1]);return"".concat(n,",").concat(r)}}});tu.render=eu;var nu=tu,ru=(jt({component:nu,scope:{seriesIndices:{angularJsBind:"<"},params:{angularJsBind:"<"}},directiveName:"piwikSparkline",restrict:"E"}),{class:"progressbar"}),iu={class:"progress"},au=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif"},null,-1),ou=["innerHTML"];
+function Xs(e){return{restrict:"A",scope:{reportTitle:"@",requestParams:"@",reportFormats:"@",apiMethod:"@",maxFilterLimit:"@"},link:function(t,n){var r={instance:null,value:{reportTitle:t.reportTitle,requestParams:t.requestParams,reportFormats:"string"===typeof t.reportFormats?JSON.parse(t.reportFormats):t.reportFormats,apiMethod:t.apiMethod,maxFilterLimit:parseInt(t.maxFilterLimit,10),onClose:function(){e((function(){window.angular.element(document).injector().get("$rootScope").$apply()}),10)}},oldValue:null,modifiers:{},dir:{}};Ks.mounted(n[0],r)}}}Xs.$inject=["$timeout"],window.angular.module("piwikApp").directive("piwikReportExport",Xs);var Zs=["src"];function eu(e,t,n,r,i,o){return Object(a["openBlock"])(),Object(a["createElementBlock"])("img",{src:e.sparklineUrl},null,8,Zs)}var tu=Object(a["defineComponent"])({props:{seriesIndices:Array,params:Object},data:function(){return{isWidget:!1}},mounted:function(){this.isWidget=!!this.$el.closest("[widgetId]")},computed:{sparklineUrl:function(){var e=this.seriesIndices,t=this.params,n=S.getSparklineColors();e&&(n.lineColor=n.lineColor.filter((function(t,n){return-1!==e.indexOf(n)})));var r=JSON.stringify(n),i={forceView:"1",viewDataTable:"sparkline",widget:this.isWidget?"1":"0",showtitle:"1",colors:r,random:Date.now(),date:this.defaultDate},a=new Xe,o=a.mixinDefaultGetParams(Object.assign(Object.assign({},i),t)),l=Ce.parsed.value.token_auth;return l&&l.length&&S.shouldPropagateTokenAuth&&(o.token_auth=l),"?".concat(Ce.stringify(o))},defaultDate:function(){if("range"===S.period)return"".concat(S.startDateString,",").concat(S.endDateString);var e=_.getLastNRange(S.period,30,S.currentDateString).getDateRange(),t=new Date(S.minDateYear,S.minDateMonth-1,S.minDateDay);e[0]<t&&(e[0]=t);var n=E(e[0]),r=E(e[1]);return"".concat(n,",").concat(r)}}});tu.render=eu;var nu=tu,ru=(jt({component:nu,scope:{seriesIndices:{angularJsBind:"<"},params:{angularJsBind:"<"}},directiveName:"piwikSparkline",restrict:"E"}),{class:"progressbar"}),iu={class:"progress"},au=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",style:{"margin-right":"3.5px"}},null,-1),ou=["innerHTML"];
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CoreHome/vue/src/Progressbar/Progressbar.vue b/plugins/CoreHome/vue/src/Progressbar/Progressbar.vue
index 25dfc97b94..985c44dc92 100644
--- a/plugins/CoreHome/vue/src/Progressbar/Progressbar.vue
+++ b/plugins/CoreHome/vue/src/Progressbar/Progressbar.vue
@@ -14,7 +14,7 @@
/>
</div>
<span v-show="!!label">
- <img src="plugins/Morpheus/images/loading-blue.gif" />
+ <img src="plugins/Morpheus/images/loading-blue.gif" style="margin-right: 3.5px" />
<span class="label" v-html="$sanitize(label)" />
</span>
</div>
diff --git a/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue b/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue
index 70e2743ab8..76548ccc26 100644
--- a/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue
+++ b/plugins/CoreHome/vue/src/WidgetLoader/WidgetLoader.vue
@@ -219,8 +219,10 @@ export default defineComponent({
const scope = $rootScope.$new();
this.currentScope = scope;
- Matomo.helper.compileVueEntryComponents($content);
+ // compile angularjs first since it will modify all dom nodes, breaking vue bindings
+ // if they are present
Matomo.helper.compileAngularComponents($content, { scope });
+ Matomo.helper.compileVueEntryComponents($content);
NotificationsStore.parseNotificationDivs();
diff --git a/plugins/CorePluginsAdmin/lang/ga.json b/plugins/CorePluginsAdmin/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/CorePluginsAdmin/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/CorePluginsAdmin/lang/id.json b/plugins/CorePluginsAdmin/lang/id.json
index 7ba1cb3e6c..2a09a7400c 100644
--- a/plugins/CorePluginsAdmin/lang/id.json
+++ b/plugins/CorePluginsAdmin/lang/id.json
@@ -1,27 +1,90 @@
{
"CorePluginsAdmin": {
- "ActionUninstall": "Lepaskan",
- "Activate": "Diaktifkan",
- "Activated": "Teraktivasi",
+ "ActionUninstall": "Copot pemasangan",
+ "Activate": "Aktifkan",
+ "ActivateTagManagerNow": "Aktifkan Pengelola Tag sekarang",
+ "Activated": "Diaktifkan",
"Active": "Aktif",
"Activity": "Aktivitas",
- "AuthorHomepage": "Alamat Penulis",
- "Deactivate": "Dimatikan",
+ "AlwaysActivatedPluginsList": "Plugin berikut ini selalu diaktifkan dan tidak dapat dinonaktifkan: %s",
+ "AreThereAnyRisks": "Apakah ada risikonya?",
+ "AreThereAnyRisksDetails1": "Saat Anda mengaktifkan Pengelola Tag, pengguna dengan akses admin akan dapat membuat tag, pemicu, dan variabel HTML khusus yang dapat menjalankan JavaScript di situs Anda. Templat khusus ini dapat disalahgunakan, misalnya untuk mencuri informasi sensitif dari pengunjung situs web Anda (dikenal sebagai %1$sXSS%2$s).",
+ "AreThereAnyRisksDetails2": "Anda dapat menonaktifkan templat khusus ini di bagian \"Administrasi =&gt; Pengaturan Umum\" setelah Anda mengaktifkan Pengelola Tag. Selain itu, Anda juga dapat membatasi penggunaan templat ini untuk pengguna tertentu atau pengguna super saja.",
+ "AuthorHomepage": "Beranda Pencipta",
+ "ChangeLookByManageThemes": "Anda dapat mengubah tampilan Matomo dengan %1$sMengelola Tema%2$s.",
+ "ChangeSettingsPossible": "Anda dapat mengubah %1$spengaturan%2$s untuk plugin ini.",
+ "Changelog": "Log Perubahan",
+ "CommunityContributedPlugin": "Ini adalah plugin kontribusi komunitas yang dipersembahkan untuk Anda secara gratis.",
+ "ConsiderDonating": "Pertimbangkan untuk menyumbang",
+ "ConsiderDonatingCreatorOf": "Silakan pertimbangkan untuk menyumbang kepada pencipta %s",
+ "CorePluginTooltip": "Plugin inti tidak memiliki versi karena didistribusikan dengan Matomo.",
+ "Deactivate": "Menonaktifkan",
+ "DoMoreContactPiwikAdmins": "Untuk memasang plugin atau tema yang baru, silakan hubungi admin Matomo Anda.",
+ "FileExceedsUploadLimit": "Berkas yang dipilih melebihi batas unggahan server Anda.",
"History": "Riwayat",
- "Inactive": "Tak Aktif",
- "InstalledPlugins": "Plugin terinstal",
- "InstalledThemes": "Tema terinstal",
- "InstallNewPlugins": "Instal plugin baru",
- "LicenseHomepage": "Alamat Lisensi",
- "LikeThisPlugin": "Suka plugin ini?",
- "PluginsExtendPiwik": "Pengaya menambah dan memperluas kegunaan dari Matomo.",
- "OncePluginIsInstalledYouMayActivateHere": "Sekali pengaya terinstal, Anda dapat mengaktifkan dan mematikan di sini.",
- "MenuPlatform": "Pelantar",
+ "Inactive": "Tidak aktif",
+ "InfoPluginUpdateIsRecommended": "Perbarui plugin Anda sekarang untuk mendapatkan manfaat dari peningkatan terbaru.",
+ "InfoThemeIsUsedByOtherUsersAsWell": "Catatan: pengguna %1$s lainnya yang terdaftar di Matomo juga menggunakan tema %2$s.",
+ "InfoThemeUpdateIsRecommended": "Perbarui tema Anda untuk menikmati versi terbaru.",
+ "InstallNewPlugins": "Pasang plugin baru",
+ "InstallNewThemes": "Pasang tema baru",
+ "InstalledPlugins": "Plugin yang terpasang",
+ "InstalledThemes": "Tema yang terpasang",
+ "InstallingNewPluginViaMarketplaceOrUpload": "Anda dapat memasang plugin secara otomatis dari Lokapasar atau %1$smengunggah plugin%2$s dalam format .zip.",
+ "LicenseHomepage": "Beranda Lisensi",
+ "LikeThisPlugin": "Suka dengan plugin ini?",
+ "MenuPlatform": "Platform",
+ "MissingRequirementsNotice": "Silahkan perbarui %1$s %2$s ke versi terbaru, %1$s %3$s diperlukan.",
+ "MissingRequirementsPleaseInstallNotice": "Silakan instal %1$s %2$s seperti yang diperlukan oleh %3$s.",
+ "NoPluginSettings": "Tidak ada pengaturan plugin yang dapat dikonfigurasi",
"NoZipFileSelected": "Silakan pilih sebuah berkas ZIP.",
- "PluginHomepage": "Alamat Pengaya",
- "PluginsManagement": "Pengatur Pengaya",
+ "NotDownloadable": "Tidak dapat diunduh",
+ "NumUpdatesAvailable": "%s Pembaruan tersedia",
+ "OncePluginIsInstalledYouMayActivateHere": "Setelah plugin dipasang, Anda dapat mengaktifkan atau menonaktifkannya di sini.",
+ "Origin": "Asal",
+ "OriginCore": "Inti",
+ "OriginOfficial": "Resmi",
+ "OriginThirdParty": "Pihak ketiga",
+ "PluginActivated": "Plugin diaktifkan",
+ "PluginHomepage": "Beranda Plugin",
+ "PluginNotCompatibleWith": "Plugin %1$s tidak kompatibel dengan %2$s.",
+ "PluginNotDownloadable": "Plugin tidak dapat diunduh.",
+ "PluginNotDownloadablePaidReason": "Alasan yang mungkin yaitu karena lisensi sudah kedaluwarsa atau terlampaui.",
+ "PluginNotFound": "Plugin %1$s tidak ditemukan pada berkas sistem.",
+ "PluginNotFoundAlternative": "Jika Anda telah menggunakan plugin ini, coba unggah atau pasang ulang dari lokapasar. Jika tidak, klik copot pemasangan untuk menghapusnya dari daftar.",
+ "PluginNotWorkingAlternative": "Jika Anda telah menggunakan plugin ini, mungkin Anda dapat menemukan versi yang lebih baru di Lokapasar. Jika tidak, Anda mungkin ingin menghapusnya.",
+ "PluginRequirement": "%1$s membutuhkan %2$s.",
+ "PluginRequiresInternet": "Plugin ini membutuhkan koneksi internet yang berfungsi dengan baik. Silakan periksa pengaturan `enable_internet_features` jika Anda ingin menggunakan fitur ini.",
+ "PluginsExtendPiwik": "Plugin menambah dan memperluas fungsionalitas Matomo.",
+ "PluginsManagement": "Kelola Plugin",
"Status": "Status",
+ "SuccessfullyActicated": "Anda telah berhasil mengaktifkan <strong>%s</strong>.",
+ "TagManagerEmailSuperUserToActivate": "Surel Pengguna Super untuk mengaktifkan fitur baru ini",
+ "TagManagerLearnMoreInUserGuide": "Pelajari lebih lanjut di Panduan Pengguna Pengelola Tag",
+ "TagManagerNowAvailableSubtitle": "Kelola semua tag Anda dengan mudah menggunakan satu platform untuk mendapatkan wawasan yang Anda inginkan, peluangnya tidak terbatas!",
+ "TagManagerNowAvailableTitle": "Pengelola Tag Matomo sekarang tersedia",
+ "TagManagerTeaserEmailSuperUserBody": "Hai,%1$sPengelola Tag Matomo sekarang tersedia di Matomo dan saya ingin menggunakan fitur baru ini. Karena Anda memiliki akses Pengguna Super, dapatkah Anda mengaktifkan fitur ini melalui halaman Pengelola Tag di menu bagian atas?%2$sURL Matomo Anda adalah %3$s.%4$sTerima kasih",
+ "TagManagerTeaserHideNonSuperUser": "Tidak tertarik, jangan tampilkan halaman ini lagi",
+ "TagManagerTeaserHideSuperUser": "Jangan tampilkan halaman ini kepada pengguna mana pun",
+ "TeaserExtendPiwik": "Perluas Matomo dengan Plugin dan Tema",
+ "TeaserExtendPiwikByPlugin": "Perluas Matomo dengan %1$smemasang plugin dari Lokapasar%2$s atau %3$smengunggah plugin dalam format .zip%4$s.",
+ "TeaserExtendPiwikByTheme": "Nikmati tampilan &amp; nuansa lain dengan %1$smemasang tema baru%2$s.",
+ "Theme": "Tema",
+ "Themes": "Tema",
+ "ThemesDescription": "Tema dapat mengubah tampilan antarmuka pengguna Matomo dan memberikan pengalaman visual yang benar-benar baru dalam menikmati laporan analitik Anda.",
+ "ThemesManagement": "Kelola Tema",
+ "UninstallConfirm": "Anda akan mencopot pemasangan plugin %s. Plugin akan dihapus sepenuhnya dari platform Anda dan tidak dapat dipulihkan. Apakah Anda yakin ingin melakukan ini?",
+ "UpdateSelected": "Pembaruan Dipilih",
"Version": "Versi",
- "Websites": "Situs"
+ "ViewAllMarketplacePlugins": "Lihat semua plugin Lokapasar",
+ "WeCouldNotLoadThePluginAsItHasMissingDependencies": "Plugin %1$s tidak dapat dimuat karena memiliki dependensi yang hilang: %2$s",
+ "Websites": "Situs Web",
+ "WhatIsTagManager": "Apa itu Pengelola Tag?",
+ "WhatIsTagManagerDetails1": "Mirip dengan bagaimana Sistem Manajemen Konten memberi Anda semua fleksibilitas untuk menerbitkan konten situs web Anda tanpa memiliki pengetahuan teknis tentang HTML/ CSS, Tag Management System (TMS) adalah pilihan Anda untuk menyederhanakan proses penyematan dan tag pelacakan aplikasi pihak ketiga (juga dikenal sebagai cuplikan atau piksel) di situs web Anda.",
+ "WhatIsTagManagerDetails2": "Misalnya Anda ingin melihat hasil konversi/ sasaran, pendaftaran buletin, widget sosial, popup keluar, dan kampanye pemasaran ulang. Sesuatu yang dulunya merupakan proses yang sangat teknis dan memakan waktu, sekarang bisa dengan mudah dilakukan dalam TMS dan hanya membutuhkan beberapa klik untuk menerapkannya.",
+ "WhyUsingATagManager": "Mengapa harus memakai Pengelola Tag?",
+ "WhyUsingATagManagerDetails1": "Pengelola Tag membuat hidup Anda menjadi lebih mudah! Anda tidak perlu lagi menunggu pengembang untuk mengubah cuplikan pihak pertama atau ketiga di situs Anda karena Pengelola Tag memberi Anda pengalaman bebas stres untuk membuat perubahan ini dan meluncurkan situs web Anda sendiri.",
+ "WhyUsingATagManagerDetails2": "Hal tersebut membuat Anda lebih nyaman, memungkinkan Anda untuk membawa perubahan ke pasar dengan lebih cepat, dan juga mengurangi biaya.",
+ "WhyUsingATagManagerDetails3": "Ini membuat tim pemasaran, tim digital, dan orang-orang IT senang... Ini adalah solusi terbaik untuk semua orang!"
}
-} \ No newline at end of file
+}
diff --git a/plugins/CorePluginsAdmin/lang/nb.json b/plugins/CorePluginsAdmin/lang/nb.json
index f857ece3f5..617de664b4 100644
--- a/plugins/CorePluginsAdmin/lang/nb.json
+++ b/plugins/CorePluginsAdmin/lang/nb.json
@@ -2,11 +2,13 @@
"CorePluginsAdmin": {
"ActionUninstall": "Avinstaller",
"Activate": "Aktiver",
+ "ActivateTagManagerNow": "Aktiver etikettbehandler nå",
"Activated": "Aktivert",
"Active": "Aktiv",
"Activity": "Aktivitet",
"AlwaysActivatedPluginsList": "Følgende programtillegg er alltid påslått og kan ikke skrus av: %s",
"AreThereAnyRisks": "Finnes det noen risiko?",
+ "AreThereAnyRisksDetails2": "Du kan skru av disse egendefinerte malene under «Administrasjon → Generelle innstillinger» når du har aktivert etikettbehandleren. Alternativt kan du også forbeholde bruk for spesifikke brukere, eller kun superbrukere.",
"AuthorHomepage": "Forfatterens hjemmeside",
"ChangeLookByManageThemes": "Du kan endre utseendet til Matomo ved å %1$sHåndtere temaer%2$s.",
"ChangeSettingsPossible": "Du kan endre %1$sinnstillingene%2$s for denne utvidelsen.",
@@ -46,13 +48,23 @@
"PluginHomepage": "Hjemmeside for utvidelse",
"PluginNotCompatibleWith": "%1$s utvidelse ikke kompatibel med %2$s.",
"PluginNotDownloadable": "Dette programtillegget kan ikke lastes ned.",
+ "PluginNotDownloadablePaidReason": "Dette kan være fordi lisensen er utløpt eller overskredet.",
+ "PluginNotFound": "%1$s-programtillegget ble ikke funnet på filsystemet.",
+ "PluginNotFoundAlternative": "Hvis du har brukt dette programtillegget kan du prøve å laste det opp igjen eller re-installere det fra markedsplassen. Hvis ikke kan du klikke «Avinstaller» for å fjerne det fra listen.",
"PluginNotWorkingAlternative": "Hvis du bruker denne utvidelsen, kanskje du kan finne en nyere versjon i markedsplassen. Hvis ikke, vil du kanskje avinstallere den.",
"PluginRequirement": "%1$s krever %2$s.",
+ "PluginRequiresInternet": "Dette programtillegget krever en fungerende tilknytning til Internett. Sjekk om oppsettsverdien din for `enable_internet_features` hvis du ønsker å bruke denne funksjonen.",
"PluginsExtendPiwik": "Utvidelser kan utvide eller begrense funksjonaliteten i Matomo.",
"PluginsManagement": "Administrasjon av utvidelser",
"Status": "Status",
"SuccessfullyActicated": "Du har aktivert <strong>%s</strong>.",
+ "TagManagerEmailSuperUserToActivate": "Send e-poster til superbrukere for å aktivere denne nye funksjonen",
+ "TagManagerNowAvailableSubtitle": "Håndter alle etikettene dine med én plattform for å få innsikten du ønsker.",
+ "TagManagerNowAvailableTitle": "Matomo-etikettbehandler er nå tilgjengelig",
+ "TagManagerTeaserHideNonSuperUser": "Ikke interessert. Ikke vis denne siden igjen.",
+ "TagManagerTeaserHideSuperUser": "Ikke vis noen denne siden",
"TeaserExtendPiwik": "Utvid Matomo med utvidelser og temaer",
+ "TeaserExtendPiwikByPlugin": "Ta i bruk mer av Matomo med %1$sinstallerbare programtillegg fra markedsplassen%2$s eller %3$slast opp et programtillegg i .zip-format%4$s.",
"TeaserExtendPiwikByTheme": "Prøv et nytt utseende ved å %1$sinstallere et nytt tema%2$s.",
"Theme": "Tema",
"Themes": "Temaer",
@@ -62,6 +74,11 @@
"UpdateSelected": "Oppdatering valgt",
"Version": "Versjon",
"ViewAllMarketplacePlugins": "Se alle utvidelsene på Markedsplassen",
- "Websites": "Nettsteder"
+ "WeCouldNotLoadThePluginAsItHasMissingDependencies": "%1$s-programtillegget %1$skunne ikke lastes inn fordi det har manglende avhengigheter: %2$s",
+ "Websites": "Nettsteder",
+ "WhatIsTagManager": "Hva er en etikettbehandler?",
+ "WhyUsingATagManager": "Hvorfor en etikettbehandler?",
+ "WhyUsingATagManagerDetails1": "Med en etikettbehandler trenger du ikke å vente på at en utvikler skal endre noen teksnutter på nettsiden din, siden etikettbehandleren lar deg ghøre disse endringene, og utvikle nettsiden din selv.",
+ "WhyUsingATagManagerDetails3": "Dette gjør reklameansatte, digitaliseringsansvarlige, og IT-folk glade. Vinn-vinn for alle."
}
}
diff --git a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js
index e492932d9c..d01067019b 100644
--- a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js
+++ b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.js
@@ -150,7 +150,7 @@ var external_CoreHome_ = __webpack_require__("19dc");
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=template&id=06a43882
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=template&id=b3ece69c
var _hoisted_1 = {
class: "form-group row matomo-form-field"
@@ -193,11 +193,11 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
}])
}, [_ctx.showFormHelp ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "form-description"
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.formField.description), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.formField.description]]), _ctx.formField.inlineHelp ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_4, [_ctx.inlineHelpComponent ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDynamicComponent"])(_ctx.inlineHelpComponent), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeProps"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.formField.description), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.formField.description]]), _ctx.formField.inlineHelp || _ctx.hasInlineHelpSlot ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_4, [_ctx.inlineHelpComponent ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDynamicComponent"])(_ctx.inlineHelpComponent), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeProps"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
key: 0
- }, _ctx.inlineHelpBind)), null, 16)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Default')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.defaultValuePrettyTruncated), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showDefaultValue]])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showField]]);
+ }, _ctx.inlineHelpBind)), null, 16)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "inline-help")], 512)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Default')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.defaultValuePrettyTruncated), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showDefaultValue]])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showField]]);
}
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=template&id=06a43882
+// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue?vue&type=template&id=b3ece69c
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FieldCheckbox.vue?vue&type=template&id=3ee04378
@@ -893,37 +893,37 @@ function FieldRadiovue_type_template_id_e73c5bb0_render(_ctx, _cache, $props, $s
FieldRadiovue_type_script_lang_ts.render = FieldRadiovue_type_template_id_e73c5bb0_render
/* harmony default export */ var FieldRadio = (FieldRadiovue_type_script_lang_ts);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue?vue&type=template&id=b3b83f84
-function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || FieldSelectvue_type_template_id_b3b83f84_unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue?vue&type=template&id=65cce678
+function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || FieldSelectvue_type_template_id_65cce678_unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
-function FieldSelectvue_type_template_id_b3b83f84_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return FieldSelectvue_type_template_id_b3b83f84_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return FieldSelectvue_type_template_id_b3b83f84_arrayLikeToArray(o, minLen); }
+function FieldSelectvue_type_template_id_65cce678_unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return FieldSelectvue_type_template_id_65cce678_arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return FieldSelectvue_type_template_id_65cce678_arrayLikeToArray(o, minLen); }
-function FieldSelectvue_type_template_id_b3b83f84_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+function FieldSelectvue_type_template_id_65cce678_arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
function _iterableToArrayLimit(arr, i) { var _i = arr == null ? null : typeof Symbol !== "undefined" && arr[Symbol.iterator] || arr["@@iterator"]; if (_i == null) return; var _arr = []; var _n = true; var _d = false; var _s, _e; try { for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; }
function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
-var FieldSelectvue_type_template_id_b3b83f84_hoisted_1 = {
+var FieldSelectvue_type_template_id_65cce678_hoisted_1 = {
key: 0,
class: "matomo-field-select"
};
-var FieldSelectvue_type_template_id_b3b83f84_hoisted_2 = ["multiple", "name"];
-var FieldSelectvue_type_template_id_b3b83f84_hoisted_3 = ["label"];
-var FieldSelectvue_type_template_id_b3b83f84_hoisted_4 = ["value", "selected", "disabled"];
-var FieldSelectvue_type_template_id_b3b83f84_hoisted_5 = ["for", "innerHTML"];
-var FieldSelectvue_type_template_id_b3b83f84_hoisted_6 = {
+var FieldSelectvue_type_template_id_65cce678_hoisted_2 = ["multiple", "name"];
+var FieldSelectvue_type_template_id_65cce678_hoisted_3 = ["label"];
+var FieldSelectvue_type_template_id_65cce678_hoisted_4 = ["value", "selected", "disabled"];
+var FieldSelectvue_type_template_id_65cce678_hoisted_5 = ["for", "innerHTML"];
+var FieldSelectvue_type_template_id_65cce678_hoisted_6 = {
key: 1,
class: "matomo-field-select"
};
-var FieldSelectvue_type_template_id_b3b83f84_hoisted_7 = ["multiple", "name"];
-var FieldSelectvue_type_template_id_b3b83f84_hoisted_8 = ["value", "selected", "disabled"];
-var FieldSelectvue_type_template_id_b3b83f84_hoisted_9 = ["for", "innerHTML"];
-function FieldSelectvue_type_template_id_b3b83f84_render(_ctx, _cache, $props, $setup, $data, $options) {
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [_ctx.groupedOptions ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldSelectvue_type_template_id_b3b83f84_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("select", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
+var FieldSelectvue_type_template_id_65cce678_hoisted_7 = ["multiple", "name"];
+var FieldSelectvue_type_template_id_65cce678_hoisted_8 = ["value", "selected", "disabled"];
+var FieldSelectvue_type_template_id_65cce678_hoisted_9 = ["for", "innerHTML"];
+function FieldSelectvue_type_template_id_65cce678_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, [_ctx.groupedOptions ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldSelectvue_type_template_id_65cce678_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("select", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
ref: "select",
class: "grouped",
multiple: _ctx.multiple,
@@ -945,12 +945,12 @@ function FieldSelectvue_type_template_id_b3b83f84_render(_ctx, _cache, $props, $
value: "string:".concat(option.key),
selected: _ctx.multiple ? _ctx.modelValue && _ctx.modelValue.indexOf(option.key) !== -1 : _ctx.modelValue === option.key,
disabled: option.disabled
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(option.value), 9, FieldSelectvue_type_template_id_b3b83f84_hoisted_4);
- }), 128))], 8, FieldSelectvue_type_template_id_b3b83f84_hoisted_3);
- }), 128))], 16, FieldSelectvue_type_template_id_b3b83f84_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(option.value), 9, FieldSelectvue_type_template_id_65cce678_hoisted_4);
+ }), 128))], 8, FieldSelectvue_type_template_id_65cce678_hoisted_3);
+ }), 128))], 16, FieldSelectvue_type_template_id_65cce678_hoisted_2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", {
for: _ctx.name,
- innerHTML: _ctx.title
- }, null, 8, FieldSelectvue_type_template_id_b3b83f84_hoisted_5)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.groupedOptions && _ctx.options ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldSelectvue_type_template_id_b3b83f84_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("select", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
+ innerHTML: _ctx.$sanitize(_ctx.title)
+ }, null, 8, FieldSelectvue_type_template_id_65cce678_hoisted_5)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.groupedOptions && _ctx.options ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FieldSelectvue_type_template_id_65cce678_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("select", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["mergeProps"])({
class: "ungrouped",
ref: "select",
multiple: _ctx.multiple,
@@ -964,13 +964,13 @@ function FieldSelectvue_type_template_id_b3b83f84_render(_ctx, _cache, $props, $
value: "string:".concat(option.key),
selected: _ctx.multiple ? _ctx.modelValue && _ctx.modelValue.indexOf(option.key) !== -1 : _ctx.modelValue === option.key,
disabled: option.disabled
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(option.value), 9, FieldSelectvue_type_template_id_b3b83f84_hoisted_8);
- }), 128))], 16, FieldSelectvue_type_template_id_b3b83f84_hoisted_7), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(option.value), 9, FieldSelectvue_type_template_id_65cce678_hoisted_8);
+ }), 128))], 16, FieldSelectvue_type_template_id_65cce678_hoisted_7), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", {
for: _ctx.name,
- innerHTML: _ctx.title
- }, null, 8, FieldSelectvue_type_template_id_b3b83f84_hoisted_9)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 64);
+ innerHTML: _ctx.$sanitize(_ctx.title)
+ }, null, 8, FieldSelectvue_type_template_id_65cce678_hoisted_9)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 64);
}
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue?vue&type=template&id=b3b83f84
+// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue?vue&type=template&id=65cce678
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue?vue&type=script&lang=ts
function FieldSelectvue_type_script_lang_ts_toConsumableArray(arr) { return FieldSelectvue_type_script_lang_ts_arrayWithoutHoles(arr) || FieldSelectvue_type_script_lang_ts_iterableToArray(arr) || FieldSelectvue_type_script_lang_ts_unsupportedIterableToArray(arr) || FieldSelectvue_type_script_lang_ts_nonIterableSpread(); }
@@ -1247,7 +1247,7 @@ function handleOldAngularJsValues(value) {
-FieldSelectvue_type_script_lang_ts.render = FieldSelectvue_type_template_id_b3b83f84_render
+FieldSelectvue_type_script_lang_ts.render = FieldSelectvue_type_template_id_65cce678_render
/* harmony default export */ var FieldSelect = (FieldSelectvue_type_script_lang_ts);
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/FormField/FieldSite.vue?vue&type=template&id=50ac73cc
@@ -1939,7 +1939,7 @@ var CONTROL_TO_AVAILABLE_OPTION_PROCESSOR = {
return {};
},
showFormHelp: function showFormHelp() {
- return this.formField.description || this.formField.inlineHelp || this.showDefaultValue;
+ return this.formField.description || this.formField.inlineHelp || this.showDefaultValue || this.hasInlineHelpSlot;
},
showDefaultValue: function showDefaultValue() {
return this.defaultValuePretty && this.formField.uiControl !== 'checkbox' && this.formField.uiControl !== 'radio';
@@ -2040,6 +2040,16 @@ var CONTROL_TO_AVAILABLE_OPTION_PROCESSOR = {
},
defaultValuePrettyTruncated: function defaultValuePrettyTruncated() {
return this.defaultValuePretty.substring(0, 50);
+ },
+ hasInlineHelpSlot: function hasInlineHelpSlot() {
+ var _inlineHelpSlot$, _inlineHelpSlot$$chil;
+
+ if (!this.$slots['inline-help']) {
+ return false;
+ }
+
+ var inlineHelpSlot = this.$slots['inline-help']();
+ return !!(inlineHelpSlot !== null && inlineHelpSlot !== void 0 && (_inlineHelpSlot$ = inlineHelpSlot[0]) !== null && _inlineHelpSlot$ !== void 0 && (_inlineHelpSlot$$chil = _inlineHelpSlot$.children) !== null && _inlineHelpSlot$$chil !== void 0 && _inlineHelpSlot$$chil.length);
}
},
methods: {
@@ -2183,9 +2193,9 @@ function conditionFn(scope, condition) {
}, true);
}
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/Field/Field.vue?vue&type=template&id=731fa155
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/Field/Field.vue?vue&type=template&id=91065bf4
-function Fieldvue_type_template_id_731fa155_render(_ctx, _cache, $props, $setup, $data, $options) {
+function Fieldvue_type_template_id_91065bf4_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_FormField = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("FormField");
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_FormField, {
@@ -2194,9 +2204,14 @@ function Fieldvue_type_template_id_731fa155_render(_ctx, _cache, $props, $setup,
"onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
return _ctx.onChange($event);
})
- }, null, 8, ["form-field", "model-value"]);
+ }, {
+ "inline-help": Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderSlot"])(_ctx.$slots, "inline-help")];
+ }),
+ _: 3
+ }, 8, ["form-field", "model-value"]);
}
-// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/Field/Field.vue?vue&type=template&id=731fa155
+// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/Field/Field.vue?vue&type=template&id=91065bf4
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CorePluginsAdmin/vue/src/Field/Field.vue?vue&type=script&lang=ts
@@ -2308,7 +2323,7 @@ var UI_CONTROLS_TO_TYPE = {
-Fieldvue_type_script_lang_ts.render = Fieldvue_type_template_id_731fa155_render
+Fieldvue_type_script_lang_ts.render = Fieldvue_type_template_id_91065bf4_render
/* harmony default export */ var Field = (Fieldvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/CorePluginsAdmin/vue/src/Field/Field.adapter.ts
diff --git a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js
index 3d8b0e2cb3..32c945e410 100644
--- a/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js
+++ b/plugins/CorePluginsAdmin/vue/dist/CorePluginsAdmin.umd.min.js
@@ -1,28 +1,28 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["CorePluginsAdmin"]=t(require("CoreHome"),require("vue")):e["CorePluginsAdmin"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CorePluginsAdmin/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"FormField",(function(){return qt})),n.d(t,"Field",(function(){return Qt})),n.d(t,"PluginSettings",(function(){return Tn})),n.d(t,"PluginFilter",(function(){return no})),n.d(t,"PluginManagement",(function(){return Hn})),n.d(t,"PluginUpload",(function(){return Kn})),n.d(t,"SaveButton",(function(){return uo})),n.d(t,"Form",(function(){return mo})),n.d(t,"GroupedSettings",(function(){return wn})),"undefined"!==typeof window){var o=window.document.currentScript,r=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var i=n("19dc"),l=n("8bbf"),a={class:"form-group row matomo-form-field"},u={key:0,class:"col s12"},c={key:0,class:"form-help"},s={key:0,class:"inline-help",ref:"inlineHelp"},d=Object(l["createElementVNode"])("br",null,null,-1);function m(e,t,n,o,r,i){return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",a,[e.formField.introduction?(Object(l["openBlock"])(),Object(l["createElementBlock"])("h3",u,Object(l["toDisplayString"])(e.formField.introduction),1)):Object(l["createCommentVNode"])("",!0),Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])(["col s12",{"input-field":"checkbox"!==e.formField.uiControl&&"radio"!==e.formField.uiControl,"file-field":"file"===e.formField.uiControl,m6:!e.formField.fullWidth}])},[(Object(l["openBlock"])(),Object(l["createBlock"])(Object(l["resolveDynamicComponent"])(e.childComponent),Object(l["mergeProps"])(Object.assign(Object.assign({formField:e.formField},e.formField),{},{modelValue:e.processedModelValue,availableOptions:e.availableOptions},e.extraChildComponentParams),{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)})}),null,16))],2),Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])(["col s12",{m6:!e.formField.fullWidth}])},[e.showFormHelp?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",c,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",{class:"form-description"},Object(l["toDisplayString"])(e.formField.description),513),[[l["vShow"],e.formField.description]]),e.formField.inlineHelp?(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",s,[e.inlineHelpComponent?(Object(l["openBlock"])(),Object(l["createBlock"])(Object(l["resolveDynamicComponent"])(e.inlineHelpComponent),Object(l["normalizeProps"])(Object(l["mergeProps"])({key:0},e.inlineHelpBind)),null,16)):Object(l["createCommentVNode"])("",!0)],512)):Object(l["createCommentVNode"])("",!0),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[d,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Default"))+": ",1),Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.defaultValuePrettyTruncated),1)],512),[[l["vShow"],e.showDefaultValue]])])):Object(l["createCommentVNode"])("",!0)],2)],512)),[[l["vShow"],e.showField]])}var f={class:"checkbox"},p=["checked","id","name"],b=["innerHTML"];function v(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",f,[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},e.uiControlAttributes,{value:1,checked:!!e.modelValue,type:"checkbox",id:e.name,name:e.name}),null,16,p),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.title)},null,8,b)])])}var h=Object(l["defineComponent"])({props:{modelValue:[Boolean,Number],uiControlAttributes:Object,name:String,title:String},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.modelValue!==e.target.checked&&this.$emit("update:modelValue",e.target.checked)}}});h.render=v;var g=h,O=["value","checked","onChange","id","name"];function y(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(l["toDisplayString"])(e.title),513),[[l["vShow"],e.title]]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("p",{key:n,class:"checkbox"},[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({value:t.key,checked:!!e.checkboxStates[n],onChange:function(t){return e.onChange(n)}},e.uiControlAttributes,{type:"checkbox",id:"".concat(e.name).concat(t.key),name:t.name}),null,16,O),Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(t.value),1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{class:"form-description"},Object(l["toDisplayString"])(t.description),513),[[l["vShow"],t.description]])])])})),128))])}function j(e){return S(e)||C(e)||w(e)||V()}function V(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function w(e,t){if(e){if("string"===typeof e)return k(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}}function C(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function S(e){if(Array.isArray(e))return k(e)}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function A(e,t){return(e||[]).map((function(e){return t&&-1!==t.indexOf(e.key)}))}var F=Object(l["defineComponent"])({props:{modelValue:Array,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,type:String},inheritAttrs:!1,emits:["update:modelValue"],computed:{checkboxStates:function(){return A(this.availableOptions,this.modelValue)}},mounted:function(){window.Materialize.updateTextFields()},methods:{onChange:function(e){var t=j(this.checkboxStates);t[e]=!t[e];var n=this.availableOptions||{},o=[];Object.values(n).forEach((function(e,n){t[n]&&o.push(e.key)})),this.$emit("update:modelValue",o)}}});F.render=y;var B=F,E={class:"expandableSelector"},x=Object(l["createElementVNode"])("svg",{class:"caret",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},[Object(l["createElementVNode"])("path",{d:"M7 10l5 5 5-5z"}),Object(l["createElementVNode"])("path",{d:"M0 0h24v24H0z",fill:"none"})],-1),N=["value"],T={class:"expandableList z-depth-2"},$={class:"searchContainer"},M={class:"collection firstLevel"},P=["onClick"],J={class:"collection secondLevel"},H=["onClick"],D={class:"primary-content"},L=["title"];function I(e,t,n,o,r,i){var a=Object(l["resolveDirective"])("focus-if"),u=Object(l["resolveDirective"])("focus-anywhere-but-here");return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",E,[Object(l["createElementVNode"])("div",{onClick:t[0]||(t[0]=function(t){return e.showSelect=!e.showSelect}),class:"select-wrapper"},[x,Object(l["createElementVNode"])("input",{type:"text",class:"select-dropdown",readonly:"readonly",value:e.modelValueText},null,8,N)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",T,[Object(l["createElementVNode"])("div",$,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text",placeholder:"Search","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),class:"expandableSearch browser-default"},null,512),[[l["vModelText"],e.searchTerm],[a,e.showSelect]])]),Object(l["createElementVNode"])("ul",M,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions,(function(t,n){return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("li",{class:"collection-item",key:n},[Object(l["createElementVNode"])("h4",{class:"expandableListCategory",onClick:function(n){return e.onCategoryClicked(t)}},[Object(l["createTextVNode"])(Object(l["toDisplayString"])(t.group)+" ",1),Object(l["createElementVNode"])("span",{class:Object(l["normalizeClass"])(["secondary-content",{"icon-arrow-right":e.showCategory!==t.group,"icon-arrow-bottom":e.showCategory===t.group}])},null,2)],8,P),Object(l["withDirectives"])(Object(l["createElementVNode"])("ul",J,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(t.values.filter((function(t){return-1!==t.value.toLowerCase().indexOf(e.searchTerm.toLowerCase())})),(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("li",{class:"expandableListItem collection-item valign-wrapper",key:t.key,onClick:function(n){return e.onValueClicked(t)}},[Object(l["createElementVNode"])("span",D,Object(l["toDisplayString"])(t.value),1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{title:t.tooltip,class:"secondary-content icon-help"},null,8,L),[[l["vShow"],t.tooltip]])],8,H)})),128))],512),[[l["vShow"],e.showCategory===t.group||e.searchTerm]])],512)),[[l["vShow"],t.values.filter((function(t){return-1!==t.value.toLowerCase().indexOf(e.searchTerm.toLowerCase())})).length]])})),128))])],512),[[l["vShow"],e.showSelect]])],512)),[[u,{blur:e.onBlur}]])}function z(e){var t=[];if(!e)return t;var n={};return Object.values(e).forEach((function(e){var t=e,o=t.group||"";o in n&&n[o]||(n[o]={values:[],group:o});var r={key:t.key,value:t.value};"tooltip"in t&&t.tooltip&&(r.tooltip=t.tooltip),n[o].values.push(r)})),Object.values(n).forEach((function(e){e.values.length&&t.push(e)})),t}var U=Object(l["defineComponent"])({props:{modelValue:[Number,String],availableOptions:Array,title:String},directives:{FocusAnywhereButHere:i["FocusAnywhereButHere"],FocusIf:i["FocusIf"]},inheritAttrs:!1,emits:["update:modelValue"],data:function(){return{showSelect:!1,searchTerm:"",showCategory:""}},computed:{modelValueText:function(){if(this.title)return this.title;var e,t=this.modelValue,n=this.availableOptions||[];return n.some((function(n){return e=n.values.find((function(e){return e.key===t})),e})),e?e.value?"".concat(e.value):"":t?"".concat(t):""}},methods:{onBlur:function(){this.showSelect=!1},onCategoryClicked:function(e){this.showCategory===e.group?this.showCategory="":this.showCategory=e.group},onValueClicked:function(e){this.$emit("update:modelValue",e.key),this.showSelect=!1}}});U.render=I;var K=U,_=["for","innerHTML"];function q(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("FieldArray");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,_),Object(l["createVNode"])(a,{name:e.name,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onValueUpdate(t)}),field:e.uiControlAttributes.field},null,8,["name","model-value","field"])])}var R=Object(l["defineComponent"])({components:{FieldArray:i["FieldArray"]},props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],methods:{onValueUpdate:function(e){this.$emit("update:modelValue",e)}}});R.render=q;var G=R,W={class:"btn"},Z=["for","innerHTML"],Y=["name","id"],Q={class:"file-path-wrapper"},X=["value"];function ee(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("div",W,[Object(l["createElementVNode"])("span",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,Z),Object(l["createElementVNode"])("input",{ref:"fileInput",name:e.name,type:"file",id:e.name,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},null,40,Y)]),Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("input",{class:"file-path validate",value:e.filePath,type:"text"},null,8,X)])])}var te=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:[String,File]},inheritAttrs:!1,emits:["update:modelValue"],watch:{modelValue:function(e){if(!e||""===e){var t=this.$refs.fileInput;t.value=""}}},methods:{onChange:function(e){var t=e.target.files;if(t){var n=t.item(0);this.$emit("update:modelValue",n)}}},computed:{filePath:function(){if(this.modelValue instanceof File)return this.$refs.fileInput.value}}});te.render=ee;var ne=te,oe=["type","name","value"];function re(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("input",{type:e.uiControl,name:e.name,value:e.modelValue,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},null,40,oe)])}var ie=Object(l["defineComponent"])({props:{modelValue:null,uiControl:String,name:String},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e.target.value)}}});ie.render=re;var le=ie,ae={class:"fieldMultiTuple"},ue=["for","innerHTML"];function ce(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("MultiPairField");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ae,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,ue),Object(l["createVNode"])(a,{name:e.name,"model-value":e.modelValue,"onUpdate:modelValue":e.onUpdateValue,field1:e.uiControlAttributes.field1,field2:e.uiControlAttributes.field2,field3:e.uiControlAttributes.field3,field4:e.uiControlAttributes.field4},null,8,["name","model-value","onUpdate:modelValue","field1","field2","field3","field4"])])}var se=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,components:{MultiPairField:i["MultiPairField"]},emits:["update:modelValue"],methods:{onUpdateValue:function(e){this.$emit("update:modelValue",e)}}});se.render=ce;var de=se,me=["type","id","name","value"],fe=["for","innerHTML"];function pe(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,id:e.name,name:e.name,value:(e.modelValue||"").toString(),onKeydown:t[0]||(t[0]=function(t){return e.onChange(t)}),onChange:t[1]||(t[1]=function(t){return e.onChange(t)})},e.uiControlAttributes),null,16,me),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,fe)],64)}var be=Object(l["defineComponent"])({props:{uiControl:String,name:String,title:String,modelValue:[Number,String],uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onChange=Object(i["debounce"])(this.onChange.bind(this),50)},methods:{onChange:function(e){var t=parseFloat(e.target.value);this.$emit("update:modelValue",t)}},mounted:function(){window.Materialize.updateTextFields()},watch:{modelValue:function(){setTimeout((function(){window.Materialize.updateTextFields()}))}}});be.render=pe;var ve=be,he=["value","id","name","disabled","checked"];function ge(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(l["toDisplayString"])(e.title),513),[[l["vShow"],e.title]]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions||[],(function(n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("p",{key:n.key,class:"radio"},[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({value:n.key,onChange:t[0]||(t[0]=function(t){return e.onChange(t)}),type:"radio",id:"".concat(e.name).concat(n.key),name:e.name,disabled:n.disabled||e.disabled},e.uiControlAttributes,{checked:e.modelValue===n.key||"".concat(e.modelValue)===n.key}),null,16,he),Object(l["createElementVNode"])("span",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(n.value)+" ",1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{class:"form-description"},Object(l["toDisplayString"])(n.description),513),[[l["vShow"],n.description]])])])])})),128))])}var Oe=Object(l["defineComponent"])({props:{title:String,availableOptions:Array,name:String,disabled:Boolean,uiControlAttributes:Object,modelValue:[String,Number]},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e.target.value)}}});Oe.render=ge;var ye=Oe;function je(e,t){return ke(e)||Se(e,t)||we(e,t)||Ve()}function Ve(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function we(e,t){if(e){if("string"===typeof e)return Ce(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(e,t):void 0}}function Ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Se(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function ke(e){if(Array.isArray(e))return e}var Ae={key:0,class:"matomo-field-select"},Fe=["multiple","name"],Be=["label"],Ee=["value","selected","disabled"],xe=["for","innerHTML"],Ne={key:1,class:"matomo-field-select"},Te=["multiple","name"],$e=["value","selected","disabled"],Me=["for","innerHTML"];function Pe(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[e.groupedOptions?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Ae,[Object(l["createElementVNode"])("select",Object(l["mergeProps"])({ref:"select",class:"grouped",multiple:e.multiple,name:e.name,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},e.uiControlAttributes),[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.groupedOptions,(function(t){var n=je(t,2),o=n[0],r=n[1];return Object(l["openBlock"])(),Object(l["createElementBlock"])("optgroup",{key:o,label:o},[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(r,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("option",{key:t.key,value:"string:".concat(t.key),selected:e.multiple?e.modelValue&&-1!==e.modelValue.indexOf(t.key):e.modelValue===t.key,disabled:t.disabled},Object(l["toDisplayString"])(t.value),9,Ee)})),128))],8,Be)})),128))],16,Fe),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.title},null,8,xe)])):Object(l["createCommentVNode"])("",!0),!e.groupedOptions&&e.options?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Ne,[Object(l["createElementVNode"])("select",Object(l["mergeProps"])({class:"ungrouped",ref:"select",multiple:e.multiple,name:e.name,onChange:t[1]||(t[1]=function(t){return e.onChange(t)})},e.uiControlAttributes),[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.options,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("option",{key:t.key,value:"string:".concat(t.key),selected:e.multiple?e.modelValue&&-1!==e.modelValue.indexOf(t.key):e.modelValue===t.key,disabled:t.disabled},Object(l["toDisplayString"])(t.value),9,$e)})),128))],16,Te),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.title},null,8,Me)])):Object(l["createCommentVNode"])("",!0)],64)}function Je(e){return Le(e)||De(e)||Ue(e)||He()}function He(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function De(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Le(e){if(Array.isArray(e))return Ke(e)}function Ie(e,t){return qe(e)||_e(e,t)||Ue(e,t)||ze()}function ze(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Ke(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ke(e,t):void 0}}function Ke(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function _e(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function qe(e){if(Array.isArray(e))return e}function Re(e){return Re="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Re(e)}function Ge(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},r=arguments.length>4?arguments[4]:void 0;if(e){var i=window.$(e);if(Array.from(e.options).forEach((function(e){e.selected=r?!!t&&-1!==t.indexOf(e.value.replace(/^string:/,"")):"string:".concat(t)===e.value})),i.formSelect(o),n){var l=i.closest(".select-wrapper").find("input");l.attr("placeholder",n)}}}function We(e){return!Array.isArray(e)&&"object"===Re(e)&&Object.values(e).some((function(e){return"object"===Re(e)}))}function Ze(e,t){return e.some((function(e){return e.key===t}))}function Ye(e,t,n){if(!e)return[];var o=!0,r=e;We(r)||(r={"":e},o=!1);var i=[];return Object.entries(r).forEach((function(e){var n=Ie(e,2),r=n[0],l=n[1];Object.entries(l).forEach((function(e){var n=Ie(e,2),l=n[0],a=n[1];if(a&&"object"===Re(a)&&"undefined"!==typeof a.key)i.push(a);else{var u=l;"integer"===t&&"string"===typeof l&&(u=parseInt(l,10)),i.push({group:o?r:void 0,key:u,value:a})}}))})),null!==n&&void 0!==n&&n.placeholder&&!Ze(i,"")?[{key:"",value:""}].concat(i):i}function Qe(e){return"string"===typeof e?e.replace(/^string:/,""):e}var Xe=Object(l["defineComponent"])({props:{modelValue:null,multiple:Boolean,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,uiControlOptions:Object},inheritAttrs:!1,emits:["update:modelValue"],computed:{options:function(){var e=this.availableOptions;return!e||Ze(e,"")||"undefined"!==typeof this.modelValue&&null!==this.modelValue&&""!==this.modelValue?e:[{key:"",value:this.modelValue,group:this.hasGroups?"":void 0}].concat(Je(e))},hasGroups:function(){var e=this.availableOptions;return e&&e[0]&&"undefined"!==typeof e[0].group},groupedOptions:function(){var e=this.options;if(!this.hasGroups||!e)return null;var t={};e.forEach((function(e){var n=e.group;t[n]=t[n]||[],t[n].push(e)}));var n=Object.entries(t);return n.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),n}},methods:{onChange:function(e){var t,n=this,o=e.target;this.multiple?(t=Array.from(o.options).filter((function(e){return e.selected})).map((function(e){return e.value})),t=t.map((function(e){return Qe(e)}))):(t=o.value,t=Qe(t)),this.$emit("update:modelValue",t),Object(l["nextTick"])((function(){n.modelValue!==t&&n.onModelValueChange(n.modelValue)}))},onModelValueChange:function(e){var t=this;window.$(this.$refs.select).val(e),setTimeout((function(){var n;Ge(t.$refs.select,e,null===(n=t.uiControlAttributes)||void 0===n?void 0:n.placeholder,t.uiControlOptions,t.multiple)}))}},watch:{modelValue:function(e){this.onModelValueChange(e)},"uiControlAttributes.disabled":{handler:function(e,t){var n=this;setTimeout((function(){var o;e!==t&&Ge(n.$refs.select,n.modelValue,null===(o=n.uiControlAttributes)||void 0===o?void 0:o.placeholder,n.uiControlOptions,n.multiple)}))}},availableOptions:function(e,t){var n=this;e!==t&&setTimeout((function(){var e;Ge(n.$refs.select,n.modelValue,null===(e=n.uiControlAttributes)||void 0===e?void 0:e.placeholder,n.uiControlOptions,n.multiple)}))}},mounted:function(){var e=this;setTimeout((function(){var t;Ge(e.$refs.select,e.modelValue,null===(t=e.uiControlAttributes)||void 0===t?void 0:t.placeholder,e.uiControlOptions,e.multiple)}))}});Xe.render=Pe;var et=Xe,tt=["for","innerHTML"],nt={class:"sites_autocomplete"};function ot(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("SiteSelector");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,class:"siteSelectorLabel",innerHTML:e.$sanitize(e.title)},null,8,tt),Object(l["createElementVNode"])("div",nt,[Object(l["createVNode"])(a,Object(l["mergeProps"])({"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)}),id:e.name,"show-all-sites-item":e.uiControlAttributes.showAllSitesItem||!1,"switch-site-on-select":!1,"show-selected-site":!0,"only-sites-with-admin-access":e.uiControlAttributes.onlySitesWithAdminAccess||!1},e.uiControlAttributes),null,16,["model-value","id","show-all-sites-item","only-sites-with-admin-access"])])])}var rt=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:Object,uiControlAttributes:Object},inheritAttrs:!1,components:{SiteSelector:i["SiteSelector"]},emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});rt.render=ot;var it=rt,lt=["type","id","name","value"],at=["for","innerHTML"];function ut(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,id:e.name,name:e.name,value:e.modelValueText,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)})},e.uiControlAttributes),null,16,lt),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,at)],64)}var ct=Object(l["defineComponent"])({props:{title:String,name:String,uiControlAttributes:Object,modelValue:[String,Number],uiControl:String},inheritAttrs:!1,emits:["update:modelValue"],computed:{modelValueText:function(){return"undefined"===typeof this.modelValue||null===this.modelValue?"":this.modelValue.toString()}},created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},mounted:function(){setTimeout((function(){window.Materialize.updateTextFields()}))},watch:{modelValue:function(){setTimeout((function(){window.Materialize.updateTextFields()}))}},methods:{onKeydown:function(e){var t=e.target.value;this.modelValue!==t&&this.$emit("update:modelValue",t)}}});ct.render=ut;var st=ct,dt=["for","innerHTML"],mt=["type","name","value"];function ft(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,dt),Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,name:e.name,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),value:e.concattedValues},e.uiControlAttributes),null,16,mt)])}var pt=Object(l["defineComponent"])({props:{name:String,title:String,uiControl:String,modelValue:Array,uiControlAttributes:Object},inheritAttrs:!1,computed:{concattedValues:function(){return"string"===typeof this.modelValue?this.modelValue:(this.modelValue||[]).join(", ")}},emits:["update:modelValue"],created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(",").map((function(e){return e.trim()}));t.join(", ")!==this.concattedValues&&this.$emit("update:modelValue",t)}}});pt.render=ft;var bt=pt,vt=["name","id","value"],ht=["for","innerHTML"];function gt(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("textarea",Object(l["mergeProps"])({name:e.name},e.uiControlAttributes,{id:e.name,value:e.modelValue,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),class:"materialize-textarea",ref:"textarea"}),null,16,vt),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,ht)],64)}var Ot=Object(l["defineComponent"])({props:{name:String,uiControlAttributes:Object,modelValue:String,title:String},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){this.$emit("update:modelValue",e.target.value)}},watch:{modelValue:function(){var e=this;setTimeout((function(){window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}},mounted:function(){var e=this;setTimeout((function(){window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}});Ot.render=gt;var yt=Ot,jt=["for","innerHTML"],Vt=["name","value"];function wt(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,jt),Object(l["createElementVNode"])("textarea",Object(l["mergeProps"])({ref:"textarea",name:e.name},e.uiControlAttributes,{value:e.concattedValue,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),class:"materialize-textarea"}),null,16,Vt)])}var Ct="\n",St=Object(l["defineComponent"])({props:{name:String,title:String,uiControlAttributes:Object,modelValue:[Array,String]},inheritAttrs:!1,emits:["update:modelValue"],computed:{concattedValue:function(){return"string"===typeof this.modelValue?this.modelValue:(this.modelValue||[]).join(Ct)}},created:function(){this.onKeydown=Object(i["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(Ct);t.join(Ct)!==this.concattedValue&&this.$emit("update:modelValue",t)}},watch:{modelValue:function(e,t){var n=this;e!==t&&setTimeout((function(){n.$refs.textarea&&window.Materialize.textareaAutoResize(n.$refs.textarea),window.Materialize.updateTextFields()}))}},mounted:function(){var e=this;setTimeout((function(){e.$refs.textarea&&window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}});St.render=wt;var kt=St;function At(e){return At="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(e)}function Ft(e,t){return Tt(e)||Nt(e,t)||Et(e,t)||Bt()}function Bt(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Et(e,t){if(e){if("string"===typeof e)return xt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?xt(e,t):void 0}}function xt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Nt(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function Tt(e){if(Array.isArray(e))return e}
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["CorePluginsAdmin"]=t(require("CoreHome"),require("vue")):e["CorePluginsAdmin"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CorePluginsAdmin/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"FormField",(function(){return qt})),n.d(t,"Field",(function(){return Qt})),n.d(t,"PluginSettings",(function(){return Tn})),n.d(t,"PluginFilter",(function(){return no})),n.d(t,"PluginManagement",(function(){return Hn})),n.d(t,"PluginUpload",(function(){return Kn})),n.d(t,"SaveButton",(function(){return uo})),n.d(t,"Form",(function(){return mo})),n.d(t,"GroupedSettings",(function(){return wn})),"undefined"!==typeof window){var o=window.document.currentScript,i=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var r=n("19dc"),l=n("8bbf"),a={class:"form-group row matomo-form-field"},u={key:0,class:"col s12"},c={key:0,class:"form-help"},s={key:0,class:"inline-help",ref:"inlineHelp"},d=Object(l["createElementVNode"])("br",null,null,-1);function m(e,t,n,o,i,r){return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",a,[e.formField.introduction?(Object(l["openBlock"])(),Object(l["createElementBlock"])("h3",u,Object(l["toDisplayString"])(e.formField.introduction),1)):Object(l["createCommentVNode"])("",!0),Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])(["col s12",{"input-field":"checkbox"!==e.formField.uiControl&&"radio"!==e.formField.uiControl,"file-field":"file"===e.formField.uiControl,m6:!e.formField.fullWidth}])},[(Object(l["openBlock"])(),Object(l["createBlock"])(Object(l["resolveDynamicComponent"])(e.childComponent),Object(l["mergeProps"])(Object.assign(Object.assign({formField:e.formField},e.formField),{},{modelValue:e.processedModelValue,availableOptions:e.availableOptions},e.extraChildComponentParams),{"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)})}),null,16))],2),Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])(["col s12",{m6:!e.formField.fullWidth}])},[e.showFormHelp?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",c,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",{class:"form-description"},Object(l["toDisplayString"])(e.formField.description),513),[[l["vShow"],e.formField.description]]),e.formField.inlineHelp||e.hasInlineHelpSlot?(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",s,[e.inlineHelpComponent?(Object(l["openBlock"])(),Object(l["createBlock"])(Object(l["resolveDynamicComponent"])(e.inlineHelpComponent),Object(l["normalizeProps"])(Object(l["mergeProps"])({key:0},e.inlineHelpBind)),null,16)):Object(l["createCommentVNode"])("",!0),Object(l["renderSlot"])(e.$slots,"inline-help")],512)):Object(l["createCommentVNode"])("",!0),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[d,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Default"))+": ",1),Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.defaultValuePrettyTruncated),1)],512),[[l["vShow"],e.showDefaultValue]])])):Object(l["createCommentVNode"])("",!0)],2)],512)),[[l["vShow"],e.showField]])}var f={class:"checkbox"},p=["checked","id","name"],b=["innerHTML"];function v(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",f,[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},e.uiControlAttributes,{value:1,checked:!!e.modelValue,type:"checkbox",id:e.name,name:e.name}),null,16,p),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.title)},null,8,b)])])}var h=Object(l["defineComponent"])({props:{modelValue:[Boolean,Number],uiControlAttributes:Object,name:String,title:String},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.modelValue!==e.target.checked&&this.$emit("update:modelValue",e.target.checked)}}});h.render=v;var g=h,O=["value","checked","onChange","id","name"];function j(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(l["toDisplayString"])(e.title),513),[[l["vShow"],e.title]]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("p",{key:n,class:"checkbox"},[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({value:t.key,checked:!!e.checkboxStates[n],onChange:function(t){return e.onChange(n)}},e.uiControlAttributes,{type:"checkbox",id:"".concat(e.name).concat(t.key),name:t.name}),null,16,O),Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(t.value),1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{class:"form-description"},Object(l["toDisplayString"])(t.description),513),[[l["vShow"],t.description]])])])})),128))])}function y(e){return S(e)||C(e)||w(e)||V()}function V(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function w(e,t){if(e){if("string"===typeof e)return k(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?k(e,t):void 0}}function C(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function S(e){if(Array.isArray(e))return k(e)}function k(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function A(e,t){return(e||[]).map((function(e){return t&&-1!==t.indexOf(e.key)}))}var F=Object(l["defineComponent"])({props:{modelValue:Array,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,type:String},inheritAttrs:!1,emits:["update:modelValue"],computed:{checkboxStates:function(){return A(this.availableOptions,this.modelValue)}},mounted:function(){window.Materialize.updateTextFields()},methods:{onChange:function(e){var t=y(this.checkboxStates);t[e]=!t[e];var n=this.availableOptions||{},o=[];Object.values(n).forEach((function(e,n){t[n]&&o.push(e.key)})),this.$emit("update:modelValue",o)}}});F.render=j;var B=F,E={class:"expandableSelector"},x=Object(l["createElementVNode"])("svg",{class:"caret",height:"24",viewBox:"0 0 24 24",width:"24",xmlns:"http://www.w3.org/2000/svg"},[Object(l["createElementVNode"])("path",{d:"M7 10l5 5 5-5z"}),Object(l["createElementVNode"])("path",{d:"M0 0h24v24H0z",fill:"none"})],-1),N=["value"],T={class:"expandableList z-depth-2"},$={class:"searchContainer"},M={class:"collection firstLevel"},P=["onClick"],J={class:"collection secondLevel"},H=["onClick"],D={class:"primary-content"},I=["title"];function L(e,t,n,o,i,r){var a=Object(l["resolveDirective"])("focus-if"),u=Object(l["resolveDirective"])("focus-anywhere-but-here");return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",E,[Object(l["createElementVNode"])("div",{onClick:t[0]||(t[0]=function(t){return e.showSelect=!e.showSelect}),class:"select-wrapper"},[x,Object(l["createElementVNode"])("input",{type:"text",class:"select-dropdown",readonly:"readonly",value:e.modelValueText},null,8,N)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",T,[Object(l["createElementVNode"])("div",$,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text",placeholder:"Search","onUpdate:modelValue":t[1]||(t[1]=function(t){return e.searchTerm=t}),class:"expandableSearch browser-default"},null,512),[[l["vModelText"],e.searchTerm],[a,e.showSelect]])]),Object(l["createElementVNode"])("ul",M,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions,(function(t,n){return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("li",{class:"collection-item",key:n},[Object(l["createElementVNode"])("h4",{class:"expandableListCategory",onClick:function(n){return e.onCategoryClicked(t)}},[Object(l["createTextVNode"])(Object(l["toDisplayString"])(t.group)+" ",1),Object(l["createElementVNode"])("span",{class:Object(l["normalizeClass"])(["secondary-content",{"icon-arrow-right":e.showCategory!==t.group,"icon-arrow-bottom":e.showCategory===t.group}])},null,2)],8,P),Object(l["withDirectives"])(Object(l["createElementVNode"])("ul",J,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(t.values.filter((function(t){return-1!==t.value.toLowerCase().indexOf(e.searchTerm.toLowerCase())})),(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("li",{class:"expandableListItem collection-item valign-wrapper",key:t.key,onClick:function(n){return e.onValueClicked(t)}},[Object(l["createElementVNode"])("span",D,Object(l["toDisplayString"])(t.value),1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{title:t.tooltip,class:"secondary-content icon-help"},null,8,I),[[l["vShow"],t.tooltip]])],8,H)})),128))],512),[[l["vShow"],e.showCategory===t.group||e.searchTerm]])],512)),[[l["vShow"],t.values.filter((function(t){return-1!==t.value.toLowerCase().indexOf(e.searchTerm.toLowerCase())})).length]])})),128))])],512),[[l["vShow"],e.showSelect]])],512)),[[u,{blur:e.onBlur}]])}function z(e){var t=[];if(!e)return t;var n={};return Object.values(e).forEach((function(e){var t=e,o=t.group||"";o in n&&n[o]||(n[o]={values:[],group:o});var i={key:t.key,value:t.value};"tooltip"in t&&t.tooltip&&(i.tooltip=t.tooltip),n[o].values.push(i)})),Object.values(n).forEach((function(e){e.values.length&&t.push(e)})),t}var U=Object(l["defineComponent"])({props:{modelValue:[Number,String],availableOptions:Array,title:String},directives:{FocusAnywhereButHere:r["FocusAnywhereButHere"],FocusIf:r["FocusIf"]},inheritAttrs:!1,emits:["update:modelValue"],data:function(){return{showSelect:!1,searchTerm:"",showCategory:""}},computed:{modelValueText:function(){if(this.title)return this.title;var e,t=this.modelValue,n=this.availableOptions||[];return n.some((function(n){return e=n.values.find((function(e){return e.key===t})),e})),e?e.value?"".concat(e.value):"":t?"".concat(t):""}},methods:{onBlur:function(){this.showSelect=!1},onCategoryClicked:function(e){this.showCategory===e.group?this.showCategory="":this.showCategory=e.group},onValueClicked:function(e){this.$emit("update:modelValue",e.key),this.showSelect=!1}}});U.render=L;var K=U,_=["for","innerHTML"];function q(e,t,n,o,i,r){var a=Object(l["resolveComponent"])("FieldArray");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,_),Object(l["createVNode"])(a,{name:e.name,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onValueUpdate(t)}),field:e.uiControlAttributes.field},null,8,["name","model-value","field"])])}var R=Object(l["defineComponent"])({components:{FieldArray:r["FieldArray"]},props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],methods:{onValueUpdate:function(e){this.$emit("update:modelValue",e)}}});R.render=q;var G=R,W={class:"btn"},Z=["for","innerHTML"],Y=["name","id"],Q={class:"file-path-wrapper"},X=["value"];function ee(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("div",W,[Object(l["createElementVNode"])("span",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,Z),Object(l["createElementVNode"])("input",{ref:"fileInput",name:e.name,type:"file",id:e.name,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},null,40,Y)]),Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("input",{class:"file-path validate",value:e.filePath,type:"text"},null,8,X)])])}var te=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:[String,File]},inheritAttrs:!1,emits:["update:modelValue"],watch:{modelValue:function(e){if(!e||""===e){var t=this.$refs.fileInput;t.value=""}}},methods:{onChange:function(e){var t=e.target.files;if(t){var n=t.item(0);this.$emit("update:modelValue",n)}}},computed:{filePath:function(){if(this.modelValue instanceof File)return this.$refs.fileInput.value}}});te.render=ee;var ne=te,oe=["type","name","value"];function ie(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("input",{type:e.uiControl,name:e.name,value:e.modelValue,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},null,40,oe)])}var re=Object(l["defineComponent"])({props:{modelValue:null,uiControl:String,name:String},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e.target.value)}}});re.render=ie;var le=re,ae={class:"fieldMultiTuple"},ue=["for","innerHTML"];function ce(e,t,n,o,i,r){var a=Object(l["resolveComponent"])("MultiPairField");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ae,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,ue),Object(l["createVNode"])(a,{name:e.name,"model-value":e.modelValue,"onUpdate:modelValue":e.onUpdateValue,field1:e.uiControlAttributes.field1,field2:e.uiControlAttributes.field2,field3:e.uiControlAttributes.field3,field4:e.uiControlAttributes.field4},null,8,["name","model-value","onUpdate:modelValue","field1","field2","field3","field4"])])}var se=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:null,uiControlAttributes:Object},inheritAttrs:!1,components:{MultiPairField:r["MultiPairField"]},emits:["update:modelValue"],methods:{onUpdateValue:function(e){this.$emit("update:modelValue",e)}}});se.render=ce;var de=se,me=["type","id","name","value"],fe=["for","innerHTML"];function pe(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,id:e.name,name:e.name,value:(e.modelValue||"").toString(),onKeydown:t[0]||(t[0]=function(t){return e.onChange(t)}),onChange:t[1]||(t[1]=function(t){return e.onChange(t)})},e.uiControlAttributes),null,16,me),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,fe)],64)}var be=Object(l["defineComponent"])({props:{uiControl:String,name:String,title:String,modelValue:[Number,String],uiControlAttributes:Object},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onChange=Object(r["debounce"])(this.onChange.bind(this),50)},methods:{onChange:function(e){var t=parseFloat(e.target.value);this.$emit("update:modelValue",t)}},mounted:function(){window.Materialize.updateTextFields()},watch:{modelValue:function(){setTimeout((function(){window.Materialize.updateTextFields()}))}}});be.render=pe;var ve=be,he=["value","id","name","disabled","checked"];function ge(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("label",{class:"fieldRadioTitle"},Object(l["toDisplayString"])(e.title),513),[[l["vShow"],e.title]]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableOptions||[],(function(n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("p",{key:n.key,class:"radio"},[Object(l["createElementVNode"])("label",null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({value:n.key,onChange:t[0]||(t[0]=function(t){return e.onChange(t)}),type:"radio",id:"".concat(e.name).concat(n.key),name:e.name,disabled:n.disabled||e.disabled},e.uiControlAttributes,{checked:e.modelValue===n.key||"".concat(e.modelValue)===n.key}),null,16,he),Object(l["createElementVNode"])("span",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(n.value)+" ",1),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",{class:"form-description"},Object(l["toDisplayString"])(n.description),513),[[l["vShow"],n.description]])])])])})),128))])}var Oe=Object(l["defineComponent"])({props:{title:String,availableOptions:Array,name:String,disabled:Boolean,uiControlAttributes:Object,modelValue:[String,Number]},inheritAttrs:!1,emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e.target.value)}}});Oe.render=ge;var je=Oe;function ye(e,t){return ke(e)||Se(e,t)||we(e,t)||Ve()}function Ve(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function we(e,t){if(e){if("string"===typeof e)return Ce(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ce(e,t):void 0}}function Ce(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Se(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,i,r=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(r.push(o.value),t&&r.length===t)break}catch(u){a=!0,i=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw i}}return r}}function ke(e){if(Array.isArray(e))return e}var Ae={key:0,class:"matomo-field-select"},Fe=["multiple","name"],Be=["label"],Ee=["value","selected","disabled"],xe=["for","innerHTML"],Ne={key:1,class:"matomo-field-select"},Te=["multiple","name"],$e=["value","selected","disabled"],Me=["for","innerHTML"];function Pe(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[e.groupedOptions?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Ae,[Object(l["createElementVNode"])("select",Object(l["mergeProps"])({ref:"select",class:"grouped",multiple:e.multiple,name:e.name,onChange:t[0]||(t[0]=function(t){return e.onChange(t)})},e.uiControlAttributes),[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.groupedOptions,(function(t){var n=ye(t,2),o=n[0],i=n[1];return Object(l["openBlock"])(),Object(l["createElementBlock"])("optgroup",{key:o,label:o},[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(i,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("option",{key:t.key,value:"string:".concat(t.key),selected:e.multiple?e.modelValue&&-1!==e.modelValue.indexOf(t.key):e.modelValue===t.key,disabled:t.disabled},Object(l["toDisplayString"])(t.value),9,Ee)})),128))],8,Be)})),128))],16,Fe),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,xe)])):Object(l["createCommentVNode"])("",!0),!e.groupedOptions&&e.options?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Ne,[Object(l["createElementVNode"])("select",Object(l["mergeProps"])({class:"ungrouped",ref:"select",multiple:e.multiple,name:e.name,onChange:t[1]||(t[1]=function(t){return e.onChange(t)})},e.uiControlAttributes),[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.options,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("option",{key:t.key,value:"string:".concat(t.key),selected:e.multiple?e.modelValue&&-1!==e.modelValue.indexOf(t.key):e.modelValue===t.key,disabled:t.disabled},Object(l["toDisplayString"])(t.value),9,$e)})),128))],16,Te),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,Me)])):Object(l["createCommentVNode"])("",!0)],64)}function Je(e){return Ie(e)||De(e)||Ue(e)||He()}function He(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function De(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function Ie(e){if(Array.isArray(e))return Ke(e)}function Le(e,t){return qe(e)||_e(e,t)||Ue(e,t)||ze()}function ze(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Ke(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Ke(e,t):void 0}}function Ke(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function _e(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,i,r=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(r.push(o.value),t&&r.length===t)break}catch(u){a=!0,i=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw i}}return r}}function qe(e){if(Array.isArray(e))return e}function Re(e){return Re="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Re(e)}function Ge(e,t,n){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{},i=arguments.length>4?arguments[4]:void 0;if(e){var r=window.$(e);if(Array.from(e.options).forEach((function(e){e.selected=i?!!t&&-1!==t.indexOf(e.value.replace(/^string:/,"")):"string:".concat(t)===e.value})),r.formSelect(o),n){var l=r.closest(".select-wrapper").find("input");l.attr("placeholder",n)}}}function We(e){return!Array.isArray(e)&&"object"===Re(e)&&Object.values(e).some((function(e){return"object"===Re(e)}))}function Ze(e,t){return e.some((function(e){return e.key===t}))}function Ye(e,t,n){if(!e)return[];var o=!0,i=e;We(i)||(i={"":e},o=!1);var r=[];return Object.entries(i).forEach((function(e){var n=Le(e,2),i=n[0],l=n[1];Object.entries(l).forEach((function(e){var n=Le(e,2),l=n[0],a=n[1];if(a&&"object"===Re(a)&&"undefined"!==typeof a.key)r.push(a);else{var u=l;"integer"===t&&"string"===typeof l&&(u=parseInt(l,10)),r.push({group:o?i:void 0,key:u,value:a})}}))})),null!==n&&void 0!==n&&n.placeholder&&!Ze(r,"")?[{key:"",value:""}].concat(r):r}function Qe(e){return"string"===typeof e?e.replace(/^string:/,""):e}var Xe=Object(l["defineComponent"])({props:{modelValue:null,multiple:Boolean,name:String,title:String,availableOptions:Array,uiControlAttributes:Object,uiControlOptions:Object},inheritAttrs:!1,emits:["update:modelValue"],computed:{options:function(){var e=this.availableOptions;return!e||Ze(e,"")||"undefined"!==typeof this.modelValue&&null!==this.modelValue&&""!==this.modelValue?e:[{key:"",value:this.modelValue,group:this.hasGroups?"":void 0}].concat(Je(e))},hasGroups:function(){var e=this.availableOptions;return e&&e[0]&&"undefined"!==typeof e[0].group},groupedOptions:function(){var e=this.options;if(!this.hasGroups||!e)return null;var t={};e.forEach((function(e){var n=e.group;t[n]=t[n]||[],t[n].push(e)}));var n=Object.entries(t);return n.sort((function(e,t){return e[0]<t[0]?-1:e[0]>t[0]?1:0})),n}},methods:{onChange:function(e){var t,n=this,o=e.target;this.multiple?(t=Array.from(o.options).filter((function(e){return e.selected})).map((function(e){return e.value})),t=t.map((function(e){return Qe(e)}))):(t=o.value,t=Qe(t)),this.$emit("update:modelValue",t),Object(l["nextTick"])((function(){n.modelValue!==t&&n.onModelValueChange(n.modelValue)}))},onModelValueChange:function(e){var t=this;window.$(this.$refs.select).val(e),setTimeout((function(){var n;Ge(t.$refs.select,e,null===(n=t.uiControlAttributes)||void 0===n?void 0:n.placeholder,t.uiControlOptions,t.multiple)}))}},watch:{modelValue:function(e){this.onModelValueChange(e)},"uiControlAttributes.disabled":{handler:function(e,t){var n=this;setTimeout((function(){var o;e!==t&&Ge(n.$refs.select,n.modelValue,null===(o=n.uiControlAttributes)||void 0===o?void 0:o.placeholder,n.uiControlOptions,n.multiple)}))}},availableOptions:function(e,t){var n=this;e!==t&&setTimeout((function(){var e;Ge(n.$refs.select,n.modelValue,null===(e=n.uiControlAttributes)||void 0===e?void 0:e.placeholder,n.uiControlOptions,n.multiple)}))}},mounted:function(){var e=this;setTimeout((function(){var t;Ge(e.$refs.select,e.modelValue,null===(t=e.uiControlAttributes)||void 0===t?void 0:t.placeholder,e.uiControlOptions,e.multiple)}))}});Xe.render=Pe;var et=Xe,tt=["for","innerHTML"],nt={class:"sites_autocomplete"};function ot(e,t,n,o,i,r){var a=Object(l["resolveComponent"])("SiteSelector");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,class:"siteSelectorLabel",innerHTML:e.$sanitize(e.title)},null,8,tt),Object(l["createElementVNode"])("div",nt,[Object(l["createVNode"])(a,Object(l["mergeProps"])({"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)}),id:e.name,"show-all-sites-item":e.uiControlAttributes.showAllSitesItem||!1,"switch-site-on-select":!1,"show-selected-site":!0,"only-sites-with-admin-access":e.uiControlAttributes.onlySitesWithAdminAccess||!1},e.uiControlAttributes),null,16,["model-value","id","show-all-sites-item","only-sites-with-admin-access"])])])}var it=Object(l["defineComponent"])({props:{name:String,title:String,modelValue:Object,uiControlAttributes:Object},inheritAttrs:!1,components:{SiteSelector:r["SiteSelector"]},emits:["update:modelValue"],methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});it.render=ot;var rt=it,lt=["type","id","name","value"],at=["for","innerHTML"];function ut(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,id:e.name,name:e.name,value:e.modelValueText,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)})},e.uiControlAttributes),null,16,lt),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,at)],64)}var ct=Object(l["defineComponent"])({props:{title:String,name:String,uiControlAttributes:Object,modelValue:[String,Number],uiControl:String},inheritAttrs:!1,emits:["update:modelValue"],computed:{modelValueText:function(){return"undefined"===typeof this.modelValue||null===this.modelValue?"":this.modelValue.toString()}},created:function(){this.onKeydown=Object(r["debounce"])(this.onKeydown.bind(this),50)},mounted:function(){setTimeout((function(){window.Materialize.updateTextFields()}))},watch:{modelValue:function(){setTimeout((function(){window.Materialize.updateTextFields()}))}},methods:{onKeydown:function(e){var t=e.target.value;this.modelValue!==t&&this.$emit("update:modelValue",t)}}});ct.render=ut;var st=ct,dt=["for","innerHTML"],mt=["type","name","value"];function ft(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,dt),Object(l["createElementVNode"])("input",Object(l["mergeProps"])({class:"control_".concat(e.uiControl),type:e.uiControl,name:e.name,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),value:e.concattedValues},e.uiControlAttributes),null,16,mt)])}var pt=Object(l["defineComponent"])({props:{name:String,title:String,uiControl:String,modelValue:Array,uiControlAttributes:Object},inheritAttrs:!1,computed:{concattedValues:function(){return"string"===typeof this.modelValue?this.modelValue:(this.modelValue||[]).join(", ")}},emits:["update:modelValue"],created:function(){this.onKeydown=Object(r["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(",").map((function(e){return e.trim()}));t.join(", ")!==this.concattedValues&&this.$emit("update:modelValue",t)}}});pt.render=ft;var bt=pt,vt=["name","id","value"],ht=["for","innerHTML"];function gt(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])(l["Fragment"],null,[Object(l["createElementVNode"])("textarea",Object(l["mergeProps"])({name:e.name},e.uiControlAttributes,{id:e.name,value:e.modelValue,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),class:"materialize-textarea",ref:"textarea"}),null,16,vt),Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,ht)],64)}var Ot=Object(l["defineComponent"])({props:{name:String,uiControlAttributes:Object,modelValue:String,title:String},inheritAttrs:!1,emits:["update:modelValue"],created:function(){this.onKeydown=Object(r["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){this.$emit("update:modelValue",e.target.value)}},watch:{modelValue:function(){var e=this;setTimeout((function(){window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}},mounted:function(){var e=this;setTimeout((function(){window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}});Ot.render=gt;var jt=Ot,yt=["for","innerHTML"],Vt=["name","value"];function wt(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createElementVNode"])("label",{for:e.name,innerHTML:e.$sanitize(e.title)},null,8,yt),Object(l["createElementVNode"])("textarea",Object(l["mergeProps"])({ref:"textarea",name:e.name},e.uiControlAttributes,{value:e.concattedValue,onKeydown:t[0]||(t[0]=function(t){return e.onKeydown(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydown(t)}),class:"materialize-textarea"}),null,16,Vt)])}var Ct="\n",St=Object(l["defineComponent"])({props:{name:String,title:String,uiControlAttributes:Object,modelValue:[Array,String]},inheritAttrs:!1,emits:["update:modelValue"],computed:{concattedValue:function(){return"string"===typeof this.modelValue?this.modelValue:(this.modelValue||[]).join(Ct)}},created:function(){this.onKeydown=Object(r["debounce"])(this.onKeydown.bind(this),50)},methods:{onKeydown:function(e){var t=e.target.value.split(Ct);t.join(Ct)!==this.concattedValue&&this.$emit("update:modelValue",t)}},watch:{modelValue:function(e,t){var n=this;e!==t&&setTimeout((function(){n.$refs.textarea&&window.Materialize.textareaAutoResize(n.$refs.textarea),window.Materialize.updateTextFields()}))}},mounted:function(){var e=this;setTimeout((function(){e.$refs.textarea&&window.Materialize.textareaAutoResize(e.$refs.textarea),window.Materialize.updateTextFields()}))}});St.render=wt;var kt=St;function At(e){return At="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},At(e)}function Ft(e,t){return Tt(e)||Nt(e,t)||Et(e,t)||Bt()}function Bt(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Et(e,t){if(e){if("string"===typeof e)return xt(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?xt(e,t):void 0}}function xt(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Nt(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,i,r=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(r.push(o.value),t&&r.length===t)break}catch(u){a=!0,i=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw i}}return r}}function Tt(e){if(Array.isArray(e))return e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function $t(e,t){if(!e)return[];var n=[];return Object.entries(e).forEach((function(e){var o=Ft(e,2),r=o[0],i=o[1];if(i&&"object"===At(i)&&"undefined"!==typeof i.key)n.push(i);else{var l=r;"integer"===t&&"string"===typeof r&&(l=parseInt(l,10)),n.push({key:l,value:i})}})),n}var Mt={ref:"root"};function Pt(e,t,n,o,r,i){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Mt,null,512)}function Jt(e){if("undefined"!==typeof e)return JSON.parse(JSON.stringify(e))}var Ht=Object(l["defineComponent"])({props:{modelValue:null,formField:{type:null,required:!0},templateFile:{type:String,required:!0}},emits:["update:modelValue"],inheritAttrs:!1,setup:function(e,t){var n=Object(l["ref"])(null),o=window.$("<div ng-include=\"'".concat(e.templateFile,"?cb=").concat(i["Matomo"].cacheBuster,"'\"></div>")),r=i["Matomo"].helper.getAngularDependency("$timeout"),a=i["Matomo"].helper.getAngularDependency("$rootScope"),u=a.$new();return u.formField=Object.assign(Object.assign({},Jt(e.formField)),{},{value:Jt(e.modelValue)}),u.$watch("formField.value",(function(n,o){n!==o&&JSON.stringify(n)!==JSON.stringify(e.modelValue)&&t.emit("update:modelValue",Jt(n))})),Object(l["watch"])((function(){return e.modelValue}),(function(e){JSON.stringify(e)!==JSON.stringify(u.formField.value)&&r((function(){u.formField.value=e}))})),Object(l["watch"])((function(){return e.formField}),(function(e){r((function(){var t=u.formField.value;u.formField=Object.assign(Object.assign({},Jt(e)),{},{value:t})}))}),{deep:!0}),Object(l["onMounted"])((function(){window.$(n.value).append(o),i["Matomo"].helper.compileAngularComponents(o,{scope:u,params:{formField:Object.assign(Object.assign({},Jt(e.formField)),{},{value:e.modelValue})}})})),{root:n}}});Ht.render=Pt;var Dt=Ht;function Lt(e){return Lt="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Lt(e)}var It=["password","url","search","email"],zt=["textarea","checkbox","text"],Ut={checkbox:"FieldCheckbox","expandable-select":"FieldExpandableSelect","field-array":"FieldFieldArray",file:"FieldFile",hidden:"FieldHidden",multiselect:"FieldSelect",multituple:"FieldMultituple",number:"FieldNumber",radio:"FieldRadio",select:"FieldSelect",site:"FieldSite",text:"FieldText",textarea:"FieldTextarea"},Kt={FieldSelect:Ye,FieldCheckboxArray:$t,FieldRadio:$t,FieldExpandableSelect:z},_t=Object(l["defineComponent"])({props:{modelValue:null,formField:{type:Object,required:!0}},emits:["update:modelValue"],components:{FieldCheckbox:g,FieldCheckboxArray:B,FieldExpandableSelect:K,FieldFieldArray:G,FieldFile:ne,FieldHidden:le,FieldMultituple:de,FieldNumber:ve,FieldRadio:ye,FieldSelect:et,FieldSite:it,FieldText:st,FieldTextArray:bt,FieldTextarea:yt,FieldTextareaArray:kt},setup:function(e){var t=Object(l["ref"])(null),n=function(e){var n;e&&t.value&&"function"!==typeof e.render&&(n="string"===typeof e?0===e.indexOf("#")?window.$(e):window.vueSanitize(e):e,window.$(t.value).html("").append(n))};return Object(l["watch"])((function(){return e.formField.inlineHelp}),n),Object(l["onMounted"])((function(){n(e.formField.inlineHelp)})),{inlineHelp:t}},computed:{inlineHelpComponent:function(){var e=this.formField,t=e.inlineHelp;if(t&&"function"===typeof t.render)return e.inlineHelp},inlineHelpBind:function(){return this.inlineHelpComponent?this.formField.inlineHelpBind:void 0},childComponent:function(){var e=this.formField;if(e.component){var t=e.component;if(e.component.plugin){var n=e.component,o=n.plugin,r=n.name;if(!o||!r)throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}");t=Object(i["useExternalPluginComponent"])(o,r)}return Object(l["markRaw"])(t)}if(e.templateFile)return Object(l["markRaw"])(Dt);var a=e.uiControl,u=Ut[a];return-1!==It.indexOf(a)&&(u="FieldText"),"array"===this.formField.type&&-1!==zt.indexOf(a)&&(u="".concat(u,"Array")),u},extraChildComponentParams:function(){return"multiselect"===this.formField.uiControl?{multiple:!0}:{}},showFormHelp:function(){return this.formField.description||this.formField.inlineHelp||this.showDefaultValue},showDefaultValue:function(){return this.defaultValuePretty&&"checkbox"!==this.formField.uiControl&&"radio"!==this.formField.uiControl},showField:function(){return!(this.formField&&this.formField.condition&&this.formField.condition instanceof Function)||this.formField.condition()},processedModelValue:function(){var e=this.formField;if("boolean"===e.type){var t=this.modelValue&&this.modelValue>0&&"0"!==this.modelValue;if("checkbox"===e.uiControl)return t;if("radio"===e.uiControl)return t?"1":"0"}return this.modelValue},defaultValue:function(){var e=this.formField.defaultValue;return Array.isArray(e)?e.join(","):e},availableOptions:function(){var e=this.childComponent;if("string"!==typeof e)return null;var t=this.formField;return t.availableValues&&Kt[e]?Kt[e](t.availableValues,t.type,t.uiControlAttributes):null},defaultValuePretty:function(){var e=this.formField,t=e.defaultValue,n=this.availableOptions;if("string"===typeof t&&t){var o=null;try{o=JSON.parse(t)}catch(i){}if(null!==o&&"object"===Lt(o))return""}if(!Array.isArray(n))return Array.isArray(t)?"":t?"".concat(t):"";var r=[];return Array.isArray(t)||(t=[t]),(n||[]).forEach((function(e){"undefined"!==typeof e.value&&-1!==t.indexOf(e.key)&&r.push(e.value)})),r.join(", ")},defaultValuePrettyTruncated:function(){return this.defaultValuePretty.substring(0,50)}},methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});_t.render=m;var qt=_t;
+ */function $t(e,t){if(!e)return[];var n=[];return Object.entries(e).forEach((function(e){var o=Ft(e,2),i=o[0],r=o[1];if(r&&"object"===At(r)&&"undefined"!==typeof r.key)n.push(r);else{var l=i;"integer"===t&&"string"===typeof i&&(l=parseInt(l,10)),n.push({key:l,value:r})}})),n}var Mt={ref:"root"};function Pt(e,t,n,o,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",Mt,null,512)}function Jt(e){if("undefined"!==typeof e)return JSON.parse(JSON.stringify(e))}var Ht=Object(l["defineComponent"])({props:{modelValue:null,formField:{type:null,required:!0},templateFile:{type:String,required:!0}},emits:["update:modelValue"],inheritAttrs:!1,setup:function(e,t){var n=Object(l["ref"])(null),o=window.$("<div ng-include=\"'".concat(e.templateFile,"?cb=").concat(r["Matomo"].cacheBuster,"'\"></div>")),i=r["Matomo"].helper.getAngularDependency("$timeout"),a=r["Matomo"].helper.getAngularDependency("$rootScope"),u=a.$new();return u.formField=Object.assign(Object.assign({},Jt(e.formField)),{},{value:Jt(e.modelValue)}),u.$watch("formField.value",(function(n,o){n!==o&&JSON.stringify(n)!==JSON.stringify(e.modelValue)&&t.emit("update:modelValue",Jt(n))})),Object(l["watch"])((function(){return e.modelValue}),(function(e){JSON.stringify(e)!==JSON.stringify(u.formField.value)&&i((function(){u.formField.value=e}))})),Object(l["watch"])((function(){return e.formField}),(function(e){i((function(){var t=u.formField.value;u.formField=Object.assign(Object.assign({},Jt(e)),{},{value:t})}))}),{deep:!0}),Object(l["onMounted"])((function(){window.$(n.value).append(o),r["Matomo"].helper.compileAngularComponents(o,{scope:u,params:{formField:Object.assign(Object.assign({},Jt(e.formField)),{},{value:e.modelValue})}})})),{root:n}}});Ht.render=Pt;var Dt=Ht;function It(e){return It="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},It(e)}var Lt=["password","url","search","email"],zt=["textarea","checkbox","text"],Ut={checkbox:"FieldCheckbox","expandable-select":"FieldExpandableSelect","field-array":"FieldFieldArray",file:"FieldFile",hidden:"FieldHidden",multiselect:"FieldSelect",multituple:"FieldMultituple",number:"FieldNumber",radio:"FieldRadio",select:"FieldSelect",site:"FieldSite",text:"FieldText",textarea:"FieldTextarea"},Kt={FieldSelect:Ye,FieldCheckboxArray:$t,FieldRadio:$t,FieldExpandableSelect:z},_t=Object(l["defineComponent"])({props:{modelValue:null,formField:{type:Object,required:!0}},emits:["update:modelValue"],components:{FieldCheckbox:g,FieldCheckboxArray:B,FieldExpandableSelect:K,FieldFieldArray:G,FieldFile:ne,FieldHidden:le,FieldMultituple:de,FieldNumber:ve,FieldRadio:je,FieldSelect:et,FieldSite:rt,FieldText:st,FieldTextArray:bt,FieldTextarea:jt,FieldTextareaArray:kt},setup:function(e){var t=Object(l["ref"])(null),n=function(e){var n;e&&t.value&&"function"!==typeof e.render&&(n="string"===typeof e?0===e.indexOf("#")?window.$(e):window.vueSanitize(e):e,window.$(t.value).html("").append(n))};return Object(l["watch"])((function(){return e.formField.inlineHelp}),n),Object(l["onMounted"])((function(){n(e.formField.inlineHelp)})),{inlineHelp:t}},computed:{inlineHelpComponent:function(){var e=this.formField,t=e.inlineHelp;if(t&&"function"===typeof t.render)return e.inlineHelp},inlineHelpBind:function(){return this.inlineHelpComponent?this.formField.inlineHelpBind:void 0},childComponent:function(){var e=this.formField;if(e.component){var t=e.component;if(e.component.plugin){var n=e.component,o=n.plugin,i=n.name;if(!o||!i)throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}");t=Object(r["useExternalPluginComponent"])(o,i)}return Object(l["markRaw"])(t)}if(e.templateFile)return Object(l["markRaw"])(Dt);var a=e.uiControl,u=Ut[a];return-1!==Lt.indexOf(a)&&(u="FieldText"),"array"===this.formField.type&&-1!==zt.indexOf(a)&&(u="".concat(u,"Array")),u},extraChildComponentParams:function(){return"multiselect"===this.formField.uiControl?{multiple:!0}:{}},showFormHelp:function(){return this.formField.description||this.formField.inlineHelp||this.showDefaultValue||this.hasInlineHelpSlot},showDefaultValue:function(){return this.defaultValuePretty&&"checkbox"!==this.formField.uiControl&&"radio"!==this.formField.uiControl},showField:function(){return!(this.formField&&this.formField.condition&&this.formField.condition instanceof Function)||this.formField.condition()},processedModelValue:function(){var e=this.formField;if("boolean"===e.type){var t=this.modelValue&&this.modelValue>0&&"0"!==this.modelValue;if("checkbox"===e.uiControl)return t;if("radio"===e.uiControl)return t?"1":"0"}return this.modelValue},defaultValue:function(){var e=this.formField.defaultValue;return Array.isArray(e)?e.join(","):e},availableOptions:function(){var e=this.childComponent;if("string"!==typeof e)return null;var t=this.formField;return t.availableValues&&Kt[e]?Kt[e](t.availableValues,t.type,t.uiControlAttributes):null},defaultValuePretty:function(){var e=this.formField,t=e.defaultValue,n=this.availableOptions;if("string"===typeof t&&t){var o=null;try{o=JSON.parse(t)}catch(r){}if(null!==o&&"object"===It(o))return""}if(!Array.isArray(n))return Array.isArray(t)?"":t?"".concat(t):"";var i=[];return Array.isArray(t)||(t=[t]),(n||[]).forEach((function(e){"undefined"!==typeof e.value&&-1!==t.indexOf(e.key)&&i.push(e.value)})),i.join(", ")},defaultValuePrettyTruncated:function(){return this.defaultValuePretty.substring(0,50)},hasInlineHelpSlot:function(){var e,t;if(!this.$slots["inline-help"])return!1;var n=this.$slots["inline-help"]();return!(null===n||void 0===n||null===(e=n[0])||void 0===e||null===(t=e.children)||void 0===t||!t.length)}},methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});_t.render=m;var qt=_t;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Rt(e){if(e){var t=e.plugin,n=e.name;if(!t||!n)throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}");return Object(i["useExternalPluginComponent"])(t,n)}}function Gt(e,t){var n={};return Object.values(e.allSettings||{}).forEach((function(e){"0"===e.value?n[e.name]=0:n[e.name]=e.value})),e.$eval(t,n)}Object(i["createAngularJsAdapter"])({component:qt,scope:{modelValue:{default:function(e){var t=e.piwikFormField;return"string"!==typeof t.value||!t.value||"array"!==t.type&&"multituple"!==t.uiControl&&"field-array"!==t.uiControl&&"multiselect"!==t.uiControl&&"site"!==t.uiControl||(t.value=JSON.parse(t.value)),"checkbox"===t.uiControl?Object(i["transformAngularJsBoolAttr"])(t.value):t.value}},piwikFormField:{vue:"formField",angularJsBind:"=",transform:function(e,t,n){var o=e;function r(){if(o.templateFile)return Object(l["markRaw"])(Dt);var e=Rt(o.component);return e?Object(l["markRaw"])(e):void 0}return Object.assign(Object.assign({},o),{},{condition:o.condition?Gt.bind(null,n,o.condition):o.condition,disabled:Object(i["transformAngularJsBoolAttr"])(o.disabled),autocomplete:Object(i["transformAngularJsBoolAttr"])(o.autocomplete),autofocus:Object(i["transformAngularJsBoolAttr"])(o.autofocus),tabindex:Object(i["transformAngularJsIntAttr"])(o.tabindex),fullWidth:Object(i["transformAngularJsBoolAttr"])(o.fullWidth),maxlength:Object(i["transformAngularJsIntAttr"])(o.maxlength),required:Object(i["transformAngularJsBoolAttr"])(o.required),rows:Object(i["transformAngularJsIntAttr"])(o.rows),min:Object(i["transformAngularJsIntAttr"])(o.min),max:Object(i["transformAngularJsIntAttr"])(o.max),component:r()})}},allSettings:{angularJsBind:"="}},directiveName:"piwikFormField",events:{"update:modelValue":function(e,t,n,o,r,i,l){e!==n.piwikFormField.value&&l((function(){n.piwikFormField.value=e}))}},$inject:["$timeout"],postCreate:function(e,t){t.$watch("piwikFormField.value",(function(t,n){t!==n&&(e.modelValue=t)})),t.$watch("allSettings",(function(){e.formField=Object.assign(Object.assign({},e.formField),{},{condition:t.piwikFormField.condition?Gt.bind(null,t,t.piwikFormField.condition):t.piwikFormField.condition})}),!0)}});function Wt(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("FormField");return Object(l["openBlock"])(),Object(l["createBlock"])(a,{"form-field":e.field,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)})},null,8,["form-field","model-value"])}var Zt={multiselect:"array",checkbox:"boolean",site:"object",number:"integer"},Yt=Object(l["defineComponent"])({props:{modelValue:null,uicontrol:String,name:String,defaultValue:null,options:[Object,Array],description:String,introduction:String,title:String,inlineHelp:[String,Object],inlineHelpBind:Object,disabled:Boolean,uiControlAttributes:{type:Object,default:function(){return{}}},uiControlOptions:{type:Object,default:function(){return{}}},autocomplete:Boolean,condition:Function,varType:String,autofocus:Boolean,tabindex:Number,fullWidth:Boolean,maxlength:Number,required:Boolean,placeholder:String,rows:Number,min:Number,max:Number,component:null,templateFile:String},emits:["update:modelValue"],components:{FormField:qt},computed:{type:function(){if(this.varType)return this.varType;var e=this.uicontrol;return e&&Zt[e]?Zt[e]:"string"},field:function(){return{uiControl:this.uicontrol,type:this.type,name:this.name,defaultValue:this.defaultValue,availableValues:this.options,description:this.description,introduction:this.introduction,inlineHelp:this.inlineHelp,inlineHelpBind:this.inlineHelpBind,title:this.title,component:this.component,templateFile:this.templateFile,uiControlAttributes:Object.assign(Object.assign({},this.uiControlAttributes),{},{disabled:this.disabled,autocomplete:this.autocomplete,tabindex:this.tabindex,autofocus:this.autofocus,rows:this.rows,required:this.required,maxlength:this.maxlength,placeholder:this.placeholder,min:this.min,max:this.max}),fullWidth:this.fullWidth,uiControlOptions:this.uiControlOptions}}},methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});Yt.render=Wt;var Qt=Yt;
+ */function Rt(e){if(e){var t=e.plugin,n=e.name;if(!t||!n)throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}");return Object(r["useExternalPluginComponent"])(t,n)}}function Gt(e,t){var n={};return Object.values(e.allSettings||{}).forEach((function(e){"0"===e.value?n[e.name]=0:n[e.name]=e.value})),e.$eval(t,n)}Object(r["createAngularJsAdapter"])({component:qt,scope:{modelValue:{default:function(e){var t=e.piwikFormField;return"string"!==typeof t.value||!t.value||"array"!==t.type&&"multituple"!==t.uiControl&&"field-array"!==t.uiControl&&"multiselect"!==t.uiControl&&"site"!==t.uiControl||(t.value=JSON.parse(t.value)),"checkbox"===t.uiControl?Object(r["transformAngularJsBoolAttr"])(t.value):t.value}},piwikFormField:{vue:"formField",angularJsBind:"=",transform:function(e,t,n){var o=e;function i(){if(o.templateFile)return Object(l["markRaw"])(Dt);var e=Rt(o.component);return e?Object(l["markRaw"])(e):void 0}return Object.assign(Object.assign({},o),{},{condition:o.condition?Gt.bind(null,n,o.condition):o.condition,disabled:Object(r["transformAngularJsBoolAttr"])(o.disabled),autocomplete:Object(r["transformAngularJsBoolAttr"])(o.autocomplete),autofocus:Object(r["transformAngularJsBoolAttr"])(o.autofocus),tabindex:Object(r["transformAngularJsIntAttr"])(o.tabindex),fullWidth:Object(r["transformAngularJsBoolAttr"])(o.fullWidth),maxlength:Object(r["transformAngularJsIntAttr"])(o.maxlength),required:Object(r["transformAngularJsBoolAttr"])(o.required),rows:Object(r["transformAngularJsIntAttr"])(o.rows),min:Object(r["transformAngularJsIntAttr"])(o.min),max:Object(r["transformAngularJsIntAttr"])(o.max),component:i()})}},allSettings:{angularJsBind:"="}},directiveName:"piwikFormField",events:{"update:modelValue":function(e,t,n,o,i,r,l){e!==n.piwikFormField.value&&l((function(){n.piwikFormField.value=e}))}},$inject:["$timeout"],postCreate:function(e,t){t.$watch("piwikFormField.value",(function(t,n){t!==n&&(e.modelValue=t)})),t.$watch("allSettings",(function(){e.formField=Object.assign(Object.assign({},e.formField),{},{condition:t.piwikFormField.condition?Gt.bind(null,t,t.piwikFormField.condition):t.piwikFormField.condition})}),!0)}});function Wt(e,t,n,o,i,r){var a=Object(l["resolveComponent"])("FormField");return Object(l["openBlock"])(),Object(l["createBlock"])(a,{"form-field":e.field,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.onChange(t)})},{"inline-help":Object(l["withCtx"])((function(){return[Object(l["renderSlot"])(e.$slots,"inline-help")]})),_:3},8,["form-field","model-value"])}var Zt={multiselect:"array",checkbox:"boolean",site:"object",number:"integer"},Yt=Object(l["defineComponent"])({props:{modelValue:null,uicontrol:String,name:String,defaultValue:null,options:[Object,Array],description:String,introduction:String,title:String,inlineHelp:[String,Object],inlineHelpBind:Object,disabled:Boolean,uiControlAttributes:{type:Object,default:function(){return{}}},uiControlOptions:{type:Object,default:function(){return{}}},autocomplete:Boolean,condition:Function,varType:String,autofocus:Boolean,tabindex:Number,fullWidth:Boolean,maxlength:Number,required:Boolean,placeholder:String,rows:Number,min:Number,max:Number,component:null,templateFile:String},emits:["update:modelValue"],components:{FormField:qt},computed:{type:function(){if(this.varType)return this.varType;var e=this.uicontrol;return e&&Zt[e]?Zt[e]:"string"},field:function(){return{uiControl:this.uicontrol,type:this.type,name:this.name,defaultValue:this.defaultValue,availableValues:this.options,description:this.description,introduction:this.introduction,inlineHelp:this.inlineHelp,inlineHelpBind:this.inlineHelpBind,title:this.title,component:this.component,templateFile:this.templateFile,uiControlAttributes:Object.assign(Object.assign({},this.uiControlAttributes),{},{disabled:this.disabled,autocomplete:this.autocomplete,tabindex:this.tabindex,autofocus:this.autofocus,rows:this.rows,required:this.required,maxlength:this.maxlength,placeholder:this.placeholder,min:this.min,max:this.max}),fullWidth:this.fullWidth,uiControlOptions:this.uiControlOptions}}},methods:{onChange:function(e){this.$emit("update:modelValue",e)}}});Yt.render=Wt;var Qt=Yt;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Xt(e,t,n){if("string"===typeof e&&e&&("array"===t||"multituple"===n||"field-array"===n||"multiselect"===n||"site"===n)){var o=JSON.parse(e);return"site"===n&&(o.name=i["Matomo"].helper.htmlDecode(o.name)),o}return"checkbox"===n&&"array"!==t?Object(i["transformAngularJsBoolAttr"])(e):e}Object(i["createAngularJsAdapter"])({component:Qt,require:"?ngModel",scope:{uicontrol:{angularJsBind:"@"},name:{angularJsBind:"@"},value:{vue:"modelValue",angularJsBind:"@",transform:function(e,t,n){return Xt(e,n.varType,n.uicontrol)}},default:{vue:"defaultValue",angularJsBind:"@"},options:{angularJsBind:"="},description:{angularJsBind:"@"},introduction:{angularJsBind:"@"},title:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@"},disabled:{angularJsBind:"=",transform:i["transformAngularJsBoolAttr"]},uiControlAttributes:{angularJsBind:"="},uiControlOptions:{angularJsBind:"="},autocomplete:{angularJsBind:"@",transform:i["transformAngularJsBoolAttr"]},condition:{angularJsBind:"@",transform:function(e,t,n){if(e)return function(t){return n.$eval(e,t)}}},varType:{angularJsBind:"@"},autofocus:{angularJsBind:"@",transform:i["transformAngularJsBoolAttr"]},tabindex:{angularJsBind:"@",transform:i["transformAngularJsIntAttr"]},fullWidth:{angularJsBind:"@",transform:i["transformAngularJsBoolAttr"]},maxlength:{angularJsBind:"@",transform:i["transformAngularJsIntAttr"]},required:{angularJsBind:"@",transform:i["transformAngularJsBoolAttr"]},placeholder:{angularJsBind:"@"},rows:{angularJsBind:"@",transform:i["transformAngularJsIntAttr"]},min:{angularJsBind:"@",transform:i["transformAngularJsIntAttr"]},max:{angularJsBind:"@",transform:i["transformAngularJsIntAttr"]},component:{angularJsBind:"<",transform:function(e,t,n){if(e){if(n.templateFile)return Object(l["shallowRef"])(Dt);var o=e.plugin,r=e.name;if(!o||!r)throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}");return Object(l["shallowRef"])(Object(i["useExternalPluginComponent"])(o,r))}}}},directiveName:"piwikField",$inject:["$timeout"],events:{"update:modelValue":function(e,t,n,o,r,i,l){var a=i?i.$viewValue:n.value;e!==a&&l((function(){i?(i.$setViewValue(e),i.$render()):n.value=e}))}},postCreate:function(e,t,n,o,r){var a=r;if(a){if(a.$render=function(){Object(l["nextTick"])((function(){e.modelValue=Object(i["removeAngularJsSpecificProperties"])(a.$viewValue)}))},"undefined"!==typeof t.value){var u=Xt(t.value,t.varType,t.uicontrol);a.$setViewValue(u)}else a.$setViewValue(e.modelValue);"site"===t.uicontrol&&a.$viewValue&&setTimeout((function(){a.$setViewValue(Object.assign({},a.$viewValue))}))}else t.$watch("value",(function(n){if(n!==e.modelValue){var o=Xt(n,t.varType,t.uicontrol);Object(l["nextTick"])((function(){e.modelValue=o}))}}))}});var en,tn={class:"pluginSettings",ref:"root"},nn=["id"],on={class:"card-content"},rn=["id"],ln=["onClick","disabled","value"],an={class:"confirm-password-modal modal"},un={class:"modal-content"},cn={class:"modal-footer"},sn=["disabled"];function dn(e,t,n,o,r,i){var a=this,u=Object(l["resolveComponent"])("GroupedSettings"),c=Object(l["resolveComponent"])("ActivityIndicator"),s=Object(l["resolveComponent"])("Field");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",tn,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.settingsPerPlugin,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:"card",id:"".concat(t.pluginName,"PluginSettings"),key:"".concat(t.pluginName,"PluginSettings")},[Object(l["createElementVNode"])("div",on,[Object(l["createElementVNode"])("h2",{class:"card-title",id:t.pluginName},Object(l["toDisplayString"])(t.title),9,rn),Object(l["createVNode"])(u,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"]),Object(l["createElementVNode"])("input",{type:"button",onClick:function(n){return e.saveSetting(t.pluginName)},disabled:e.isLoading,class:"pluginsSettingsSubmit btn",value:e.translate("General_Save")},null,8,ln),Object(l["createVNode"])(c,{loading:e.isLoading||e.isSaving[t.pluginName]},null,8,["loading"])])],8,nn)})),128)),Object(l["createElementVNode"])("div",an,[Object(l["createElementVNode"])("div",un,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(s,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPassword",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(l["createElementVNode"])("div",cn,[Object(l["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",disabled:e.passwordConfirmation?void 0:"disabled",onClick:t[1]||(t[1]=function(t){t.preventDefault(),e.save(a.settingsToSave)})},Object(l["toDisplayString"])(e.translate("General_Yes")),9,sn),Object(l["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[2]||(t[2]=function(e){return e.preventDefault()})},Object(l["toDisplayString"])(e.translate("General_No")),1)])])],512)}function mn(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("GroupedSetting");return Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.settings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:"".concat(e.groupPrefix).concat(t.name)},[Object(l["createVNode"])(a,{"model-value":e.allSettingValues["".concat(e.groupPrefix).concat(t.name)],"onUpdate:modelValue":function(n){return e.$emit("change",{name:t.name,value:n})},setting:t,"condition-values":e.settingValues},null,8,["model-value","onUpdate:modelValue","setting","condition-values"])])})),128)}function fn(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("FormField");return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createVNode"])(a,{"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.changeValue(t)}),"form-field":e.settingWithComponent},null,8,["model-value","form-field"])],512)),[[l["vShow"],e.showField]])}var pn=Object(l["defineComponent"])({props:{setting:{type:Object,required:!0},modelValue:null,conditionValues:{type:Object,required:!0}},components:{FormField:qt},emits:["update:modelValue"],computed:{settingWithComponent:function(){return this.setting.templateFile?Object.assign(Object.assign({},this.setting),{},{component:Dt}):this.setting},showField:function(){var e=this.setting.condition;if(!e)return!0;if(!en){var t=i["Matomo"].helper.getAngularDependency("$rootScope");en=t.$new(!0)}return en.$eval(e,this.conditionValues)}},methods:{changeValue:function(e){this.$emit("update:modelValue",e)}}});pn.render=fn;var bn=pn;function vn(e,t){return jn(e)||yn(e,t)||gn(e,t)||hn()}function hn(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function gn(e,t){if(e){if("string"===typeof e)return On(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?On(e,t):void 0}}function On(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function yn(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function jn(e){if(Array.isArray(e))return e}var Vn=Object(l["defineComponent"])({props:{groupName:String,settings:{type:Array,required:!0},allSettingValues:{type:Object,required:!0}},emits:["change"],components:{GroupedSetting:bn},computed:{settingValues:function(){var e=this,t=Object.entries(this.allSettingValues).filter((function(t){var n=vn(t,1),o=n[0];if(e.groupName){var r=o.split("."),i=vn(r,1),l=i[0];if(l!==e.groupName)return!1}return!0})).map((function(t){var n=vn(t,2),o=n[0],r=n[1];return e.groupName?[o.split(".")[1],r]:[o,r]}));return Object.fromEntries(t)},groupPrefix:function(){return this.groupName?"".concat(this.groupName,"."):""}}});Vn.render=mn;var wn=Vn;function Cn(e,t){return Bn(e)||Fn(e,t)||kn(e,t)||Sn()}function Sn(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function kn(e,t){if(e){if("string"===typeof e)return An(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?An(e,t):void 0}}function An(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Fn(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,r,i=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(i.push(o.value),t&&i.length===t)break}catch(u){a=!0,r=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw r}}return i}}function Bn(e){if(Array.isArray(e))return e}var En=window,xn=En.$,Nn=Object(l["defineComponent"])({props:{mode:String},components:{ActivityIndicator:i["ActivityIndicator"],Field:Qt,GroupedSettings:wn},data:function(){return{isLoading:!0,isSaving:{},passwordConfirmation:"",settingsToSave:null,settingsPerPlugin:[],settingValues:{}}},created:function(){var e=this;i["AjaxHelper"].fetch({method:this.apiMethod}).then((function(t){e.isLoading=!1,e.settingsPerPlugin=t,t.forEach((function(t){t.settings.forEach((function(n){e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}))})),window.anchorLinkFix.scrollToAnchorInUrl(),e.addSectionsToTableOfContents()})).catch((function(){e.isLoading=!1}))},computed:{apiMethod:function(){return"admin"===this.mode?"CorePluginsAdmin.getSystemSettings":"CorePluginsAdmin.getUserSettings"},saveApiMethod:function(){return"admin"===this.mode?"CorePluginsAdmin.setSystemSettings":"CorePluginsAdmin.setUserSettings"}},methods:{addSectionsToTableOfContents:function(){var e=xn("#generalSettingsTOC");if(e.length){var t=this.settingsPerPlugin;t.forEach((function(t){var n=t.pluginName,o=t.settings;n&&("CoreAdminHome"===n&&o?o.filter((function(e){return e.introduction})).forEach((function(t){e.append('<a href="#/'.concat(n,'PluginSettings">').concat(t.introduction,"</a> "))})):e.append('<a href="#/'.concat(n,'">').concat(n.replace(/([A-Z])/g," $1").trim(),"</a> ")))}))}},saveSetting:function(e){"admin"===this.mode?this.showPasswordConfirmModal(e):this.save(e)},showPasswordConfirmModal:function(e){var t=this;this.settingsToSave=e;var n=this.$refs.root,o=xn(n),r=function(n){var r=n.keyCode?n.keyCode:n.which;13===r&&(o.find(".confirm-password-modal").modal("close"),t.save(e))};o.find(".confirm-password-modal").modal({dismissible:!1,onOpenEnd:function(){var e=".modal.open #currentUserPassword";xn(e).focus(),xn(e).off("keypress").keypress(r)}}).modal("open")},save:function(e){var t=this,n=this.saveApiMethod;this.isSaving[e]=!0;var o=this.getValuesForPlugin(e);i["AjaxHelper"].post({method:n},{settingValues:o,passwordConfirmation:this.passwordConfirmation}).then((function(){t.isSaving[e]=!1;var n=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_PluginSettingsSaveSuccess"),id:"generalSettings",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(n)})).catch((function(){t.isSaving[e]=!1})),this.passwordConfirmation="",this.settingsToSave=null},getValuesForPlugin:function(e){var t={};return t[e]||(t[e]=[]),Object.entries(this.settingValues).forEach((function(n){var o=Cn(n,2),r=o[0],i=o[1],l=r.split("."),a=Cn(l,2),u=a[0],c=a[1];if(u===e){var s=i;!1===s?s="0":!0===s&&(s="1"),t[u].push({name:c,value:s})}})),t}}});Nn.render=dn;var Tn=Nn,$n=(Object(i["createAngularJsAdapter"])({component:Tn,scope:{mode:{angularJsBind:"@"}},directiveName:"piwikPluginSettings"}),window),Mn=$n.$;
+ */function Xt(e,t,n){if("string"===typeof e&&e&&("array"===t||"multituple"===n||"field-array"===n||"multiselect"===n||"site"===n)){var o=JSON.parse(e);return"site"===n&&(o.name=r["Matomo"].helper.htmlDecode(o.name)),o}return"checkbox"===n&&"array"!==t?Object(r["transformAngularJsBoolAttr"])(e):e}Object(r["createAngularJsAdapter"])({component:Qt,require:"?ngModel",scope:{uicontrol:{angularJsBind:"@"},name:{angularJsBind:"@"},value:{vue:"modelValue",angularJsBind:"@",transform:function(e,t,n){return Xt(e,n.varType,n.uicontrol)}},default:{vue:"defaultValue",angularJsBind:"@"},options:{angularJsBind:"="},description:{angularJsBind:"@"},introduction:{angularJsBind:"@"},title:{angularJsBind:"@"},inlineHelp:{angularJsBind:"@"},disabled:{angularJsBind:"=",transform:r["transformAngularJsBoolAttr"]},uiControlAttributes:{angularJsBind:"="},uiControlOptions:{angularJsBind:"="},autocomplete:{angularJsBind:"@",transform:r["transformAngularJsBoolAttr"]},condition:{angularJsBind:"@",transform:function(e,t,n){if(e)return function(t){return n.$eval(e,t)}}},varType:{angularJsBind:"@"},autofocus:{angularJsBind:"@",transform:r["transformAngularJsBoolAttr"]},tabindex:{angularJsBind:"@",transform:r["transformAngularJsIntAttr"]},fullWidth:{angularJsBind:"@",transform:r["transformAngularJsBoolAttr"]},maxlength:{angularJsBind:"@",transform:r["transformAngularJsIntAttr"]},required:{angularJsBind:"@",transform:r["transformAngularJsBoolAttr"]},placeholder:{angularJsBind:"@"},rows:{angularJsBind:"@",transform:r["transformAngularJsIntAttr"]},min:{angularJsBind:"@",transform:r["transformAngularJsIntAttr"]},max:{angularJsBind:"@",transform:r["transformAngularJsIntAttr"]},component:{angularJsBind:"<",transform:function(e,t,n){if(e){if(n.templateFile)return Object(l["shallowRef"])(Dt);var o=e.plugin,i=e.name;if(!o||!i)throw new Error("Invalid component property given to piwik-field directive, must be {plugin: '...',name: '...'}");return Object(l["shallowRef"])(Object(r["useExternalPluginComponent"])(o,i))}}}},directiveName:"piwikField",$inject:["$timeout"],events:{"update:modelValue":function(e,t,n,o,i,r,l){var a=r?r.$viewValue:n.value;e!==a&&l((function(){r?(r.$setViewValue(e),r.$render()):n.value=e}))}},postCreate:function(e,t,n,o,i){var a=i;if(a){if(a.$render=function(){Object(l["nextTick"])((function(){e.modelValue=Object(r["removeAngularJsSpecificProperties"])(a.$viewValue)}))},"undefined"!==typeof t.value){var u=Xt(t.value,t.varType,t.uicontrol);a.$setViewValue(u)}else a.$setViewValue(e.modelValue);"site"===t.uicontrol&&a.$viewValue&&setTimeout((function(){a.$setViewValue(Object.assign({},a.$viewValue))}))}else t.$watch("value",(function(n){if(n!==e.modelValue){var o=Xt(n,t.varType,t.uicontrol);Object(l["nextTick"])((function(){e.modelValue=o}))}}))}});var en,tn={class:"pluginSettings",ref:"root"},nn=["id"],on={class:"card-content"},rn=["id"],ln=["onClick","disabled","value"],an={class:"confirm-password-modal modal"},un={class:"modal-content"},cn={class:"modal-footer"},sn=["disabled"];function dn(e,t,n,o,i,r){var a=this,u=Object(l["resolveComponent"])("GroupedSettings"),c=Object(l["resolveComponent"])("ActivityIndicator"),s=Object(l["resolveComponent"])("Field");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",tn,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.settingsPerPlugin,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:"card",id:"".concat(t.pluginName,"PluginSettings"),key:"".concat(t.pluginName,"PluginSettings")},[Object(l["createElementVNode"])("div",on,[Object(l["createElementVNode"])("h2",{class:"card-title",id:t.pluginName},Object(l["toDisplayString"])(t.title),9,rn),Object(l["createVNode"])(u,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"]),Object(l["createElementVNode"])("input",{type:"button",onClick:function(n){return e.saveSetting(t.pluginName)},disabled:e.isLoading,class:"pluginsSettingsSubmit btn",value:e.translate("General_Save")},null,8,ln),Object(l["createVNode"])(c,{loading:e.isLoading||e.isSaving[t.pluginName]},null,8,["loading"])])],8,nn)})),128)),Object(l["createElementVNode"])("div",an,[Object(l["createElementVNode"])("div",un,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(s,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPassword",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(l["createElementVNode"])("div",cn,[Object(l["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",disabled:e.passwordConfirmation?void 0:"disabled",onClick:t[1]||(t[1]=function(t){t.preventDefault(),e.save(a.settingsToSave)})},Object(l["toDisplayString"])(e.translate("General_Yes")),9,sn),Object(l["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[2]||(t[2]=function(e){return e.preventDefault()})},Object(l["toDisplayString"])(e.translate("General_No")),1)])])],512)}function mn(e,t,n,o,i,r){var a=Object(l["resolveComponent"])("GroupedSetting");return Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.settings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:"".concat(e.groupPrefix).concat(t.name)},[Object(l["createVNode"])(a,{"model-value":e.allSettingValues["".concat(e.groupPrefix).concat(t.name)],"onUpdate:modelValue":function(n){return e.$emit("change",{name:t.name,value:n})},setting:t,"condition-values":e.settingValues},null,8,["model-value","onUpdate:modelValue","setting","condition-values"])])})),128)}function fn(e,t,n,o,i,r){var a=Object(l["resolveComponent"])("FormField");return Object(l["withDirectives"])((Object(l["openBlock"])(),Object(l["createElementBlock"])("div",null,[Object(l["createVNode"])(a,{"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.changeValue(t)}),"form-field":e.settingWithComponent},null,8,["model-value","form-field"])],512)),[[l["vShow"],e.showField]])}var pn=Object(l["defineComponent"])({props:{setting:{type:Object,required:!0},modelValue:null,conditionValues:{type:Object,required:!0}},components:{FormField:qt},emits:["update:modelValue"],computed:{settingWithComponent:function(){return this.setting.templateFile?Object.assign(Object.assign({},this.setting),{},{component:Dt}):this.setting},showField:function(){var e=this.setting.condition;if(!e)return!0;if(!en){var t=r["Matomo"].helper.getAngularDependency("$rootScope");en=t.$new(!0)}return en.$eval(e,this.conditionValues)}},methods:{changeValue:function(e){this.$emit("update:modelValue",e)}}});pn.render=fn;var bn=pn;function vn(e,t){return yn(e)||jn(e,t)||gn(e,t)||hn()}function hn(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function gn(e,t){if(e){if("string"===typeof e)return On(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?On(e,t):void 0}}function On(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function jn(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,i,r=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(r.push(o.value),t&&r.length===t)break}catch(u){a=!0,i=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw i}}return r}}function yn(e){if(Array.isArray(e))return e}var Vn=Object(l["defineComponent"])({props:{groupName:String,settings:{type:Array,required:!0},allSettingValues:{type:Object,required:!0}},emits:["change"],components:{GroupedSetting:bn},computed:{settingValues:function(){var e=this,t=Object.entries(this.allSettingValues).filter((function(t){var n=vn(t,1),o=n[0];if(e.groupName){var i=o.split("."),r=vn(i,1),l=r[0];if(l!==e.groupName)return!1}return!0})).map((function(t){var n=vn(t,2),o=n[0],i=n[1];return e.groupName?[o.split(".")[1],i]:[o,i]}));return Object.fromEntries(t)},groupPrefix:function(){return this.groupName?"".concat(this.groupName,"."):""}}});Vn.render=mn;var wn=Vn;function Cn(e,t){return Bn(e)||Fn(e,t)||kn(e,t)||Sn()}function Sn(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function kn(e,t){if(e){if("string"===typeof e)return An(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?An(e,t):void 0}}function An(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}function Fn(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var o,i,r=[],l=!0,a=!1;try{for(n=n.call(e);!(l=(o=n.next()).done);l=!0)if(r.push(o.value),t&&r.length===t)break}catch(u){a=!0,i=u}finally{try{l||null==n["return"]||n["return"]()}finally{if(a)throw i}}return r}}function Bn(e){if(Array.isArray(e))return e}var En=window,xn=En.$,Nn=Object(l["defineComponent"])({props:{mode:String},components:{ActivityIndicator:r["ActivityIndicator"],Field:Qt,GroupedSettings:wn},data:function(){return{isLoading:!0,isSaving:{},passwordConfirmation:"",settingsToSave:null,settingsPerPlugin:[],settingValues:{}}},created:function(){var e=this;r["AjaxHelper"].fetch({method:this.apiMethod}).then((function(t){e.isLoading=!1,e.settingsPerPlugin=t,t.forEach((function(t){t.settings.forEach((function(n){e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}))})),window.anchorLinkFix.scrollToAnchorInUrl(),e.addSectionsToTableOfContents()})).catch((function(){e.isLoading=!1}))},computed:{apiMethod:function(){return"admin"===this.mode?"CorePluginsAdmin.getSystemSettings":"CorePluginsAdmin.getUserSettings"},saveApiMethod:function(){return"admin"===this.mode?"CorePluginsAdmin.setSystemSettings":"CorePluginsAdmin.setUserSettings"}},methods:{addSectionsToTableOfContents:function(){var e=xn("#generalSettingsTOC");if(e.length){var t=this.settingsPerPlugin;t.forEach((function(t){var n=t.pluginName,o=t.settings;n&&("CoreAdminHome"===n&&o?o.filter((function(e){return e.introduction})).forEach((function(t){e.append('<a href="#/'.concat(n,'PluginSettings">').concat(t.introduction,"</a> "))})):e.append('<a href="#/'.concat(n,'">').concat(n.replace(/([A-Z])/g," $1").trim(),"</a> ")))}))}},saveSetting:function(e){"admin"===this.mode?this.showPasswordConfirmModal(e):this.save(e)},showPasswordConfirmModal:function(e){var t=this;this.settingsToSave=e;var n=this.$refs.root,o=xn(n),i=function(n){var i=n.keyCode?n.keyCode:n.which;13===i&&(o.find(".confirm-password-modal").modal("close"),t.save(e))};o.find(".confirm-password-modal").modal({dismissible:!1,onOpenEnd:function(){var e=".modal.open #currentUserPassword";xn(e).focus(),xn(e).off("keypress").keypress(i)}}).modal("open")},save:function(e){var t=this,n=this.saveApiMethod;this.isSaving[e]=!0;var o=this.getValuesForPlugin(e);r["AjaxHelper"].post({method:n},{settingValues:o,passwordConfirmation:this.passwordConfirmation}).then((function(){t.isSaving[e]=!1;var n=r["NotificationsStore"].show({message:Object(r["translate"])("CoreAdminHome_PluginSettingsSaveSuccess"),id:"generalSettings",context:"success",type:"transient"});r["NotificationsStore"].scrollToNotification(n)})).catch((function(){t.isSaving[e]=!1})),this.passwordConfirmation="",this.settingsToSave=null},getValuesForPlugin:function(e){var t={};return t[e]||(t[e]=[]),Object.entries(this.settingValues).forEach((function(n){var o=Cn(n,2),i=o[0],r=o[1],l=i.split("."),a=Cn(l,2),u=a[0],c=a[1];if(u===e){var s=r;!1===s?s="0":!0===s&&(s="1"),t[u].push({name:c,value:s})}})),t}}});Nn.render=dn;var Tn=Nn,$n=(Object(r["createAngularJsAdapter"])({component:Tn,scope:{mode:{angularJsBind:"@"}},directiveName:"piwikPluginSettings"}),window),Mn=$n.$;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Pn(e,t){t.preventDefault();var n=Mn(t.target).attr("href"),o=Mn(t.target).attr("data-plugin-name");if(n&&o){e.value.uninstallConfirmMessage||(e.value.uninstallConfirmMessage=Mn("#uninstallPluginConfirm").text());var r=(e.value.uninstallConfirmMessage||"").replace("%s",o);Mn("#uninstallPluginConfirm").text(r),i["Matomo"].helper.modalConfirm("#confirmUninstallPlugin",{yes:function(){window.location.href=n}})}}function Jn(e){e.preventDefault();var t=Mn(e.target).data("overlay-id");i["Matomo"].helper.modalConfirm("#".concat(t),{})}var Hn={mounted:function(e,t){setTimeout((function(){t.value.uninstallConfirmMessage="",Mn(e).find(".uninstall").click(Pn.bind(null,t)),Mn(e).find(".plugin-donation-link").click(Jn)}))}};
+ */function Pn(e,t){t.preventDefault();var n=Mn(t.target).attr("href"),o=Mn(t.target).attr("data-plugin-name");if(n&&o){e.value.uninstallConfirmMessage||(e.value.uninstallConfirmMessage=Mn("#uninstallPluginConfirm").text());var i=(e.value.uninstallConfirmMessage||"").replace("%s",o);Mn("#uninstallPluginConfirm").text(i),r["Matomo"].helper.modalConfirm("#confirmUninstallPlugin",{yes:function(){window.location.href=n}})}}function Jn(e){e.preventDefault();var t=Mn(e.target).data("overlay-id");r["Matomo"].helper.modalConfirm("#".concat(t),{})}var Hn={mounted:function(e,t){setTimeout((function(){t.value.uninstallConfirmMessage="",Mn(e).find(".uninstall").click(Pn.bind(null,t)),Mn(e).find(".plugin-donation-link").click(Jn)}))}};
/*!
* Matomo - free/libre analytics platform
*
@@ -35,7 +35,7 @@
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-var Ln=window,In=Ln.$;function zn(e){e.preventDefault(),i["Matomo"].helper.modalConfirm("#installPluginByUpload",{})}function Un(e){var t=In("[name=pluginZip]"),n=t.val();n&&".zip"===n.slice(-4)?t.data("maxSize")>0&&t[0].files[0].size>1048576*t.data("maxSize")&&(e.preventDefault(),alert(Object(i["translate"])("CorePluginsAdmin_FileExceedsUploadLimit"))):(e.preventDefault(),alert(Object(i["translate"])("CorePluginsAdmin_NoZipFileSelected")))}var Kn={mounted:function(){setTimeout((function(){In(".uploadPlugin").click(zn),In("#uploadPluginForm").submit(Un)}))}};
+var In=window,Ln=In.$;function zn(e){e.preventDefault(),r["Matomo"].helper.modalConfirm("#installPluginByUpload",{})}function Un(e){var t=Ln("[name=pluginZip]"),n=t.val();n&&".zip"===n.slice(-4)?t.data("maxSize")>0&&t[0].files[0].size>1048576*t.data("maxSize")&&(e.preventDefault(),alert(Object(r["translate"])("CorePluginsAdmin_FileExceedsUploadLimit"))):(e.preventDefault(),alert(Object(r["translate"])("CorePluginsAdmin_NoZipFileSelected")))}var Kn={mounted:function(){setTimeout((function(){Ln(".uploadPlugin").click(zn),Ln("#uploadPluginForm").submit(Un)}))}};
/*!
* Matomo - free/libre analytics platform
*
@@ -48,13 +48,13 @@ var Ln=window,In=Ln.$;function zn(e){e.preventDefault(),i["Matomo"].helper.modal
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-var qn=window,Rn=qn.$;function Gn(e){return e.find(".origin a.active").data("filter-origin")}function Wn(e){return e.find(".status a.active").data("filter-status")}function Zn(e,t){var n="#plugins tr";return n+="all"===e?"[data-filter-origin]":"[data-filter-origin=".concat(e,"]"),n+="all"===t?"[data-filter-status]":"[data-filter-status=".concat(t,"]"),Rn(n)}function Yn(e,t,n,o){var r=Zn(n,o).length,i=" (".concat(r,")");e.find("".concat(t," .counter")).text(i)}function Qn(e){var t=Gn(e),n=Wn(e);Yn(e,'[data-filter-status="all"]',t,"all"),Yn(e,'[data-filter-status="active"]',t,"active"),Yn(e,'[data-filter-status="inactive"]',t,"inactive"),Yn(e,'[data-filter-origin="all"]',"all",n),Yn(e,'[data-filter-origin="core"]',"core",n),Yn(e,'[data-filter-origin="official"]',"official",n),Yn(e,'[data-filter-origin="thirdparty"]',"thirdparty",n)}function Xn(e){var t=Gn(e),n=Wn(e),o=Zn(t,n);Rn("#plugins tr[data-filter-origin][data-filter-status]").css("display","none"),o.css("display","table-row"),Qn(e)}function eo(e,t){t.preventDefault(),Rn(t.target).siblings().removeClass("active"),Rn(t.target).addClass("active"),Xn(e)}function to(e,t){t.preventDefault(),Rn(t.target).siblings().removeClass("active"),Rn(t.target).addClass("active"),Xn(e)}var no={mounted:function(e){setTimeout((function(){Qn(Rn(e)),Rn(e).find(".status").on("click","a",eo.bind(null,Rn(e))),Rn(e).find(".origin").on("click","a",to.bind(null,Rn(e)))}))}};
+var qn=window,Rn=qn.$;function Gn(e){return e.find(".origin a.active").data("filter-origin")}function Wn(e){return e.find(".status a.active").data("filter-status")}function Zn(e,t){var n="#plugins tr";return n+="all"===e?"[data-filter-origin]":"[data-filter-origin=".concat(e,"]"),n+="all"===t?"[data-filter-status]":"[data-filter-status=".concat(t,"]"),Rn(n)}function Yn(e,t,n,o){var i=Zn(n,o).length,r=" (".concat(i,")");e.find("".concat(t," .counter")).text(r)}function Qn(e){var t=Gn(e),n=Wn(e);Yn(e,'[data-filter-status="all"]',t,"all"),Yn(e,'[data-filter-status="active"]',t,"active"),Yn(e,'[data-filter-status="inactive"]',t,"inactive"),Yn(e,'[data-filter-origin="all"]',"all",n),Yn(e,'[data-filter-origin="core"]',"core",n),Yn(e,'[data-filter-origin="official"]',"official",n),Yn(e,'[data-filter-origin="thirdparty"]',"thirdparty",n)}function Xn(e){var t=Gn(e),n=Wn(e),o=Zn(t,n);Rn("#plugins tr[data-filter-origin][data-filter-status]").css("display","none"),o.css("display","table-row"),Qn(e)}function eo(e,t){t.preventDefault(),Rn(t.target).siblings().removeClass("active"),Rn(t.target).addClass("active"),Xn(e)}function to(e,t){t.preventDefault(),Rn(t.target).siblings().removeClass("active"),Rn(t.target).addClass("active"),Xn(e)}var no={mounted:function(e){setTimeout((function(){Qn(Rn(e)),Rn(e).find(".status").on("click","a",eo.bind(null,Rn(e))),Rn(e).find(".origin").on("click","a",to.bind(null,Rn(e)))}))}};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function oo(){return{restrict:"A",link:function(e,t){no.mounted(t[0])}}}window.angular.module("piwikApp").directive("piwikPluginFilter",oo);var ro={class:"matomo-save-button",style:{display:"inline-block"}},io=["disabled","value"];function lo(e,t,n,o,r,i){var a=Object(l["resolveComponent"])("ActivityIndicator");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ro,[Object(l["createElementVNode"])("input",{type:"button",onClick:t[0]||(t[0]=function(t){return e.onConfirm(t)}),disabled:e.saving||e.disabled,class:"btn",value:e.value?e.value:e.translate("General_Save")},null,8,io),Object(l["createVNode"])(a,{loading:e.saving},null,8,["loading"])])}var ao=Object(l["defineComponent"])({props:{saving:Boolean,value:String,disabled:Boolean},components:{ActivityIndicator:i["ActivityIndicator"]},emits:["confirm"],methods:{onConfirm:function(e){this.$emit("confirm",e)}}});ao.render=lo;var uo=ao,co=(Object(i["createAngularJsAdapter"])({component:uo,scope:{saving:{angularJsBind:"=?"},value:{angularJsBind:"@?"},disabled:{angularJsBind:"=?"},onconfirm:{angularJsBind:"&?",vue:"confirm"}},events:{confirm:function(e,t,n,o,r,i,l){o[0].click(),l()}},replace:!0,directiveName:"piwikSaveButton",$inject:["$timeout"]}),window),so=co.$,mo={mounted:function(e){setTimeout((function(){so(e).find("input[type=text]").keypress((function(t){var n=t.keyCode||t.which;13===n&&so(e).find(".matomo-save-button input").triggerHandler("click")}))}))}};
+ */function oo(){return{restrict:"A",link:function(e,t){no.mounted(t[0])}}}window.angular.module("piwikApp").directive("piwikPluginFilter",oo);var io={class:"matomo-save-button",style:{display:"inline-block"}},ro=["disabled","value"];function lo(e,t,n,o,i,r){var a=Object(l["resolveComponent"])("ActivityIndicator");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",io,[Object(l["createElementVNode"])("input",{type:"button",onClick:t[0]||(t[0]=function(t){return e.onConfirm(t)}),disabled:e.saving||e.disabled,class:"btn",value:e.value?e.value:e.translate("General_Save")},null,8,ro),Object(l["createVNode"])(a,{loading:e.saving},null,8,["loading"])])}var ao=Object(l["defineComponent"])({props:{saving:Boolean,value:String,disabled:Boolean},components:{ActivityIndicator:r["ActivityIndicator"]},emits:["confirm"],methods:{onConfirm:function(e){this.$emit("confirm",e)}}});ao.render=lo;var uo=ao,co=(Object(r["createAngularJsAdapter"])({component:uo,scope:{saving:{angularJsBind:"=?"},value:{angularJsBind:"@?"},disabled:{angularJsBind:"=?"},onconfirm:{angularJsBind:"&?",vue:"confirm"}},events:{confirm:function(e,t,n,o,i,r,l){o[0].click(),l()}},replace:!0,directiveName:"piwikSaveButton",$inject:["$timeout"]}),window),so=co.$,mo={mounted:function(e){setTimeout((function(){so(e).find("input[type=text]").keypress((function(t){var n=t.keyCode||t.which;13===n&&so(e).find(".matomo-save-button input").triggerHandler("click")}))}))}};
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CorePluginsAdmin/vue/src/Field/Field.vue b/plugins/CorePluginsAdmin/vue/src/Field/Field.vue
index 02184e242b..b564ec9acd 100644
--- a/plugins/CorePluginsAdmin/vue/src/Field/Field.vue
+++ b/plugins/CorePluginsAdmin/vue/src/Field/Field.vue
@@ -9,7 +9,11 @@
:form-field="field"
:model-value="modelValue"
@update:model-value="onChange($event)"
- />
+ >
+ <template v-slot:inline-help>
+ <slot name="inline-help"></slot>
+ </template>
+ </FormField>
</template>
<script lang="ts">
diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue
index 2b024a46a1..36b9a4451b 100644
--- a/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue
+++ b/plugins/CorePluginsAdmin/vue/src/FormField/FieldSelect.vue
@@ -32,7 +32,7 @@
</option>
</optgroup>
</select>
- <label :for="name" v-html="title"></label>
+ <label :for="name" v-html="$sanitize(title)"></label>
</div>
<div v-if="!groupedOptions && options" class="matomo-field-select">
<select
@@ -55,7 +55,7 @@
{{ option.value }}
</option>
</select>
- <label :for="name" v-html="title"></label>
+ <label :for="name" v-html="$sanitize(title)"></label>
</div>
</template>
diff --git a/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue b/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue
index 1982b7ff07..57186f0d9e 100644
--- a/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue
+++ b/plugins/CorePluginsAdmin/vue/src/FormField/FormField.vue
@@ -53,13 +53,15 @@
<span
class="inline-help"
ref="inlineHelp"
- v-if="formField.inlineHelp"
+ v-if="formField.inlineHelp || hasInlineHelpSlot"
>
<component
v-if="inlineHelpComponent"
:is="inlineHelpComponent"
v-bind="inlineHelpBind"
/>
+
+ <slot name="inline-help"></slot>
</span>
<span v-show="showDefaultValue">
<br />
@@ -277,7 +279,8 @@ export default defineComponent({
showFormHelp() {
return this.formField.description
|| this.formField.inlineHelp
- || this.showDefaultValue;
+ || this.showDefaultValue
+ || this.hasInlineHelpSlot;
},
showDefaultValue() {
return this.defaultValuePretty
@@ -391,6 +394,14 @@ export default defineComponent({
defaultValuePrettyTruncated() {
return this.defaultValuePretty.substring(0, 50);
},
+ hasInlineHelpSlot() {
+ if (!this.$slots['inline-help']) {
+ return false;
+ }
+
+ const inlineHelpSlot = this.$slots['inline-help']();
+ return !!inlineHelpSlot?.[0]?.children?.length;
+ },
},
methods: {
onChange(newValue: unknown) {
diff --git a/plugins/CoreUpdater/lang/ga.json b/plugins/CoreUpdater/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/CoreUpdater/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/CoreUpdater/lang/id.json b/plugins/CoreUpdater/lang/id.json
index 7cc29eda68..b9ce775536 100644
--- a/plugins/CoreUpdater/lang/id.json
+++ b/plugins/CoreUpdater/lang/id.json
@@ -1,48 +1,103 @@
{
"CoreUpdater": {
- "CheckingForPluginUpdates": "Memeriksa untuk pembaruan plugin",
+ "AlreadyUpToDate": "Semuanya sudah diperbarui.",
+ "CheckingForPluginUpdates": "Memeriksa pembaruan plugin baru",
+ "ClickHereToViewSqlQueries": "Klik di sini untuk melihat dan menyalin daftar kueri SQL dan perintah konsol yang akan dieksekusi",
+ "CloudHosting": "Cloud hosting",
+ "ConsoleCommandDescription": "Memicu proses pembaruan. Gunakan ini setelah inti Matomo atau berkas plugin apa pun telah diperbarui. Tambahkan --ya untuk memperbarui tanpa konfirmasi.",
+ "ConsoleParameterDescription": "Langsung jalankan proses pembaruan tanpa meminta konfirmasi",
+ "ConsoleStartingDbUpgrade": "Memulai proses peningkatan basis data sekarang. Proses ini mungkin memakan waktu cukup lama, jadi mohon untuk bersabar.",
+ "ConsoleUpdateFailure": "Matomo tidak bisa diperbarui! Lihat keterangan di atas untuk informasi lebih lanjut.",
+ "ConsoleUpdateNoSqlQueries": "Catatan: Tidak ada kueri SQL atau perintah konsol yang bisa dijalankan.",
+ "ConsoleUpdateUnexpectedUserWarning": "Tampaknya Anda telah menjalankan pembaruan ini dengan pengguna %1$s, sedangkan berkas Matomo Anda dimiliki oleh %2$s.\n\nUntuk memastikan bahwa berkas Matomo dapat dibaca oleh pengguna yang benar, Anda mungkin perlu menjalankan perintah berikut (atau perintah serupa tergantung pada konfigurasi server Anda):\n\n$%3$s",
+ "ConvertToUtf8mb4": "Konversikan basis data ke pengodean karakter UTF8mb4",
"CriticalErrorDuringTheUpgradeProcess": "Kesalahan fatal terjadi selama pembaruan:",
- "DatabaseUpgradeRequired": "Membutuhkan Pembaruan Basisdata",
- "DownloadingUpdateFromX": "Mengunduh pembaruan dari %s",
+ "DatabaseUpgradeRequired": "Membutuhkan Pembaruan Basis Data",
+ "DbUpgradeNotExecuted": "Pemutakhiran basis data tidak dijalankan.",
+ "DisablingIncompatiblePlugins": "Menonaktifkan plugin yang tidak kompatibel: %s",
"DownloadX": "Mengunduh %s",
- "EmptyDatabaseError": "Basisdata %s kosong. Anda harus menyunting atau menghapus berkas konfigurasi Matomo Anda.",
- "ErrorDIYHelp": "Jika Anda pengguna ahli dan menemukan kesalahan dalam pembaruan basisdata:",
- "ErrorDIYHelp_1": "kenali dan perbaiki sumber permaslahan (misalnya, memory_limit atau max_execution_time)",
- "ErrorDIYHelp_2": "eksekusi kueri pembaruan tersisa yang gagal",
- "ErrorDIYHelp_3": "perbarui secara manual tabel `option` di basisdata Matomo Anda, atur nilai version_core ke versi pembaruan yang gagal",
- "ErrorDIYHelp_4": "jalankan ulang pembaruan (melalui peramban atau baris-perintah) untuk melanjutkan pembaruan yang tersisa",
- "ErrorDIYHelp_5": "laporkan permasalahan (serta pemecahannya) sehingga Matomo dapat menjadi lebih baik",
- "ErrorDuringPluginsUpdates": "Galat selama pembaruan pengaya:",
- "ExceptionAlreadyLatestVersion": "Versi %s Matomo Anda termutakhir.",
+ "DownloadingUpdateFromX": "Mengunduh pembaruan dari %s",
+ "DryRun": "Catatan: ini adalah Uji Coba",
+ "DryRunEnd": "Uji Coba Telah Berakhir",
+ "EmptyDatabaseError": "Basis data %s kosong. Anda harus menyunting atau menghapus berkas konfigurasi Matomo Anda.",
+ "ErrorDIYHelp": "Jika Anda pengguna ahli dan menemukan kesalahan dalam pembaruan basis data:",
+ "ErrorDIYHelp_1": "mengidentifikasi dan memperbaiki sumber masalah (mis., memory_limit atau max_execution_time)",
+ "ErrorDIYHelp_2": "jalankan kueri yang tersisa dalam pembaruan yang gagal",
+ "ErrorDIYHelp_3": "perbarui tabel `option` secara manual di basis data Matomo Anda, atur nilai version_core ke versi pembaruan yang gagal",
+ "ErrorDIYHelp_4": "jalankan kembali pembaruan (melalui peramban atau baris perintah) untuk melanjutkan pembaruan yang tersisa",
+ "ErrorDIYHelp_5": "laporkan permasalahan (serta solusinya) agar Matomo dapat menjadi lebih baik",
+ "ErrorDuringPluginsUpdates": "Terjadi kesalahan selama pembaruan plugin:",
+ "ExceptionAlreadyLatestVersion": "Versi Matomo Anda %s sudah yang terbaru.",
"ExceptionArchiveEmpty": "Arsip kosong.",
"ExceptionArchiveIncompatible": "Arsip tak didukung: %s",
"ExceptionArchiveIncomplete": "Arsip tak lengkap: beberapa berkas hilang (misalnya %s).",
- "HelpMessageContent": "Perikasa %1$s Pertanyaan yang Sering Diajukan di Matomo %2$s yang menjelaskan galat selama pembaruan. %3$s Tanyakan pengelola sistem Anda - kemungkinan dapat membantu mengatasi masalah Anda yang berhubungan dengan pengaturan peladen dan MySQL.",
- "HelpMessageIntroductionWhenError": "Di atas merupakan pesan kesalahan dari inti pembaruan. Ini seharusnya akan membantu menjelaskan penyebabnya. Namun, bila membutuhkan bantuan lebih lanjut:",
+ "ExceptionDirWrongPermission": "Beberapa folder tidak dapat ditulis. Pastikan folder berikut dapat ditulis dan silakan coba lagi: %s.",
+ "ExecuteDbUpgrade": "Diperlukan pemutakhiran basis data . Jalankan pembaruan?",
+ "FeedbackRequest": "Jangan ragu untuk membagikan ide dan saran Anda dengan Tim Matomo di sini:",
+ "HelpMessageContent": "Periksa %1$s Matomo FAQ %2$s yang menjelaskan semua kesalahan paling umum yang terjadi selama pembaruan. %3$s Tanyakan kepada administrator sistem Anda, mereka mungkin dapat membantu Anda dengan kesalahan yang terkait dengan server atau pengaturan MySQL Anda.",
+ "HelpMessageIntroductionWhenError": "Pesan di atas merupakan pesan kesalahan dari inti pembaruan. Pesan tersebut seharusnya dapat membantu menjelaskan penyebabnya. Namun, bila Anda membutuhkan bantuan lebih lanjut, silakan:",
"HelpMessageIntroductionWhenWarning": "Pembaruan telah selesai. Namun, terdapat beberapa masalah selama proses pembaruan. Silakan baca keterangan di atas untuk selengkapnya. Untuk bantuan lebih lanjut:",
+ "HighTrafficPiwikServerEnableMaintenance": "Jika Anda mengelola server Matomo dengan lalu lintas tinggi, kami menyarankan Anda untuk %1$smenonaktifkan sejenak Pelacakan Pengunjung dan menempatkan Antarmuka Pengguna Matomo dalam mode pemeliharaan%2$s.",
+ "IncompatbilePluginsWillBeDisabledInfo": "Catatan: beberapa plugin tidak kompatibel dengan Matomo %s. Kami akan membaruinya jika ada pembaruan di Lokapasar, jika tidak, kami akan menonaktifkannya saat Anda melakukan pembaruan:",
"InstallingTheLatestVersion": "Memasang versi terakhir",
+ "LatestBetaRelease": "Rilis beta terbaru",
+ "LatestStableRelease": "Rilis stabil terbaru",
+ "LatestXBetaRelease": "Rilis beta terbaru %s",
+ "LatestXStableRelease": "Rilis stabil terbaru %s",
+ "ListOfSqlQueriesFYI": "Untuk informasi: ini adalah kueri SQL dan perintah konsol yang akan dijalankan untuk meningkatkan basis data Anda ke Matomo %s",
+ "LtsSupportVersion": "Versi Dukungan Jangka Panjang",
"MajorUpdateWarning1": "Ini merupakan pembaruan besar! Ini akan memakan waktu yang lebih lama dari biasanya.",
- "MajorUpdateWarning2": "Saran berikut sangat penting untuk pemasangan besar.",
+ "MajorUpdateWarning2": "Saran berikut ini sangat penting untuk instalasi besar.",
+ "NeedHelpUpgrading": "Butuh bantuan dalam memperbarui Matomo?",
+ "NeedHelpUpgradingText": "Jika Anda memerlukan dukungan untuk meningkatkan Matomo Anda, pencipta Matomo ada di sini untuk membantu Anda untuk membuat peningkatan Matomo sukses dan akan memberikan semua instruksi, praktik terbaik, dan dukungan berkelanjutan. %1$s Hubungi para ahli Matomo untuk mulai meningkatkan Matomo Anda dengan aman. %2$s",
"NoteForLargePiwikInstances": "Catatan penting untuk instalasi besar Matomo",
+ "NotificationClickToUpdatePlugins": "Klik di sini untuk memperbarui plugin Anda sekarang:",
+ "NotificationClickToUpdateThemes": "Klik di sini untuk memperbarui tema Anda sekarang:",
+ "NotificationSubjectAvailableCoreUpdate": "Matomo versi terbaru %s telah tersedia",
+ "NotificationSubjectAvailablePluginUpdate": "Pembaruan untuk plugin Matomo Anda telah tersedia",
"PiwikHasBeenSuccessfullyUpgraded": "Matomo berhasil diperbarui!",
"PiwikUpdatedSuccessfully": "Pembaruan Matomo berhasil!",
- "PiwikWillBeUpgradedFromVersionXToVersionY": "BasisData Matomo akan diperbarui dari versi %1$s ke versi %2$s.",
+ "PiwikWillBeUpgradedFromVersionXToVersionY": "Basis data Matomo akan diperbarui dari versi %1$s ke versi %2$s.",
+ "PostUpdateMessage": "Matomo akan selalu gratis untuk diunduh dan digunakan, tetapi Matomo membutuhkan dukungan berkelanjutan dari Anda untuk tumbuh dan berkembang.",
+ "PostUpdateSupport": "Jika Anda membutuhkan bantuan dalam menggunakan Matomo, Anda bisa mendapatkan dukungan dari penciptanya:",
"ReadyToGo": "Sudah siap?",
- "TheFollowingPluginsWillBeUpgradedX": "Pengaya berikut akan diperbarui: %s.",
- "ThereIsNewVersionAvailableForUpdate": "Terdapat versi baru Matomo yang tersedia",
+ "ReceiveEmailBecauseIsSuperUser": "Anda menerima surel ini karena Anda adalah Pengguna Super di Matomo di: %s",
+ "ServicesSupport": "Layanan &amp; Dukungan",
+ "SkipCacheClear": "Lewati proses pembersihan tembolok.",
+ "SkipCacheClearDesc": "Lewati proses pembersihan tembolok sebelum melakukan pembaruan. Hal ini hanya berguna jika Anda dapat memastikan bahwa proses yang menjalankan perintah ini belum membuat tembolok sama sekali dan jika mengosongkan tembolok untuk banyak akun Matomo dapat menjadi hambatan.",
+ "ThankYouUpdatePiwik": "Terima kasih karena telah menggunakan Matomo dan selalu memperbaruinya!",
+ "TheFollowingDimensionsWillBeUpgradedX": "Dimensi berikut ini akan diperbarui: %s.",
+ "TheFollowingPluginsWillBeUpgradedX": "Plugin berikut ini akan diperbarui: %s.",
"TheUpgradeProcessMayFailExecuteCommand": "Bila Anda memiliki basisdata Matomo yang besar, pembaruan akan berjalan lama bila dilakukan di peramban. Dalam keadaan ini, Anda dapat mengeksekusi dari baris perintah: %s",
- "TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Pembaruan basisdata dapat berlangsung cukup lama, jadi harap bersabar.",
+ "TheUpgradeProcessMayTakeAWhilePleaseBePatient": "Pembaruan basis data dapat berlangsung cukup lama, jadi harap bersabar.",
+ "ThereIsNewPluginVersionAvailableForUpdate": "Beberapa plugin yang Anda gunakan telah diperbarui di Lokapasar:",
+ "ThereIsNewVersionAvailableForUpdate": "Terdapat versi baru Matomo yang tersedia",
+ "TheseCommandsWillBeExecuted": "Perintah konsol ini akan dijalankan:",
+ "TheseSqlQueriesWillBeExecuted": "Kueri SQL ini akan dieksekusi:",
+ "TriggerDatabaseConversion": "Memicu konversi basis data di latar belakang",
"UnpackingTheUpdate": "Membongkar paket pembaruan",
"UpdateAutomatically": "Pembaruan Otomatis",
+ "UpdateErrorTitle": "Galat saat pembaruan",
"UpdateHasBeenCancelledExplanation": "Pembaruan Sekali Klik Matomo telah dibatalkan. Jika Anda tak dapat memperbaiki kesalahan di atas, disarankan untuk memperbarui Matomo secara manual. %1$s Silakan periksa %2$s Dokumetasi pembaruan%3$s saat memulai!",
- "UpdateTitle": "Pembaruan",
+ "UpdateLog": "Log pembaruan",
"UpdateSuccessTitle": "Matomo berhasil diperbarui!",
+ "UpdateTitle": "Pembaruan",
+ "UpdateUsingHttpsFailed": "Mengunduh versi Matomo terbaru melalui koneksi HTTPS yang aman tidak berhasil karena kesalahan berikut ini:",
+ "UpdateUsingHttpsFailedHelp": "Mengapa gagal? Mengunduh versi Matomo terbaru (melalui koneksi HTTPS yang aman) dapat mengalami kegagalan karena berbagai alasan, misalnya karena kesalahan jaringan, kecepatan jaringan yang lambat, atau konfigurasi sistem yang salah. Hal ini juga bisa berarti bahwa server Anda adalah target dari serangan MITM dan seseorang sedang mencoba mengganti pembaruan dengan versi Matomo yang berbahaya.",
+ "UpdateUsingHttpsFailedHelpWhatToDo": "Disarankan untuk mencoba untuk mengunduh kembali menggunakan koneksi HTTPS demi mencegah serangan MITM.",
+ "Updating": "Memperbarui",
+ "UpdatingPluginXToVersionY": "Memperbarui plugin %1$s ke versi %2$s",
"UpgradeComplete": "Pembaruan selesai!",
"UpgradePiwik": "Pembaruan Matomo",
+ "UsingHttp": "menggunakan koneksi HTTP yang tidak aman",
+ "UsingHttps": "menggunakan koneksi HTTPS yang aman (disarankan)",
+ "Utf8mb4ConversionHelp": "Basis data Anda saat ini tidak menggunakan pengodean karakter utf8mb4. Hal ini membuat karakter 4-byte, seperti emoji, karakter bahasa Asia yang kurang umum, berbagai skrip bersejarah, atau simbol matematika tidak dapat disimpan. Saat ini diganti dengan %1$s.<br><br>Basis data Anda mendukung pengodean karakter utf8mb4 dan memungkinkan untuk mengonversinya.<br><br>Jika Anda dapat menjalankan perintah konsol, kami sarankan untuk menggunakan perintah ini: %2$s<br><br>Anda juga dapat mengaktifkan konversi di sini. Kemudian akan dipicu secara otomatis sebagai tugas terjadwal di latar belakang.<br><br>Perhatian: Mengonversi basis data mungkin memerlukan waktu hingga beberapa jam, tergantung pada ukuran basis data. Proses pelacakan mungkin tidak berfungsi selama proses ini, kami tidak menyarankan Anda untuk menggunakan pemicu untuk hal yang lebih besar.<br><br>Anda dapat menemukan informasi lebih lanjut tentang topik ini di %3$sFAQ%4$s.",
"VerifyingUnpackedFiles": "Memverifikasi berkas",
+ "ViewVersionChangelog": "Lihat catatan perubahan untuk versi ini:",
"WarningMessages": "Peringatan:",
- "WeAutomaticallyDeactivatedTheFollowingPlugins": "Pengaya berikut otomatis dimatikan: %s",
- "YouCanUpgradeAutomaticallyOrDownloadPackage": "Anda dapat memperbarui ke versi %s otomatis atau mengunduh paket dan memasang secara manual:",
+ "WeAutomaticallyDeactivatedTheFollowingPlugins": "Kami secara otomatis menonaktifkan plugin berikut ini: %s",
+ "YouCanUpgradeAutomaticallyOrDownloadPackage": "Anda dapat memperbarui ke versi %s secara otomatis atau mengunduh paket dan memasangnya secara manual:",
+ "YouMustDownloadPackageOrFixPermissions": "Matomo tidak dapat menimpa instalasi Anda saat ini. Anda dapat memperbaiki izin direktori/ berkas atau mengunduh paket dan memasang versi %s secara manual:",
"YourDatabaseIsOutOfDate": "Basis Data Matomo Anda kedaluwarsa, dan harus diperbarui sebelum Anda dapat melanjutkan."
}
-} \ No newline at end of file
+}
diff --git a/plugins/CoreUpdater/templates/updateSuccess.twig b/plugins/CoreUpdater/templates/updateSuccess.twig
index 818c537f50..0b7fb02087 100644
--- a/plugins/CoreUpdater/templates/updateSuccess.twig
+++ b/plugins/CoreUpdater/templates/updateSuccess.twig
@@ -22,7 +22,7 @@
<div class="row">
<div class="col s5 offset-s1">
- <a href="https://matomo.org/support-plans/?pk_medium=Update_Success_button&pk_source=Matomo_App&pk_campaign=App_Updated" class="btn btn-block">{{ 'CoreUpdater_ServicesSupport'|translate }}</a>
+ <a href="https://matomo.org/support-plans/?pk_medium=Update_Success_button&pk_source=Matomo_App&pk_campaign=App_Updated" class="btn btn-block">{{ 'CoreUpdater_ServicesSupport'|translate|raw }}</a>
</div>
<div class="col s5">
<a href="https://matomo.org/hosting/?pk_medium=App_Cloud_button&pk_source=Matomo_App&pk_campaign=App_Updated" class="btn btn-block">{{ 'CoreUpdater_CloudHosting'|translate }}</a>
diff --git a/plugins/CoreVue/Commands/Build.php b/plugins/CoreVue/Commands/Build.php
index a021f0de69..93c24af457 100644
--- a/plugins/CoreVue/Commands/Build.php
+++ b/plugins/CoreVue/Commands/Build.php
@@ -22,6 +22,7 @@ class Build extends ConsoleCommand
{
const RECOMMENDED_NODE_VERSION = '16.0.0';
const RECOMMENDED_NPM_VERSION = '7.0.0';
+ const RETRY_COUNT = 2;
protected function configure()
{
@@ -62,6 +63,7 @@ class Build extends ConsoleCommand
}
}
+ $plugins = $this->ensureUntranspiledPluginDependenciesArePresent($plugins);
$plugins = PluginUmdAssetFetcher::orderPluginsByPluginDependencies($plugins);
// remove webpack cache since it can result in strange builds if present
@@ -71,6 +73,26 @@ class Build extends ConsoleCommand
return $failed;
}
+ private function ensureUntranspiledPluginDependenciesArePresent($plugins)
+ {
+ $pluginDependenciesToAdd = [];
+ foreach ($plugins as $plugin) {
+ $dependencies = PluginUmdAssetFetcher::getPluginDependencies($plugin);
+ foreach ($dependencies as $dependency) {
+ if (!$this->isTypeOutputPresent($dependency)) {
+ $pluginDependenciesToAdd[] = $dependency;
+ }
+ }
+ }
+ return array_unique(array_merge($plugins, $pluginDependenciesToAdd));
+ }
+
+ private function isTypeOutputPresent($dependency)
+ {
+ $typeDirectory = PIWIK_INCLUDE_PATH . '/@types/' . $dependency . '/index.d.ts';
+ return is_file($typeDirectory);
+ }
+
private function build(OutputInterface $output, $plugins, $printBuildCommand, $watch = false)
{
if ($watch) {
@@ -90,7 +112,7 @@ class Build extends ConsoleCommand
private function watch($plugins, $printBuildCommand, OutputInterface $output)
{
$commandSingle = "BROWSERSLIST_IGNORE_OLD_DATA=1 FORCE_COLOR=1 MATOMO_CURRENT_PLUGIN=%1\$s "
- . self::getVueCliServiceBin() . ' build --mode=development --target lib --name '
+ . 'node ' . self::getVueCliServiceProxyBin() . ' build --mode=development --target lib --name '
. "%1\$s --filename=%1\$s.development --no-clean ./plugins/%1\$s/vue/src/index.ts --dest ./plugins/%1\$s/vue/dist --watch &";
$command = '';
@@ -102,13 +124,14 @@ class Build extends ConsoleCommand
$output->writeln("<comment>$command</comment>");
return;
}
+
passthru($command);
}
private function buildFiles(OutputInterface $output, $plugin, $printBuildCommand)
{
$command = "BROWSERSLIST_IGNORE_OLD_DATA=1 FORCE_COLOR=1 MATOMO_CURRENT_PLUGIN=$plugin "
- . self::getVueCliServiceBin() . ' build --target lib --name ' . $plugin
+ . 'node ' . self::getVueCliServiceProxyBin() . ' build --target lib --name ' . $plugin
. " ./plugins/$plugin/vue/src/index.ts --dest ./plugins/$plugin/vue/dist";
if ($printBuildCommand) {
@@ -120,15 +143,27 @@ class Build extends ConsoleCommand
$output->writeln("<comment>Building $plugin...</comment>");
if ($output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE) {
- passthru($command, $returnCode);
+ passthru($command);
} else {
- exec($command, $cmdOutput, $returnCode);
- if ($returnCode != 0
- || stripos(implode("\n", $cmdOutput), 'warning') !== false
- ) {
- $output->writeln("<error>Failed:</error>\n");
- $output->writeln($cmdOutput);
- $output->writeln("");
+ $attempts = 0;
+ while ($attempts < self::RETRY_COUNT) {
+ exec($command, $cmdOutput, $returnCode);
+
+ $concattedOutput = implode("\n", $cmdOutput);
+ if ($this->isTypeScriptRaceConditionInOutput($plugin, $concattedOutput)) {
+ $output->writeln("<comment>The TypeScript compiler encountered a race condition when compiling "
+ . "files (files that exist were not found), retrying.</comment>");
+ }
+
+ if ($returnCode != 0
+ || stripos($concattedOutput, 'warning') !== false
+ ) {
+ $output->writeln("<error>Failed:</error>\n");
+ $output->writeln($cmdOutput);
+ $output->writeln("");
+ }
+
+ ++$attempts;
}
}
@@ -185,6 +220,11 @@ class Build extends ConsoleCommand
return PIWIK_INCLUDE_PATH . "/node_modules/@vue/cli-service/bin/vue-cli-service.js";
}
+ public static function getVueCliServiceProxyBin()
+ {
+ return PIWIK_INCLUDE_PATH . "/plugins/CoreVue/scripts/cli-service-proxy.js";
+ }
+
public static function checkVueCliServiceAvailable()
{
$vueCliBin = self::getVueCliServiceBin();
@@ -225,4 +265,16 @@ class Build extends ConsoleCommand
self::RECOMMENDED_NPM_VERSION, $npmVersion, 'npm install -g npm@latest'));
}
}
+
+ private function isTypeScriptRaceConditionInOutput($plugin, $concattedOutput)
+ {
+ if (!preg_match('/^TS2307: Cannot find module \'([^\']+)\' or its corresponding type declarations./', $concattedOutput, $matches)) {
+ return false;
+ }
+
+ $file = $matches[1];
+ $filePath = PIWIK_INCLUDE_PATH . '/plugins/' . $plugin . '/vue/src/' . $file;
+ $isTypeScriptCompilerBug = file_exists($filePath);
+ return $isTypeScriptCompilerBug;
+ }
}
diff --git a/plugins/CoreVue/scripts/cli-service-proxy.js b/plugins/CoreVue/scripts/cli-service-proxy.js
new file mode 100644
index 0000000000..e86ddf8d22
--- /dev/null
+++ b/plugins/CoreVue/scripts/cli-service-proxy.js
@@ -0,0 +1,49 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+const fs = require('fs');
+const readline = require('readline');
+
+const middlePositions = {};
+function getMiddlePosition(file) {
+ if (!middlePositions[file] && fs.existsSync(file)) {
+ const fileContents = fs.readFileSync(file).toString('utf-8');
+ const scriptIndex = fileContents.indexOf('<script lang="ts"');
+ if (scriptIndex !== -1) {
+ middlePositions[file] = (fileContents.substring(0, scriptIndex).match(/\n/g) || []).length;
+ }
+ }
+ return middlePositions[file];
+}
+
+function interceptWrite(originalWrite) {
+ return function (chunk, encoding, cb) {
+ if (typeof chunk === 'string' && /tsl.*?ERROR/.test(chunk)) {
+ chunk = chunk.replace(/(\/(?:.(?!\())+.)\((\d+)(,\d+\))/g, (m, file, line, rest) => {
+ if (/.vue.ts$/.test(file)) {
+ file = file.substring(0, file.length - 3);
+ const middleLine = getMiddlePosition(file);
+ return `${file}(${middleLine + parseInt(line, 10)}${rest}`;
+ }
+ return m;
+ });
+ }
+
+ return originalWrite.call(this, chunk, encoding, cb);
+ };
+}
+
+process.stdout.clearLine = readline.clearLine.bind(null, process.stdout);
+process.stdout.cursorTo = readline.cursorTo.bind(null, process.stdout);
+
+process.stderr.clearLine = readline.clearLine.bind(null, process.stderr);
+process.stderr.cursorTo = readline.cursorTo.bind(null, process.stderr);
+
+process.stdout.write = interceptWrite(process.stdout.write);
+process.stderr.write = interceptWrite(process.stderr.write);
+
+require('../../../node_modules/@vue/cli-service/bin/vue-cli-service.js');
diff --git a/plugins/CoreVue/types/index.d.ts b/plugins/CoreVue/types/index.d.ts
index 49fd91baa5..f038a54fde 100644
--- a/plugins/CoreVue/types/index.d.ts
+++ b/plugins/CoreVue/types/index.d.ts
@@ -54,6 +54,7 @@ declare global {
setContent(html: string|HTMLElement|JQuery|JQLite): void;
showLoading(loadingName: string, popoverSubject?: string, height?: number, dialogClass?: string): JQuery;
onClose(fn: () => void);
+ createPopupAndLoadUrl(url: string, loadingName: string, dialogClass?: string, ajaxRequest?: QueryParameters): void;
}
let Piwik_Popover: PiwikPopoverGlobal;
@@ -88,8 +89,10 @@ declare global {
registerShortcut(key: string, description: string, callback: (event: ExtendedKeyboardEvent) => void): void;
compileAngularComponents(selector: JQuery|JQLite|HTMLElement|string, options?: CompileAngularComponentsOptions): void;
compileVueEntryComponents(selector: JQuery|JQLite|HTMLElement|string): void;
+ compileVueDirectives(selector: JQuery|JQLite|HTMLElement|string): void;
calculateEvolution(currentValue: number, pastValue?: number|null): number;
sendContentAsDownload(filename: string, content: any, mimeType?: string): void;
+ showVisitorProfilePopup(visitorId: string, idSite: string|number): void;
}
let piwikHelper: PiwikHelperGlobal;
@@ -101,9 +104,11 @@ declare global {
isWidgetizeRequestWithoutSession(): boolean;
updateParamValue(newParamValue: string, urlStr: string): string;
propagateNewPage(str?: string, showAjaxLoading?: boolean, strHash?: string, paramsToRemove?: string[], wholeNewUrl?: string);
+ propagateNewPopoverParameter(handleName: string, value?: string);
buildReportingUrl(ajaxUrl: string): string;
isLoginPage(): boolean;
resetPopoverStack(): void;
+ addPopoverHandler(handlerName: string, callback: (string) => void): void;
popoverHandlers: Record<string, (param: string) => void>;
}
@@ -148,6 +153,7 @@ declare global {
language: string;
cacheBuster: string;
numbers: Record<string, string>;
+ visitorProfileEnabled: boolean;
updatePeriodParamsFromUrl(): void;
updateDateInTitle(date: string, period: string): void;
@@ -183,6 +189,15 @@ declare global {
formatCurrency(value?: number|string, currency: string): string;
}
+ interface Transitions {
+ reset(actionType: string, actionName: string, overrideParams: string);
+ showPopover(showEmbeddedInReport: boolean): void;
+ }
+
+ interface TransitionsGlobal {
+ new (actionType: string, actionName: string, rowAction: unknown|null, overrideParams: string): Transitions;
+ }
+
interface Window {
angular: IAngularStatic;
globalAjaxQueue: GlobalAjaxQueue;
@@ -197,6 +212,7 @@ declare global {
$: JQueryStatic;
Piwik_Popover: PiwikPopoverGlobal;
NumberFormatter: NumberFormatter;
+ Piwik_Transitions: TransitionsGlobal;
_pk_translate(translationStringId: string, values: string[]): string;
require(p: string): any;
diff --git a/plugins/CustomAlerts b/plugins/CustomAlerts
-Subproject 9f64178fc555b97286af2853012b45b1d5fd2cc
+Subproject 110a5d090f8f6a89d3380ea51c88552d309416c
diff --git a/plugins/CustomDimensions/lang/ca.json b/plugins/CustomDimensions/lang/ca.json
index b87f39eb17..6a4102564d 100644
--- a/plugins/CustomDimensions/lang/ca.json
+++ b/plugins/CustomDimensions/lang/ca.json
@@ -39,6 +39,7 @@
"ScopeDescriptionActionMoreInfo": "Les extraccions es poden definir de manera que el valor de la dimensió personalitzada s'extregui de l'URL de la pàgina, del títol de la pàgina o d'un paràmetre de consulta de l'URL de la pàgina.",
"ScopeDescriptionVisit": "Les dimensions personalitzades a l'àmbit \"Visita\" es poden enviar amb qualsevol sol·licitud de seguiment i s'emmagatzemen a la visita.",
"ScopeDescriptionVisitMoreInfo": "Si establiu valors diferents per a una dimensió determinada durant la vida útil d'una visita, s'utilitzarà l'últim valor establert.",
+ "UrlQueryStringParameter": "paràmetre de cadena de consulta d'url",
"XofYLeft": "Queden %1$s de %2$s dimensions"
}
}
diff --git a/plugins/CustomDimensions/lang/de.json b/plugins/CustomDimensions/lang/de.json
index 367292dadc..a6c608e77d 100644
--- a/plugins/CustomDimensions/lang/de.json
+++ b/plugins/CustomDimensions/lang/de.json
@@ -39,6 +39,7 @@
"ScopeDescriptionActionMoreInfo": "Extraktionen können definiert werden, so dass der benutzerdefinierte Dimensionswert von der Seiten-URL, dem Seitentitel oder dem Seiten-URL-Parameter extrahiert wird.",
"ScopeDescriptionVisit": "Benutzerdefinierte Dimensionen im Bereich 'Besuche' können über sämtliche Trackinganfragen gesandt werden und werden im Besuch gespeichert.",
"ScopeDescriptionVisitMoreInfo": "Wenn Sie innerhalb der Lebenszeit eines Besuchs für eine gegebene Dimension verschiedene Werte setzen, wird der zuletzt gesetzte Wert verwendet.",
+ "UrlQueryStringParameter": "URL-Anfrage-Parameter",
"XofYLeft": "Es verbleiben %1$s von %2$s Dimensionen"
}
}
diff --git a/plugins/CustomDimensions/lang/el.json b/plugins/CustomDimensions/lang/el.json
index 0044658af6..454b259ad3 100644
--- a/plugins/CustomDimensions/lang/el.json
+++ b/plugins/CustomDimensions/lang/el.json
@@ -39,6 +39,7 @@
"ScopeDescriptionActionMoreInfo": "Μπορούν να οριστούν εξαγωγές ώστε η τιμή της προσαρμοσμένης διάστασης να εξάγεται από την διεύθυνση URL της Σελίδας, του Τίτλου Σελίδας ή τις παραμέτρους στη διεύθυνση URL της Σελίδας.",
"ScopeDescriptionVisit": "Οι Προσαρμοσμένες Διαστάσεις στην εμβέλεια 'Επίσκεψη' αποστέλλονται με οποιαδήποτε αίτηση ιχνηλάτησης και αποθηκεύονται στην επίσκεψη.",
"ScopeDescriptionVisitMoreInfo": "Αν θέσετε διαφορετικές τιμές για μια καθορισμένη διάσταση κατά την διάρκεια ζωής μιας επίσκεψης, η τελευταία τιμή θα χρησιμοποιηθεί.",
+ "UrlQueryStringParameter": "αλφαριθμητική παράμετρος διεύθυνσης url",
"XofYLeft": "Απομένουν %1$s από %2$s διαστάσεις"
}
}
diff --git a/plugins/CustomDimensions/lang/ga.json b/plugins/CustomDimensions/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/CustomDimensions/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/CustomDimensions/lang/pt-br.json b/plugins/CustomDimensions/lang/pt-br.json
index 0967ef424b..7055ec64ba 100644
--- a/plugins/CustomDimensions/lang/pt-br.json
+++ b/plugins/CustomDimensions/lang/pt-br.json
@@ -1 +1,45 @@
-{}
+{
+ "CustomDimensions": {
+ "CannotBeDeleted": "Uma dimensão personalizada não pode ser excluída, apenas desativada.",
+ "ColumnAvgTimeOnDimension": "Tempo médio na dimensão",
+ "ColumnUniqueActions": "Ações únicas",
+ "ConfigureDimension": "Configurar %1$sDimensão personalizada%2$s",
+ "ConfigureNewDimension": "Configurar uma nova dimensão",
+ "CustomDimensionId": "Dimensões personalizadas (Id %d)",
+ "CustomDimensions": "Dimensões personalizadas",
+ "CustomDimensionsIntro": "Ao criar %1$sDimensões personalizadas%2$s, você pode coletar quaisquer dados personalizados para '%3$s'.",
+ "CustomDimensionsIntroNext": "O Matomo criará um relatório para cada Dimensão Personalizada (incluindo a taxa de conversão para cada uma de suas Metas), além de permitir que você segmente facilmente seus usuários com base nesses valores. As Dimensões Personalizadas são semelhantes às %1$sVariáveis Personalizadas%2$s, mas há algumas %3$sdiferenças entre as dimensões personalizadas e as variáveis personalizadas%4$s.",
+ "DimensionCreated": "Dimensão personalizada criada",
+ "DimensionUpdated": "Dimensão personalizada atualizada",
+ "EmptyValue": "valor vazio",
+ "ExampleCreateCustomDimensions": "Por exemplo, para criar %s novas dimensões personalizadas na ação do escopo, execute o seguinte comando:",
+ "ExampleValue": "dimensionValue",
+ "ExceptionDimensionDoesNotExist": "A dimensão %1$d para o site %2$d não existe.",
+ "ExceptionDimensionIsNotActive": "A dimensão %1$d do site %2$d não está ativa.",
+ "ExtractValue": "Extrair valor",
+ "Extractions": "Extrações",
+ "ExtractionsHelp": "Isso é opcional. Um regex pode ser usado para extrair o valor dessa dimensão personalizada de uma URL de página ou título de página automaticamente. Dessa forma, o valor da dimensão personalizada não precisa ser definido manualmente por meio de um cliente de rastreamento. Um valor ainda pode ser definido manualmente através da API do Matomo Tracker. Os valores de dimensão definidos manualmente nos clientes de rastreamento sempre têm precedência sobre as extrações. Se várias extrações forem definidas, a primeira extração correspondente será usada. Você não precisa escapar das barras, pois o Matomo faz isso para você automaticamente. Por exemplo, use /news/ em vez de \\/news\\/.",
+ "HowToCreateCustomDimension": "Para criar uma nova dimensão personalizada, execute o seguinte comando na instalação do Matomo:",
+ "HowToManyCreateCustomDimensions": "Se você quiser criar várias novas dimensões personalizadas de uma só vez, basta anexar o número de dimensões que devem ser criadas. Como todas as alterações do banco de dados serão executadas em uma instrução, pode não demorar muito mais para adicionar várias dimensões personalizadas de uma só vez.",
+ "HowToTrackManuallyTitle": "Acompanhando um valor para esta dimensão manualmente",
+ "HowToTrackManuallyViaHttp": "Para rastrear um valor por meio da API HTTP Tracker, use o parâmetro de rastreamento 'dimensão' seguido pelo ID da dimensão personalizada:",
+ "HowToTrackManuallyViaJs": "Para rastrear um valor na chamada do JavaScript Tracker:",
+ "HowToTrackManuallyViaJsDetails": "Para obter mais informações, leia o guia %1$sJavaScript Tracker para dimensões personalizadas%2$s",
+ "HowToTrackManuallyViaPhp": "Para rastrear um valor na chamada do PHP Tracker:",
+ "IncreaseAvailableCustomDimensionsTakesLong": "A criação de uma nova dimensão personalizada pode levar muito tempo, dependendo do tamanho do banco de dados, pois requer alterações de esquema no banco de dados. Portanto, só é possível fazer isso por meio de um comando de console que precisa ser executado na linha de comando.",
+ "IncreaseAvailableCustomDimensionsTitle": "Aumente o número de dimensões personalizadas disponíveis",
+ "NameAllowedCharacters": "Os caracteres permitidos são quaisquer letras, números, espaços em branco, traço e sublinhado.",
+ "NameIsRequired": "Um nome é obrigatório.",
+ "NameIsTooLong": "O nome contém muitos caracteres, use até %d caracteres.",
+ "NoCustomDimensionConfigured": "Nenhuma dimensão personalizada configurada ainda. Configure uma agora.",
+ "NoValue": "sem valor",
+ "PageUrlParam": "Parâmetro da URL da página",
+ "PluginDescription": "Estenda o Matomo às suas necessidades definindo e rastreando Dimensões Personalizadas no escopo Ação ou Visita",
+ "ScopeDescriptionAction": "Dimensões personalizadas no escopo 'Ação' podem ser enviadas junto com qualquer ação (visualização de página, download, evento etc.).",
+ "ScopeDescriptionActionMoreInfo": "As extrações podem ser definidas para que o valor da dimensão personalizada seja extraído do URL da página, Título da página ou um parâmetro de consulta do URL da página.",
+ "ScopeDescriptionVisit": "As Dimensões Personalizadas no escopo 'Visita' podem ser enviadas junto com qualquer solicitação de rastreamento e são armazenadas na visita.",
+ "ScopeDescriptionVisitMoreInfo": "Se você definir valores diferentes para uma determinada dimensão durante a vida útil de uma visita, o último valor definido será usado.",
+ "UrlQueryStringParameter": "parâmetro de string de consulta de URL",
+ "XofYLeft": "%1$s de %2$s dimensões restantes"
+ }
+}
diff --git a/plugins/CustomDimensions/lang/tr.json b/plugins/CustomDimensions/lang/tr.json
index ec77df0bfc..9e88cf727f 100644
--- a/plugins/CustomDimensions/lang/tr.json
+++ b/plugins/CustomDimensions/lang/tr.json
@@ -39,6 +39,7 @@
"ScopeDescriptionActionMoreInfo": "Ayıklamalar tanımlanarak sayfa adresi, sayfa başlığı ya da sayfa adresi sorgu parametresinde özel boyutlar ayıklanabilir.",
"ScopeDescriptionVisit": "Herhangi bir izleme isteğinin yanında gönderilebilecek ve ziyaret içinde depolanacak 'Ziyaret' aralığındaki özel boyutlar.",
"ScopeDescriptionVisitMoreInfo": "Belirtilen bir boyut için bir ziyaret süresi boyunca farklı değerler ayarlıyorsanız, son ayarlanan değer kullanılır.",
+ "UrlQueryStringParameter": "url sorgu dizgesi parametresi",
"XofYLeft": "%1$s/%2$s boyut kaldı"
}
}
diff --git a/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml b/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
index 1d297bc968..6a48012830 100644
--- a/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
+++ b/plugins/CustomDimensions/tests/System/expected/test___API.getReportPagesMetadata.xml
@@ -1343,7 +1343,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<module>VisitTime</module>
<action>getVisitInformationPerServerTime</action>
<order>120</order>
diff --git a/plugins/CustomDimensions/tests/System/expected/test___API.getSegmentsMetadata.xml b/plugins/CustomDimensions/tests/System/expected/test___API.getSegmentsMetadata.xml
index 778af8970b..e31da68ba6 100644
--- a/plugins/CustomDimensions/tests/System/expected/test___API.getSegmentsMetadata.xml
+++ b/plugins/CustomDimensions/tests/System/expected/test___API.getSegmentsMetadata.xml
@@ -192,79 +192,79 @@
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - date (Time of last action)</name>
- <segment>visitEndServerDate</segment>
+ <name>Site time - hour (Start of visit)</name>
+ <segment>visitStartServerHour</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - day of month (Time of last action)</name>
- <segment>visitEndServerDayOfMonth</segment>
+ <name>Site time - hour (Time of last action)</name>
+ <segment>visitServerHour</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - day of week (Time of last action)</name>
- <segment>visitEndServerDayOfWeek</segment>
+ <name>Time in UTC - date (Time of last action)</name>
+ <segment>visitEndServerDate</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - day of year (Time of last action)</name>
- <segment>visitEndServerDayOfYear</segment>
+ <name>Time in UTC - day of month (Time of last action)</name>
+ <segment>visitEndServerDayOfMonth</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - hour (Start of visit)</name>
- <segment>visitStartServerHour</segment>
+ <name>Time in UTC - day of week (Time of last action)</name>
+ <segment>visitEndServerDayOfWeek</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - hour (Time of last action)</name>
- <segment>visitServerHour</segment>
+ <name>Time in UTC - day of year (Time of last action)</name>
+ <segment>visitEndServerDayOfYear</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - minute (Start of visit)</name>
+ <name>Time in UTC - minute (Start of visit)</name>
<segment>visitStartServerMinute</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - minute (Time of last action)</name>
+ <name>Time in UTC - minute (Time of last action)</name>
<segment>visitEndServerMinute</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - month (Time of last action)</name>
+ <name>Time in UTC - month (Time of last action)</name>
<segment>visitEndServerMonth</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - quarter (Time of last action)</name>
+ <name>Time in UTC - quarter (Time of last action)</name>
<segment>visitEndServerQuarter</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - second (Time of last action)</name>
+ <name>Time in UTC - second (Time of last action)</name>
<segment>visitEndServerSecond</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - week of year (Time of last action)</name>
+ <name>Time in UTC - week of year (Time of last action)</name>
<segment>visitEndServerWeekOfYear</segment>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - year (Time of last action)</name>
+ <name>Time in UTC - year (Time of last action)</name>
<segment>visitEndServerYear</segment>
</row>
<row>
@@ -441,13 +441,13 @@
<row>
<type>dimension</type>
<category>Behaviour</category>
- <name>Server time - hour</name>
+ <name>Site time - hour</name>
<segment>actionServerHour</segment>
</row>
<row>
<type>dimension</type>
<category>Behaviour</category>
- <name>Server time - minute</name>
+ <name>Time in UTC - minute</name>
<segment>actionServerMinute</segment>
</row>
</result> \ No newline at end of file
diff --git a/plugins/CustomDimensions/tests/UI/CustomDimensions_spec.js b/plugins/CustomDimensions/tests/UI/CustomDimensions_spec.js
index b0ce39ee23..8aacff253d 100644
--- a/plugins/CustomDimensions/tests/UI/CustomDimensions_spec.js
+++ b/plugins/CustomDimensions/tests/UI/CustomDimensions_spec.js
@@ -175,9 +175,9 @@ describe("CustomDimensions", function () {
await page.goto(reportUrlDimension3);
await (await page.jQuery('.dataTable .subDataTable .value:contains(en):first')).click();
await page.waitForNetworkIdle();
- await page.waitForTimeout(100);
- await (await page.jQuery('td.label:contains(en_US)')).hover();
- await page.waitForTimeout(100);
+ await page.waitForTimeout(200);
+ await (await page.jQuery('td.label:contains(en_US):visible')).hover();
+ await page.waitForTimeout(200);
await triggerRowAction('en_US', 'actionTransitions');
});
});
diff --git a/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_goals_overview.png b/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_goals_overview.png
index be466a85b1..6fae6b0ffe 100644
--- a/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_goals_overview.png
+++ b/plugins/CustomDimensions/tests/UI/expected-screenshots/CustomDimensions_report_goals_overview.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:15c6c5af646a424e97757aa4e0603f3b52ed5406cabc3709e4eab557b702a80d
-size 70955
+oid sha256:9015c37c98508302f99f6dcba7fd762073fc98ce389891fb5fb38e474cfb8229
+size 73004
diff --git a/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.js b/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.js
index 869d8036b6..4beea136cd 100644
--- a/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.js
+++ b/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.js
@@ -152,7 +152,7 @@ var external_CoreHome_ = __webpack_require__("19dc");
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CustomDimensions/vue/src/Edit/Edit.vue?vue&type=template&id=0836097a
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/CustomDimensions/vue/src/Edit/Edit.vue?vue&type=template&id=2dd29c8c
var _hoisted_1 = {
class: "editCustomDimension"
@@ -305,19 +305,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
"margin-right": "3.5px"
}
}, null, 8, _hoisted_16), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.create]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Cancel')), 1)], 32), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToTrackManuallyTitle')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToTrackManuallyViaJs')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("code", {
- innerHTML: _ctx.manuallyTrackCodeViaJs(_ctx.dimension)
+ innerHTML: _ctx.$sanitize(_ctx.manuallyTrackCodeViaJs(_ctx.dimension))
}, null, 8, _hoisted_19)], 512), [[_directive_select_on_focus, {}]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
innerHTML: _ctx.$sanitize(_ctx.howToTrackManuallyText)
}, null, 8, _hoisted_20), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToTrackManuallyViaPhp')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("code", {
- innerHTML: _ctx.manuallyTrackCodeViaPhp(_ctx.dimension)
+ innerHTML: _ctx.$sanitize(_ctx.manuallyTrackCodeViaPhp(_ctx.dimension))
}, null, 8, _hoisted_21)], 512), [[_directive_select_on_focus, {}]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('CustomDimensions_HowToTrackManuallyViaHttp')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("code", {
- innerHTML: _ctx.manuallyTrackCode
+ innerHTML: _ctx.$sanitize(_ctx.manuallyTrackCode)
}, null, 8, _hoisted_22)], 512), [[_directive_select_on_focus, {}]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.edit]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.isLoading]])];
}),
_: 1
}, 8, ["content-title"])]);
}
-// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Edit/Edit.vue?vue&type=template&id=0836097a
+// CONCATENATED MODULE: ./plugins/CustomDimensions/vue/src/Edit/Edit.vue?vue&type=template&id=2dd29c8c
// EXTERNAL MODULE: external "CorePluginsAdmin"
var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
diff --git a/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.min.js b/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.min.js
index 3bbd93394c..73f49f00c2 100644
--- a/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.min.js
+++ b/plugins/CustomDimensions/vue/dist/CustomDimensions.umd.min.js
@@ -1,4 +1,4 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CustomDimensions"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CustomDimensions"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CustomDimensions/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"CustomDimensionsStore",(function(){return B})),n.d(t,"Edit",(function(){return P})),n.d(t,"List",(function(){return pe})),n.d(t,"Manage",(function(){return Se})),"undefined"!==typeof window){var i=window.document.currentScript,o=i&&i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(n.p=o[1])}var s=n("19dc"),a=n("8bbf"),c={class:"editCustomDimension"},r={class:"loadingPiwik"},l=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif"},null,-1),u={class:"row form-group"},m={class:"col s12"},d={class:"col s12 m6"},p={class:"row"},b={class:"col s12 m6"},f={class:"col s12 m6"},v={class:"col s12"},O=["onClick"],j={class:"row"},h={class:"col s12"},D={class:"col s12 m6 form-help"},C=["value","disabled"],g=["value","disabled"],V={class:"btn cancel",type:"button",href:"#list"},E={class:"alert alert-info howToTrackInfo"},S=["innerHTML"],N=["innerHTML"],y=["innerHTML"],x=["innerHTML"];function w(e,t,n,i,o,s){var w=Object(a["resolveComponent"])("Field"),k=Object(a["resolveComponent"])("ContentBlock"),_=Object(a["resolveDirective"])("select-on-focus");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",c,[Object(a["createVNode"])(k,{"content-title":e.contentTitleText},{default:Object(a["withCtx"])((function(){var n;return[Object(a["withDirectives"])(Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("span",r,[l,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("General_LoadingData")),1)])],512),[[a["vShow"],e.isLoading||e.isUpdating]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("form",{onSubmit:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.edit?e.updateCustomDimension():e.createCustomDimension()}),["prevent"]))},[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"text",name:"name",modelValue:e.dimension.name,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.dimension.name=t}),maxlength:255,required:!0,title:e.translate("General_Name"),"inline-help":e.translate("CustomDimensions_NameAllowedCharacters")},null,8,["modelValue","title","inline-help"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"checkbox",name:"active",modelValue:e.dimension.active,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.dimension.active=t}),title:e.translate("CorePluginsAdmin_Active"),"inline-help":e.translate("CustomDimensions_CannotBeDeleted")},null,8,["modelValue","title","inline-help"])]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",u,[Object(a["createElementVNode"])("h3",m,Object(a["toDisplayString"])(e.translate("CustomDimensions_ExtractValue")),1),Object(a["createElementVNode"])("div",d,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.dimension.extractions,(function(n,i){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])("".concat(i,"extraction ")),key:i},[Object(a["createElementVNode"])("div",p,[Object(a["createElementVNode"])("div",b,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"select",name:"".concat(i,"dimension"),modelValue:n.dimension,"onUpdate:modelValue":function(e){return n.dimension=e},"full-width":!0,options:e.extractionDimensionsOptions},null,8,["name","modelValue","onUpdate:modelValue","options"])])]),Object(a["createElementVNode"])("div",f,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"text",name:"".concat(i,"pattern"),modelValue:n.pattern,"onUpdate:modelValue":function(e){return n.pattern=e},"full-width":!0,title:"urlparam"===n.dimension?e.translate("CustomDimensions_UrlQueryStringParameter"):"eg. /blog/(.*)/"},null,8,["name","modelValue","onUpdate:modelValue","title"])])]),Object(a["createElementVNode"])("div",v,[Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{class:"icon-plus",onClick:t[2]||(t[2]=function(t){return e.addExtraction()})},null,512),[[a["vShow"],n.pattern]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{class:"icon-minus",onClick:function(t){return e.removeExtraction(i)}},null,8,O),[[a["vShow"],e.dimension.extractions.length>1]])])])],2)})),128)),Object(a["createElementVNode"])("div",j,[Object(a["createElementVNode"])("div",h,[Object(a["createElementVNode"])("div",null,[Object(a["withDirectives"])(Object(a["createVNode"])(w,{uicontrol:"checkbox",name:"casesensitive",modelValue:e.dimension.case_sensitive,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.dimension.case_sensitive=t}),title:e.translate("Goals_CaseSensitive")},null,8,["modelValue","title"]),[[a["vShow"],null===(n=e.dimension.extractions[0])||void 0===n?void 0:n.pattern]])])])])]),Object(a["createElementVNode"])("div",D,Object(a["toDisplayString"])(e.translate("CustomDimensions_ExtractionsHelp")),1)],512),[[a["vShow"],e.doesScopeSupportExtraction]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"btn update",type:"submit",value:e.translate("General_Update"),disabled:e.isUpdating,style:{"margin-right":"3.5px"}},null,8,C),[[a["vShow"],e.edit]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"btn create",type:"submit",value:e.translate("General_Create"),disabled:e.isUpdating,style:{"margin-right":"3.5px"}},null,8,g),[[a["vShow"],e.create]]),Object(a["createElementVNode"])("a",V,Object(a["toDisplayString"])(e.translate("General_Cancel")),1)],32),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",E,[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyTitle")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyViaJs")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{innerHTML:e.manuallyTrackCodeViaJs(e.dimension)},null,8,S)],512),[[_,{}]]),Object(a["createElementVNode"])("p",{innerHTML:e.$sanitize(e.howToTrackManuallyText)},null,8,N),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyViaPhp")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{innerHTML:e.manuallyTrackCodeViaPhp(e.dimension)},null,8,y)],512),[[_,{}]]),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyViaHttp")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{innerHTML:e.manuallyTrackCode},null,8,x)],512),[[_,{}]])],512),[[a["vShow"],e.edit]])],512),[[a["vShow"],!e.isLoading]])]})),_:1},8,["content-title"])])}var k=n("a5a2");function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function T(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function M(e,t,n){return t&&T(e.prototype,t),n&&T(e,n),e}function A(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["CustomDimensions"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["CustomDimensions"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(i){if(t[i])return t[i].exports;var o=t[i]={i:i,l:!1,exports:{}};return e[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=e,n.c=t,n.d=function(e,t,i){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:i})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var i=Object.create(null);if(n.r(i),Object.defineProperty(i,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)n.d(i,o,function(t){return e[t]}.bind(null,o));return i},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/CustomDimensions/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"CustomDimensionsStore",(function(){return B})),n.d(t,"Edit",(function(){return P})),n.d(t,"List",(function(){return pe})),n.d(t,"Manage",(function(){return Se})),"undefined"!==typeof window){var i=window.document.currentScript,o=i&&i.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);o&&(n.p=o[1])}var s=n("19dc"),a=n("8bbf"),c={class:"editCustomDimension"},r={class:"loadingPiwik"},l=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif"},null,-1),u={class:"row form-group"},m={class:"col s12"},d={class:"col s12 m6"},p={class:"row"},b={class:"col s12 m6"},f={class:"col s12 m6"},v={class:"col s12"},O=["onClick"],j={class:"row"},h={class:"col s12"},D={class:"col s12 m6 form-help"},C=["value","disabled"],g=["value","disabled"],V={class:"btn cancel",type:"button",href:"#list"},E={class:"alert alert-info howToTrackInfo"},S=["innerHTML"],N=["innerHTML"],y=["innerHTML"],x=["innerHTML"];function w(e,t,n,i,o,s){var w=Object(a["resolveComponent"])("Field"),k=Object(a["resolveComponent"])("ContentBlock"),_=Object(a["resolveDirective"])("select-on-focus");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",c,[Object(a["createVNode"])(k,{"content-title":e.contentTitleText},{default:Object(a["withCtx"])((function(){var n;return[Object(a["withDirectives"])(Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("span",r,[l,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("General_LoadingData")),1)])],512),[[a["vShow"],e.isLoading||e.isUpdating]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("form",{onSubmit:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.edit?e.updateCustomDimension():e.createCustomDimension()}),["prevent"]))},[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"text",name:"name",modelValue:e.dimension.name,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.dimension.name=t}),maxlength:255,required:!0,title:e.translate("General_Name"),"inline-help":e.translate("CustomDimensions_NameAllowedCharacters")},null,8,["modelValue","title","inline-help"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"checkbox",name:"active",modelValue:e.dimension.active,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.dimension.active=t}),title:e.translate("CorePluginsAdmin_Active"),"inline-help":e.translate("CustomDimensions_CannotBeDeleted")},null,8,["modelValue","title","inline-help"])]),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",u,[Object(a["createElementVNode"])("h3",m,Object(a["toDisplayString"])(e.translate("CustomDimensions_ExtractValue")),1),Object(a["createElementVNode"])("div",d,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.dimension.extractions,(function(n,i){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])("".concat(i,"extraction ")),key:i},[Object(a["createElementVNode"])("div",p,[Object(a["createElementVNode"])("div",b,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"select",name:"".concat(i,"dimension"),modelValue:n.dimension,"onUpdate:modelValue":function(e){return n.dimension=e},"full-width":!0,options:e.extractionDimensionsOptions},null,8,["name","modelValue","onUpdate:modelValue","options"])])]),Object(a["createElementVNode"])("div",f,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(w,{uicontrol:"text",name:"".concat(i,"pattern"),modelValue:n.pattern,"onUpdate:modelValue":function(e){return n.pattern=e},"full-width":!0,title:"urlparam"===n.dimension?e.translate("CustomDimensions_UrlQueryStringParameter"):"eg. /blog/(.*)/"},null,8,["name","modelValue","onUpdate:modelValue","title"])])]),Object(a["createElementVNode"])("div",v,[Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{class:"icon-plus",onClick:t[2]||(t[2]=function(t){return e.addExtraction()})},null,512),[[a["vShow"],n.pattern]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("span",{class:"icon-minus",onClick:function(t){return e.removeExtraction(i)}},null,8,O),[[a["vShow"],e.dimension.extractions.length>1]])])])],2)})),128)),Object(a["createElementVNode"])("div",j,[Object(a["createElementVNode"])("div",h,[Object(a["createElementVNode"])("div",null,[Object(a["withDirectives"])(Object(a["createVNode"])(w,{uicontrol:"checkbox",name:"casesensitive",modelValue:e.dimension.case_sensitive,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.dimension.case_sensitive=t}),title:e.translate("Goals_CaseSensitive")},null,8,["modelValue","title"]),[[a["vShow"],null===(n=e.dimension.extractions[0])||void 0===n?void 0:n.pattern]])])])])]),Object(a["createElementVNode"])("div",D,Object(a["toDisplayString"])(e.translate("CustomDimensions_ExtractionsHelp")),1)],512),[[a["vShow"],e.doesScopeSupportExtraction]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"btn update",type:"submit",value:e.translate("General_Update"),disabled:e.isUpdating,style:{"margin-right":"3.5px"}},null,8,C),[[a["vShow"],e.edit]]),Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{class:"btn create",type:"submit",value:e.translate("General_Create"),disabled:e.isUpdating,style:{"margin-right":"3.5px"}},null,8,g),[[a["vShow"],e.create]]),Object(a["createElementVNode"])("a",V,Object(a["toDisplayString"])(e.translate("General_Cancel")),1)],32),Object(a["withDirectives"])(Object(a["createElementVNode"])("div",E,[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyTitle")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyViaJs")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{innerHTML:e.$sanitize(e.manuallyTrackCodeViaJs(e.dimension))},null,8,S)],512),[[_,{}]]),Object(a["createElementVNode"])("p",{innerHTML:e.$sanitize(e.howToTrackManuallyText)},null,8,N),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyViaPhp")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{innerHTML:e.$sanitize(e.manuallyTrackCodeViaPhp(e.dimension))},null,8,y)],512),[[_,{}]]),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_HowToTrackManuallyViaHttp")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("pre",null,[Object(a["createElementVNode"])("code",{innerHTML:e.$sanitize(e.manuallyTrackCode)},null,8,x)],512),[[_,{}]])],512),[[a["vShow"],e.edit]])],512),[[a["vShow"],!e.isLoading]])]})),_:1},8,["content-title"])])}var k=n("a5a2");function _(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function T(e,t){for(var n=0;n<t.length;n++){var i=t[n];i.enumerable=i.enumerable||!1,i.configurable=!0,"value"in i&&(i.writable=!0),Object.defineProperty(e,i.key,i)}}function M(e,t,n){return t&&T(e.prototype,t),n&&T(e,n),e}function A(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
@@ -11,13 +11,13 @@
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function L(e){return"".concat(e[0].toUpperCase()).concat(e.substr(1))}var H="customdimensions",I=Object(a["defineComponent"])({props:{dimensionId:Number,dimensionScope:{type:String,required:!0}},components:{ContentBlock:s["ContentBlock"],Field:k["Field"]},directives:{SelectOnFocus:s["SelectOnFocus"]},data:function(){return{dimension:{extractions:[]},isUpdatingDim:!1}},created:function(){this.init()},watch:{dimensionId:function(){this.init()}},methods:{removeAnyCustomDimensionNotification:function(){s["NotificationsStore"].remove(H)},showNotification:function(e,t){s["NotificationsStore"].show({message:e,context:t,id:H,type:"transient"})},init:function(){var e=this;null!==this.dimensionId&&this.removeAnyCustomDimensionNotification(),B.fetch().then((function(){e.edit&&e.dimensionId?(e.dimension=Object(s["clone"])(B.customDimensionsById.value[e.dimensionId]),e.dimension&&!e.dimension.extractions.length&&e.addExtraction()):e.create&&(e.dimension={idsite:s["Matomo"].idSite,name:"",active:!1,extractions:[],scope:e.dimensionScope,case_sensitive:!0},e.addExtraction())}))},removeExtraction:function(e){e>-1&&this.dimension.extractions.splice(e,1)},addExtraction:function(){this.doesScopeSupportExtraction&&this.dimension.extractions.push({dimension:"url",pattern:""})},createCustomDimension:function(){var e=this;this.isUpdatingDim=!0,B.createOrUpdateDimension(this.dimension,"CustomDimensions.configureNewCustomDimension").then((function(){e.showNotification(Object(s["translate"])("CustomDimensions_DimensionCreated"),"success"),console.log("before reload"),B.reload(),s["MatomoUrl"].updateHashToUrl("/list")})).finally((function(){e.isUpdatingDim=!1}))},updateCustomDimension:function(){var e=this;this.isUpdatingDim=!0,B.createOrUpdateDimension(this.dimension,"CustomDimensions.configureExistingCustomDimension").then((function(){e.showNotification(Object(s["translate"])("CustomDimensions_DimensionUpdated"),"success"),B.reload(),s["MatomoUrl"].updateHashToUrl("/list")})).finally((function(){e.isUpdatingDim=!1}))},manuallyTrackCodeViaJs:function(e){return"_paq.push(['setCustomDimension', ".concat(e.idcustomdimension,", ")+"'".concat(Object(s["translate"])("CustomDimensions_ExampleValue"),"']);")},manuallyTrackCodeViaPhp:function(e){return"$tracker->setCustomDimension('".concat(e.idcustomdimension,"', ")+"'".concat(Object(s["translate"])("CustomDimensions_ExampleValue"),"');")}},computed:{isLoading:function(){return B.isLoading.value},isUpdating:function(){return B.isUpdating.value||this.isUpdatingDim},create:function(){return 0===this.dimensionId},edit:function(){return!this.create},extractionDimensionsOptions:function(){return B.extractionDimensionsOptions.value},availableScopes:function(){return B.availableScopes.value},doesScopeSupportExtraction:function(){var e,t=this;if(null===(e=this.dimension)||void 0===e||!e.scope||!this.availableScopes)return!1;var n=this.availableScopes.find((function(e){return e.value===t.dimension.scope}));return null===n||void 0===n?void 0:n.supportsExtractions},contentTitleText:function(){var e;return Object(s["translate"])("CustomDimensions_ConfigureDimension",L(this.dimensionScope),"".concat((null===(e=this.dimension)||void 0===e?void 0:e.index)||""))},howToTrackManuallyText:function(){var e="https://developer.piwik.org/guides/tracking-javascript-guide#custom-dimensions";return Object(s["translate"])("CustomDimensions_HowToTrackManuallyViaJsDetails",'<a target=_blank href="'.concat(e,'" rel="noreferrer noopener">'),"</a>")},manuallyTrackCode:function(){var e=Object(s["translate"])("CustomDimensions_ExampleValue");return"&dimension".concat(this.dimension.idcustomdimension,"=").concat(e)}}});I.render=w;var P=I,q=(Object(s["createAngularJsAdapter"])({component:P,scope:{dimensionId:{angularJsBind:"=",transform:s["transformAngularJsIntAttr"]},dimensionScope:{angularJsBind:"="}},directiveName:"piwikCustomDimensionsEdit"}),["innerHTML"]),F={class:"loadingPiwik"},G=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif"},null,-1),J={class:"index"},z={class:"name"},$={class:"active"},Q={class:"action"},X={colspan:"5"},Y={class:"index"},K={class:"name"},R={class:"extractions"},W={class:"active"},Z={class:"action"},ee=["href"],te={class:"tableActionBar"},ne=["disabled","onClick"],ie=Object(a["createElementVNode"])("span",{class:"icon-add"},null,-1),oe={class:"info"};
+function L(e){return"".concat(e[0].toUpperCase()).concat(e.substr(1))}var H="customdimensions",I=Object(a["defineComponent"])({props:{dimensionId:Number,dimensionScope:{type:String,required:!0}},components:{ContentBlock:s["ContentBlock"],Field:k["Field"]},directives:{SelectOnFocus:s["SelectOnFocus"]},data:function(){return{dimension:{extractions:[]},isUpdatingDim:!1}},created:function(){this.init()},watch:{dimensionId:function(){this.init()}},methods:{removeAnyCustomDimensionNotification:function(){s["NotificationsStore"].remove(H)},showNotification:function(e,t){s["NotificationsStore"].show({message:e,context:t,id:H,type:"transient"})},init:function(){var e=this;null!==this.dimensionId&&this.removeAnyCustomDimensionNotification(),B.fetch().then((function(){e.edit&&e.dimensionId?(e.dimension=Object(s["clone"])(B.customDimensionsById.value[e.dimensionId]),e.dimension&&!e.dimension.extractions.length&&e.addExtraction()):e.create&&(e.dimension={idsite:s["Matomo"].idSite,name:"",active:!1,extractions:[],scope:e.dimensionScope,case_sensitive:!0},e.addExtraction())}))},removeExtraction:function(e){e>-1&&this.dimension.extractions.splice(e,1)},addExtraction:function(){this.doesScopeSupportExtraction&&this.dimension.extractions.push({dimension:"url",pattern:""})},createCustomDimension:function(){var e=this;this.isUpdatingDim=!0,B.createOrUpdateDimension(this.dimension,"CustomDimensions.configureNewCustomDimension").then((function(){e.showNotification(Object(s["translate"])("CustomDimensions_DimensionCreated"),"success"),console.log("before reload"),B.reload(),s["MatomoUrl"].updateHashToUrl("/list")})).finally((function(){e.isUpdatingDim=!1}))},updateCustomDimension:function(){var e=this;this.isUpdatingDim=!0,B.createOrUpdateDimension(this.dimension,"CustomDimensions.configureExistingCustomDimension").then((function(){e.showNotification(Object(s["translate"])("CustomDimensions_DimensionUpdated"),"success"),B.reload(),s["MatomoUrl"].updateHashToUrl("/list")})).finally((function(){e.isUpdatingDim=!1}))},manuallyTrackCodeViaJs:function(e){return"_paq.push(['setCustomDimension', ".concat(e.idcustomdimension,", ")+"'".concat(Object(s["translate"])("CustomDimensions_ExampleValue"),"']);")},manuallyTrackCodeViaPhp:function(e){return"$tracker->setCustomDimension('".concat(e.idcustomdimension,"', ")+"'".concat(Object(s["translate"])("CustomDimensions_ExampleValue"),"');")}},computed:{isLoading:function(){return B.isLoading.value},isUpdating:function(){return B.isUpdating.value||this.isUpdatingDim},create:function(){return 0===this.dimensionId},edit:function(){return!this.create},extractionDimensionsOptions:function(){return B.extractionDimensionsOptions.value},availableScopes:function(){return B.availableScopes.value},doesScopeSupportExtraction:function(){var e,t=this;if(null===(e=this.dimension)||void 0===e||!e.scope||!this.availableScopes)return!1;var n=this.availableScopes.find((function(e){return e.value===t.dimension.scope}));return null===n||void 0===n?void 0:n.supportsExtractions},contentTitleText:function(){var e;return Object(s["translate"])("CustomDimensions_ConfigureDimension",L(this.dimensionScope),"".concat((null===(e=this.dimension)||void 0===e?void 0:e.index)||""))},howToTrackManuallyText:function(){var e="https://developer.piwik.org/guides/tracking-javascript-guide#custom-dimensions";return Object(s["translate"])("CustomDimensions_HowToTrackManuallyViaJsDetails",'<a target=_blank href="'.concat(e,'" rel="noreferrer noopener">'),"</a>")},manuallyTrackCode:function(){var e=Object(s["translate"])("CustomDimensions_ExampleValue");return"&dimension".concat(this.dimension.idcustomdimension,"=").concat(e)}}});I.render=w;var P=I,q=(Object(s["createAngularJsAdapter"])({component:P,scope:{dimensionId:{angularJsBind:"=",transform:s["transformAngularJsIntAttr"]},dimensionScope:{angularJsBind:"="}},directiveName:"piwikCustomDimensionsEdit"}),["innerHTML"]),z={class:"loadingPiwik"},F=Object(a["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif"},null,-1),G={class:"index"},J={class:"name"},$={class:"active"},Q={class:"action"},X={colspan:"5"},Y={class:"index"},K={class:"name"},R={class:"extractions"},W={class:"active"},Z={class:"action"},ee=["href"],te={class:"tableActionBar"},ne=["disabled","onClick"],ie=Object(a["createElementVNode"])("span",{class:"icon-add"},null,-1),oe={class:"info"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function se(e,t,n,i,o,s){var c=Object(a["resolveComponent"])("EnrichedHeadline"),r=Object(a["resolveComponent"])("ContentBlock"),l=Object(a["resolveDirective"])("content-intro"),u=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("h2",null,[Object(a["createVNode"])(c,null,{default:Object(a["withCtx"])((function(){return[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("CustomDimensions_CustomDimensions")),1)]})),_:1})]),Object(a["createElementVNode"])("p",{innerHTML:e.$sanitize(e.contentIntroText)},null,8,q),Object(a["withDirectives"])(Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("span",F,[G,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("General_LoadingData")),1)])],512),[[a["vShow"],e.isLoading]])],512),[[l]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.availableScopes,(function(t){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:t.value},[Object(a["createVNode"])(r,{"content-title":"".concat(t.name," Dimensions")},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_ScopeDescription".concat(e.ucfirst(t.value))))+" "+Object(a["toDisplayString"])(e.translate("CustomDimensions_ScopeDescription".concat(e.ucfirst(t.value),"MoreInfo"))),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("table",null,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",J,Object(a["toDisplayString"])(e.translate("General_Id")),1),Object(a["createElementVNode"])("th",z,Object(a["toDisplayString"])(e.translate("General_Name")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("th",{class:"extractions"},Object(a["toDisplayString"])(e.translate("CustomDimensions_Extractions")),513),[[a["vShow"],t.supportsExtractions]]),Object(a["createElementVNode"])("th",$,Object(a["toDisplayString"])(e.translate("CorePluginsAdmin_Active")),1),Object(a["createElementVNode"])("th",Q,Object(a["toDisplayString"])(e.translate("General_Action")),1)])]),Object(a["createElementVNode"])("tbody",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("td",X,Object(a["toDisplayString"])(e.translate("CustomDimensions_NoCustomDimensionConfigured")),1)],512),[[a["vShow"],0===t.numSlotsUsed&&!e.isLoading]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sortedCustomDimensionsByScope[t.value],(function(e){var n;return Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{class:Object(a["normalizeClass"])(["customdimension",e.idcustomdimension]),key:e.idcustomdimension},[Object(a["createElementVNode"])("td",Y,Object(a["toDisplayString"])(e.idcustomdimension),1),Object(a["createElementVNode"])("td",K,Object(a["toDisplayString"])(e.name),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("td",R,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({"icon-ok":null===(n=e.extractions[0])||void 0===n?void 0:n.pattern})},null,2)],512),[[a["vShow"],t.supportsExtractions]]),Object(a["createElementVNode"])("td",W,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({"icon-ok":e.active})},null,2)]),Object(a["createElementVNode"])("td",Z,[Object(a["createElementVNode"])("a",{class:"table-action icon-edit",href:"#?idDimension=".concat(e.idcustomdimension,"&scope=").concat(t.value)},null,8,ee)])],2)})),128))])],512),[[u]]),Object(a["createElementVNode"])("div",te,[Object(a["withDirectives"])(Object(a["createElementVNode"])("button",{class:"btn",disabled:!t.numSlotsLeft,onClick:function(n){return e.addDimension(t.value)}},[ie,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomDimensions_ConfigureNewDimension"))+" ",1),Object(a["createElementVNode"])("span",oe,"("+Object(a["toDisplayString"])(e.translate("CustomDimensions_XofYLeft",t.numSlotsLeft,t.numSlotsAvailable))+")",1)],8,ne),[[a["vShow"],!e.isLoading]])])]})),_:2},1032,["content-title"])],512)),[[a["vShow"],!e.isLoading]])})),128))])}function ae(e){return ue(e)||le(e)||re(e)||ce()}function ce(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function re(e,t){if(e){if("string"===typeof e)return me(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?me(e,t):void 0}}function le(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function ue(e){if(Array.isArray(e))return me(e)}function me(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}var de=Object(a["defineComponent"])({name:"listcustomdimensions",components:{EnrichedHeadline:s["EnrichedHeadline"],ContentBlock:s["ContentBlock"]},directives:{ContentIntro:s["ContentIntro"],ContentTable:s["ContentTable"]},created:function(){B.fetch()},methods:{ucfirst:function(e){return L(e)},addDimension:function(e){s["MatomoUrl"].updateHashToUrl("/?idDimension=0&scope=".concat(e))}},computed:{isLoading:function(){return B.isLoading.value},availableScopes:function(){return B.availableScopes.value},contentIntroText:function(){var e=Object(s["translate"])("CustomDimensions_CustomDimensionsIntroNext",'<a target=_blank href="https://piwik.org/docs/custom-variables">',"</a>",'<a target=_blank href="https://piwik.org/faq/general/faq_21117">',"</a>"),t=Object(s["translate"])("CustomDimensions_CustomDimensionsIntro",'<a target=_blank href="https://piwik.org/docs/custom-dimensions">',"</a>",this.siteName);return"".concat(e).concat(t)},customDimensions:function(){return B.customDimensions.value},sortedCustomDimensions:function(){var e=ae(this.customDimensions);return e.sort((function(e,t){var n=parseInt("".concat(e.idcustomdimension),10),i=parseInt("".concat(t.idcustomdimension),10);return n-i})),e},sortedCustomDimensionsByScope:function(){var e={};return this.sortedCustomDimensions.reduce((function(e,t){return e[t.scope]=e[t.scope]||[],e[t.scope].push(t),e}),e),e},siteName:function(){return s["Matomo"].helper.htmlDecode(s["Matomo"].siteName)}}});de.render=se;var pe=de,be=(Object(s["createAngularJsAdapter"])({component:pe,directiveName:"piwikCustomDimensionsList"}),{class:"manageCustomDimensions"}),fe={key:0},ve=Object(a["createElementVNode"])("br",null,null,-1),Oe=Object(a["createElementVNode"])("br",null,null,-1),je=Object(a["createElementVNode"])("br",null,null,-1),he=Object(a["createElementVNode"])("br",null,null,-1),De=["textContent"],Ce=["textContent"],ge={key:1};
+ */function se(e,t,n,i,o,s){var c=Object(a["resolveComponent"])("EnrichedHeadline"),r=Object(a["resolveComponent"])("ContentBlock"),l=Object(a["resolveDirective"])("content-intro"),u=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("h2",null,[Object(a["createVNode"])(c,null,{default:Object(a["withCtx"])((function(){return[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("CustomDimensions_CustomDimensions")),1)]})),_:1})]),Object(a["createElementVNode"])("p",{innerHTML:e.$sanitize(e.contentIntroText)},null,8,q),Object(a["withDirectives"])(Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("span",z,[F,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("General_LoadingData")),1)])],512),[[a["vShow"],e.isLoading]])],512),[[l]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.availableScopes,(function(t){return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:t.value},[Object(a["createVNode"])(r,{"content-title":"".concat(t.name," Dimensions")},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("CustomDimensions_ScopeDescription".concat(e.ucfirst(t.value))))+" "+Object(a["toDisplayString"])(e.translate("CustomDimensions_ScopeDescription".concat(e.ucfirst(t.value),"MoreInfo"))),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("table",null,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",G,Object(a["toDisplayString"])(e.translate("General_Id")),1),Object(a["createElementVNode"])("th",J,Object(a["toDisplayString"])(e.translate("General_Name")),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("th",{class:"extractions"},Object(a["toDisplayString"])(e.translate("CustomDimensions_Extractions")),513),[[a["vShow"],t.supportsExtractions]]),Object(a["createElementVNode"])("th",$,Object(a["toDisplayString"])(e.translate("CorePluginsAdmin_Active")),1),Object(a["createElementVNode"])("th",Q,Object(a["toDisplayString"])(e.translate("General_Action")),1)])]),Object(a["createElementVNode"])("tbody",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("td",X,Object(a["toDisplayString"])(e.translate("CustomDimensions_NoCustomDimensionConfigured")),1)],512),[[a["vShow"],0===t.numSlotsUsed&&!e.isLoading]]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.sortedCustomDimensionsByScope[t.value],(function(e){var n;return Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{class:Object(a["normalizeClass"])(["customdimension",e.idcustomdimension]),key:e.idcustomdimension},[Object(a["createElementVNode"])("td",Y,Object(a["toDisplayString"])(e.idcustomdimension),1),Object(a["createElementVNode"])("td",K,Object(a["toDisplayString"])(e.name),1),Object(a["withDirectives"])(Object(a["createElementVNode"])("td",R,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({"icon-ok":null===(n=e.extractions[0])||void 0===n?void 0:n.pattern})},null,2)],512),[[a["vShow"],t.supportsExtractions]]),Object(a["createElementVNode"])("td",W,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({"icon-ok":e.active})},null,2)]),Object(a["createElementVNode"])("td",Z,[Object(a["createElementVNode"])("a",{class:"table-action icon-edit",href:"#?idDimension=".concat(e.idcustomdimension,"&scope=").concat(t.value)},null,8,ee)])],2)})),128))])],512),[[u]]),Object(a["createElementVNode"])("div",te,[Object(a["withDirectives"])(Object(a["createElementVNode"])("button",{class:"btn",disabled:!t.numSlotsLeft,onClick:function(n){return e.addDimension(t.value)}},[ie,Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("CustomDimensions_ConfigureNewDimension"))+" ",1),Object(a["createElementVNode"])("span",oe,"("+Object(a["toDisplayString"])(e.translate("CustomDimensions_XofYLeft",t.numSlotsLeft,t.numSlotsAvailable))+")",1)],8,ne),[[a["vShow"],!e.isLoading]])])]})),_:2},1032,["content-title"])],512)),[[a["vShow"],!e.isLoading]])})),128))])}function ae(e){return ue(e)||le(e)||re(e)||ce()}function ce(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function re(e,t){if(e){if("string"===typeof e)return me(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?me(e,t):void 0}}function le(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function ue(e){if(Array.isArray(e))return me(e)}function me(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,i=new Array(t);n<t;n++)i[n]=e[n];return i}var de=Object(a["defineComponent"])({name:"listcustomdimensions",components:{EnrichedHeadline:s["EnrichedHeadline"],ContentBlock:s["ContentBlock"]},directives:{ContentIntro:s["ContentIntro"],ContentTable:s["ContentTable"]},created:function(){B.fetch()},methods:{ucfirst:function(e){return L(e)},addDimension:function(e){s["MatomoUrl"].updateHashToUrl("/?idDimension=0&scope=".concat(e))}},computed:{isLoading:function(){return B.isLoading.value},availableScopes:function(){return B.availableScopes.value},contentIntroText:function(){var e=Object(s["translate"])("CustomDimensions_CustomDimensionsIntroNext",'<a target=_blank href="https://piwik.org/docs/custom-variables">',"</a>",'<a target=_blank href="https://piwik.org/faq/general/faq_21117">',"</a>"),t=Object(s["translate"])("CustomDimensions_CustomDimensionsIntro",'<a target=_blank href="https://piwik.org/docs/custom-dimensions">',"</a>",this.siteName);return"".concat(e).concat(t)},customDimensions:function(){return B.customDimensions.value},sortedCustomDimensions:function(){var e=ae(this.customDimensions);return e.sort((function(e,t){var n=parseInt("".concat(e.idcustomdimension),10),i=parseInt("".concat(t.idcustomdimension),10);return n-i})),e},sortedCustomDimensionsByScope:function(){var e={};return this.sortedCustomDimensions.reduce((function(e,t){return e[t.scope]=e[t.scope]||[],e[t.scope].push(t),e}),e),e},siteName:function(){return s["Matomo"].helper.htmlDecode(s["Matomo"].siteName)}}});de.render=se;var pe=de,be=(Object(s["createAngularJsAdapter"])({component:pe,directiveName:"piwikCustomDimensionsList"}),{class:"manageCustomDimensions"}),fe={key:0},ve=Object(a["createElementVNode"])("br",null,null,-1),Oe=Object(a["createElementVNode"])("br",null,null,-1),je=Object(a["createElementVNode"])("br",null,null,-1),he=Object(a["createElementVNode"])("br",null,null,-1),De=["textContent"],Ce=["textContent"],ge={key:1};
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/CustomDimensions/vue/src/Edit/Edit.vue b/plugins/CustomDimensions/vue/src/Edit/Edit.vue
index f7d15101c2..ec2617d61b 100644
--- a/plugins/CustomDimensions/vue/src/Edit/Edit.vue
+++ b/plugins/CustomDimensions/vue/src/Edit/Edit.vue
@@ -140,18 +140,20 @@
<p>
{{ translate('CustomDimensions_HowToTrackManuallyViaJs') }}
</p>
- <pre v-select-on-focus="{}"><code v-html="manuallyTrackCodeViaJs(dimension)"></code></pre>
+ <pre v-select-on-focus="{}"><code
+ v-html="$sanitize(manuallyTrackCodeViaJs(dimension))"
+ ></code></pre>
<p v-html="$sanitize(howToTrackManuallyText)"/>
<p>
{{ translate('CustomDimensions_HowToTrackManuallyViaPhp') }}
</p>
<pre
v-select-on-focus="{}"
- ><code v-html="manuallyTrackCodeViaPhp(dimension)"></code></pre>
+ ><code v-html="$sanitize(manuallyTrackCodeViaPhp(dimension))"></code></pre>
<p>
{{ translate('CustomDimensions_HowToTrackManuallyViaHttp') }}
</p>
- <pre v-select-on-focus="{}"><code v-html="manuallyTrackCode"></code></pre>
+ <pre v-select-on-focus="{}"><code v-html="$sanitize(manuallyTrackCode)"></code></pre>
</div>
</div>
</ContentBlock>
diff --git a/plugins/CustomJsTracker/lang/ga.json b/plugins/CustomJsTracker/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/CustomJsTracker/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/CustomJsTracker/lang/id.json b/plugins/CustomJsTracker/lang/id.json
index 41ebf8ade4..f55b88e8fd 100644
--- a/plugins/CustomJsTracker/lang/id.json
+++ b/plugins/CustomJsTracker/lang/id.json
@@ -3,6 +3,6 @@
"DiagnosticPiwikJsMakeWritable": "Kami sarankan untuk membuat %1$s agar dapat ditulis dengan menjalankan perintah ini: %2$s",
"DiagnosticPiwikJsNotWritable": "Berkas pelacak JavaScript Matomo %s tidak dapat ditulis yang berarti plugin lain tidak dapat memperpanjang pelacak JavaScript. Di masa depan bahkan beberapa fitur inti mungkin tidak berfungsi seperti yang diharapkan.",
"DiagnosticPiwikJsWritable": "Pelacak JavaScript yang Dapat Ditulis (%s)",
- "PluginDescription": "Mengizinkan plugin apa pun untuk memperluas file Pelacakan JavaScript Matomo (matomo.js) dan menambahkan fungsionalitas baru dan kemampuan pengukuran situs web."
+ "PluginDescription": "Mengizinkan plugin apa pun untuk memperluas berkas Pelacakan JavaScript Matomo (matomo.js) dan menambahkan fungsionalitas baru dan kemampuan pengukuran situs web."
}
}
diff --git a/plugins/DBStats/lang/id.json b/plugins/DBStats/lang/id.json
index ce07feab6f..a7f092a6c4 100644
--- a/plugins/DBStats/lang/id.json
+++ b/plugins/DBStats/lang/id.json
@@ -1,21 +1,21 @@
{
"DBStats": {
- "DBSize": "Ukuran Basisdat",
+ "DBSize": "Ukuran basis data",
"DataSize": "Ukuran Data",
- "DatabaseUsage": "Penggunaan Basisdata",
+ "DatabaseUsage": "Penggunaan basis data",
"EstimatedSize": "Perkiraan ukuran",
- "IndexSize": "Ukuran Index",
- "LearnMore": "Pelajari selengkapnya tentang bagaimana Matomo mengolah data dan bagaimana Matomo bekerja baik dalam kunjungan situs menengah dan tinggi, lihat dokumentasi %s.",
- "MainDescription": "Matomo menyimpan seluruh data analisis ramatraya Anda di basisdata MySQL. Sekarang, tabel Matomo menggunakan %s.",
- "MetricDataByYear": "Tabel Metrik berdasarkan Tahun",
+ "IndexSize": "Ukuran indeks",
+ "LearnMore": "Untuk mempelajari lebih lanjut tentang bagaimana Matomo mengolah data dan bagaimana membuat Matomo bekerja dengan baik di situs web dengan lalu lintas sedang dan tinggi, lihat dokumentasi ini: %s.",
+ "MainDescription": "Matomo menyimpan semua data analisis web Anda dalam basis data MySQL. Saat ini, tabel Matomo memakan ruang sebesar %s.",
+ "MetricDataByYear": "Tabel Metrik Berdasarkan Tahun",
"MetricTables": "Tabel Metrik",
"OtherTables": "Tabel Lain",
"PluginDescription": "Menyediakan laporan penggunaan basis data MySQL yang terperinci. Tersedia untuk Pengguna Super di bawah Diagnostik.",
- "ReportDataByYear": "Tabel Laporan berdasarkan Tahun",
+ "ReportDataByYear": "Tabel Laporan Berdasarkan Tahun",
"ReportTables": "Tabel Laporan",
"RowCount": "Jumlah Baris",
"Table": "Tabel",
"TotalSize": "Ukuran Total",
- "TrackerTables": "Tabel pelacak"
+ "TrackerTables": "Tabel Pelacak"
}
}
diff --git a/plugins/Dashboard/javascripts/dashboardWidget.js b/plugins/Dashboard/javascripts/dashboardWidget.js
index 890eb7ef28..adf2247bc7 100644
--- a/plugins/Dashboard/javascripts/dashboardWidget.js
+++ b/plugins/Dashboard/javascripts/dashboardWidget.js
@@ -4,6 +4,7 @@
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
+
(function ($) {
$.widget('piwik.dashboardWidget', {
@@ -136,6 +137,7 @@
// there might be race conditions, eg widget might be just refreshed while whole dashboard is also
// removed from DOM
piwikHelper.compileAngularComponents($widgetContent, { forceNewScope: true });
+ piwikHelper.compileVueEntryComponents($widgetContent);
}
$widgetContent.removeClass('loading');
$widgetContent.trigger('widget:create', [self]);
diff --git a/plugins/Dashboard/javascripts/widgetMenu.js b/plugins/Dashboard/javascripts/widgetMenu.js
index f79365c6a1..7e4084e865 100644
--- a/plugins/Dashboard/javascripts/widgetMenu.js
+++ b/plugins/Dashboard/javascripts/widgetMenu.js
@@ -431,6 +431,7 @@ widgetsHelper.loadWidgetAjax = function (widgetUniqueId, widgetParameters, onWid
// document.getElementById needed for widgets with uniqueid like widgetOpens+Contact+Form
$('.widgetContent', widgetElement).html($(response));
piwikHelper.compileAngularComponents($('.widgetContent', widgetElement), { forceNewScope: true });
+ piwikHelper.compileVueEntryComponents($('.widgetContent', widgetElement));
$('.widgetContent', widgetElement).trigger('widget:create');
settings.onPreviewLoaded(widgetUniqueId, widgetElement);
$('.' + settings.widgetpreviewClass + ' .widgetTop', widgetPreview).on('click', function () {
diff --git a/plugins/Dashboard/lang/id.json b/plugins/Dashboard/lang/id.json
index 7588863bd3..7c092db3ad 100644
--- a/plugins/Dashboard/lang/id.json
+++ b/plugins/Dashboard/lang/id.json
@@ -1,38 +1,38 @@
{
"Dashboard": {
- "AddAWidget": "Tambah sebuah gawit",
- "AddPreviewedWidget": "Tambah pratinjau gawit ke Panel Kendali",
- "ChangeDashboardLayout": "Ubah tata letak panel kendali",
- "CopyDashboardToUser": "Salin panel kendali ke pengguna",
- "CreateNewDashboard": "Buat panel kendali baru",
- "Dashboard": "Panel Kendali",
- "DashboardCategoryHelp": "Ini adalah halaman dasbor. Dasbor adalah kumpulan widget Matomo yang Anda tambahkan sendiri sesuai dengan kebutuhan spesifik Anda. Campur dan cocokkan widget Matomo untuk mendapatkan data %1$s*Anda*%2$s perlu dengan sekilas.",
- "DashboardCopied": "Panel kendali berikut ini berhasil disalin ke pengguna terpilih.",
- "DashboardEmptyNotification": "Panel kendali Anda tidak mengandung gawit apapun. Mulai dengan menambah beberapa gawit atau dengan mengatur ulang panel ke pengaturan asali gawit.",
- "DashboardName": "Nama panel kendali:",
- "DashboardOf": "Panel kendali %s",
- "DefaultDashboard": "Panel kendali asali - Menggunakan pengaturan tata letak dan kolom gawit",
- "DeleteWidgetConfirm": "Apakah Anda yakin ingin menghapus gawit ini dari Panel Kendali?",
- "EmptyDashboard": "Panel kendali kosong - Pilih gawit pilihan Anda",
- "LoadingWidget": "Memuat gawit, mohon tunggu...",
- "ManageDashboard": "Atur panel kendali",
+ "AddAWidget": "Tambahkan widget",
+ "AddPreviewedWidget": "Klik untuk menambahkan widget ke dasbor",
+ "ChangeDashboardLayout": "Ubah tata letak dasbor",
+ "CopyDashboardToUser": "Salin dasbor ke pengguna",
+ "CreateNewDashboard": "Buat dasbor baru",
+ "Dashboard": "Dasbor",
+ "DashboardCategoryHelp": "Ini adalah halaman dasbor. Dasbor adalah kumpulan widget Matomo yang Anda tambahkan sendiri sesuai dengan kebutuhan spesifik Anda. Campur dan cocokkan widget Matomo untuk mendapatkan data %1$s*Anda*%2$s yang diperlukan dengan sekilas.",
+ "DashboardCopied": "Dasbor berikut ini berhasil disalin ke pengguna terpilih.",
+ "DashboardEmptyNotification": "Dasbor Anda tidak berisi widget apa pun. Mulailah dengan menambahkan beberapa widget atau cukup setel ulang dasbor ke pilihan widget bawaan.",
+ "DashboardName": "Nama dasbor:",
+ "DashboardOf": "Dasbor %s",
+ "DefaultDashboard": "Dasbor bawaan. Menggunakan pemilihan widget dan tata letak kolom bawaan",
+ "DeleteWidgetConfirm": "Anda yakin ingin menghapus widget ini dari dasbor?",
+ "EmptyDashboard": "Dasbor kosong. Pilih widget favorit Anda",
+ "LoadingWidget": "Memuat widget, harap tunggu...",
+ "ManageDashboard": "Kelola dasbor",
"Maximise": "Maksimalkan",
"Minimise": "Minimalkan",
"NotUndo": "Anda tak dapat mengembalikan tidakan ini.",
"PluginDescription": "Dasbor Analisis Web Anda. Sesuaikan dasbor Anda dengan menambahkan widget baru, seret dan lepas, dan ubah tata letak kolom dasbor. Setiap pengguna dapat mengelola dasbor mereka sendiri.",
- "RemoveDashboard": "Hapus panel kendali",
- "RemoveDashboardConfirm": "Apakah Anda yakin ingin menghapus panel kendali \"%s\"?",
+ "RemoveDashboard": "Hapus dasbor",
+ "RemoveDashboardConfirm": "Yakin ingin menghapus dasbor \"%s\"?",
"RemoveDefaultDashboardNotPossible": "Dasbor bawaan tidak dapat dihapus",
- "RenameDashboard": "Ubah nama panel kendali",
- "ResetDashboard": "Atur ulang panel kendali",
- "ResetDashboardConfirm": "Apakah Anda yakin mengatur ulang tata letak panel kendali Anda ke pengaturan asali Gawit?",
- "SelectDashboardLayout": "Harap memilih tat letak panel baru untuk kendali Anda",
- "SelectWidget": "Pilih gawit ditambah ke Panel Kendali",
- "SetAsDefaultWidgets": "Atur sebagai pengaturan asali gawit",
- "SetAsDefaultWidgetsConfirm": "Apakah Anda yakin mengatur pengaturan gawit dan tata letak panel kendali saat ini sebagai templat asali panel kendali?",
- "SetAsDefaultWidgetsConfirmHelp": "Pengaturan gawit dan tata letak kolom panel kendali akan digunakan saat pengguna membuat panel kendali baru, atau saat fitur \"%s\" digunakan.",
- "TopLinkTooltip": "Tampilkn laporan Analitus Ramatraya untuk %s.",
- "WidgetNotFound": "Gawit tak ditemukan",
- "WidgetPreview": "Pratinjau Gawit"
+ "RenameDashboard": "Ganti nama dasbor",
+ "ResetDashboard": "Setel ulang dasbor",
+ "ResetDashboardConfirm": "Yakin ingin mengatur ulang tata letak dasbor ke pemilihan Widget bawaan?",
+ "SelectDashboardLayout": "Silakan pilih tata letak dasbor baru Anda",
+ "SelectWidget": "Pilih widget untuk ditambahkan di dasbor",
+ "SetAsDefaultWidgets": "Tetapkan sebagai pilihan widget asali",
+ "SetAsDefaultWidgetsConfirm": "Apakah Anda yakin ingin menyetel pemilihan widget dan tata letak dasbor saat ini sebagai templat dasbor bawaan?",
+ "SetAsDefaultWidgetsConfirmHelp": "Pemilihan widget dan tata letak kolom dasbor ini akan digunakan saat pengguna membuat dasbor baru atau saat fitur \"%s\" digunakan.",
+ "TopLinkTooltip": "Lihat laporan Analisis Web untuk %s.",
+ "WidgetNotFound": "Widget tidak ditemukan",
+ "WidgetPreview": "Pratinjau widget"
}
}
diff --git a/plugins/DevicePlugins/lang/id.json b/plugins/DevicePlugins/lang/id.json
index 63f59acc15..8f0cbaa3e2 100644
--- a/plugins/DevicePlugins/lang/id.json
+++ b/plugins/DevicePlugins/lang/id.json
@@ -1,10 +1,10 @@
{
"DevicePlugins": {
- "BrowserWithNoPluginsEnabled": "%1$s dengan tanpa pengaya diaktifkan",
- "BrowserWithPluginsEnabled": "%1$s dengan %2$s pengaya diaktifkan",
+ "BrowserWithNoPluginsEnabled": "%1$s tanpa plugin yang diaktifkan",
+ "BrowserWithPluginsEnabled": "%1$s dengan plugin %2$s yang diaktifkan",
"PluginDescription": "Melaporkan daftar plugin yang didukung di peramban pengunjung.",
"PluginDetectionDoesNotWorkInIE": "Catatan: Deteksi plugin tidak berfungsi di Internet Explorer sebelum versi 11. Laporan ini hanya didasarkan pada peramban non-IE dan versi IE yang lebih baru.",
- "WidgetPlugins": "Daftar Pengaya",
- "WidgetPluginsDocumentation": "Laporan ini menunjukkan pengaya peramban yang diaktifkan oleh pengunjung. Informasi yang tersedia kemungkinan penting untuk memilih cara terbaik untuk menyampaikan konten Anda."
+ "WidgetPlugins": "Plugin Peramban",
+ "WidgetPluginsDocumentation": "Laporan ini menunjukkan plugin peramban mana yang diaktifkan oleh pengunjung Anda. Informasi ini mungkin penting untuk memilih cara yang tepat untuk menyampaikan konten Anda."
}
}
diff --git a/plugins/DevicesDetection/lang/ga.json b/plugins/DevicesDetection/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/DevicesDetection/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/DevicesDetection/lang/id.json b/plugins/DevicesDetection/lang/id.json
index d0a9db0a90..16b7a7f29e 100644
--- a/plugins/DevicesDetection/lang/id.json
+++ b/plugins/DevicesDetection/lang/id.json
@@ -1,35 +1,69 @@
{
"DevicesDetection": {
- "BrowserEngine": "Peramban",
- "BrowserEngineDocumentation": "Bagan ini menampilkan peramban pengunjung Anda yang dipecah menjadi keluarga peramban. %s Informasi terpenting untuk pengembang ramatraya adalah jenis mesin pembuat yang pengunung gunakan. Etiket mengandung nama mesin diikuti dengan peramban yang umum menggunakan mesin tersebut dalam tanda kurung.",
+ "BotDetected": "Agen-Pengguna ini terdeteksi sebagai %1$s. Kunjungan dengan agen pengguna ini tidak akan dilacak di Matomo secara asali.",
+ "BrowserCode": "Kode peramban",
+ "BrowserEngine": "Mesin peramban",
+ "BrowserEngineDocumentation": "Di laporan ini dapat terlihat bahwa peramban web pengunjung Anda dipecah berdasarkan mesin perambannya. %s Informasi terpenting bagi pengembang web adalah jenis mesin rendering yang digunakan oleh pengunjung mereka. Label berisi nama-nama mesin diikuti oleh peramban paling umum yang menggunakan mesin itu dalam tanda kurung.",
"BrowserEngines": "Mesin peramban",
"BrowserFamily": "Keluarga Peramban",
- "Browsers": "Perambang",
- "BrowserVersion": "Versi Perambang",
- "BrowserVersions": "Versi peramban",
+ "BrowserVersion": "Versi Peramban",
+ "BrowserVersions": "Versi peramba",
+ "Browsers": "Peramban",
"Camera": "Kamera",
- "Software": "Perangkat lunak",
+ "CarBrowser": "Peramban mobil",
+ "ClientType": "Tipe klien",
+ "ClientTypes": "Tipe klien",
"ColumnBrowser": "Peramban",
"ColumnOperatingSystem": "Sistem Operasi",
"ColumnOperatingSystemVersion": "Versi sistem operasi",
"Console": "Konsol",
- "dataTableLabelBrands": "Jenama",
- "dataTableLabelModels": "Model",
- "dataTableLabelTypes": "Jenis",
"Device": "Perangkat",
- "DeviceBrand": "Jenama perangkat",
+ "DeviceBrand": "Merek perangkat",
+ "DeviceBrandReportDocumentation": "Laporan ini menunjukkan merek/ produsen perangkat yang digunakan oleh pengunjung Anda. Dalam kebanyakan kasus, informasi ini hanya tersedia untuk perangkat non-desktop.",
+ "DeviceBrands": "Merek perangkat",
+ "DeviceDetection": "Deteksi perangkat",
"DeviceModel": "Model perangkat",
- "DevicesDetection": "Perangkat pengunjung",
+ "DeviceModelReportDocumentation": "Laporan ini menampilkan perangkat yang digunakan oleh pengunjung Anda. Setiap model ditampilkan secara digabung dengan merek perangkat karena beberapa nama model digunakan oleh beberapa merek.",
+ "DeviceModels": "Model perangkat",
"DeviceType": "Tipe perangkat",
- "OperatingSystemFamilies": "Keluarga sistem operasi",
+ "DeviceTypeReportDocumentation": "Laporan ini menunjukkan jenis perangkat yang digunakan oleh pengunjung Anda. Laporan ini akan selalu menampilkan semua jenis perangkat yang dapat dideteksi oleh Matomo, meskipun tidak ada kunjungan dengan jenis tertentu.",
+ "DeviceTypes": "Tipe perangkat",
+ "Devices": "Perangkat",
+ "DevicesDetection": "Perangkat pengunjung",
+ "FeaturePhone": "Fitur telepon",
+ "FeedReader": "Pembaca Umpan",
+ "GenericDevice": "Generik %s",
+ "Library": "Pustaka",
+ "MediaPlayer": "Pemutar Media",
+ "MobileApp": "Aplikasi Seluler",
+ "MobileDevice": "Perangkat seluler",
+ "OperatingSystemCode": "Kode sistem operasi",
+ "OperatingSystemFamilies": "Keluarga Sistem Operasi",
+ "OperatingSystemFamiliesReportDocumentation": "Laporan ini menunjukkan sistem operasi yang digunakan oleh pengunjung Anda yang dikelompokkan menurut keluarga sistem operasi. Keluarga sistem operasi terdiri atas versi atau distribusi yang berbeda.",
"OperatingSystemFamily": "Keluarga sistem operasi",
- "OperatingSystems": "Sistem Operasi",
+ "OperatingSystemVersions": "Versi Sistem Operasi",
+ "OperatingSystemVersionsReportDocumentation": "Laporan ini menunjukkan sistem operasi yang digunakan oleh pengunjung Anda. Setiap versi dan distribusi ditampilkan secara terpisah.",
+ "OperatingSystems": "Sistem operasi",
+ "Peripheral": "Periferal",
+ "Phablet": "Phablet",
+ "Pim": "PIM",
+ "PluginDescription": "Memberikan informasi tambahan tentang perangkat pengguna, seperti Merek (produsen), Model (versi perangkat), jenis perangkat (tv, konsol, ponsel pintar, desktop, dll.) dan masih banyak lagi.",
+ "PortableMediaPlayer": "Pemutar media portabel",
"SmartDisplay": "Tampilan pintar",
+ "SmartSpeaker": "Pengeras suara pintar",
"Smartphone": "Telepon pintar",
- "Devices": "Perangkat",
- "TV": "Tv",
- "MobileApp": "Aplikasi Mobil",
- "WidgetBrowsers": "Peramban Pengunjung",
- "WidgetBrowserVersionsDocumentation": "Laporan ini mengandung informasi tentabg jenis peramban yang pengunjung Anda gunakan. Setiap versi peramban diurutkan terpisah."
+ "Software": "Perangkat lunak",
+ "TV": "TV",
+ "Tablet": "Tablet",
+ "UserAgent": "Agen-Pengguna",
+ "Wearable": "Dapat dipakai",
+ "WidgetBrowserVersionsDocumentation": "Laporan ini berisi informasi tentang jenis peramban yang digunakan oleh pengunjung Anda. Setiap versi peramban terdaftar secara terpisah.",
+ "WidgetBrowsers": "Peramban Web Pengunjung",
+ "WidgetBrowsersDocumentation": "Laporan ini berisi informasi tentang jenis peramban yang digunakan oleh pengunjung Anda.",
+ "XVisitsFromDevices": "%1$s kunjungan dari %2$s perangkat",
+ "dataTableLabelBrands": "Merek",
+ "dataTableLabelModels": "Model",
+ "dataTableLabelSystemVersion": "Versi Sistem Operasi",
+ "dataTableLabelTypes": "Jenis"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Diagnostics/lang/ga.json b/plugins/Diagnostics/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Diagnostics/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Diagnostics/lang/nb.json b/plugins/Diagnostics/lang/nb.json
index 5129a15302..e669429527 100644
--- a/plugins/Diagnostics/lang/nb.json
+++ b/plugins/Diagnostics/lang/nb.json
@@ -11,7 +11,7 @@
"CronArchivingHasNotRunInAWhile": "Arkivering ble sist fullført %1$s, som er %2$s siden.",
"CronArchivingLastRunCheck": "Siste fullførte arkivering",
"CronArchivingRanSuccessfullyXAgo": "Arkiveringsprosessen ble fullført for %1$s siden.",
- "CronArchivingRunDetails": "Sjekk at du har satt opp en crontab som kaller %1$s-konsollkommandoen, og at du har satt opp en %2$s for å motta feilmeldinger per e-post hvis arkivering mislykkes. Du kan også prøve å kjøre konsollkomandoen for å arkivere rapportene dine manuelt: %3$s. %4$sLær mer%5$s.",
+ "CronArchivingRunDetails": "Sjekk at du har satt opp en crontab som kaller %1$s-konsoll-kommandoen, og at du har satt opp en %2$s for å motta feilmeldinger per e-post hvis arkivering misslykkes. Du kan også prøve å kjøre konsoll-kommandoen for å arkivere rapportene dine manuelt: %3$s. %4$sLær mer%5$s.",
"DatabaseReaderConnection": "Databaseleser-tilkobling",
"DatabaseUtf8Requirement": "Dette kreves for å kunne lagre 4-byte lange UTF-8-tegn. Med mindre utf8mb4 er tilgjengelig, vil spesialtegn som f.eks. emoji-er, mindre vanlige tegn i asiatiske språk, forskjellige historiske og matematiske symboler bli erstattet med %1$s. Du kan lese mer om dette i %2$sO-S-S%3$s.",
"DatabaseUtf8mb4CharsetAvailableButNotUsed": "Databasen din støtter utf8mb4-tegnsettet, men databasetabellene har ikke blitt konvertert enda. Du kan gjøre dette ved å kjøre kommandoen «%1$s» eller ved å skru på auto-konvertering i generelle innstillinger.",
diff --git a/plugins/Ecommerce/Columns/Revenue.php b/plugins/Ecommerce/Columns/Revenue.php
index 21106f089c..31624f7e92 100644
--- a/plugins/Ecommerce/Columns/Revenue.php
+++ b/plugins/Ecommerce/Columns/Revenue.php
@@ -8,9 +8,15 @@
*/
namespace Piwik\Plugins\Ecommerce\Columns;
+use Piwik\Columns\DimensionSegmentFactory;
use Piwik\Columns\Discriminator;
-use Piwik\Tracker\GoalManager;
+use Piwik\Common;
+use Piwik\Piwik;
+use Piwik\Plugin\Segment;
+use Piwik\Segment\SegmentExpression;
+use Piwik\Segment\SegmentsList;
use Piwik\Tracker\Action;
+use Piwik\Tracker\GoalManager;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
@@ -27,6 +33,70 @@ class Revenue extends BaseConversion
return new Discriminator($this->dbTableName, 'idgoal', GoalManager::IDGOAL_ORDER);
}
+
+ public function configureSegments(SegmentsList $segmentsList, DimensionSegmentFactory $dimensionSegmentFactory)
+ {
+ //new Segment revenue on order
+ $segment = new Segment();
+ $segment->setCategory($this->category);
+ $segment->setName(Piwik::translate('Ecommerce_OrderRevenue'));
+ $segment->setSegment('revenueOrder');
+ $segment->setSqlSegment('log_conversion.idvisit');
+ $segment->setSqlFilter(function ($valueToMatch, $sqlField, $matchType) {
+ return $this->getRevenueQuery($valueToMatch, $sqlField , $matchType, 0);
+ });
+ $segmentsList->addSegment($dimensionSegmentFactory->createSegment($segment));
+
+ //new Segment revenue left in cart
+ $segment = new Segment();
+ $segment->setCategory($this->category);
+ $segment->setName(Piwik::translate('Ecommerce_RevenueLeftInCart'));
+ $segment->setSegment('revenueAbandonedCart');
+ $segment->setSqlSegment('log_conversion.idvisit');
+ $segment->setSqlFilter(function ($valueToMatch, $sqlField , $matchType) {
+ return $this->getRevenueQuery($valueToMatch, $sqlField , $matchType,-1);
+ });
+ $segmentsList->addSegment($dimensionSegmentFactory->createSegment($segment));
+
+ }
+
+ /**
+ * revenue sql filter
+ * @param $valueToMatch
+ * @param $sqlField
+ * @param $matchType
+ * @param false $cart
+ * @return array
+ */
+ private function getRevenueQuery($valueToMatch, $sqlField , $matchType, $idGoal)
+ {
+ //supported operator type
+ $supportType = [
+ SegmentExpression::MATCH_EQUAL,
+ SegmentExpression::MATCH_GREATER_OR_EQUAL,
+ SegmentExpression::MATCH_LESS_OR_EQUAL,
+ SegmentExpression::MATCH_GREATER,
+ SegmentExpression::MATCH_LESS,
+ ];
+
+ if (!in_array($matchType, $supportType)) {
+ throw new \Exception("This match type $matchType is not available for action-segments.");
+ }
+
+ //to fit mysql operator
+ if ($matchType === SegmentExpression::MATCH_EQUAL) {
+ $matchType = "=";
+ }
+
+ $table = Common::prefixTable($this->dbTableName);
+ $sql = " SELECT idvisit from {$table} WHERE (idgoal = {$idGoal} and revenue {$matchType} ?) ";
+ return [
+ 'SQL' => $sql,
+ 'bind' =>(float)$valueToMatch,
+ ];
+ }
+
+
/**
* @param Request $request
* @param Visitor $visitor
diff --git a/plugins/Ecommerce/Columns/RevenueDiscount.php b/plugins/Ecommerce/Columns/RevenueDiscount.php
index 3495e284cd..de0df65ca2 100644
--- a/plugins/Ecommerce/Columns/RevenueDiscount.php
+++ b/plugins/Ecommerce/Columns/RevenueDiscount.php
@@ -8,8 +8,8 @@
*/
namespace Piwik\Plugins\Ecommerce\Columns;
-use Piwik\Tracker\GoalManager;
use Piwik\Tracker\Action;
+use Piwik\Tracker\GoalManager;
use Piwik\Tracker\Request;
use Piwik\Tracker\Visitor;
diff --git a/plugins/Ecommerce/lang/ca.json b/plugins/Ecommerce/lang/ca.json
index acdb72affa..f3b5bbeaee 100644
--- a/plugins/Ecommerce/lang/ca.json
+++ b/plugins/Ecommerce/lang/ca.json
@@ -4,15 +4,18 @@
"EcommerceLogSubcategoryHelp2": "Les dades d'aquesta pàgina s'actualitzen en temps real.",
"EcommerceOverviewSubcategoryHelp1": "La secció Visió general del comerç electrònic és el millor lloc per obtenir una visió d'alt nivell del rendiment de la vostra botiga en línia. D'un cop d'ull podeu veure quantes vendes esteu fent, quants ingressos esteu generant i la taxa de conversió del vostre lloc web.",
"EcommerceOverviewSubcategoryHelp2": "Feu clic a una mètrica individual dins del gràfic destacat per centrar-vos-hi dins del gràfic d'evolució a mida completa.",
+ "EcommerceOverviewSubcategoryHelp3": "Obteniu més informació a la nostra guia de comerç electrònic aquí.",
"LifeTimeValue": "Valor de per vida del comerç electrònic",
"LifeTimeValueDescription": "Ingressos totals de comerç electrònic atribuïts a aquest client en totes les visites: la suma dels ingressos de totes les comandes de comerç electrònic per a l'identificador de visitant %s.",
"NumberOfItems": "Nombre d'articles al carretó",
"Order": "Comandes",
"OrderId": "Identificador de comanda",
+ "OrderRevenue": "Ingressos de comandes",
"OrderValue": "Valor de la comanda",
"Orders": "Comandes",
"PluginDescription": "Ecommerce us permet fer un seguiment de quan els usuaris afegeixen productes al carretó i quan es converteixen en una venda de comerç electrònic. També permet fer seguiment de les visualitzacions de productes i categories de productes i carretons abandonats.",
"ProductSubcategoryHelp": "La visualització Productes us pot ajudar a identificar productes i categories que tenen un rendiment superior o inferior per revelar tendències i oportunitats relacionades amb la selecció de productes i les pàgines de la botiga.",
+ "RevenueLeftInCart": "Ingressos deixats al carretó",
"Sales": "Vendes",
"SalesAdjective": "Vendes %s",
"SalesBy": "Vendes per %s",
diff --git a/plugins/Ecommerce/lang/de.json b/plugins/Ecommerce/lang/de.json
index 991c63d3c6..b59f23ff94 100644
--- a/plugins/Ecommerce/lang/de.json
+++ b/plugins/Ecommerce/lang/de.json
@@ -4,15 +4,18 @@
"EcommerceLogSubcategoryHelp2": "Die Daten auf dieser Seite werden in Echtzeit aktualisiert.",
"EcommerceOverviewSubcategoryHelp1": "Der E-Commerce Übersichtsbereich ist der beste Ort, um eine hochwertige Sicht über die Performance Ihres Shops zu erhalten. Auf einen Blick sehen Sie, wie viele Verkäufe Sie tätigen, wie viel Einnahmen Sie erzielen, und die Umsatzrate Ihrer Webseite.",
"EcommerceOverviewSubcategoryHelp2": "Klicken Sie auf eine einzelne Metrik innerhalb des Sparkline-Diagramms, um sie im Entwicklungsdiagramm in voller Größe zu betrachten.",
+ "EcommerceOverviewSubcategoryHelp3": "Erfahren Sie mehr in unserem E-Commerce-Leitfaden.",
"LifeTimeValue": "E-Commerce Gesamtumsatz",
"LifeTimeValueDescription": "Die gesamten E-Commerce-Umsätze, die diesem Kunden bei allen Besuchen zugeschrieben werden: die Summe der Umsätze aller E-Commerce-Aufträge für Besucher-ID %s.",
"NumberOfItems": "Anzahl an Artikeln im Warenkorb",
"Order": "Bestellung",
"OrderId": "Bestellungs-ID",
+ "OrderRevenue": "Bestellumsatz",
"OrderValue": "Bestellwert",
"Orders": "Bestellungen",
"PluginDescription": "Mit E-Commerce haben Sie die Möglichkeit festzuhalten, dass ein Besucher Produkte in den Warenkorb legt, und wann es zu einem Verkauf kommt. Zusätzlich lassen sich auch Besuche von Produkt- sowie Kategorieseiten und verlassene Warenkörbe erfassen.",
"ProductSubcategoryHelp": "Die Produkteansicht kann Ihnen dabei helfen Produkte und Kategorien zu identifizieren, die über- oder unterperformen, um Trends und Möglichkeiten im Bezug auf Ihre Produkteselektion und Verkaufsbereiche zu erkennen.",
+ "RevenueLeftInCart": "Im Warenkorb verbliebener Umsatz",
"Sales": "Umsatz",
"SalesAdjective": "Umsatz %s",
"SalesBy": "Umsatz nach %s",
diff --git a/plugins/Ecommerce/lang/el.json b/plugins/Ecommerce/lang/el.json
index bc962aebc6..eadbaf2594 100644
--- a/plugins/Ecommerce/lang/el.json
+++ b/plugins/Ecommerce/lang/el.json
@@ -1,29 +1,32 @@
{
"Ecommerce": {
- "PluginDescription": "Το Ecommerce σας επιτρέπει να ιχνηλατείτε τους χρήστες που θα προσθέτουν προϊόντα στο καλάθι τους και όταν γίνεται μετατροπή σε μια πώληση ηλεκτρονικού εμπορίου. Επίσης, την ιχνηλάτηση προϊόντων και εμφανίσεις κατηγοριών προϊόντων, καθώς και τα εγκαταλελειμμένα καλάθια αγορών.",
- "Sales": "Πωλήσεις",
+ "EcommerceLogSubcategoryHelp1": "Το ημερολόγιο Ηλεκτρονικού Εμπορίου παρέχει σε βαθμωτό επίπεδο δεδομένα ώστε να μπορείτε να δείτε την πλήρη σύνοδο του κάθε χρήστη που είτε προχώρησε σε μια αγορά είτε παράτησε το καλάθι αγορών του. Αυτό μπορεί να σας βοηθήσει να κατανοήσετε τι κάνουν οι χρήστες πριν και μετά μια αγορά για να βρείτε ευκαιρίες για βελτιστοποίηση.",
+ "EcommerceLogSubcategoryHelp2": "Τα δεδομένα στη σελίδα ανανεώνονται σε πραγματικό χρόνο.",
+ "EcommerceOverviewSubcategoryHelp1": "Το τμήμα Σύνοψης Ηλεκτρονικού Εμπορίου είναι το καλύτερο μέρος για να έχετε μια υψηλού επιπέδου σύνοψη της απόδοσης του ηλεκτρονικού σας καταστήματος. Με μια ματιά, μπορείτε να δείτε πόσες πωλήσεις πραγματοποιείτε, πόσο κέρδος παράγετε και τον ρυθμό μετατροπής του ιστοτόπου σας.",
+ "EcommerceOverviewSubcategoryHelp2": "Κάντε κλικ σε κάθε ξεχωριστή μετρική μέσα στο γράφημα προκειμένου να το δείτε μέσα στο πλήρους μεγέθους γράφημα εξέλιξης.",
+ "EcommerceOverviewSubcategoryHelp3": "Μάθετε περισσότερα για τον οδηγό Ηλεκτρονικού Εμπορίου εδώ.",
+ "LifeTimeValue": "Αξία Χρόνου Ζωής Ηλεκτρονικού Εμπορίου",
+ "LifeTimeValueDescription": "Συνολικά έσοδα από τον πελάτη από όλες τις επισκέψεις: το σύνολο των εσόδων από όλες τις παραγγελίες ηλεκτρονικού εμπορίου για τον πελάτη με αναγνωριστικό %s.",
+ "NumberOfItems": "Αριθμός αντικειμένων στο καλάθι",
"Order": "Παραγγελία",
"OrderId": "Αναγνωριστικό παραγγελίας",
+ "OrderRevenue": "Έσοδα Παραγγελίας",
+ "OrderValue": "Αξία παραγγελίας",
"Orders": "Παραγγελίες",
+ "PluginDescription": "Το Ecommerce σας επιτρέπει να ιχνηλατείτε τους χρήστες που θα προσθέτουν προϊόντα στο καλάθι τους και όταν γίνεται μετατροπή σε μια πώληση ηλεκτρονικού εμπορίου. Επίσης, την ιχνηλάτηση προϊόντων και εμφανίσεις κατηγοριών προϊόντων, καθώς και τα εγκαταλελειμμένα καλάθια αγορών.",
+ "ProductSubcategoryHelp": "Η όψη Προϊόντα σας βοηθάει να αναγνωρίζετε προϊόντα και κατηγορίες που τα πηγαίνουν πολύ καλά ή όχι τόσο καλά για να βρείτε τάσεις και ευκαιρίες σχετικές με την επιλογή προϊόντων σας.",
+ "RevenueLeftInCart": "Υπολειπόμενα Έσοδα στο Καλάθι",
+ "Sales": "Πωλήσεις",
+ "SalesAdjective": "Πωλήσεις %s",
+ "SalesBy": "Πωλήσεις ανά %s",
+ "SalesSubcategoryHelp1": "Το τμήμα περιέχει μια εκτενή συλλογή από αναφορές για να σας βοηθήσουν να αναλύσετε τις διαφορετικές συνθήκες που οδηγούν σε πωλήσεις, όπως οι πηγές κίνησης και καμπανιών, ο χρόνος του χρήστη, η τοποθεσία και οι συσκευές που τις προσπελαύνουν.",
+ "SalesSubcategoryHelp2": "Μπορείτε επίσης να μάθετε πόσο κέρδος σχετίζεται με κάθε διάσταση, όπως συγκεκριμένοι τύποι κίνησης ή καμπάνιες υπό παρακολούθηση.",
"ViewedProductCategory": "Κατηγορία Προϊόντος που είδατε",
"ViewedProductName": "Όνομα Προϊόντος που είδατε",
"ViewedProductPrice": "Τιμή Προϊόντος που είδατε",
"ViewedProductSKU": "Προϊόν SKU που είδατε",
- "SalesBy": "Πωλήσεις ανά %s",
- "SalesAdjective": "Πωλήσεις %s",
- "NumberOfItems": "Αριθμός αντικειμένων στο καλάθι",
- "OrderValue": "Αξία παραγγελίας",
- "LifeTimeValue": "Αξία Χρόνου Ζωής Ηλεκτρονικού Εμπορίου",
- "LifeTimeValueDescription": "Συνολικά έσοδα από τον πελάτη από όλες τις επισκέψεις: το σύνολο των εσόδων από όλες τις παραγγελίες ηλεκτρονικού εμπορίου για τον πελάτη με αναγνωριστικό %s.",
- "VisitorProfileLTV": "Παράχθηκαν έσοδα στο χρόνο ζωής της τάξης του %1$s.",
- "VisitorProfileItemsAndOrders": "Αγοράστηκαν %1$s αντικείμενα σε %2$s παραγγελίες ηλεκτρονικού εμπορίου.",
"VisitorProfileAbandonedCartSummary": "Ακυρώθηκαν %1$s καλάθια αγορών συμπεριλαμβανομένων %2$s αντικειμένων συνολικής αξίας %3$s.",
- "EcommerceOverviewSubcategoryHelp1": "Το τμήμα Σύνοψης Ηλεκτρονικού Εμπορίου είναι το καλύτερο μέρος για να έχετε μια υψηλού επιπέδου σύνοψη της απόδοσης του ηλεκτρονικού σας καταστήματος. Με μια ματιά, μπορείτε να δείτε πόσες πωλήσεις πραγματοποιείτε, πόσο κέρδος παράγετε και τον ρυθμό μετατροπής του ιστοτόπου σας.",
- "EcommerceOverviewSubcategoryHelp2": "Κάντε κλικ σε κάθε ξεχωριστή μετρική μέσα στο γράφημα προκειμένου να το δείτε μέσα στο πλήρους μεγέθους γράφημα εξέλιξης.",
- "SalesSubcategoryHelp1": "Το τμήμα περιέχει μια εκτενή συλλογή από αναφορές για να σας βοηθήσουν να αναλύσετε τις διαφορετικές συνθήκες που οδηγούν σε πωλήσεις, όπως οι πηγές κίνησης και καμπανιών, ο χρόνος του χρήστη, η τοποθεσία και οι συσκευές που τις προσπελαύνουν.",
- "SalesSubcategoryHelp2": "Μπορείτε επίσης να μάθετε πόσο κέρδος σχετίζεται με κάθε διάσταση, όπως συγκεκριμένοι τύποι κίνησης ή καμπάνιες υπό παρακολούθηση.",
- "EcommerceLogSubcategoryHelp1": "Το ημερολόγιο Ηλεκτρονικού Εμπορίου παρέχει σε βαθμωτό επίπεδο δεδομένα ώστε να μπορείτε να δείτε την πλήρη σύνοδο του κάθε χρήστη που είτε προχώρησε σε μια αγορά είτε παράτησε το καλάθι αγορών του. Αυτό μπορεί να σας βοηθήσει να κατανοήσετε τι κάνουν οι χρήστες πριν και μετά μια αγορά για να βρείτε ευκαιρίες για βελτιστοποίηση.",
- "EcommerceLogSubcategoryHelp2": "Τα δεδομένα στη σελίδα ανανεώνονται σε πραγματικό χρόνο.",
- "ProductSubcategoryHelp": "Η όψη Προϊόντα σας βοηθάει να αναγνωρίζετε προϊόντα και κατηγορίες που τα πηγαίνουν πολύ καλά ή όχι τόσο καλά για να βρείτε τάσεις και ευκαιρίες σχετικές με την επιλογή προϊόντων σας."
+ "VisitorProfileItemsAndOrders": "Αγοράστηκαν %1$s αντικείμενα σε %2$s παραγγελίες ηλεκτρονικού εμπορίου.",
+ "VisitorProfileLTV": "Παράχθηκαν έσοδα στο χρόνο ζωής της τάξης του %1$s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/Ecommerce/lang/en.json b/plugins/Ecommerce/lang/en.json
index 586b514c0f..0788a24457 100644
--- a/plugins/Ecommerce/lang/en.json
+++ b/plugins/Ecommerce/lang/en.json
@@ -4,6 +4,8 @@
"Sales": "Sales",
"Order": "Order",
"OrderId": "Order ID",
+ "OrderRevenue": "Order Revenue",
+ "RevenueLeftInCart": "Revenue Left In Cart",
"Orders": "Orders",
"ViewedProductCategory": "Viewed Product Category",
"ViewedProductName": "Viewed Product Name",
diff --git a/plugins/Ecommerce/lang/ga.json b/plugins/Ecommerce/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Ecommerce/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Ecommerce/lang/pt-br.json b/plugins/Ecommerce/lang/pt-br.json
index 312f151f11..9266807085 100644
--- a/plugins/Ecommerce/lang/pt-br.json
+++ b/plugins/Ecommerce/lang/pt-br.json
@@ -4,15 +4,18 @@
"EcommerceLogSubcategoryHelp2": "Os dados nesta página são atualizados em tempo real.",
"EcommerceOverviewSubcategoryHelp1": "A seção Visão Geral de Comércio Eletrônico é o melhor lugar para obter uma visão de alto nível do desempenho de sua loja online. Em um piscar de olhos, você pode ver quantas vendas está fazendo, quanta receita está gerando e a taxa de conversão de seu site.",
"EcommerceOverviewSubcategoryHelp2": "Clique em uma métrica individual no gráfico para focalizá-la no gráfico de evolução em tamanho real.",
+ "EcommerceOverviewSubcategoryHelp3": "Saiba mais em nosso guia de comércio eletrônico aqui.",
"LifeTimeValue": "Ecommerce valor do tempo de vida",
"LifeTimeValueDescription": "Receita total da loja atribuída a esse cliente em todas as visitas: a soma da receita de todos os pedidos da loja para o ID do visitante %s.",
"NumberOfItems": "Números de itens no carrinho",
"Order": "Pedido",
"OrderId": "ID do pedido",
+ "OrderRevenue": "Receita do pedido",
"OrderValue": "Valor do pedido",
"Orders": "Pedidos",
"PluginDescription": "Comércio eletrônico permite rastrear quando os usuários adicionar produtos aos carrinhos e quando eles convertem em uma venda de comércio eletrônico. Rastreie também as visualizações de produtos e categorias de produtos e carrinhos abandonados.",
"ProductSubcategoryHelp": "A Visualização Produtos pode ajudá-lo a identificar produtos e categorias com desempenho superior ou inferior para revelar tendências e oportunidades relacionadas à sua seleção de produtos e páginas de loja.",
+ "RevenueLeftInCart": "Receita deixada no carrinho",
"Sales": "Vendas",
"SalesAdjective": "Vendas %s",
"SalesBy": "Vendas por %s",
diff --git a/plugins/Ecommerce/lang/tr.json b/plugins/Ecommerce/lang/tr.json
index f280014b13..9e1d1660dd 100644
--- a/plugins/Ecommerce/lang/tr.json
+++ b/plugins/Ecommerce/lang/tr.json
@@ -4,15 +4,18 @@
"EcommerceLogSubcategoryHelp2": "Bu sayfadaki veriler gerçek zamanlı olarak güncellenir.",
"EcommerceOverviewSubcategoryHelp1": "E-ticaret özeti bölümü, çevrimiçi mağaza başarımını genel olarak görmek için en iyi yerdir. Bir bakışta, kaç satış yapıldığı, ne kadar gelir elde edildiği ve web sitesinin hedef dönüşüm oranı görülebilir.",
"EcommerceOverviewSubcategoryHelp2": "Tam boyutlu gelişim çizelgesi içinde odaklamak istediğiniz ölçüt için mini grafik üzerindeki bir ölçüte tıklayın.",
+ "EcommerceOverviewSubcategoryHelp3": "Ayrıntılı bilgi almak için e-ticaret rehberine bakabilirsiniz.",
"LifeTimeValue": "Ömür boyu e-ticaret değeri",
"LifeTimeValueDescription": "Bu müşterinin tüm ziyaretlerinden elde edilen toplam e-ticaret geliri. %s ziyaretçi kodu için tüm e-ticaret siparişleri gelirlerinin toplamı.",
"NumberOfItems": "Sepetteki öge sayısı",
"Order": "Sipariş",
"OrderId": "Sipariş kodu",
+ "OrderRevenue": "Sipariş Geliri",
"OrderValue": "Sipariş değeri",
"Orders": "Sipariş",
"PluginDescription": "E-ticaret kullanıcılarının ürünleri sepete ekleme ve satın alma işlemlerinin izlenmesini sağlar. Ayrıca ürünleri, ürün kategorileri görünümleri ile terk edilen sepetleri de izler.",
"ProductSubcategoryHelp": "Ürünler görünümü, ürün seçimi ve mağaza sayfaları ile ilgili eğilimleri ve fırsatları ortaya çıkarmak için başarımı aşırı veya düşük olan ürün ve kategorilerin belirlenmesine yardımcı olabilir.",
+ "RevenueLeftInCart": "Sepette Kalan Gelir",
"Sales": "Satışlar",
"SalesAdjective": "Satışlar %s",
"SalesBy": "%s bazında satışlar",
diff --git a/plugins/Ecommerce/tests/System/EcommerceOrderWithItemsTest.php b/plugins/Ecommerce/tests/System/EcommerceOrderWithItemsTest.php
index 17c77747c3..a432c345a7 100644
--- a/plugins/Ecommerce/tests/System/EcommerceOrderWithItemsTest.php
+++ b/plugins/Ecommerce/tests/System/EcommerceOrderWithItemsTest.php
@@ -9,8 +9,8 @@ namespace Piwik\Plugins\Ecommerce\tests\System;
use Piwik\Date;
use Piwik\Piwik;
-use Piwik\Tests\Framework\TestCase\SystemTestCase;
use Piwik\Tests\Fixtures\TwoSitesEcommerceOrderWithItems;
+use Piwik\Tests\Framework\TestCase\SystemTestCase;
/**
* Tests API methods after ecommerce orders are tracked.
@@ -304,6 +304,29 @@ class EcommerceOrderWithItemsTest extends SystemTestCase
'testSuffix' => '_productPrice',
'segment' => 'productPrice>500',
]],
+ [
+ ['Live.getLastVisitsDetails', 'Goals.get'],
+ [
+ 'idSite' => $idSite,
+ 'date' => $dateTime,
+ 'periods' => 'day',
+ 'testSuffix' => '_SegmentRevenueOrder',
+ 'segment' => 'revenueOrder>500',
+ ]
+ ],
+ [
+ ['Live.getLastVisitsDetails', 'Goals.get'],
+ [
+ 'idSite' => $idSite,
+ 'date' => $dateTime,
+ 'periods' => 'day',
+ 'testSuffix' => '_SegmentCartRevenueOrder',
+ 'segment' => 'revenueAbandonedCart>100',
+ ]
+ ],
+
+
+
),
self::getApiForTestingScheduledReports($dateTime, 'week')
);
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_VisitTime.getVisitInformationPerServerTime__API.getProcessedReport_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_VisitTime.getVisitInformationPerServerTime__API.getProcessedReport_day.xml
index 3dfafacaae..08b580c397 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_VisitTime.getVisitInformationPerServerTime__API.getProcessedReport_day.xml
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_Metadata_VisitTime.getVisitInformationPerServerTime__API.getProcessedReport_day.xml
@@ -5,11 +5,11 @@
<metadata>
<category>Visitors</category>
<subcategory>Times</subcategory>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<module>VisitTime</module>
<action>getVisitInformationPerServerTime</action>
- <dimension>Server time - hour (Start of visit)</dimension>
- <documentation>This graph shows what time it was in the &lt;strong&gt; server's time zone &lt;/strong&gt; during the visits.</documentation>
+ <dimension>Site time - hour (Start of visit)</dimension>
+ <documentation>This graph shows what time it was in the &lt;strong&gt; site's time zone &lt;/strong&gt; during the visits.</documentation>
<metrics>
<nb_visits>Visits</nb_visits>
<nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
@@ -43,7 +43,7 @@
<uniqueId>VisitTime_getVisitInformationPerServerTime</uniqueId>
</metadata>
<columns>
- <label>Server time - hour (Start of visit)</label>
+ <label>Site time - hour (Start of visit)</label>
<nb_visits>Visits</nb_visits>
<nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
<nb_actions>Actions</nb_actions>
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentCartRevenueOrder__Goals.get_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentCartRevenueOrder__Goals.get_day.xml
new file mode 100644
index 0000000000..7c67098eb9
--- /dev/null
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentCartRevenueOrder__Goals.get_day.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<result>
+ <nb_conversions>2</nb_conversions>
+ <nb_visits_converted>1</nb_visits_converted>
+ <revenue>3111.11</revenue>
+ <conversion_rate>50%</conversion_rate>
+ <nb_conversions_new_visit>0</nb_conversions_new_visit>
+ <nb_visits_converted_new_visit>0</nb_visits_converted_new_visit>
+ <revenue_new_visit>0</revenue_new_visit>
+ <conversion_rate_new_visit>0%</conversion_rate_new_visit>
+ <nb_conversions_returning_visit>2</nb_conversions_returning_visit>
+ <nb_visits_converted_returning_visit>1</nb_visits_converted_returning_visit>
+ <revenue_returning_visit>3111.11</revenue_returning_visit>
+ <conversion_rate_returning_visit>50%</conversion_rate_returning_visit>
+</result>
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentCartRevenueOrder__Live.getLastVisitsDetails_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentCartRevenueOrder__Live.getLastVisitsDetails_day.xml
new file mode 100644
index 0000000000..122f85f990
--- /dev/null
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentCartRevenueOrder__Live.getLastVisitsDetails_day.xml
@@ -0,0 +1,618 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <idSite>1</idSite>
+ <idVisit>3</idVisit>
+ <visitIp>156.5.3.2</visitIp>
+
+ <fingerprint>c7eabd04b45e68b3</fingerprint>
+ <actionDetails>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>View product left in cart</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>11</pageId>
+ <productViewPrice>999</productViewPrice>
+ <productViewName>PRODUCT THREE LEFT in cart</productViewName>
+ <productViewSku>SKU VERY nice indeed</productViewSku>
+ <bandwidth />
+ <timeSpent>180</timeSpent>
+ <timeSpentPretty>3 min 0s</timeSpentPretty>
+ <pageviewPosition>1</pageviewPosition>
+ <title>View product left in cart</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>View product left in cart</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>12</pageId>
+ <productViewPrice>333</productViewPrice>
+ <productViewName>PRODUCT THREE LEFT in cart</productViewName>
+ <productViewSku>SKU VERY nice indeed</productViewSku>
+ <bandwidth />
+ <timeSpent>180</timeSpent>
+ <timeSpentPretty>3 min 0s</timeSpentPretty>
+ <pageviewPosition>2</pageviewPosition>
+ <title>View product left in cart</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>View product left in cart</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>13</pageId>
+ <productViewName>PRODUCT TWO LEFT in cart</productViewName>
+ <productViewSku>SKU IN ABANDONED CART TWO</productViewSku>
+ <bandwidth />
+ <timeSpent>361</timeSpent>
+ <timeSpentPretty>6 min 1s</timeSpentPretty>
+ <pageviewPosition>3</pageviewPosition>
+ <title>View product left in cart</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <productViewCategories>
+ <row>Category TWO LEFT in cart</row>
+ <row>second category</row>
+ </productViewCategories>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>ecommerceAbandonedCart</type>
+ <revenue>2510.11</revenue>
+ <items>4</items>
+
+
+ <itemDetails>
+ <row>
+ <itemSKU>SKU VERY nice indeed</itemSKU>
+ <itemName>PRODUCT THREE LEFT in cart</itemName>
+ <itemCategory>Electronics &amp; Cameras</itemCategory>
+ <price>10</price>
+ <quantity>1</quantity>
+ <categories>
+ <row>Electronics &amp; Cameras</row>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>SKU IN ABANDONED CART ONE</itemSKU>
+ <itemName>PRODUCT ONE LEFT in cart</itemName>
+ <itemCategory />
+ <price>500.11</price>
+ <quantity>1</quantity>
+ <categories>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>SKU IN ABANDONED CART TWO</itemSKU>
+ <itemName>PRODUCT TWO LEFT in cart</itemName>
+ <itemCategory>Category TWO LEFT in cart</itemCategory>
+ <price>1000</price>
+ <quantity>2</quantity>
+ <categories>
+ <row>Category TWO LEFT in cart</row>
+ <row>second category</row>
+ </categories>
+ </row>
+ </itemDetails>
+ <icon>plugins/Morpheus/images/ecommerceAbandonedCart.png</icon>
+ <iconSVG>plugins/Morpheus/images/ecommerceAbandonedCart.svg</iconSVG>
+ <title>Abandoned Cart</title>
+ <subtitle>$2,510.11 revenue - 4 items: PRODUCT THREE LEFT in cart, PRODUCT ONE LEFT in cart, PRODUCT TWO LEFT in cart)</subtitle>
+
+ </row>
+ </actionDetails>
+ <goalConversions>0</goalConversions>
+ <siteCurrency>USD</siteCurrency>
+ <siteCurrencySymbol>$</siteCurrencySymbol>
+
+
+
+
+ <siteName>Piwik test</siteName>
+
+
+
+
+
+
+ <userId />
+ <visitorType>returning</visitorType>
+ <visitorTypeIcon>plugins/Live/images/returningVisitor.png</visitorTypeIcon>
+ <visitConverted>0</visitConverted>
+ <visitConvertedIcon />
+ <visitCount>3</visitCount>
+ <visitEcommerceStatus>abandonedCart</visitEcommerceStatus>
+ <visitEcommerceStatusIcon>plugins/Morpheus/images/ecommerceAbandonedCart.svg</visitEcommerceStatusIcon>
+ <daysSinceFirstVisit>0</daysSinceFirstVisit>
+ <secondsSinceFirstVisit>27000</secondsSinceFirstVisit>
+ <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder>
+ <secondsSinceLastEcommerceOrder>21240</secondsSinceLastEcommerceOrder>
+ <visitDuration>721</visitDuration>
+ <visitDurationPretty>12 min 1s</visitDurationPretty>
+ <searches>0</searches>
+ <actions>3</actions>
+ <interactions>3</interactions>
+ <referrerType>direct</referrerType>
+ <referrerTypeName>Direct Entry</referrerTypeName>
+ <referrerName />
+ <referrerKeyword />
+ <referrerKeywordPosition />
+ <referrerUrl />
+ <referrerSearchEngineUrl />
+ <referrerSearchEngineIcon />
+ <referrerSocialNetworkUrl />
+ <referrerSocialNetworkIcon />
+ <languageCode>pl</languageCode>
+ <language>Polish</language>
+ <deviceType>Desktop</deviceType>
+ <deviceTypeIcon>plugins/Morpheus/icons/dist/devices/desktop.png</deviceTypeIcon>
+ <deviceBrand>Unknown</deviceBrand>
+ <deviceModel>Generic Desktop</deviceModel>
+ <operatingSystem>Windows XP</operatingSystem>
+ <operatingSystemName>Windows</operatingSystemName>
+ <operatingSystemIcon>plugins/Morpheus/icons/dist/os/WIN.png</operatingSystemIcon>
+ <operatingSystemCode>WIN</operatingSystemCode>
+ <operatingSystemVersion>XP</operatingSystemVersion>
+ <browserFamily>Gecko</browserFamily>
+ <browserFamilyDescription>Gecko (Firefox)</browserFamilyDescription>
+ <browser>Firefox 3.6</browser>
+ <browserName>Firefox</browserName>
+ <browserIcon>plugins/Morpheus/icons/dist/browsers/FF.png</browserIcon>
+ <browserCode>FF</browserCode>
+ <browserVersion>3.6</browserVersion>
+ <totalEcommerceRevenue>13351.11</totalEcommerceRevenue>
+ <totalEcommerceConversions>4</totalEcommerceConversions>
+ <totalEcommerceItems>12</totalEcommerceItems>
+ <totalAbandonedCartsRevenue>7530.33</totalAbandonedCartsRevenue>
+ <totalAbandonedCarts>3</totalAbandonedCarts>
+ <totalAbandonedCartsItems>12</totalAbandonedCartsItems>
+ <events>0</events>
+ <continent>Europe</continent>
+ <continentCode>eur</continentCode>
+ <country>Poland</country>
+ <countryCode>pl</countryCode>
+ <countryFlag>plugins/Morpheus/icons/dist/flags/pl.png</countryFlag>
+ <region />
+ <regionCode />
+ <city />
+ <location>Poland</location>
+ <latitude />
+ <longitude />
+ <visitLocalTime>12:34:06</visitLocalTime>
+ <visitLocalHour>12</visitLocalHour>
+ <daysSinceLastVisit>0</daysSinceLastVisit>
+ <secondsSinceLastVisit>21240</secondsSinceLastVisit>
+ <resolution>1024x768</resolution>
+ <plugins>cookie, flash, java</plugins>
+ <pluginsIcons>
+ <row>
+ <pluginIcon>plugins/Morpheus/icons/dist/plugins/cookie.png</pluginIcon>
+ <pluginName>cookie</pluginName>
+ </row>
+ <row>
+ <pluginIcon>plugins/Morpheus/icons/dist/plugins/flash.png</pluginIcon>
+ <pluginName>flash</pluginName>
+ </row>
+ <row>
+ <pluginIcon>plugins/Morpheus/icons/dist/plugins/java.png</pluginIcon>
+ <pluginName>java</pluginName>
+ </row>
+ </pluginsIcons>
+ <customVariables>
+ <row>
+ <customVariableName3>VisitorName</customVariableName3>
+ <customVariableValue3>Great name!</customVariableValue3>
+ </row>
+ <row>
+ <customVariableName4>ValueIsZero</customVariableName4>
+ <customVariableValue4>0</customVariableValue4>
+ </row>
+ <row>
+ <customVariableName5>VisitorType</customVariableName5>
+ <customVariableValue5>NewLoggedOut</customVariableValue5>
+ </row>
+ </customVariables>
+ </row>
+ <row>
+ <idSite>1</idSite>
+ <idVisit>2</idVisit>
+ <visitIp>156.5.3.2</visitIp>
+
+ <fingerprint>c7eabd04b45e68b3</fingerprint>
+ <actionDetails>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>Looking at Electronics &amp; Cameras page with a page level custom variable</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>5</pageId>
+ <bandwidth />
+ <timeSpent>360</timeSpent>
+ <timeSpentPretty>6 min 0s</timeSpentPretty>
+ <pageviewPosition>1</pageviewPosition>
+ <title>Looking at Electronics &amp; Cameras page with a page level custom variable</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <productViewCategories>
+ <row>Electronics &amp; Cameras</row>
+ </productViewCategories>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>Looking at Electronics &amp; Cameras page again</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>6</pageId>
+ <bandwidth />
+ <timeSpent>360</timeSpent>
+ <timeSpentPretty>6 min 0s</timeSpentPretty>
+ <pageviewPosition>2</pageviewPosition>
+ <title>Looking at Electronics &amp; Cameras page again</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <productViewCategories>
+ <row>Electronics &amp; Cameras</row>
+ </productViewCategories>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>Looking at product page</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>7</pageId>
+ <productViewPrice>666</productViewPrice>
+ <productViewName>PRODUCT name</productViewName>
+ <productViewSku>SKU VERY nice indeed</productViewSku>
+ <bandwidth />
+ <timeSpent>720</timeSpent>
+ <timeSpentPretty>12 min 0s</timeSpentPretty>
+ <pageviewPosition>3</pageviewPosition>
+ <title>Looking at product page</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <productViewCategories>
+ <row>Electronics &amp; Cameras</row>
+ </productViewCategories>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>ecommerceOrder</type>
+ <orderId>937nsjusu 3894</orderId>
+ <revenue>1111.11</revenue>
+ <revenueSubTotal>1000</revenueSubTotal>
+ <revenueTax>111</revenueTax>
+ <revenueShipping>0.11</revenueShipping>
+ <revenueDiscount>666</revenueDiscount>
+ <items>8</items>
+
+
+ <itemDetails>
+ <row>
+ <itemSKU>SKU VERY nice indeed</itemSKU>
+ <itemName>PRODUCT name</itemName>
+ <itemCategory>Multiple Category 1</itemCategory>
+ <price>500</price>
+ <quantity>2</quantity>
+ <categories>
+ <row>Multiple Category 1</row>
+ <row>Multiple Category 2</row>
+ <row>Electronics &amp; Cameras</row>
+ <row>Multiple Category 4</row>
+ <row>Multiple Category 5</row>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>ANOTHER SKU HERE</itemSKU>
+ <itemName>PRODUCT name BIS</itemName>
+ <itemCategory />
+ <price>100</price>
+ <quantity>6</quantity>
+ <categories>
+ </categories>
+ </row>
+ </itemDetails>
+ <icon>plugins/Morpheus/images/ecommerceOrder.png</icon>
+ <iconSVG>plugins/Morpheus/images/ecommerceOrder.svg</iconSVG>
+ <title>Ordered (937nsjusu 3894)</title>
+ <subtitle>$1,111.11 revenue - 8 items: PRODUCT name, PRODUCT name BIS)</subtitle>
+
+ </row>
+ <row>
+ <type>ecommerceOrder</type>
+ <orderId>1037nsjusu4s3894</orderId>
+ <revenue>2000</revenue>
+ <revenueSubTotal>1500</revenueSubTotal>
+ <revenueTax>400</revenueTax>
+ <revenueShipping>100</revenueShipping>
+ <revenueDiscount>0</revenueDiscount>
+ <items>2</items>
+
+
+ <itemDetails>
+ <row>
+ <itemSKU>SKU2</itemSKU>
+ <itemName>Canon SLR</itemName>
+ <itemCategory>Electronics &amp; Cameras</itemCategory>
+ <price>1500</price>
+ <quantity>1</quantity>
+ <categories>
+ <row>Electronics &amp; Cameras</row>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>SKU VERY nice indeed</itemSKU>
+ <itemName>PRODUCT name</itemName>
+ <itemCategory />
+ <price>11.22</price>
+ <quantity>1</quantity>
+ <categories>
+ </categories>
+ </row>
+ </itemDetails>
+ <icon>plugins/Morpheus/images/ecommerceOrder.png</icon>
+ <iconSVG>plugins/Morpheus/images/ecommerceOrder.svg</iconSVG>
+ <title>Ordered (1037nsjusu4s3894)</title>
+ <subtitle>$2,000 revenue - 2 items: Canon SLR, PRODUCT name)</subtitle>
+
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>View product left in cart</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>8</pageId>
+ <productViewPrice>999</productViewPrice>
+ <productViewName>PRODUCT THREE LEFT in cart</productViewName>
+ <productViewSku>SKU VERY nice indeed</productViewSku>
+ <bandwidth />
+ <timeSpent>180</timeSpent>
+ <timeSpentPretty>3 min 0s</timeSpentPretty>
+ <pageviewPosition>4</pageviewPosition>
+ <title>View product left in cart</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>View product left in cart</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>9</pageId>
+ <productViewPrice>333</productViewPrice>
+ <productViewName>PRODUCT THREE LEFT in cart</productViewName>
+ <productViewSku>SKU VERY nice indeed</productViewSku>
+ <bandwidth />
+ <timeSpent>180</timeSpent>
+ <timeSpentPretty>3 min 0s</timeSpentPretty>
+ <pageviewPosition>5</pageviewPosition>
+ <title>View product left in cart</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>View product left in cart</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>10</pageId>
+ <productViewName>PRODUCT TWO LEFT in cart</productViewName>
+ <productViewSku>SKU IN ABANDONED CART TWO</productViewSku>
+ <bandwidth />
+ <timeSpent>361</timeSpent>
+ <timeSpentPretty>6 min 1s</timeSpentPretty>
+ <pageviewPosition>6</pageviewPosition>
+ <title>View product left in cart</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <productViewCategories>
+ <row>Category TWO LEFT in cart</row>
+ <row>second category</row>
+ </productViewCategories>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>ecommerceAbandonedCart</type>
+ <revenue>2510.11</revenue>
+ <items>4</items>
+
+
+ <itemDetails>
+ <row>
+ <itemSKU>SKU VERY nice indeed</itemSKU>
+ <itemName>PRODUCT THREE LEFT in cart</itemName>
+ <itemCategory>Electronics &amp; Cameras</itemCategory>
+ <price>10</price>
+ <quantity>1</quantity>
+ <categories>
+ <row>Electronics &amp; Cameras</row>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>SKU IN ABANDONED CART ONE</itemSKU>
+ <itemName>PRODUCT ONE LEFT in cart</itemName>
+ <itemCategory />
+ <price>500.11</price>
+ <quantity>1</quantity>
+ <categories>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>SKU IN ABANDONED CART TWO</itemSKU>
+ <itemName>PRODUCT TWO LEFT in cart</itemName>
+ <itemCategory>Category TWO LEFT in cart</itemCategory>
+ <price>1000</price>
+ <quantity>2</quantity>
+ <categories>
+ <row>Category TWO LEFT in cart</row>
+ <row>second category</row>
+ </categories>
+ </row>
+ </itemDetails>
+ <icon>plugins/Morpheus/images/ecommerceAbandonedCart.png</icon>
+ <iconSVG>plugins/Morpheus/images/ecommerceAbandonedCart.svg</iconSVG>
+ <title>Abandoned Cart</title>
+ <subtitle>$2,510.11 revenue - 4 items: PRODUCT THREE LEFT in cart, PRODUCT ONE LEFT in cart, PRODUCT TWO LEFT in cart)</subtitle>
+
+ </row>
+ </actionDetails>
+ <goalConversions>0</goalConversions>
+ <siteCurrency>USD</siteCurrency>
+ <siteCurrencySymbol>$</siteCurrencySymbol>
+
+
+
+
+ <siteName>Piwik test</siteName>
+
+
+
+
+
+
+ <userId />
+ <visitorType>returning</visitorType>
+ <visitorTypeIcon>plugins/Live/images/returningVisitor.png</visitorTypeIcon>
+ <visitConverted>1</visitConverted>
+ <visitConvertedIcon>plugins/Morpheus/images/goal.svg</visitConvertedIcon>
+ <visitCount>2</visitCount>
+ <visitEcommerceStatus>orderedThenAbandonedCart</visitEcommerceStatus>
+ <visitEcommerceStatusIcon>plugins/Morpheus/images/ecommerceOrder.svg</visitEcommerceStatusIcon>
+ <daysSinceFirstVisit>0</daysSinceFirstVisit>
+ <secondsSinceFirstVisit>5760</secondsSinceFirstVisit>
+ <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder>
+ <secondsSinceLastEcommerceOrder>0</secondsSinceLastEcommerceOrder>
+ <visitDuration>3961</visitDuration>
+ <visitDurationPretty>1 hours 6 min</visitDurationPretty>
+ <searches>0</searches>
+ <actions>6</actions>
+ <interactions>6</interactions>
+ <referrerType>direct</referrerType>
+ <referrerTypeName>Direct Entry</referrerTypeName>
+ <referrerName />
+ <referrerKeyword />
+ <referrerKeywordPosition />
+ <referrerUrl />
+ <referrerSearchEngineUrl />
+ <referrerSearchEngineIcon />
+ <referrerSocialNetworkUrl />
+ <referrerSocialNetworkIcon />
+ <languageCode>pl</languageCode>
+ <language>Polish</language>
+ <deviceType>Desktop</deviceType>
+ <deviceTypeIcon>plugins/Morpheus/icons/dist/devices/desktop.png</deviceTypeIcon>
+ <deviceBrand>Unknown</deviceBrand>
+ <deviceModel>Generic Desktop</deviceModel>
+ <operatingSystem>Windows XP</operatingSystem>
+ <operatingSystemName>Windows</operatingSystemName>
+ <operatingSystemIcon>plugins/Morpheus/icons/dist/os/WIN.png</operatingSystemIcon>
+ <operatingSystemCode>WIN</operatingSystemCode>
+ <operatingSystemVersion>XP</operatingSystemVersion>
+ <browserFamily>Gecko</browserFamily>
+ <browserFamilyDescription>Gecko (Firefox)</browserFamilyDescription>
+ <browser>Firefox 3.6</browser>
+ <browserName>Firefox</browserName>
+ <browserIcon>plugins/Morpheus/icons/dist/browsers/FF.png</browserIcon>
+ <browserCode>FF</browserCode>
+ <browserVersion>3.6</browserVersion>
+ <totalEcommerceRevenue>13351.11</totalEcommerceRevenue>
+ <totalEcommerceConversions>4</totalEcommerceConversions>
+ <totalEcommerceItems>12</totalEcommerceItems>
+ <totalAbandonedCartsRevenue>7530.33</totalAbandonedCartsRevenue>
+ <totalAbandonedCarts>3</totalAbandonedCarts>
+ <totalAbandonedCartsItems>12</totalAbandonedCartsItems>
+ <events>0</events>
+ <continent>Europe</continent>
+ <continentCode>eur</continentCode>
+ <country>Poland</country>
+ <countryCode>pl</countryCode>
+ <countryFlag>plugins/Morpheus/icons/dist/flags/pl.png</countryFlag>
+ <region />
+ <regionCode />
+ <city />
+ <location>Poland</location>
+ <latitude />
+ <longitude />
+ <visitLocalTime>12:34:06</visitLocalTime>
+ <visitLocalHour>12</visitLocalHour>
+ <daysSinceLastVisit>0</daysSinceLastVisit>
+ <secondsSinceLastVisit>5760</secondsSinceLastVisit>
+ <resolution>1024x768</resolution>
+ <plugins>cookie, flash, java</plugins>
+ <pluginsIcons>
+ <row>
+ <pluginIcon>plugins/Morpheus/icons/dist/plugins/cookie.png</pluginIcon>
+ <pluginName>cookie</pluginName>
+ </row>
+ <row>
+ <pluginIcon>plugins/Morpheus/icons/dist/plugins/flash.png</pluginIcon>
+ <pluginName>flash</pluginName>
+ </row>
+ <row>
+ <pluginIcon>plugins/Morpheus/icons/dist/plugins/java.png</pluginIcon>
+ <pluginName>java</pluginName>
+ </row>
+ </pluginsIcons>
+ <customVariables>
+ <row>
+ <customVariableName3>VisitorName</customVariableName3>
+ <customVariableValue3>Great name!</customVariableValue3>
+ </row>
+ <row>
+ <customVariableName4>ValueIsZero</customVariableName4>
+ <customVariableValue4>0</customVariableValue4>
+ </row>
+ <row>
+ <customVariableName5>VisitorType</customVariableName5>
+ <customVariableValue5>NewLoggedOut</customVariableValue5>
+ </row>
+ </customVariables>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentRevenueOrder__Goals.get_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentRevenueOrder__Goals.get_day.xml
new file mode 100644
index 0000000000..0fbef44420
--- /dev/null
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentRevenueOrder__Goals.get_day.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0"?>
+<result>
+ <nb_conversions>2</nb_conversions>
+ <nb_visits_converted>1</nb_visits_converted>
+ <revenue>3111.11</revenue>
+ <conversion_rate>100%</conversion_rate>
+ <nb_conversions_new_visit>0</nb_conversions_new_visit>
+ <nb_visits_converted_new_visit>0</nb_visits_converted_new_visit>
+ <revenue_new_visit>0</revenue_new_visit>
+ <conversion_rate_new_visit>0%</conversion_rate_new_visit>
+ <nb_conversions_returning_visit>2</nb_conversions_returning_visit>
+ <nb_visits_converted_returning_visit>1</nb_visits_converted_returning_visit>
+ <revenue_returning_visit>3111.11</revenue_returning_visit>
+ <conversion_rate_returning_visit>100%</conversion_rate_returning_visit>
+</result>
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentRevenueOrder__Live.getLastVisitsDetails_day.xml b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentRevenueOrder__Live.getLastVisitsDetails_day.xml
new file mode 100644
index 0000000000..cb1dec677e
--- /dev/null
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_SegmentRevenueOrder__Live.getLastVisitsDetails_day.xml
@@ -0,0 +1,385 @@
+<?xml version="1.0" encoding="utf-8" ?>
+<result>
+ <row>
+ <idSite>1</idSite>
+ <idVisit>2</idVisit>
+ <visitIp>156.5.3.2</visitIp>
+
+ <fingerprint>c7eabd04b45e68b3</fingerprint>
+ <actionDetails>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>Looking at Electronics &amp; Cameras page with a page level custom variable</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>5</pageId>
+ <bandwidth />
+ <timeSpent>360</timeSpent>
+ <timeSpentPretty>6 min 0s</timeSpentPretty>
+ <pageviewPosition>1</pageviewPosition>
+ <title>Looking at Electronics &amp; Cameras page with a page level custom variable</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <productViewCategories>
+ <row>Electronics &amp; Cameras</row>
+ </productViewCategories>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>Looking at Electronics &amp; Cameras page again</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>6</pageId>
+ <bandwidth />
+ <timeSpent>360</timeSpent>
+ <timeSpentPretty>6 min 0s</timeSpentPretty>
+ <pageviewPosition>2</pageviewPosition>
+ <title>Looking at Electronics &amp; Cameras page again</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <productViewCategories>
+ <row>Electronics &amp; Cameras</row>
+ </productViewCategories>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>Looking at product page</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>7</pageId>
+ <productViewPrice>666</productViewPrice>
+ <productViewName>PRODUCT name</productViewName>
+ <productViewSku>SKU VERY nice indeed</productViewSku>
+ <bandwidth />
+ <timeSpent>720</timeSpent>
+ <timeSpentPretty>12 min 0s</timeSpentPretty>
+ <pageviewPosition>3</pageviewPosition>
+ <title>Looking at product page</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <productViewCategories>
+ <row>Electronics &amp; Cameras</row>
+ </productViewCategories>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>ecommerceOrder</type>
+ <orderId>937nsjusu 3894</orderId>
+ <revenue>1111.11</revenue>
+ <revenueSubTotal>1000</revenueSubTotal>
+ <revenueTax>111</revenueTax>
+ <revenueShipping>0.11</revenueShipping>
+ <revenueDiscount>666</revenueDiscount>
+ <items>8</items>
+
+
+ <itemDetails>
+ <row>
+ <itemSKU>SKU VERY nice indeed</itemSKU>
+ <itemName>PRODUCT name</itemName>
+ <itemCategory>Multiple Category 1</itemCategory>
+ <price>500</price>
+ <quantity>2</quantity>
+ <categories>
+ <row>Multiple Category 1</row>
+ <row>Multiple Category 2</row>
+ <row>Electronics &amp; Cameras</row>
+ <row>Multiple Category 4</row>
+ <row>Multiple Category 5</row>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>ANOTHER SKU HERE</itemSKU>
+ <itemName>PRODUCT name BIS</itemName>
+ <itemCategory />
+ <price>100</price>
+ <quantity>6</quantity>
+ <categories>
+ </categories>
+ </row>
+ </itemDetails>
+ <icon>plugins/Morpheus/images/ecommerceOrder.png</icon>
+ <iconSVG>plugins/Morpheus/images/ecommerceOrder.svg</iconSVG>
+ <title>Ordered (937nsjusu 3894)</title>
+ <subtitle>$1,111.11 revenue - 8 items: PRODUCT name, PRODUCT name BIS)</subtitle>
+
+ </row>
+ <row>
+ <type>ecommerceOrder</type>
+ <orderId>1037nsjusu4s3894</orderId>
+ <revenue>2000</revenue>
+ <revenueSubTotal>1500</revenueSubTotal>
+ <revenueTax>400</revenueTax>
+ <revenueShipping>100</revenueShipping>
+ <revenueDiscount>0</revenueDiscount>
+ <items>2</items>
+
+
+ <itemDetails>
+ <row>
+ <itemSKU>SKU2</itemSKU>
+ <itemName>Canon SLR</itemName>
+ <itemCategory>Electronics &amp; Cameras</itemCategory>
+ <price>1500</price>
+ <quantity>1</quantity>
+ <categories>
+ <row>Electronics &amp; Cameras</row>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>SKU VERY nice indeed</itemSKU>
+ <itemName>PRODUCT name</itemName>
+ <itemCategory />
+ <price>11.22</price>
+ <quantity>1</quantity>
+ <categories>
+ </categories>
+ </row>
+ </itemDetails>
+ <icon>plugins/Morpheus/images/ecommerceOrder.png</icon>
+ <iconSVG>plugins/Morpheus/images/ecommerceOrder.svg</iconSVG>
+ <title>Ordered (1037nsjusu4s3894)</title>
+ <subtitle>$2,000 revenue - 2 items: Canon SLR, PRODUCT name)</subtitle>
+
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>View product left in cart</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>8</pageId>
+ <productViewPrice>999</productViewPrice>
+ <productViewName>PRODUCT THREE LEFT in cart</productViewName>
+ <productViewSku>SKU VERY nice indeed</productViewSku>
+ <bandwidth />
+ <timeSpent>180</timeSpent>
+ <timeSpentPretty>3 min 0s</timeSpentPretty>
+ <pageviewPosition>4</pageviewPosition>
+ <title>View product left in cart</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>View product left in cart</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>9</pageId>
+ <productViewPrice>333</productViewPrice>
+ <productViewName>PRODUCT THREE LEFT in cart</productViewName>
+ <productViewSku>SKU VERY nice indeed</productViewSku>
+ <bandwidth />
+ <timeSpent>180</timeSpent>
+ <timeSpentPretty>3 min 0s</timeSpentPretty>
+ <pageviewPosition>5</pageviewPosition>
+ <title>View product left in cart</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>action</type>
+ <url>http://example.org/index.htm</url>
+ <pageTitle>View product left in cart</pageTitle>
+ <pageIdAction>2</pageIdAction>
+
+
+ <pageId>10</pageId>
+ <productViewName>PRODUCT TWO LEFT in cart</productViewName>
+ <productViewSku>SKU IN ABANDONED CART TWO</productViewSku>
+ <bandwidth />
+ <timeSpent>361</timeSpent>
+ <timeSpentPretty>6 min 1s</timeSpentPretty>
+ <pageviewPosition>6</pageviewPosition>
+ <title>View product left in cart</title>
+ <subtitle>http://example.org/index.htm</subtitle>
+ <icon />
+ <iconSVG>plugins/Morpheus/images/action.svg</iconSVG>
+
+ <productViewCategories>
+ <row>Category TWO LEFT in cart</row>
+ <row>second category</row>
+ </productViewCategories>
+ <bandwidth_pretty>0 M</bandwidth_pretty>
+ </row>
+ <row>
+ <type>ecommerceAbandonedCart</type>
+ <revenue>2510.11</revenue>
+ <items>4</items>
+
+
+ <itemDetails>
+ <row>
+ <itemSKU>SKU VERY nice indeed</itemSKU>
+ <itemName>PRODUCT THREE LEFT in cart</itemName>
+ <itemCategory>Electronics &amp; Cameras</itemCategory>
+ <price>10</price>
+ <quantity>1</quantity>
+ <categories>
+ <row>Electronics &amp; Cameras</row>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>SKU IN ABANDONED CART ONE</itemSKU>
+ <itemName>PRODUCT ONE LEFT in cart</itemName>
+ <itemCategory />
+ <price>500.11</price>
+ <quantity>1</quantity>
+ <categories>
+ </categories>
+ </row>
+ <row>
+ <itemSKU>SKU IN ABANDONED CART TWO</itemSKU>
+ <itemName>PRODUCT TWO LEFT in cart</itemName>
+ <itemCategory>Category TWO LEFT in cart</itemCategory>
+ <price>1000</price>
+ <quantity>2</quantity>
+ <categories>
+ <row>Category TWO LEFT in cart</row>
+ <row>second category</row>
+ </categories>
+ </row>
+ </itemDetails>
+ <icon>plugins/Morpheus/images/ecommerceAbandonedCart.png</icon>
+ <iconSVG>plugins/Morpheus/images/ecommerceAbandonedCart.svg</iconSVG>
+ <title>Abandoned Cart</title>
+ <subtitle>$2,510.11 revenue - 4 items: PRODUCT THREE LEFT in cart, PRODUCT ONE LEFT in cart, PRODUCT TWO LEFT in cart)</subtitle>
+
+ </row>
+ </actionDetails>
+ <goalConversions>0</goalConversions>
+ <siteCurrency>USD</siteCurrency>
+ <siteCurrencySymbol>$</siteCurrencySymbol>
+
+
+
+
+ <siteName>Piwik test</siteName>
+
+
+
+
+
+
+ <userId />
+ <visitorType>returning</visitorType>
+ <visitorTypeIcon>plugins/Live/images/returningVisitor.png</visitorTypeIcon>
+ <visitConverted>1</visitConverted>
+ <visitConvertedIcon>plugins/Morpheus/images/goal.svg</visitConvertedIcon>
+ <visitCount>2</visitCount>
+ <visitEcommerceStatus>orderedThenAbandonedCart</visitEcommerceStatus>
+ <visitEcommerceStatusIcon>plugins/Morpheus/images/ecommerceOrder.svg</visitEcommerceStatusIcon>
+ <daysSinceFirstVisit>0</daysSinceFirstVisit>
+ <secondsSinceFirstVisit>5760</secondsSinceFirstVisit>
+ <daysSinceLastEcommerceOrder>0</daysSinceLastEcommerceOrder>
+ <secondsSinceLastEcommerceOrder>0</secondsSinceLastEcommerceOrder>
+ <visitDuration>3961</visitDuration>
+ <visitDurationPretty>1 hours 6 min</visitDurationPretty>
+ <searches>0</searches>
+ <actions>6</actions>
+ <interactions>6</interactions>
+ <referrerType>direct</referrerType>
+ <referrerTypeName>Direct Entry</referrerTypeName>
+ <referrerName />
+ <referrerKeyword />
+ <referrerKeywordPosition />
+ <referrerUrl />
+ <referrerSearchEngineUrl />
+ <referrerSearchEngineIcon />
+ <referrerSocialNetworkUrl />
+ <referrerSocialNetworkIcon />
+ <languageCode>pl</languageCode>
+ <language>Polish</language>
+ <deviceType>Desktop</deviceType>
+ <deviceTypeIcon>plugins/Morpheus/icons/dist/devices/desktop.png</deviceTypeIcon>
+ <deviceBrand>Unknown</deviceBrand>
+ <deviceModel>Generic Desktop</deviceModel>
+ <operatingSystem>Windows XP</operatingSystem>
+ <operatingSystemName>Windows</operatingSystemName>
+ <operatingSystemIcon>plugins/Morpheus/icons/dist/os/WIN.png</operatingSystemIcon>
+ <operatingSystemCode>WIN</operatingSystemCode>
+ <operatingSystemVersion>XP</operatingSystemVersion>
+ <browserFamily>Gecko</browserFamily>
+ <browserFamilyDescription>Gecko (Firefox)</browserFamilyDescription>
+ <browser>Firefox 3.6</browser>
+ <browserName>Firefox</browserName>
+ <browserIcon>plugins/Morpheus/icons/dist/browsers/FF.png</browserIcon>
+ <browserCode>FF</browserCode>
+ <browserVersion>3.6</browserVersion>
+ <totalEcommerceRevenue>13351.11</totalEcommerceRevenue>
+ <totalEcommerceConversions>4</totalEcommerceConversions>
+ <totalEcommerceItems>12</totalEcommerceItems>
+ <totalAbandonedCartsRevenue>7530.33</totalAbandonedCartsRevenue>
+ <totalAbandonedCarts>3</totalAbandonedCarts>
+ <totalAbandonedCartsItems>12</totalAbandonedCartsItems>
+ <events>0</events>
+ <continent>Europe</continent>
+ <continentCode>eur</continentCode>
+ <country>Poland</country>
+ <countryCode>pl</countryCode>
+ <countryFlag>plugins/Morpheus/icons/dist/flags/pl.png</countryFlag>
+ <region />
+ <regionCode />
+ <city />
+ <location>Poland</location>
+ <latitude />
+ <longitude />
+ <visitLocalTime>12:34:06</visitLocalTime>
+ <visitLocalHour>12</visitLocalHour>
+ <daysSinceLastVisit>0</daysSinceLastVisit>
+ <secondsSinceLastVisit>5760</secondsSinceLastVisit>
+ <resolution>1024x768</resolution>
+ <plugins>cookie, flash, java</plugins>
+ <pluginsIcons>
+ <row>
+ <pluginIcon>plugins/Morpheus/icons/dist/plugins/cookie.png</pluginIcon>
+ <pluginName>cookie</pluginName>
+ </row>
+ <row>
+ <pluginIcon>plugins/Morpheus/icons/dist/plugins/flash.png</pluginIcon>
+ <pluginName>flash</pluginName>
+ </row>
+ <row>
+ <pluginIcon>plugins/Morpheus/icons/dist/plugins/java.png</pluginIcon>
+ <pluginName>java</pluginName>
+ </row>
+ </pluginsIcons>
+ <customVariables>
+ <row>
+ <customVariableName3>VisitorName</customVariableName3>
+ <customVariableValue3>Great name!</customVariableValue3>
+ </row>
+ <row>
+ <customVariableName4>ValueIsZero</customVariableName4>
+ <customVariableValue4>0</customVariableValue4>
+ </row>
+ <row>
+ <customVariableName5>VisitorType</customVariableName5>
+ <customVariableValue5>NewLoggedOut</customVariableValue5>
+ </row>
+ </customVariables>
+ </row>
+</result> \ No newline at end of file
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html
index 607a1a85cc..5d5182028f 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_and_graph__ScheduledReports.generateReport_week.original.html
@@ -145,7 +145,7 @@
</li>
<li style="font-size:15px;line-height:24px;">
<a href="#VisitTime_getVisitInformationPerServerTime" style="text-decoration:none; color: #0d0d0d;">
- Visits per server time
+ Visits per hour in the site&#039;s timezone
</a>
</li>
<li style="font-size:15px;line-height:24px;">
@@ -2543,7 +2543,7 @@
</a></p>
<h2 id="VisitTime_getVisitInformationPerServerTime" style=" color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif; font-size: 24pt; font-weight:normal; margin:45px 0 30px 0;">
- Visits per server time
+ Visits per hour in the site&#039;s timezone
</h2>
<img alt=""
@@ -2558,7 +2558,7 @@
<table style="border-collapse:collapse; border:1px solid rgb(231,231,231); padding:5px;">
<thead style="background-color: #f2f2f2;">
<th style="border-bottom:1px solid rgb(231,231,231);font-size: 15px;text-align: left;font-weight:normal;padding:13px 0 13px 10px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
- &nbsp;Server time - hour (Start of visit)&nbsp;&nbsp;
+ &nbsp;Site time - hour (Start of visit)&nbsp;&nbsp;
</th>
<th style="border-bottom:1px solid rgb(231,231,231);font-size: 15px;text-align: left;font-weight:normal;padding:13px 0 13px 10px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif; text-align:right;">
&nbsp;Visits&nbsp;&nbsp;
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html
index 0891bb587f..2ee14b8d70 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_html_tables_only__ScheduledReports.generateReport_week.original.html
@@ -145,7 +145,7 @@
</li>
<li style="font-size:15px;line-height:24px;">
<a href="#VisitTime_getVisitInformationPerServerTime" style="text-decoration:none; color: #0d0d0d;">
- Visits per server time
+ Visits per hour in the site&#039;s timezone
</a>
</li>
<li style="font-size:15px;line-height:24px;">
@@ -2403,7 +2403,7 @@
</a></p>
<h2 id="VisitTime_getVisitInformationPerServerTime" style=" color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif; font-size: 24pt; font-weight:normal; margin:45px 0 30px 0;">
- Visits per server time
+ Visits per hour in the site&#039;s timezone
</h2>
@@ -2411,7 +2411,7 @@
<table style="border-collapse:collapse; border:1px solid rgb(231,231,231); padding:5px;">
<thead style="background-color: #f2f2f2;">
<th style="border-bottom:1px solid rgb(231,231,231);font-size: 15px;text-align: left;font-weight:normal;padding:13px 0 13px 10px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
- &nbsp;Server time - hour (Start of visit)&nbsp;&nbsp;
+ &nbsp;Site time - hour (Start of visit)&nbsp;&nbsp;
</th>
<th style="border-bottom:1px solid rgb(231,231,231);font-size: 15px;text-align: left;font-weight:normal;padding:13px 0 13px 10px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif; text-align:right;">
&nbsp;Visits&nbsp;&nbsp;
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv
index bb894a6f45..a9d3d6e154 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_csv__ScheduledReports.generateReport_week.original.csv
@@ -112,7 +112,7 @@ label,nb_visits,nb_actions,conversion_rate,nb_actions_per_visit,avg_time_on_site
22,0,0,0%,0,00:00:00,0%
23,0,0,0%,0,00:00:00,0%
-Visits per server time
+Visits per hour in the site's timezone
label,nb_visits,nb_actions,revenue,nb_actions_per_visit,avg_time_on_site,bounce_rate
00,1,4,$10,4,00:12:01,0%
01,1,6,$0,6,01:06:01,0%
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf
index b787e2fc06..d28180fa4a 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_week.original.pdf
Binary files differ
diff --git a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_tsv__ScheduledReports.generateReport_week.original.tsv b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_tsv__ScheduledReports.generateReport_week.original.tsv
index 4fc441e353..8821bda686 100644
--- a/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_tsv__ScheduledReports.generateReport_week.original.tsv
+++ b/plugins/Ecommerce/tests/System/expected/test_ecommerceOrderWithItems_schedrep_in_tsv__ScheduledReports.generateReport_week.original.tsv
@@ -112,7 +112,7 @@ label nb_visits nb_actions conversion_rate nb_actions_per_visit avg_time_on_site
22 0 0 0% 0 00:00:00 0%
23 0 0 0% 0 00:00:00 0%
-Visits per server time
+Visits per hour in the site's timezone
label nb_visits nb_actions revenue nb_actions_per_visit avg_time_on_site bounce_rate
00 1 4 $10 4 00:12:01 0%
01 1 6 $0 6 01:06:01 0%
diff --git a/plugins/Events/lang/ga.json b/plugins/Events/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Events/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Events/lang/id.json b/plugins/Events/lang/id.json
index b8474e2c2c..ead95c34d2 100644
--- a/plugins/Events/lang/id.json
+++ b/plugins/Events/lang/id.json
@@ -1,12 +1,40 @@
{
"Events": {
+ "AvgEventValue": "Nilai Peristiwa rata-rata adalah: %s",
"AvgValue": "Nilai rata-rata",
- "Event": "Acara",
- "EventAction": "Tindakan Acara",
- "EventActions": "Tindakan Acara",
- "EventName": "Nama Acara",
- "EventNames": "Nama Acara",
- "Events": "Acara",
- "PluginDescription": "Lacak Acara dan dapatkan laporan tentang aktivitas pengunjung Anda."
+ "AvgValueDocumentation": "Nilai rata-rata dari semua nilai untuk peristiwa ini",
+ "Category": "Kategori",
+ "Event": "Peristiwa",
+ "EventAction": "Tindakan Peristiwa",
+ "EventActions": "Tindakan Peristiwa",
+ "EventActionsReportDocumentation": "Laporan ini menunjukkan jumlah dari setiap tindakan peristiwa terjadi. Anda dapat melihat kategori dan nama peristiwa yang dilacak bersama dengan setiap tindakan peristiwa di subtabel baris. Anda dapat mengubah apa yang ditampilkan dengan mengubah dimensi sekunder melalui tautan di bagian bawah laporan.",
+ "EventCategories": "Kategori Peristiwa",
+ "EventCategoriesReportDocumentation": "Laporan ini menunjukkan kategori dari setiap peristiwa yang dilacak dan berapa kali peristiwa itu terjadi. Anda dapat melihat tindakan dan nama peristiwa yang dilacak bersama dengan setiap kategori peristiwa di setiap subtabel baris. Anda dapat mengubah apa yang ditampilkan dengan mengubah dimensi sekunder melalui tautan di bagian bawah laporan.",
+ "EventCategory": "Kategori Peristiwa",
+ "EventName": "Nama Peristiwa",
+ "EventNames": "Nama Peristiwa",
+ "EventNamesReportDocumentation": "Laporan ini menunjukkan kepada Anda nama yang terkait dengan setiap peristiwa yang dilacak dan berapa kali peristiwa itu terjadi. Anda dapat melihat tindakan dan kategori peristiwa yang dilacak bersama dengan setiap nama peristiwa di setiap subtabel baris. Anda dapat mengubah apa yang ditampilkan dengan mengubah dimensi sekunder melalui tautan di bagian bawah laporan.",
+ "EventUrl": "URL Peristiwa",
+ "EventUrls": "URL Peristiwa",
+ "EventValue": "Nilai peristiwa",
+ "EventValueTooltip": "Nilai Peristiwa Total adalah jumlah dari %1$s nilai peristiwa %2$s antara nilai minimum %3$s dan nilai maksimum %4$s.",
+ "Events": "Peristiwa",
+ "EventsSubcategoryHelp1": "Bagian Peristiwa menawarkan laporan tentang peristiwa khusus yang terkait dengan situs Anda. Peristiwa biasanya memerlukan konfigurasi khusus. Setelah dikonfigurasi, Anda dapat meninjau laporan yang dikelompokkan menurut kategori, tindakan, dan nama.",
+ "EventsSubcategoryHelp2": "Pelajari lebih lanjut tentang pelacakan peristiwa di sini.",
+ "EventsWithValue": "Peristiwa dengan nilai",
+ "EventsWithValueDocumentation": "Jumlah peristiwa di mana nilai Peristiwa ditetapkan",
+ "MaxValue": "Nilai Peristiwa maksimum",
+ "MaxValueDocumentation": "Nilai maksimum untuk peristiwa ini",
+ "MinValue": "Nilai Peristiwa minimum",
+ "MinValueDocumentation": "Nilai minimum untuk peristiwa ini",
+ "PluginDescription": "Lacak Peristiwa dan dapatkan laporan tentang aktivitas pengunjung Anda.",
+ "SecondaryDimension": "Dimensi sekunder adalah %s.",
+ "SwitchToSecondaryDimension": "Beralih ke %s",
+ "TopEvents": "Peristiwa Teratas",
+ "TotalEvents": "Total peristiwa",
+ "TotalEventsDocumentation": "Jumlah total peristiwa",
+ "TotalValue": "Nilai peristiwa",
+ "TotalValueDocumentation": "Jumlah nilai peristiwa",
+ "ViewEvents": "Lihat Peristiwa"
}
}
diff --git a/plugins/Feedback/lang/ga.json b/plugins/Feedback/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Feedback/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Feedback/lang/id.json b/plugins/Feedback/lang/id.json
index 255e6cfca1..76e908b36b 100644
--- a/plugins/Feedback/lang/id.json
+++ b/plugins/Feedback/lang/id.json
@@ -1,22 +1,86 @@
{
"Feedback": {
+ "AppreciateFeedback": "Kami sangat menghargai umpan balik Anda",
"CommunityHelp": "Bantuan Komunitas",
"ContactUs": "Kontak kami",
- "DoYouHaveBugReportOrFeatureRequest": "Apakah Anda ada laporan kutu atau permintaan fitur?",
+ "DoYouHaveBugReportOrFeatureRequest": "Apakah Anda ingin melaporan kesalahan atau mengajukan permintaan fitur?",
+ "FAQs": "FAQ",
+ "FeedbackSubtitle": "Inilah kesempatan Anda untuk memintanya! Tolong jelaskan sedetail mungkin. <br> Umpan balik Anda akan membantu kami dalam meningkatkan Matomo. %1$s",
+ "FeedbackTitle": "Tolong bantu kami meningkatkan Matomo",
+ "FormNotEnoughFeedbackText": "Jangan lupa untuk membagikan umpan balik Anda di bawah ini.",
"Forums": "Forum",
"HowCanWeHelp": "Bagaimana kami bisa membantu?",
+ "HowToCreateTicket": "Silakan baca rekomendasi untuk menulis %1$slaporan kesalahan%2$s atau %3$spermintaan fitur yang baik%4$s. Kemudian daftar atau masuk di %5$spelacak masalah kami%6$s dan buat %7$slaporan baru%8$s.",
"IWantTo": "Saya ingin:",
"LearnWaysToParticipate": "Pelajari bagaimana kamu dapat %1$s berpartisipasi%2$s",
"ManuallySendEmailTo": "Silakan kirim manual pesan Anda ke",
+ "MessageBodyValidationError": "Isi pesan terlalu pendek (minimal 10 karakter).",
"NeverAskMeAgain": "Jangan tanyakan saya lagi",
+ "NotTrackingVisits": "Matomo tidak melacak kunjungan apa pun",
+ "PleaseLeaveExternalReviewForMatomo": "Kami sangat menghargai tanggapan Anda. Jika Anda memiliki waktu sebentar, silakan bagikan pemikiran Anda tentang salah satu situs ini dan menginspirasi orang lain untuk bergabung dengan revolusi data kami.",
+ "PluginDescription": "Kirim Umpan Balik Anda ke Tim Matomo. Bagikan ide dan saran Anda untuk menjadikan Matomo sebagai platform analitik terbaik di dunia!",
+ "Policy": "Pesan dan alamat surel Anda akan dikirimkan kepada kami dengan mengirimkan formulir ini. Informasi tersebut hanya akan digunakan untuk meningkatkan produk dan layanan kami. Data Anda akan diproses oleh kami, penyedia hosting kami, dan penyedia tiket dukungan kami. Untuk informasi lebih lanjut, lihat %1$sKebijakan Privasi Matomo%2$s.",
+ "PopularHelpTopics": "Topik bantuan populer",
+ "PrivacyClaim": "Matomo menghormati %1$sprivasi%2$s Anda dan memberi Anda kendali penuh atas data Anda.",
"ProfessionalHelp": "Bantuan Profesional",
+ "ProfessionalServicesDedicatedSupport": "Dukungan dari anggota tim Matomo yang berdedikasi di setiap langkahnya",
+ "ProfessionalServicesEmailAlerts": "Peringatan surel mengenai rilis keamanan untuk Matomo",
+ "ProfessionalServicesIntro": "Dengan Berlangganan Matomo On-Premise Support, izinkan tim kami yang berpengalaman membantu Anda secara daring dalam memanfaatkan Matomo Analytics untuk mengembangkan bisnis Anda.",
+ "ProfessionalServicesOfferIntro": "Layanan apa yang dapat Anda manfaatkan?",
+ "ProfessionalServicesOnboarding": "Kuesioner sosialisasi dan pertemuan dengan anggota Dukungan Matomo",
+ "ProfessionalServicesSupport": "Layanan permintaan daring 24/7",
+ "ProfessionalServicesTraining": "Akses eksklusif ke video pelatihan Matomo",
"PurgeOldData": "Saya ingin menghapus beberapa data lama",
+ "Question0": "Apa masalah terbesar dalam menggunakan Matomo dan mengapa?",
+ "Question1": "Hal apa yang ingin Anda lihat perbaikannya di Matomo dan mengapa?",
+ "Question2": "Apa fitur yang paling banyak Anda lewatkan di Matomo dan mengapa?",
+ "Question3": "Apa tujuan utama Anda menggunakan Matomo?",
+ "Question4": "Apa kekhawatiran utama Anda tentang Matomo?",
+ "RateFeatureConfigurable": "Dapat dikonfigurasi",
+ "RateFeatureDislikeAddMissingFeatures": "Tambahkan fitur yang hilang",
+ "RateFeatureDislikeFixBugs": "Perbaikan kesalahan",
"RateFeatureDislikeMakeEasier": "Mudah digunakan",
- "RateFeatureThankYouTitle": "Terima kasih atas penilaian '%s' Anda!",
+ "RateFeatureDislikeSpeedUp": "Tingkatkan kecepatan",
+ "RateFeatureEasyToUse": "Mudah digunakan",
+ "RateFeatureLeaveMessageDislike": "Bagaimana kami dapat meningkatkan fitur ini?",
+ "RateFeatureLeaveMessageDislikeExtra": "Tolong beri tahu kami lebih lanjut tentang bagaimana kami bisa melakukan yang lebih baik sehingga kami dapat meningkatkan Matomo.",
+ "RateFeatureLeaveMessageDislikeExtraBugs": "Kami minta maaf karena Anda mengalami masalah, tolong beri tahu kami secara detail mengenai permasalahan yang terjadi.",
+ "RateFeatureLeaveMessageDislikeExtraEasier": "Apakah ada bagian tertentu dari fitur ini yang menurut Anda sulit untuk digunakan?",
+ "RateFeatureLeaveMessageDislikeExtraMissing": "Fitur apa yang Anda lewatkan?",
+ "RateFeatureLeaveMessageDislikeExtraSpeed": "Bisakah Anda memberikan indikasi seberapa lambat fitur ini bagi Anda? Bisakah Anda berbagi mengenai jumlah kunjungan per bulan yang biasanya Anda catat?",
+ "RateFeatureLeaveMessageDislikeNamedFeature": "Bagaimana kami meningkatkan %1$s?",
+ "RateFeatureLeaveMessageLike": "Apa yang paling Anda sukai dari fitur ini?",
+ "RateFeatureLeaveMessageLikeExtra": "Tolong beri tahu kami lebih lanjut tentang bagaimana Anda menggunakan fitur ini sehingga kami dapat meningkatkan Matomo di masa mendatang.",
+ "RateFeatureLeaveMessageLikeExtraConfigurable": "Apakah ada opsi konfigurasi yang menurut Anda sangat berguna? Apakah ada opsi lain yang ingin Anda lihat?",
+ "RateFeatureLeaveMessageLikeExtraEasy": "Apakah ada hal lain yang dapat membuat Matomo menjadi lebih mudah digunakan atau meningkatkan pengalaman Anda?",
+ "RateFeatureLeaveMessageLikeExtraUseful": "Bisakah Anda memberi tahu kami sedikit tentang bagaimana Anda menggunakan informasi ini dan hal apa yang menurut Anda paling berguna tentang hal tersebut?",
+ "RateFeatureLeaveMessageLikeNamedFeature": "Apa yang paling Anda sukai dari %1$s?",
+ "RateFeatureOtherReason": "Alasan lain",
+ "RateFeatureSendFeedbackInformation": "Platform Matomo Anda akan mengirimkan surel (termasuk alamat surel Anda) kepada kami (tim Matomo) sehingga kami dapat menghubungi Anda jika Anda memiliki pertanyaan.",
+ "RateFeatureThankYouTitle": "Terima kasih atas penilaian Anda '%s'!",
+ "RateFeatureTitle": "Apakah Anda menyukai fitur '%s'? Tolong beri tahu kami agar kami dapat meningkatkan Matomo.",
+ "RateFeatureUsefulInfo": "Informasi yang berguna",
+ "ReferBannerEmailShareBody": "Saya memilih Matomo, alternatif etis untuk Google Analytics yang memberi saya 100%% kepemilikan data dan melindungi data pengunjung situs web saya.\nSaya membagikan pesan ini dengan harapan Anda juga akan mengambil kembali kekuasaan dari Google dan mendapatkan kepemilikan penuh atas data Anda sendiri.\n\nLihat Matomo di https://matomo.org",
+ "ReferBannerEmailShareSubject": "Rujuk mereka ke Matomo Analytics sekarang!",
+ "ReferBannerLonger": "Tolong bantu kami untuk menyebarkan kabar tentang kami sehingga lebih banyak orang mendapatkan kendali atas data analitik mereka.",
+ "ReferBannerSocialShareText": "Jika Anda menggunakan Google Analytics, tetap kendalikan dengan beralih ke alternatif etis seperti Matomo sekarang!",
+ "ReferBannerTitle": "Percaya pada Matomo?",
+ "ReferMatomo": "Rujuk Matomo",
"RemindMeLater": "Ingatkan saya nani",
- "SendFeedback": "Kirim Umpanbalik",
+ "RemoveOtherLabel": "Saya ingin melihat data saya yang 'Lainnya'",
+ "ReviewMatomoTitle": "Menyukai Matomo?",
+ "SearchHelpResources": "Cari sumber bantuan matomo.org",
+ "SendFeedback": "Kirim Umpan Balik",
"ThankYou": "Terima kasih telah membantu kami menjadikan Matomo lebih baik!",
+ "ThankYouForSpreading": "Terima kasih karena telah menyebarkan kabar dan membuat web yang lebih aman",
+ "ThankYouHeart": "Terima kasih karena telah membantu kami untuk membuat Matomo menjadi lebih baik! %1$s",
+ "ThankYourForFeedback": "Kami sangat menghargai umpan balik Anda! %1$s Kami akan menghubungi Anda jika kami memerlukan informasi lebih lanjut tentang umpan balik Anda.",
"TopLinkTooltip": "Katakan apa yang Anda pikirkan, atau membutuhkan Bantuan Profesional.",
- "UserGuides": "Panduan pengguna"
+ "TrackMultipleSites": "Saya perlu melacak beberapa situs atau subdomain",
+ "UserGuides": "Panduan pengguna",
+ "ViewAnswersToFAQ": "Lihat jawaban atas %1$sPertanyaan yang Sering Diajukan%2$s",
+ "ViewUserGuides": "Pelajari cara mengonfigurasi Matomo dan cara menganalisis data Anda secara efektif dengan %1$spanduan pengguna%2$s kami",
+ "VisitTheForums": "Kunjungi %1$s Forum%2$s dan dapatkan bantuan dari komunitas pengguna Matomo",
+ "WontShowAgain": "Kami tidak akan menampilkan pesan ini lagi."
}
}
diff --git a/plugins/Feedback/vue/dist/Feedback.umd.js b/plugins/Feedback/vue/dist/Feedback.umd.js
index aae4ee85ad..97d46b5c17 100644
--- a/plugins/Feedback/vue/dist/Feedback.umd.js
+++ b/plugins/Feedback/vue/dist/Feedback.umd.js
@@ -144,7 +144,7 @@ var external_CoreHome_ = __webpack_require__("19dc");
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Feedback/vue/src/RateFeature/RateFeature.vue?vue&type=template&id=61337770
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Feedback/vue/src/RateFeature/RateFeature.vue?vue&type=template&id=bc746c6c
var _hoisted_1 = ["title"];
var _hoisted_2 = {
@@ -258,15 +258,33 @@ var _hoisted_32 = {
"text-align": "left"
}
};
-var _hoisted_33 = ["innerHTML"];
-var _hoisted_34 = ["innerHTML"];
-var _hoisted_35 = ["innerHTML"];
-var _hoisted_36 = ["innerHTML"];
-var _hoisted_37 = ["innerHTML"];
-var _hoisted_38 = ["innerHTML"];
-var _hoisted_39 = ["innerHTML"];
-var _hoisted_40 = ["innerHTML"];
-var _hoisted_41 = ["innerHTML"];
+var _hoisted_33 = {
+ key: 0
+};
+var _hoisted_34 = {
+ key: 1
+};
+var _hoisted_35 = {
+ key: 2
+};
+var _hoisted_36 = {
+ key: 3
+};
+var _hoisted_37 = {
+ key: 4
+};
+var _hoisted_38 = {
+ key: 5
+};
+var _hoisted_39 = {
+ key: 6
+};
+var _hoisted_40 = {
+ key: 7
+};
+var _hoisted_41 = {
+ key: 8
+};
var _hoisted_42 = {
key: 9,
class: "error-text"
@@ -398,34 +416,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
return _ctx.dislikeReason = $event;
}),
class: "rateradio"
- }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.dislikeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureOtherReason')), 1)]), _hoisted_31])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason || _ctx.dislikeReason ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_32, [_ctx.likeReason && _ctx.likeReason == 'useful' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
- key: 0,
- innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtraUseful')
- }, null, 8, _hoisted_33)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason && _ctx.likeReason == 'easy' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
- key: 1,
- innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtraEasy')
- }, null, 8, _hoisted_34)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason && _ctx.likeReason == 'configurable' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
- key: 2,
- innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtraConfigurable')
- }, null, 8, _hoisted_35)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason && _ctx.likeReason == 'likeother' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
- key: 3,
- innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtra')
- }, null, 8, _hoisted_36)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'missingfeatures' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
- key: 4,
- innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraMissing')
- }, null, 8, _hoisted_37)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'makeeasier' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
- key: 5,
- innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraEasier')
- }, null, 8, _hoisted_38)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'fixbugs' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
- key: 6,
- innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraBugs')
- }, null, 8, _hoisted_39)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'speedup' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
- key: 7,
- innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraSpeed')
- }, null, 8, _hoisted_40)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason == 'dislikeother' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
- key: 8,
- innerHTML: _ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtra')
- }, null, 8, _hoisted_41)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.errorMessage ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_42, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.errorMessage), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("textarea", {
+ }, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelRadio"], _ctx.dislikeReason]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureOtherReason')), 1)]), _hoisted_31])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason || _ctx.dislikeReason ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_32, [_ctx.likeReason && _ctx.likeReason === 'useful' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_33, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtraUseful')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason && _ctx.likeReason === 'easy' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_34, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtraEasy')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason && _ctx.likeReason === 'configurable' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_35, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtraConfigurable')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.likeReason && _ctx.likeReason === 'likeother' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_36, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageLikeExtra')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason === 'missingfeatures' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_37, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraMissing')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason === 'makeeasier' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_38, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraEasier')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason === 'fixbugs' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_39, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraBugs')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason === 'speedup' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_40, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtraSpeed')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.dislikeReason && _ctx.dislikeReason === 'dislikeother' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_41, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_RateFeatureLeaveMessageDislikeExtra')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.errorMessage ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_42, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.errorMessage), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("textarea", {
ref: "feedbackText",
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["materialize-textarea", {
'has-error': _ctx.errorMessage
@@ -436,7 +427,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
})
}, null, 2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.feedbackMessage]]), _ctx.likeReason || _ctx.dislikeReason ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
key: 10,
- innerHTML: _ctx.translate('Feedback_Policy', "\n <a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>", '</a>')
+ innerHTML: _ctx.$sanitize(_ctx.translate('Feedback_Policy', "\n <a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>", '</a>'))
}, null, 8, _hoisted_43)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
class: "btn",
type: "button",
@@ -458,7 +449,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_46, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", {
- innerHTML: _ctx.translate('Feedback_ThankYouHeart', "<i class='icon-heart red-text'></i>")
+ innerHTML: _ctx.$sanitize(_ctx.translate('Feedback_ThankYouHeart', "<i class='icon-heart red-text'></i>"))
}, null, 8, _hoisted_47), _ctx.like ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_48, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ReviewLinks)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.like ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_49, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Feedback_AppreciateFeedback')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "button",
value: _ctx.translate('General_Close'),
@@ -468,7 +459,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
_: 1
}, 8, ["modelValue"])], 8, _hoisted_1);
}
-// CONCATENATED MODULE: ./plugins/Feedback/vue/src/RateFeature/RateFeature.vue?vue&type=template&id=61337770
+// CONCATENATED MODULE: ./plugins/Feedback/vue/src/RateFeature/RateFeature.vue?vue&type=template&id=bc746c6c
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Feedback/vue/src/ReviewLinks/ReviewLinks.vue?vue&type=template&id=9a880eb6
@@ -605,54 +596,54 @@ RateFeaturevue_type_script_lang_ts.render = render
},
directiveName: 'piwikRateFeature'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue?vue&type=template&id=1d8f8290
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue?vue&type=template&id=4e04fa3c
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_1 = {
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_1 = {
key: 0,
class: "bannerHeader"
};
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("i", {
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("i", {
class: "icon-heart red-text"
}, null, -1);
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("i", {
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("i", {
class: "icon-close white-text"
}, null, -1);
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_4 = [FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_3];
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_5 = {
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_4 = [FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_3];
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_5 = {
class: "ratefeature"
};
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_6 = {
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_6 = {
class: "ui-confirm ratefeatureDialog"
};
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_7 = ["innerHTML"];
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_7 = ["innerHTML"];
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_9 = {
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_9 = {
class: "messageContainer"
};
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_10 = {
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_10 = {
key: 0,
class: "error-text"
};
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_12 = ["innerHTML"];
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_13 = ["value"];
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_14 = ["value"];
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_15 = {
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_12 = ["innerHTML"];
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_13 = ["value"];
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_14 = ["value"];
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_15 = {
class: "ui-confirm ratefeatureDialog"
};
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_16 = ["innerHTML"];
-var FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_17 = ["value"];
-function FeedbackQuestionvue_type_template_id_1d8f8290_render(_ctx, _cache, $props, $setup, $data, $options) {
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_16 = ["innerHTML"];
+var FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_17 = ["value"];
+function FeedbackQuestionvue_type_template_id_4e04fa3c_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_MatomoDialog = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("MatomoDialog");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [!_ctx.isHidden ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("Feedback_FeedbackTitle")) + " ", 1), FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_2]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [!_ctx.isHidden ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("Feedback_FeedbackTitle")) + " ", 1), FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_2]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
onClick: _cache[0] || (_cache[0] = function () {
return _ctx.showQuestion && _ctx.showQuestion.apply(_ctx, arguments);
}),
@@ -662,7 +653,7 @@ function FeedbackQuestionvue_type_template_id_1d8f8290_render(_ctx, _cache, $pro
onClick: _cache[1] || (_cache[1] = function () {
return _ctx.disableReminder && _ctx.disableReminder.apply(_ctx, arguments);
})
- }, FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_4)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_MatomoDialog, {
+ }, FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_4)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_MatomoDialog, {
modelValue: _ctx.showFeedbackForm,
"onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
return _ctx.showFeedbackForm = $event;
@@ -672,9 +663,9 @@ function FeedbackQuestionvue_type_template_id_1d8f8290_render(_ctx, _cache, $pro
})
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("Feedback_Question".concat(_ctx.question))), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
- innerHTML: _ctx.translate('Feedback_FeedbackSubtitle', "<i class='icon-heart red-text'></i>")
- }, null, 8, FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_7), FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_9, [_ctx.errorMessage ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.errorMessage), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("textarea", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("Feedback_Question".concat(_ctx.question))), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
+ innerHTML: _ctx.$sanitize(_ctx.translate('Feedback_FeedbackSubtitle', "<i class='icon-heart red-text'></i>"))
+ }, null, 8, FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_7), FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_9, [_ctx.errorMessage ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.errorMessage), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("textarea", {
id: "message",
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
'has-error': _ctx.errorMessage
@@ -682,17 +673,17 @@ function FeedbackQuestionvue_type_template_id_1d8f8290_render(_ctx, _cache, $pro
"onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
return _ctx.feedbackMessage = $event;
})
- }, null, 2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.feedbackMessage]])]), FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_11, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
- innerHTML: _ctx.translate('Feedback_Policy', "<a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>", '</a>')
- }, null, 8, FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_12), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 2), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.feedbackMessage]])]), FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_11, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
+ innerHTML: _ctx.$sanitize(_ctx.feedbackPolicy)
+ }, null, 8, FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_12), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "button",
role: "validation",
value: _ctx.translate('Feedback_SendFeedback')
- }, null, 8, FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_13), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 8, FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_13), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "button",
role: "cancel",
value: _ctx.translate('General_Cancel')
- }, null, 8, FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_14)])];
+ }, null, 8, FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_14)])];
}),
_: 1
}, 8, ["modelValue"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_MatomoDialog, {
@@ -702,18 +693,18 @@ function FeedbackQuestionvue_type_template_id_1d8f8290_render(_ctx, _cache, $pro
})
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("Feedback_ThankYou")), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
- innerHTML: _ctx.translate('Feedback_ThankYourForFeedback', "<i class='icon-heart red-text'></i>")
- }, null, 8, FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_16), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate("Feedback_ThankYou")), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
+ innerHTML: _ctx.$sanitize(_ctx.translate('Feedback_ThankYourForFeedback', "<i class='icon-heart red-text'></i>"))
+ }, null, 8, FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_16), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "button",
role: "cancel",
value: _ctx.translate('General_Close')
- }, null, 8, FeedbackQuestionvue_type_template_id_1d8f8290_hoisted_17)])];
+ }, null, 8, FeedbackQuestionvue_type_template_id_4e04fa3c_hoisted_17)])];
}),
_: 1
}, 8, ["modelValue"])])]);
}
-// CONCATENATED MODULE: ./plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue?vue&type=template&id=1d8f8290
+// CONCATENATED MODULE: ./plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue?vue&type=template&id=4e04fa3c
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue?vue&type=script&lang=ts
@@ -735,6 +726,9 @@ var cookieName = 'feedback-question';
}
return !!this.hide;
+ },
+ feedbackPolicy: function feedbackPolicy() {
+ return Object(external_CoreHome_["translate"])('Feedback_Policy', '<a rel="nofollow" href="https://matomo.org/privacy-policy/" target="_blank">', '</a>');
}
},
data: function data() {
@@ -822,7 +816,7 @@ var cookieName = 'feedback-question';
-FeedbackQuestionvue_type_script_lang_ts.render = FeedbackQuestionvue_type_template_id_1d8f8290_render
+FeedbackQuestionvue_type_script_lang_ts.render = FeedbackQuestionvue_type_template_id_4e04fa3c_render
/* harmony default export */ var FeedbackQuestion = (FeedbackQuestionvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.adapter.ts
diff --git a/plugins/Feedback/vue/dist/Feedback.umd.min.js b/plugins/Feedback/vue/dist/Feedback.umd.min.js
index 7369666c65..423148b782 100644
--- a/plugins/Feedback/vue/dist/Feedback.umd.min.js
+++ b/plugins/Feedback/vue/dist/Feedback.umd.min.js
@@ -1,14 +1,14 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["Feedback"]=t(require("CoreHome"),require("vue")):e["Feedback"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var l=t[n]={i:n,l:!1,exports:{}};return e[n].call(l.exports,l,l.exports,a),l.l=!0,l.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)a.d(n,l,function(t){return e[t]}.bind(null,l));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="plugins/Feedback/vue/dist/",a(a.s="fae3")}({"19dc":function(t,a){t.exports=e},"8bbf":function(e,a){e.exports=t},fae3:function(e,t,a){"use strict";if(a.r(t),a.d(t,"ReviewLinks",(function(){return ce})),a.d(t,"RateFeature",(function(){return be})),a.d(t,"FeedbackQuestion",(function(){return Te})),"undefined"!==typeof window){var n=window.document.currentScript,l=n&&n.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);l&&(a.p=l[1])}var o=a("19dc"),r=a("8bbf"),i=["title"],c={class:"ui-confirm ratefeatureDialog"},s={key:0},d={key:0},u={key:1},b=Object(r["createElementVNode"])("br",null,null,-1),k={class:"row"},m={style:{"text-align":"left","margin-top":"16px"}},p={for:"useful",class:"ratelabel"},j=Object(r["createElementVNode"])("br",null,null,-1),O={for:"easy",class:"ratelabel"},f=Object(r["createElementVNode"])("br",null,null,-1),v={for:"configurable",class:"ratelabel"},g=Object(r["createElementVNode"])("br",null,null,-1),h={for:"likeother",class:"ratelabel"},F={key:1},V={key:0},N={key:1},y=Object(r["createElementVNode"])("br",null,null,-1),E={class:"row"},R={style:{"text-align":"left"}},M={for:"missingfeatures",class:"ratelabel"},w=Object(r["createElementVNode"])("br",null,null,-1),x={for:"makeeasier",class:"ratelabel"},D=Object(r["createElementVNode"])("br",null,null,-1),B={for:"speedup",class:"ratelabel"},_=Object(r["createElementVNode"])("br",null,null,-1),C={for:"fixbugs",class:"ratelabel"},T=Object(r["createElementVNode"])("br",null,null,-1),L={for:"dislikeother",class:"ratelabel"},H=Object(r["createElementVNode"])("br",null,null,-1),S={key:2,class:"messageContainer",style:{"text-align":"left"}},U=["innerHTML"],q=["innerHTML"],Q=["innerHTML"],I=["innerHTML"],A=["innerHTML"],z=["innerHTML"],P=["innerHTML"],$=["innerHTML"],G=["innerHTML"],J={key:9,class:"error-text"},Y=["innerHTML"],K=["title","value"],W=["value"],X={class:"ui-confirm ratefeatureDialog"},Z=["innerHTML"],ee={key:0},te={key:1},ae=["value"];function ne(e,t,a,n,l,o){var ne=Object(r["resolveComponent"])("MatomoDialog"),le=Object(r["resolveComponent"])("ReviewLinks");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",{title:e.translate("Feedback_RateFeatureTitle",e.$sanitize(e.title)),class:"ratefeature"},[Object(r["createElementVNode"])("div",{class:"iconContainer",onMouseenter:t[2]||(t[2]=function(t){return e.expanded=!0}),onMouseleave:t[3]||(t[3]=function(t){return e.expanded=!1})},[Object(r["createElementVNode"])("img",{onClick:t[0]||(t[0]=function(t){e.likeFeature()}),class:"like-icon",src:"plugins/Feedback/vue/src/RateFeature/thumbs-up.png"}),Object(r["createElementVNode"])("img",{onClick:t[1]||(t[1]=function(t){e.dislikeFeature()}),class:"dislike-icon",src:"plugins/Feedback/vue/src/RateFeature/thumbs-down.png"})],32),Object(r["createVNode"])(ne,{modelValue:e.showFeedbackForm,"onUpdate:modelValue":t[14]||(t[14]=function(t){return e.showFeedbackForm=t}),onYes:t[15]||(t[15]=function(t){return e.sendFeedback()}),onValidation:t[16]||(t[16]=function(t){return e.sendFeedback()})},{default:Object(r["withCtx"])((function(){return[Object(r["createElementVNode"])("div",c,[e.like?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",s,[e.title?(Object(r["openBlock"])(),Object(r["createElementBlock"])("h2",d,Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLikeNamedFeature",e.title)),1)):Object(r["createCommentVNode"])("",!0),e.title?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("h2",u,Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLike")),1)),b,Object(r["createElementVNode"])("div",k,[Object(r["createElementVNode"])("div",m,[Object(r["createElementVNode"])("label",p,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"useful",value:"useful","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.likeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureUsefulInfo")),1)]),j,Object(r["createElementVNode"])("label",O,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"easy",value:"easy","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.likeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureEasyToUse")),1)]),f,Object(r["createElementVNode"])("label",v,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"configurable",value:"configurable","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.likeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureConfigurable")),1)]),g,Object(r["createElementVNode"])("label",h,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"likeother",value:"likeother","onUpdate:modelValue":t[7]||(t[7]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.likeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureOtherReason")),1)])])])])):Object(r["createCommentVNode"])("",!0),e.like?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",F,[e.title?(Object(r["openBlock"])(),Object(r["createElementBlock"])("h2",V,Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislikeNamedFeature",e.title)),1)):Object(r["createCommentVNode"])("",!0),e.title?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("h2",N,Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislike")),1)),y,Object(r["createElementVNode"])("div",E,[Object(r["createElementVNode"])("div",R,[Object(r["createElementVNode"])("label",M,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"missingfeatures",value:"missingfeatures","onUpdate:modelValue":t[8]||(t[8]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeAddMissingFeatures")),1)]),w,Object(r["createElementVNode"])("label",x,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"makeeasier",value:"makeeasier","onUpdate:modelValue":t[9]||(t[9]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeMakeEasier")),1)]),D,Object(r["createElementVNode"])("label",B,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"speedup",value:"speedup","onUpdate:modelValue":t[10]||(t[10]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeSpeedUp")),1)]),_,Object(r["createElementVNode"])("label",C,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"fixbugs",value:"fixbugs","onUpdate:modelValue":t[11]||(t[11]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeFixBugs")),1)]),T,Object(r["createElementVNode"])("label",L,[Object(r["withDirectives"])(Object(r["createElementVNode"])("input",{type:"radio",id:"dislikeother",value:"dislikeother","onUpdate:modelValue":t[12]||(t[12]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[r["vModelRadio"],e.dislikeReason]]),Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.translate("Feedback_RateFeatureOtherReason")),1)]),H])])])),e.likeReason||e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",S,[e.likeReason&&"useful"==e.likeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:0,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageLikeExtraUseful")},null,8,U)):Object(r["createCommentVNode"])("",!0),e.likeReason&&"easy"==e.likeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:1,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageLikeExtraEasy")},null,8,q)):Object(r["createCommentVNode"])("",!0),e.likeReason&&"configurable"==e.likeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:2,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageLikeExtraConfigurable")},null,8,Q)):Object(r["createCommentVNode"])("",!0),e.likeReason&&"likeother"==e.likeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:3,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageLikeExtra")},null,8,I)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"missingfeatures"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:4,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraMissing")},null,8,A)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"makeeasier"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:5,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraEasier")},null,8,z)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"fixbugs"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:6,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraBugs")},null,8,P)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"speedup"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:7,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraSpeed")},null,8,$)):Object(r["createCommentVNode"])("",!0),e.dislikeReason&&"dislikeother"==e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:8,innerHTML:e.translate("Feedback_RateFeatureLeaveMessageDislikeExtra")},null,8,G)):Object(r["createCommentVNode"])("",!0),e.errorMessage?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",J,Object(r["toDisplayString"])(e.errorMessage),1)):Object(r["createCommentVNode"])("",!0),Object(r["withDirectives"])(Object(r["createElementVNode"])("textarea",{ref:"feedbackText",class:Object(r["normalizeClass"])(["materialize-textarea",{"has-error":e.errorMessage}]),id:"feedbacktext","onUpdate:modelValue":t[13]||(t[13]=function(t){return e.feedbackMessage=t})},null,2),[[r["vModelText"],e.feedbackMessage]]),e.likeReason||e.dislikeReason?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",{key:10,innerHTML:e.translate("Feedback_Policy","\n <a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>","</a>")},null,8,Y)):Object(r["createCommentVNode"])("",!0)])):Object(r["createCommentVNode"])("",!0),Object(r["createElementVNode"])("input",{class:"btn",type:"button",role:"validation",title:e.translate("Feedback_RateFeatureSendFeedbackInformation"),value:e.translate("Feedback_SendFeedback")},null,8,K),Object(r["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Cancel")},null,8,W)])]})),_:1},8,["modelValue"]),Object(r["createVNode"])(ne,{modelValue:e.ratingDone,"onUpdate:modelValue":t[17]||(t[17]=function(t){return e.ratingDone=t})},{default:Object(r["withCtx"])((function(){return[Object(r["createElementVNode"])("div",X,[Object(r["createElementVNode"])("h2",{innerHTML:e.translate("Feedback_ThankYouHeart","<i class='icon-heart red-text'></i>")},null,8,Z),e.like?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",ee,[Object(r["createVNode"])(le)])):Object(r["createCommentVNode"])("",!0),e.like?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",te,Object(r["toDisplayString"])(e.translate("Feedback_AppreciateFeedback")),1)),Object(r["createElementVNode"])("input",{type:"button",value:e.translate("General_Close"),role:"yes"},null,8,ae)])]})),_:1},8,["modelValue"])],8,i)}var le={class:"requestReview"},oe=Object(r["createStaticVNode"])('<br><br><div class="review-links"><div class="review-link"><a href="https://www.capterra.com/p/182627/Matomo-Analytics/" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/capterra.svg"></div><div class="link">Capterra</div></a></div><div class="review-link"><a href="https://www.g2crowd.com/products/matomo-formerly-piwik/details" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/g2crowd.svg"></div><div class="link">G2 Crowd</div></a></div><div class="review-link"><a href="https://www.producthunt.com/posts/matomo-2" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/producthunt.svg"></div><div class="link">Product Hunt</div></a></div><div class="review-link"><a href="https://www.saasworthy.com/product/matomo" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/saasworthy.png"></div><div class="link">SaaSworthy</div></a></div><div class="review-link"><a href="https://www.trustradius.com/products/matomo/reviews" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/trustradius.svg"></div><div class="link">TrustRadius</div></a></div></div>',3);function re(e,t,a,n,l,o){return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",le,[Object(r["createElementVNode"])("p",null,Object(r["toDisplayString"])(e.translate("Feedback_PleaseLeaveExternalReviewForMatomo")),1),oe])}var ie=Object(r["defineComponent"])({});ie.render=re;var ce=ie,se=window,de=se.$,ue=Object(r["defineComponent"])({props:{title:String},components:{MatomoDialog:o["MatomoDialog"],ReviewLinks:ce},data:function(){return{like:!1,likeReason:null,dislikeReason:null,ratingDone:!1,expanded:!1,showFeedbackForm:!1,feedbackMessage:"",errorMessage:null}},watch:{likeReason:"doFocusInput",dislikeReason:"doFocusInput"},methods:{dislikeFeature:function(){this.ratingDone=!1,this.like=!1,this.showFeedbackForm=!0,this.errorMessage=null,this.likeReason=null,this.dislikeReason=null,this.feedbackMessage=""},likeFeature:function(){this.ratingDone=!1,this.like=!0,this.showFeedbackForm=!0,this.errorMessage=null,this.likeReason=null,this.dislikeReason=null,this.feedbackMessage=""},doFocusInput:function(){var e=this;this.$nextTick((function(){e.focusInput()}))},focusInput:function(){null!=this.$refs.feedbackText&&this.$refs.feedbackText.focus()},sendFeedback:function(){var e=this;this.errorMessage=null,o["AjaxHelper"].fetch({method:"Feedback.sendFeedbackForFeature",featureName:this.title,like:this.like?1:0,choice:this.like?this.likeReason:this.dislikeReason,message:this.feedbackMessage}).then((function(t){"success"===t.value?(de(".modal").modal("close"),e.ratingDone=!0,e.feedbackMessage=""):e.errorMessage=t.value}))}}});ue.render=ne;var be=ue,ke=(Object(o["createAngularJsAdapter"])({component:be,scope:{title:{angularJsBind:"@"}},directiveName:"piwikRateFeature"}),{key:0,class:"bannerHeader"}),me=Object(r["createElementVNode"])("i",{class:"icon-heart red-text"},null,-1),pe=Object(r["createElementVNode"])("i",{class:"icon-close white-text"},null,-1),je=[pe],Oe={class:"ratefeature"},fe={class:"ui-confirm ratefeatureDialog"},ve=["innerHTML"],ge=Object(r["createElementVNode"])("br",null,null,-1),he={class:"messageContainer"},Fe={key:0,class:"error-text"},Ve=Object(r["createElementVNode"])("br",null,null,-1),Ne=["innerHTML"],ye=["value"],Ee=["value"],Re={class:"ui-confirm ratefeatureDialog"},Me=["innerHTML"],we=["value"];
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue")):"function"===typeof define&&define.amd?define(["CoreHome"],t):"object"===typeof exports?exports["Feedback"]=t(require("CoreHome"),require("vue")):e["Feedback"]=t(e["CoreHome"],e["Vue"])})("undefined"!==typeof self?self:this,(function(e,t){return function(e){var t={};function a(n){if(t[n])return t[n].exports;var l=t[n]={i:n,l:!1,exports:{}};return e[n].call(l.exports,l,l.exports,a),l.l=!0,l.exports}return a.m=e,a.c=t,a.d=function(e,t,n){a.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},a.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},a.t=function(e,t){if(1&t&&(e=a(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(a.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var l in e)a.d(n,l,function(t){return e[t]}.bind(null,l));return n},a.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return a.d(t,"a",t),t},a.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},a.p="plugins/Feedback/vue/dist/",a(a.s="fae3")}({"19dc":function(t,a){t.exports=e},"8bbf":function(e,a){e.exports=t},fae3:function(e,t,a){"use strict";if(a.r(t),a.d(t,"ReviewLinks",(function(){return re})),a.d(t,"RateFeature",(function(){return be})),a.d(t,"FeedbackQuestion",(function(){return Se})),"undefined"!==typeof window){var n=window.document.currentScript,l=n&&n.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);l&&(a.p=l[1])}var o=a("19dc"),c=a("8bbf"),i=["title"],r={class:"ui-confirm ratefeatureDialog"},s={key:0},d={key:0},u={key:1},b=Object(c["createElementVNode"])("br",null,null,-1),k={class:"row"},m={style:{"text-align":"left","margin-top":"16px"}},p={for:"useful",class:"ratelabel"},j=Object(c["createElementVNode"])("br",null,null,-1),O={for:"easy",class:"ratelabel"},f=Object(c["createElementVNode"])("br",null,null,-1),g={for:"configurable",class:"ratelabel"},v=Object(c["createElementVNode"])("br",null,null,-1),h={for:"likeother",class:"ratelabel"},F={key:1},V={key:0},y={key:1},N=Object(c["createElementVNode"])("br",null,null,-1),E={class:"row"},R={style:{"text-align":"left"}},w={for:"missingfeatures",class:"ratelabel"},M=Object(c["createElementVNode"])("br",null,null,-1),D={for:"makeeasier",class:"ratelabel"},x=Object(c["createElementVNode"])("br",null,null,-1),B={for:"speedup",class:"ratelabel"},_=Object(c["createElementVNode"])("br",null,null,-1),C={for:"fixbugs",class:"ratelabel"},S=Object(c["createElementVNode"])("br",null,null,-1),T={for:"dislikeother",class:"ratelabel"},L=Object(c["createElementVNode"])("br",null,null,-1),H={key:2,class:"messageContainer",style:{"text-align":"left"}},U={key:0},q={key:1},z={key:2},Q={key:3},$={key:4},I={key:5},P={key:6},A={key:7},G={key:8},J={key:9,class:"error-text"},Y=["innerHTML"],K=["title","value"],W=["value"],X={class:"ui-confirm ratefeatureDialog"},Z=["innerHTML"],ee={key:0},te={key:1},ae=["value"];function ne(e,t,a,n,l,o){var ne=Object(c["resolveComponent"])("MatomoDialog"),le=Object(c["resolveComponent"])("ReviewLinks");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",{title:e.translate("Feedback_RateFeatureTitle",e.$sanitize(e.title)),class:"ratefeature"},[Object(c["createElementVNode"])("div",{class:"iconContainer",onMouseenter:t[2]||(t[2]=function(t){return e.expanded=!0}),onMouseleave:t[3]||(t[3]=function(t){return e.expanded=!1})},[Object(c["createElementVNode"])("img",{onClick:t[0]||(t[0]=function(t){e.likeFeature()}),class:"like-icon",src:"plugins/Feedback/vue/src/RateFeature/thumbs-up.png"}),Object(c["createElementVNode"])("img",{onClick:t[1]||(t[1]=function(t){e.dislikeFeature()}),class:"dislike-icon",src:"plugins/Feedback/vue/src/RateFeature/thumbs-down.png"})],32),Object(c["createVNode"])(ne,{modelValue:e.showFeedbackForm,"onUpdate:modelValue":t[14]||(t[14]=function(t){return e.showFeedbackForm=t}),onYes:t[15]||(t[15]=function(t){return e.sendFeedback()}),onValidation:t[16]||(t[16]=function(t){return e.sendFeedback()})},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("div",r,[e.like?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",s,[e.title?(Object(c["openBlock"])(),Object(c["createElementBlock"])("h2",d,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLikeNamedFeature",e.title)),1)):Object(c["createCommentVNode"])("",!0),e.title?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(),Object(c["createElementBlock"])("h2",u,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLike")),1)),b,Object(c["createElementVNode"])("div",k,[Object(c["createElementVNode"])("div",m,[Object(c["createElementVNode"])("label",p,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"radio",id:"useful",value:"useful","onUpdate:modelValue":t[4]||(t[4]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[c["vModelRadio"],e.likeReason]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureUsefulInfo")),1)]),j,Object(c["createElementVNode"])("label",O,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"radio",id:"easy",value:"easy","onUpdate:modelValue":t[5]||(t[5]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[c["vModelRadio"],e.likeReason]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureEasyToUse")),1)]),f,Object(c["createElementVNode"])("label",g,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"radio",id:"configurable",value:"configurable","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[c["vModelRadio"],e.likeReason]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureConfigurable")),1)]),v,Object(c["createElementVNode"])("label",h,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"radio",id:"likeother",value:"likeother","onUpdate:modelValue":t[7]||(t[7]=function(t){return e.likeReason=t}),class:"rateradio"},null,512),[[c["vModelRadio"],e.likeReason]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureOtherReason")),1)])])])])):Object(c["createCommentVNode"])("",!0),e.like?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",F,[e.title?(Object(c["openBlock"])(),Object(c["createElementBlock"])("h2",V,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislikeNamedFeature",e.title)),1)):Object(c["createCommentVNode"])("",!0),e.title?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(),Object(c["createElementBlock"])("h2",y,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislike")),1)),N,Object(c["createElementVNode"])("div",E,[Object(c["createElementVNode"])("div",R,[Object(c["createElementVNode"])("label",w,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"radio",id:"missingfeatures",value:"missingfeatures","onUpdate:modelValue":t[8]||(t[8]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[c["vModelRadio"],e.dislikeReason]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeAddMissingFeatures")),1)]),M,Object(c["createElementVNode"])("label",D,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"radio",id:"makeeasier",value:"makeeasier","onUpdate:modelValue":t[9]||(t[9]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[c["vModelRadio"],e.dislikeReason]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeMakeEasier")),1)]),x,Object(c["createElementVNode"])("label",B,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"radio",id:"speedup",value:"speedup","onUpdate:modelValue":t[10]||(t[10]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[c["vModelRadio"],e.dislikeReason]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeSpeedUp")),1)]),_,Object(c["createElementVNode"])("label",C,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"radio",id:"fixbugs",value:"fixbugs","onUpdate:modelValue":t[11]||(t[11]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[c["vModelRadio"],e.dislikeReason]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureDislikeFixBugs")),1)]),S,Object(c["createElementVNode"])("label",T,[Object(c["withDirectives"])(Object(c["createElementVNode"])("input",{type:"radio",id:"dislikeother",value:"dislikeother","onUpdate:modelValue":t[12]||(t[12]=function(t){return e.dislikeReason=t}),class:"rateradio"},null,512),[[c["vModelRadio"],e.dislikeReason]]),Object(c["createTextVNode"])(" "+Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureOtherReason")),1)]),L])])])),e.likeReason||e.dislikeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",H,[e.likeReason&&"useful"===e.likeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",U,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLikeExtraUseful")),1)):Object(c["createCommentVNode"])("",!0),e.likeReason&&"easy"===e.likeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",q,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLikeExtraEasy")),1)):Object(c["createCommentVNode"])("",!0),e.likeReason&&"configurable"===e.likeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",z,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLikeExtraConfigurable")),1)):Object(c["createCommentVNode"])("",!0),e.likeReason&&"likeother"===e.likeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",Q,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageLikeExtra")),1)):Object(c["createCommentVNode"])("",!0),e.dislikeReason&&"missingfeatures"===e.dislikeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",$,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraMissing")),1)):Object(c["createCommentVNode"])("",!0),e.dislikeReason&&"makeeasier"===e.dislikeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",I,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraEasier")),1)):Object(c["createCommentVNode"])("",!0),e.dislikeReason&&"fixbugs"===e.dislikeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",P,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraBugs")),1)):Object(c["createCommentVNode"])("",!0),e.dislikeReason&&"speedup"===e.dislikeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",A,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislikeExtraSpeed")),1)):Object(c["createCommentVNode"])("",!0),e.dislikeReason&&"dislikeother"===e.dislikeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",G,Object(c["toDisplayString"])(e.translate("Feedback_RateFeatureLeaveMessageDislikeExtra")),1)):Object(c["createCommentVNode"])("",!0),e.errorMessage?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",J,Object(c["toDisplayString"])(e.errorMessage),1)):Object(c["createCommentVNode"])("",!0),Object(c["withDirectives"])(Object(c["createElementVNode"])("textarea",{ref:"feedbackText",class:Object(c["normalizeClass"])(["materialize-textarea",{"has-error":e.errorMessage}]),id:"feedbacktext","onUpdate:modelValue":t[13]||(t[13]=function(t){return e.feedbackMessage=t})},null,2),[[c["vModelText"],e.feedbackMessage]]),e.likeReason||e.dislikeReason?(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",{key:10,innerHTML:e.$sanitize(e.translate("Feedback_Policy","\n <a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>","</a>"))},null,8,Y)):Object(c["createCommentVNode"])("",!0)])):Object(c["createCommentVNode"])("",!0),Object(c["createElementVNode"])("input",{class:"btn",type:"button",role:"validation",title:e.translate("Feedback_RateFeatureSendFeedbackInformation"),value:e.translate("Feedback_SendFeedback")},null,8,K),Object(c["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Cancel")},null,8,W)])]})),_:1},8,["modelValue"]),Object(c["createVNode"])(ne,{modelValue:e.ratingDone,"onUpdate:modelValue":t[17]||(t[17]=function(t){return e.ratingDone=t})},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("div",X,[Object(c["createElementVNode"])("h2",{innerHTML:e.$sanitize(e.translate("Feedback_ThankYouHeart","<i class='icon-heart red-text'></i>"))},null,8,Z),e.like?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ee,[Object(c["createVNode"])(le)])):Object(c["createCommentVNode"])("",!0),e.like?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(),Object(c["createElementBlock"])("p",te,Object(c["toDisplayString"])(e.translate("Feedback_AppreciateFeedback")),1)),Object(c["createElementVNode"])("input",{type:"button",value:e.translate("General_Close"),role:"yes"},null,8,ae)])]})),_:1},8,["modelValue"])],8,i)}var le={class:"requestReview"},oe=Object(c["createStaticVNode"])('<br><br><div class="review-links"><div class="review-link"><a href="https://www.capterra.com/p/182627/Matomo-Analytics/" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/capterra.svg"></div><div class="link">Capterra</div></a></div><div class="review-link"><a href="https://www.g2crowd.com/products/matomo-formerly-piwik/details" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/g2crowd.svg"></div><div class="link">G2 Crowd</div></a></div><div class="review-link"><a href="https://www.producthunt.com/posts/matomo-2" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/producthunt.svg"></div><div class="link">Product Hunt</div></a></div><div class="review-link"><a href="https://www.saasworthy.com/product/matomo" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/saasworthy.png"></div><div class="link">SaaSworthy</div></a></div><div class="review-link"><a href="https://www.trustradius.com/products/matomo/reviews" target="_blank"><div class="image"><img loading="lazy" src="plugins/Feedback/images/trustradius.svg"></div><div class="link">TrustRadius</div></a></div></div>',3);function ce(e,t,a,n,l,o){return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",le,[Object(c["createElementVNode"])("p",null,Object(c["toDisplayString"])(e.translate("Feedback_PleaseLeaveExternalReviewForMatomo")),1),oe])}var ie=Object(c["defineComponent"])({});ie.render=ce;var re=ie,se=window,de=se.$,ue=Object(c["defineComponent"])({props:{title:String},components:{MatomoDialog:o["MatomoDialog"],ReviewLinks:re},data:function(){return{like:!1,likeReason:null,dislikeReason:null,ratingDone:!1,expanded:!1,showFeedbackForm:!1,feedbackMessage:"",errorMessage:null}},watch:{likeReason:"doFocusInput",dislikeReason:"doFocusInput"},methods:{dislikeFeature:function(){this.ratingDone=!1,this.like=!1,this.showFeedbackForm=!0,this.errorMessage=null,this.likeReason=null,this.dislikeReason=null,this.feedbackMessage=""},likeFeature:function(){this.ratingDone=!1,this.like=!0,this.showFeedbackForm=!0,this.errorMessage=null,this.likeReason=null,this.dislikeReason=null,this.feedbackMessage=""},doFocusInput:function(){var e=this;this.$nextTick((function(){e.focusInput()}))},focusInput:function(){null!=this.$refs.feedbackText&&this.$refs.feedbackText.focus()},sendFeedback:function(){var e=this;this.errorMessage=null,o["AjaxHelper"].fetch({method:"Feedback.sendFeedbackForFeature",featureName:this.title,like:this.like?1:0,choice:this.like?this.likeReason:this.dislikeReason,message:this.feedbackMessage}).then((function(t){"success"===t.value?(de(".modal").modal("close"),e.ratingDone=!0,e.feedbackMessage=""):e.errorMessage=t.value}))}}});ue.render=ne;var be=ue,ke=(Object(o["createAngularJsAdapter"])({component:be,scope:{title:{angularJsBind:"@"}},directiveName:"piwikRateFeature"}),{key:0,class:"bannerHeader"}),me=Object(c["createElementVNode"])("i",{class:"icon-heart red-text"},null,-1),pe=Object(c["createElementVNode"])("i",{class:"icon-close white-text"},null,-1),je=[pe],Oe={class:"ratefeature"},fe={class:"ui-confirm ratefeatureDialog"},ge=["innerHTML"],ve=Object(c["createElementVNode"])("br",null,null,-1),he={class:"messageContainer"},Fe={key:0,class:"error-text"},Ve=Object(c["createElementVNode"])("br",null,null,-1),ye=["innerHTML"],Ne=["value"],Ee=["value"],Re={class:"ui-confirm ratefeatureDialog"},we=["innerHTML"],Me=["value"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function xe(e,t,a,n,l,o){var i=Object(r["resolveComponent"])("MatomoDialog");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",null,[e.isHidden?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",ke,[Object(r["createElementVNode"])("span",null,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.translate("Feedback_FeedbackTitle"))+" ",1),me]),Object(r["createElementVNode"])("a",{onClick:t[0]||(t[0]=function(){return e.showQuestion&&e.showQuestion.apply(e,arguments)}),class:"btn"},Object(r["toDisplayString"])(e.translate("Feedback_Question".concat(e.question))),1),Object(r["createElementVNode"])("a",{class:"close-btn",onClick:t[1]||(t[1]=function(){return e.disableReminder&&e.disableReminder.apply(e,arguments)})},je)])),Object(r["createElementVNode"])("div",Oe,[Object(r["createVNode"])(i,{modelValue:e.showFeedbackForm,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.showFeedbackForm=t}),onValidation:t[4]||(t[4]=function(t){return e.sendFeedback()})},{default:Object(r["withCtx"])((function(){return[Object(r["createElementVNode"])("div",fe,[Object(r["createElementVNode"])("h2",null,Object(r["toDisplayString"])(e.translate("Feedback_Question".concat(e.question))),1),Object(r["createElementVNode"])("p",{innerHTML:e.translate("Feedback_FeedbackSubtitle","<i class='icon-heart red-text'></i>")},null,8,ve),ge,Object(r["createElementVNode"])("div",he,[e.errorMessage?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",Fe,Object(r["toDisplayString"])(e.errorMessage),1)):Object(r["createCommentVNode"])("",!0),Object(r["withDirectives"])(Object(r["createElementVNode"])("textarea",{id:"message",class:Object(r["normalizeClass"])({"has-error":e.errorMessage}),"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.feedbackMessage=t})},null,2),[[r["vModelText"],e.feedbackMessage]])]),Ve,Object(r["createElementVNode"])("p",{innerHTML:e.translate("Feedback_Policy","<a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>","</a>")},null,8,Ne),Object(r["createElementVNode"])("input",{type:"button",role:"validation",value:e.translate("Feedback_SendFeedback")},null,8,ye),Object(r["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Cancel")},null,8,Ee)])]})),_:1},8,["modelValue"]),Object(r["createVNode"])(i,{modelValue:e.feedbackDone,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.feedbackDone=t})},{default:Object(r["withCtx"])((function(){return[Object(r["createElementVNode"])("div",Re,[Object(r["createElementVNode"])("h2",null,Object(r["toDisplayString"])(e.translate("Feedback_ThankYou")),1),Object(r["createElementVNode"])("p",{innerHTML:e.translate("Feedback_ThankYourForFeedback","<i class='icon-heart red-text'></i>")},null,8,Me),Object(r["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Close")},null,8,we)])]})),_:1},8,["modelValue"])])])}var De=window,Be=De.$,_e="feedback-question",Ce=Object(r["defineComponent"])({props:{showQuestionBanner:String},components:{MatomoDialog:o["MatomoDialog"]},computed:{isHidden:function(){return"0"===this.showQuestionBanner||!!this.hide}},data:function(){return{questionText:"",question:0,hide:null,feedbackDone:!1,expanded:!1,showFeedbackForm:!1,feedbackMessage:null,errorMessage:null}},watch:{showFeedbackForm:function(e){this.questionText=Object(o["translate"])("Feedback_Question".concat(this.question)),e&&setInterval((function(){Be("#message").focus()}),500)}},created:function(){"0"!==this.showQuestionBanner&&this.initQuestion()},methods:{initQuestion:function(){Object(o["getCookie"])(_e)?this.question=parseInt(Object(o["getCookie"])(_e)):this.question=this.getRandomIntBetween(0,4);var e=(this.question+1)%4,t=6048e5;Object(o["setCookie"])(_e,"".concat(e),t)},getRandomIntBetween:function(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1)+e)},showQuestion:function(){this.showFeedbackForm=!0,this.errorMessage=null},disableReminder:function(){o["AjaxHelper"].fetch({method:"Feedback.updateFeedbackReminderDate"}),this.hide=!0},sendFeedback:function(){var e=this;this.errorMessage=null,o["AjaxHelper"].fetch({method:"Feedback.sendFeedbackForSurvey",question:this.questionText,message:this.feedbackMessage}).then((function(t){"success"===t.value?(Be(".modal").modal("close"),e.feedbackDone=!0,e.hide=!0):e.errorMessage=t.value}))}}});Ce.render=xe;var Te=Ce;
+ */function De(e,t,a,n,l,o){var i=Object(c["resolveComponent"])("MatomoDialog");return Object(c["openBlock"])(),Object(c["createElementBlock"])("div",null,[e.isHidden?Object(c["createCommentVNode"])("",!0):(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",ke,[Object(c["createElementVNode"])("span",null,[Object(c["createTextVNode"])(Object(c["toDisplayString"])(e.translate("Feedback_FeedbackTitle"))+" ",1),me]),Object(c["createElementVNode"])("a",{onClick:t[0]||(t[0]=function(){return e.showQuestion&&e.showQuestion.apply(e,arguments)}),class:"btn"},Object(c["toDisplayString"])(e.translate("Feedback_Question".concat(e.question))),1),Object(c["createElementVNode"])("a",{class:"close-btn",onClick:t[1]||(t[1]=function(){return e.disableReminder&&e.disableReminder.apply(e,arguments)})},je)])),Object(c["createElementVNode"])("div",Oe,[Object(c["createVNode"])(i,{modelValue:e.showFeedbackForm,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.showFeedbackForm=t}),onValidation:t[4]||(t[4]=function(t){return e.sendFeedback()})},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("div",fe,[Object(c["createElementVNode"])("h2",null,Object(c["toDisplayString"])(e.translate("Feedback_Question".concat(e.question))),1),Object(c["createElementVNode"])("p",{innerHTML:e.$sanitize(e.translate("Feedback_FeedbackSubtitle","<i class='icon-heart red-text'></i>"))},null,8,ge),ve,Object(c["createElementVNode"])("div",he,[e.errorMessage?(Object(c["openBlock"])(),Object(c["createElementBlock"])("div",Fe,Object(c["toDisplayString"])(e.errorMessage),1)):Object(c["createCommentVNode"])("",!0),Object(c["withDirectives"])(Object(c["createElementVNode"])("textarea",{id:"message",class:Object(c["normalizeClass"])({"has-error":e.errorMessage}),"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.feedbackMessage=t})},null,2),[[c["vModelText"],e.feedbackMessage]])]),Ve,Object(c["createElementVNode"])("p",{innerHTML:e.$sanitize(e.feedbackPolicy)},null,8,ye),Object(c["createElementVNode"])("input",{type:"button",role:"validation",value:e.translate("Feedback_SendFeedback")},null,8,Ne),Object(c["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Cancel")},null,8,Ee)])]})),_:1},8,["modelValue"]),Object(c["createVNode"])(i,{modelValue:e.feedbackDone,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.feedbackDone=t})},{default:Object(c["withCtx"])((function(){return[Object(c["createElementVNode"])("div",Re,[Object(c["createElementVNode"])("h2",null,Object(c["toDisplayString"])(e.translate("Feedback_ThankYou")),1),Object(c["createElementVNode"])("p",{innerHTML:e.$sanitize(e.translate("Feedback_ThankYourForFeedback","<i class='icon-heart red-text'></i>"))},null,8,we),Object(c["createElementVNode"])("input",{type:"button",role:"cancel",value:e.translate("General_Close")},null,8,Me)])]})),_:1},8,["modelValue"])])])}var xe=window,Be=xe.$,_e="feedback-question",Ce=Object(c["defineComponent"])({props:{showQuestionBanner:String},components:{MatomoDialog:o["MatomoDialog"]},computed:{isHidden:function(){return"0"===this.showQuestionBanner||!!this.hide},feedbackPolicy:function(){return Object(o["translate"])("Feedback_Policy",'<a rel="nofollow" href="https://matomo.org/privacy-policy/" target="_blank">',"</a>")}},data:function(){return{questionText:"",question:0,hide:null,feedbackDone:!1,expanded:!1,showFeedbackForm:!1,feedbackMessage:null,errorMessage:null}},watch:{showFeedbackForm:function(e){this.questionText=Object(o["translate"])("Feedback_Question".concat(this.question)),e&&setInterval((function(){Be("#message").focus()}),500)}},created:function(){"0"!==this.showQuestionBanner&&this.initQuestion()},methods:{initQuestion:function(){Object(o["getCookie"])(_e)?this.question=parseInt(Object(o["getCookie"])(_e)):this.question=this.getRandomIntBetween(0,4);var e=(this.question+1)%4,t=6048e5;Object(o["setCookie"])(_e,"".concat(e),t)},getRandomIntBetween:function(e,t){return e=Math.ceil(e),t=Math.floor(t),Math.floor(Math.random()*(t-e+1)+e)},showQuestion:function(){this.showFeedbackForm=!0,this.errorMessage=null},disableReminder:function(){o["AjaxHelper"].fetch({method:"Feedback.updateFeedbackReminderDate"}),this.hide=!0},sendFeedback:function(){var e=this;this.errorMessage=null,o["AjaxHelper"].fetch({method:"Feedback.sendFeedbackForSurvey",question:this.questionText,message:this.feedbackMessage}).then((function(t){"success"===t.value?(Be(".modal").modal("close"),e.feedbackDone=!0,e.hide=!0):e.errorMessage=t.value}))}}});Ce.render=De;var Se=Ce;
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(o["createAngularJsAdapter"])({component:Te,scope:{showQuestionBanner:{angularJsBind:"@"}},directiveName:"piwikFeedbackQuestion"})}})}));
+ */Object(o["createAngularJsAdapter"])({component:Se,scope:{showQuestionBanner:{angularJsBind:"@"}},directiveName:"piwikFeedbackQuestion"})}})}));
//# sourceMappingURL=Feedback.umd.min.js.map \ No newline at end of file
diff --git a/plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue b/plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue
index 65e5c87210..9e8c43c08b 100644
--- a/plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue
+++ b/plugins/Feedback/vue/src/FeedbackQuestion/FeedbackQuestion.vue
@@ -24,8 +24,8 @@
>
<h2>{{ translate(`Feedback_Question${question}`) }}</h2>
<p
- v-html="translate('Feedback_FeedbackSubtitle',
- `<i class='icon-heart red-text'></i>`)"></p>
+ v-html="$sanitize(translate('Feedback_FeedbackSubtitle',
+ `<i class='icon-heart red-text'></i>`))"></p>
<br/>
<div class="messageContainer">
<div class="error-text" v-if="errorMessage">{{ errorMessage }}</div>
@@ -33,7 +33,7 @@
</div>
<br/>
<p
- v-html="translate('Feedback_Policy',`<a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>`,'</a>')"></p>
+ v-html="$sanitize(feedbackPolicy)"></p>
<input
type="button"
role="validation"
@@ -51,8 +51,8 @@
class="ui-confirm ratefeatureDialog"
>
<h2>{{ translate(`Feedback_ThankYou`) }}</h2>
- <p v-html="translate('Feedback_ThankYourForFeedback',
- `<i class='icon-heart red-text'></i>`)">
+ <p v-html="$sanitize(translate('Feedback_ThankYourForFeedback',
+ `<i class='icon-heart red-text'></i>`))">
</p>
<input
type="button"
@@ -103,6 +103,13 @@ export default defineComponent({
}
return !!this.hide;
},
+ feedbackPolicy() {
+ return translate(
+ 'Feedback_Policy',
+ '<a rel="nofollow" href="https://matomo.org/privacy-policy/" target="_blank">',
+ '</a>',
+ );
+ },
},
data(): FeedbackQuestionState {
return {
diff --git a/plugins/Feedback/vue/src/RateFeature/RateFeature.vue b/plugins/Feedback/vue/src/RateFeature/RateFeature.vue
index c52904aa28..76ba6bce62 100644
--- a/plugins/Feedback/vue/src/RateFeature/RateFeature.vue
+++ b/plugins/Feedback/vue/src/RateFeature/RateFeature.vue
@@ -114,33 +114,33 @@
<div v-if="likeReason || dislikeReason" class="messageContainer" style="text-align:left">
- <p v-if="likeReason && likeReason == 'useful'"
- v-html="translate('Feedback_RateFeatureLeaveMessageLikeExtraUseful')">
+ <p v-if="likeReason && likeReason === 'useful'">
+ {{ translate('Feedback_RateFeatureLeaveMessageLikeExtraUseful') }}
</p>
- <p v-if="likeReason && likeReason == 'easy'"
- v-html="translate('Feedback_RateFeatureLeaveMessageLikeExtraEasy')">
+ <p v-if="likeReason && likeReason === 'easy'">
+ {{ translate('Feedback_RateFeatureLeaveMessageLikeExtraEasy') }}
</p>
- <p v-if="likeReason && likeReason == 'configurable'"
- v-html="translate('Feedback_RateFeatureLeaveMessageLikeExtraConfigurable')">
+ <p v-if="likeReason && likeReason === 'configurable'">
+ {{ translate('Feedback_RateFeatureLeaveMessageLikeExtraConfigurable') }}
</p>
- <p v-if="likeReason && likeReason == 'likeother'"
- v-html="translate('Feedback_RateFeatureLeaveMessageLikeExtra')">
+ <p v-if="likeReason && likeReason === 'likeother'">
+ {{ translate('Feedback_RateFeatureLeaveMessageLikeExtra') }}
</p>
- <p v-if="dislikeReason && dislikeReason == 'missingfeatures'"
- v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtraMissing')">
+ <p v-if="dislikeReason && dislikeReason === 'missingfeatures'">
+ {{ translate('Feedback_RateFeatureLeaveMessageDislikeExtraMissing') }}
</p>
- <p v-if="dislikeReason && dislikeReason == 'makeeasier'"
- v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtraEasier')">
+ <p v-if="dislikeReason && dislikeReason === 'makeeasier'">
+ {{ translate('Feedback_RateFeatureLeaveMessageDislikeExtraEasier') }}
</p>
- <p v-if="dislikeReason && dislikeReason == 'fixbugs'"
- v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtraBugs')">
+ <p v-if="dislikeReason && dislikeReason === 'fixbugs'">
+ {{ translate('Feedback_RateFeatureLeaveMessageDislikeExtraBugs') }}
</p>
- <p v-if="dislikeReason && dislikeReason == 'speedup'"
- v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtraSpeed')">
+ <p v-if="dislikeReason && dislikeReason === 'speedup'">
+ {{ translate('Feedback_RateFeatureLeaveMessageDislikeExtraSpeed') }}
</p>
- <p v-if="dislikeReason && dislikeReason == 'dislikeother'"
- v-html="translate('Feedback_RateFeatureLeaveMessageDislikeExtra')">
+ <p v-if="dislikeReason && dislikeReason === 'dislikeother'">
+ {{ translate('Feedback_RateFeatureLeaveMessageDislikeExtra') }}
</p>
<div class="error-text" v-if="errorMessage">{{ errorMessage }}</div>
@@ -148,8 +148,8 @@
:class="{'has-error':errorMessage}"
v-model="feedbackMessage"/>
<p v-if="likeReason || dislikeReason"
- v-html="translate('Feedback_Policy',`
- <a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>`,'</a>')">
+ v-html="$sanitize(translate('Feedback_Policy',`
+ <a rel='nofollow' href='https://matomo.org/privacy-policy/' target='_blank'>`,'</a>'))">
</p>
</div>
@@ -175,7 +175,10 @@
<div
class="ui-confirm ratefeatureDialog"
>
- <h2 v-html="translate('Feedback_ThankYouHeart',`<i class='icon-heart red-text'></i>`)"></h2>
+ <h2 v-html="$sanitize(translate(
+ 'Feedback_ThankYouHeart',
+ `<i class='icon-heart red-text'></i>`,
+ ))"></h2>
<div
v-if="like"
>
diff --git a/plugins/GeoIp2/GeoIp2.php b/plugins/GeoIp2/GeoIp2.php
index 3f9363a3f2..273cffeacd 100644
--- a/plugins/GeoIp2/GeoIp2.php
+++ b/plugins/GeoIp2/GeoIp2.php
@@ -24,7 +24,6 @@ class GeoIp2 extends \Piwik\Plugin
public function registerEvents()
{
return array(
- 'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
'Installation.defaultSettingsForm.init' => 'installationFormInit',
'Installation.defaultSettingsForm.submit' => 'installationFormSubmit',
@@ -44,12 +43,6 @@ class GeoIp2 extends \Piwik\Plugin
}
}
- public function getJsFiles(&$jsFiles)
- {
- $jsFiles[] = "plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js";
- $jsFiles[] = "plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.directive.js";
- }
-
public function getClientSideTranslationKeys(&$translationKeys)
{
$translationKeys[] = "GeoIp2_FatalErrorDuringDownload";
@@ -57,6 +50,29 @@ class GeoIp2 extends \Piwik\Plugin
$translationKeys[] = "General_Done";
$translationKeys[] = "General_Save";
$translationKeys[] = "General_Continue";
+ $translationKeys[] = 'GeoIp2_ISPRequiresProviderPlugin';
+ $translationKeys[] = 'GeoIp2_UpdaterWasLastRun';
+ $translationKeys[] = 'GeoIp2_UpdaterIsNotScheduledToRun';
+ $translationKeys[] = 'GeoIp2_GeoIPUpdaterIntro';
+ $translationKeys[] = 'GeoIp2_IWantToDownloadFreeGeoIP';
+ $translationKeys[] = 'General_GetStarted';
+ $translationKeys[] = 'GeoIp2_GeoIPDatabases';
+ $translationKeys[] = 'GeoIp2_NotManagingGeoIPDBs';
+ $translationKeys[] = 'GeoIp2_IPurchasedGeoIPDBs';
+ $translationKeys[] = 'UserCountry_GeoIpDbIpAccuracyNote';
+ $translationKeys[] = 'GeoIp2_GeoIPUpdaterInstructions';
+ $translationKeys[] = 'GeoIp2_GeoLiteCityLink';
+ $translationKeys[] = 'UserCountry_MaxMindLinkExplanation';
+ $translationKeys[] = 'GeoIp2_LocationDatabase';
+ $translationKeys[] = 'Actions_ColumnDownloadURL';
+ $translationKeys[] = 'GeoIp2_LocationDatabaseHint';
+ $translationKeys[] = 'GeoIp2_ISPDatabase';
+ $translationKeys[] = 'GeoIp2_DownloadNewDatabasesEvery';
+ $translationKeys[] = 'GeoIp2_CannotSetupGeoIPAutoUpdating';
+ $translationKeys[] = 'GeoIp2_UpdaterHasNotBeenRun';
+ $translationKeys[] = 'GeoIp2_UpdaterScheduledForNextRun';
+ $translationKeys[] = 'GeoIp2_UpdaterWillRunNext';
+ $translationKeys[] = 'GeoIp2_DownloadingDb';
}
/**
diff --git a/plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js b/plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js
deleted file mode 100644
index 1d3ec3772c..0000000000
--- a/plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.controller.js
+++ /dev/null
@@ -1,149 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('Geoip2UpdaterController', Geoip2UpdaterController);
-
- Geoip2UpdaterController.$inject = ['piwikApi', '$window'];
-
- function Geoip2UpdaterController(piwikApi, $window) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
- var self = this;
-
- this.buttonUpdateSaveText = _pk_translate('General_Save');
- this.progressUpdateLabel = '';
-
- // geoip database wizard
- var downloadNextChunk = function (action, thisId, progressBarId, cont, extraData, callback) {
- var data = {};
- for (var k in extraData) {
- data[k] = extraData[k];
- }
-
- piwikApi.withTokenInUrl();
- piwikApi.post({
- module: 'GeoIp2',
- action: action,
- 'continue': cont ? 1 : 0
- }, data).then(function (response) {
- if (!response || response.error) {
- callback(response);
- } else {
- // update progress bar
- var newProgressVal = Math.floor((response.current_size / response.expected_file_size) * 100);
- self[progressBarId] = Math.min(newProgressVal, 100);
-
- // if incomplete, download next chunk, otherwise, show updater manager
- if (newProgressVal < 100) {
- downloadNextChunk(action, thisId, progressBarId, true, extraData, callback);
- } else {
- callback(response);
- }
- }
- }, function () {
- callback({error: _pk_translate('GeoIp2_FatalErrorDuringDownload')});
- });
- };
-
- this.startDownloadFreeGeoIp = function () {
- this.showFreeDownload = true;
- this.showPiwikNotManagingInfo = false;
-
- this.progressFreeDownload = 0;
-
- // start download of free dbs
- downloadNextChunk(
- 'downloadFreeDBIPLiteDB',
- 'geoipdb-screen2-download',
- 'progressFreeDownload',
- false,
- {},
- function (response) {
- if (response.error) {
- $('#geoipdb-update-info').html(response.error);
- self.geoipDatabaseInstalled = true;
- } else {
- $window.location.reload();
- }
- }
- );
- };
-
- this.startAutomaticUpdateGeoIp = function () {
- this.buttonUpdateSaveText = _pk_translate('General_Continue');
- this.showGeoIpUpdateInfo();
- };
-
- this.showGeoIpUpdateInfo = function () {
- this.geoipDatabaseInstalled = true;
-
- // todo we need to replace this the proper way eventually
- $('#geoip-db-mangement .card-title').text(_pk_translate('GeoIp2_SetupAutomaticUpdatesOfGeoIP'));
- }
-
- this.saveGeoIpLinks = function () {
- var currentDownloading = null;
- var updateGeoIPSuccess = function (response) {
- if (response && response.error) {
- self.isUpdatingGeoIpDatabase = false;
-
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(response.error, {
- placeat: '#geoipdb-update-info-error',
- context: 'error',
- style: {display: 'inline-block'},
- id: 'userCountryGeoIpUpdate'
- });
-
- } else if (response && response.to_download) {
- var continuing = currentDownloading == response.to_download;
- currentDownloading = response.to_download;
-
- // show progress bar w/ message
- self.progressUpdateDownload = 0;
- self.progressUpdateLabel = response.to_download_label;
- self.isUpdatingGeoIpDatabase = true;
-
- // start/continue download
- downloadNextChunk(
- 'downloadMissingGeoIpDb', 'geoipdb-update-info', 'progressUpdateDownload',
- continuing, {key: response.to_download}, updateGeoIPSuccess);
-
- } else {
- self.progressUpdateLabel = '';
- self.isUpdatingGeoIpDatabase = false;
-
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(_pk_translate('General_Done'), {
- placeat: '#done-updating-updater',
- context: 'success',
- noclear: true,
- type: 'toast',
- style: {display: 'inline-block'},
- id: 'userCountryGeoIpUpdate'
- });
-
- $('#geoip-updater-next-run-time').html(response.nextRunTime).parent().effect('highlight', {color: '#FFFFCB'}, 2000);
- }
- };
-
- piwikApi.withTokenInUrl();
- piwikApi.post({
- period: this.updatePeriod,
- module: 'GeoIp2',
- action: 'updateGeoIPLinks'
- }, {
- loc_db: this.locationDbUrl,
- isp_db: this.ispDbUrl,
- org_db: this.orgDbUrl
- }).then(updateGeoIPSuccess);
- };
-
-
- }
-})(); \ No newline at end of file
diff --git a/plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.directive.js b/plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.directive.js
deleted file mode 100644
index 5ccc7e4704..0000000000
--- a/plugins/GeoIp2/angularjs/geoip2-updater/geoip2-updater.directive.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div piwik-geoip2-updater>
- */
-(function () {
- angular.module('piwikApp').directive('piwikGeoip2Updater', piwikGeoip2Updater);
-
- piwikGeoip2Updater.$inject = ['piwik'];
-
- function piwikGeoip2Updater(piwik){
-
- return {
- restrict: 'A',
- transclude: true,
- controller: 'Geoip2UpdaterController',
- controllerAs: 'locationUpdater',
- template: '<div ng-transclude></div>',
- compile: function (element, attrs) {
-
- return function (scope, element, attrs, controller) {
- controller.geoipDatabaseInstalled = '0' !== attrs.geoipDatabaseInstalled;
- controller.showFreeDownload = false;
- controller.showPiwikNotManagingInfo = true;
- controller.progressFreeDownload = 0;
- controller.progressUpdateDownload = 0;
- };
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/GeoIp2/lang/ga.json b/plugins/GeoIp2/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/GeoIp2/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/GeoIp2/lang/id.json b/plugins/GeoIp2/lang/id.json
index 8b955afaf3..9955d3f1eb 100644
--- a/plugins/GeoIp2/lang/id.json
+++ b/plugins/GeoIp2/lang/id.json
@@ -1,26 +1,62 @@
{
"GeoIp2": {
- "AssumingNonApache": "Tidak dapat menemukan fungsi apache_get_modules, sehingga diduga sebagai peladen non-Apache.",
- "CannotFindGeoIPServerVar": "Variabel %s tidak diatur. Peladen Anda mungkin tidak diatur secara benar.",
- "CannotListContent": "Tidak dapat menemukan isi untuk %1$s: %2$s",
+ "AssumingNonApache": "Tidak dapat menemukan fungsi Apache_get_modules, dengan asumsi server web non-Apache.",
+ "AutomaticSetup": "Konfigurasi geolokasi secara otomatis menggunakan basis data dbip",
+ "AutomaticSetupDescription": "Untuk geolokasi yang tepat, Matomo membutuhkan basis data eksternal. Dengan menggunakan opsi ini, Matomo akan dikonfigurasi secara otomatis untuk mengunduh dan menggunakan basis data tingkat kota dbip terbaru. [%1$sLihat persyaratan lisensi%2$s]",
+ "CannotFindGeoIPDatabaseInArchive": "Tidak ada basis data DBIP / GeoIP yang valid yang dapat ditemukan di arsip tar %1$s!",
+ "CannotFindGeoIPServerVar": "Variabel %s tidak diatur. Server Anda mungkin tidak diatur secara benar.",
+ "CannotListContent": "Tidak dapat mencantumkan konten untuk %1$s: %2$s",
+ "CannotSetupGeoIPAutoUpdating": "Sepertinya Anda menyimpan basis data geolokasi di luar Matomo (kami dapat mengetahuinya karena tidak ada basis data di subdirektori misc, tetapi GeoIP Anda berfungsi). Matomo tidak dapat memperbarui basis data geolokasi Anda secara otomatis jika berada di luar direktori misc.",
+ "CannotUnzipGeoIPFile": "Tidak dapat membuka berkas GeoIP di %1$s: %2$s",
+ "DownloadNewDatabasesEvery": "Perbarui basis data setiap",
"DownloadingDb": "Mengunduh %s",
- "DownloadNewDatabasesEvery": "Perbarui basisdata setiap",
- "FoundApacheModules": "Matomo menemukan modul Apache berikut",
- "GeoIPImplHasAccessTo": "Penerapan GeoIP ini memiliki akses terhadap jenis-jenis basisdata berikut",
- "GeoIPDatabases": "Basisdata GeoIP",
- "GeoIPLocationProviderDesc_ServerBasedAnonWarn": "Catatan: anonimasi IP tidak berdampak dalam laporan berdasar penyedia ini. Sebelum menggunakan ini dengan anonimasi IP, pastikan bahwa Anda tidak melanggar peraturan privasi yang mungkin dikenakan kepada Anda.",
- "GeoIPNoServerVars": "Matomo tidak dapat menemukan variabel GeoIP %s apapun.",
+ "FatalErrorDuringDownload": "Terjadi kesalahan fatal saat mengunduh berkas ini. Mungkin ada yang salah dengan koneksi internet Anda, dengan basis data geolokasi yang Anda unduh, atau Matomo. Coba unduh dan pasang secara manual.",
+ "FoundApacheModules": "Matomo menemukan modul Apache berikut ini",
+ "GeoIPDatabases": "Basis data GeoIP",
+ "GeoIPImplHasAccessTo": "Penerapan GeoIP ini memiliki akses terhadap tipe basis data berikut ini",
+ "GeoIPLocationProviderDesc_ServerBasedAnonWarn": "Catatan: IP anonim tidak berpengaruh pada lokasi yang dilaporkan oleh penyedia ini. Sebelum menggunakannya dengan IP anonim, pastikan hal ini tidak melanggar undang-undang privasi apa pun yang mungkin Anda patuhi.",
+ "GeoIPLocationProviderNotRecommended": "Geolokasi berfungsi, tetapi Anda tidak menggunakan salah satu penyedia yang direkomendasikan.",
+ "GeoIPNoDatabaseFound": "Implementasi GeoIP ini tidak dapat menemukan basis data apa pun.",
+ "GeoIPNoServerVars": "Matomo tidak dapat menemukan variabel GeoIP %s apa pun.",
"GeoIPServerVarsFound": "Matomo mendeteksi variabel GeoIP berikut %s",
- "HowToSetupGeoIPIntro": "Anda tidak tampak memiliki pemasangan Lokasi-geo yang teliti. Fitur ini sangat berguna dan tanpa ini Anda tidak akan melihat lokasi lengkap dan akurat untuk pengunjung Anda. Di sini bagaimana Anda dapat dengan mudah memulai ini:",
+ "GeoIPUpdaterInstructions": "Masukkan tautan unduhan untuk basis data Anda di bawah ini. Jika Anda telah membeli basis data dari %3$sdbip%4$s atau %1$sMaxMind%2$s, Anda dapat menemukan tautan ini di akun dbip atau MaxMind Anda. Silakan hubungi penyedia basis data geolokasi Anda jika Anda kesulitan untuk mengaksesnya.",
+ "GeoIPUpdaterIntro": "Matomo saat ini mengelola pembaruan untuk basis data berikut ini",
+ "GeoIPVariablesConfigurationHere": "Anda dapat mengonfigurasi variabel server bekas %1$sdi sini%2$s.",
+ "GeoLiteCityLink": "Jika Anda menggunakan basis data dbip city lite, gunakan tautan ini: %1$s%2$s%3$s",
"HowToInstallApacheModule": "Bagaimana saya memasang modul GeoIP untuk Apache?",
"HowToInstallNginxModule": "Bagaimana saya memasang modul GeoIP untuk Nginx?",
- "HttpServerModule": "Modul Peladen HTTP",
- "InvalidGeoIPUpdatePeriod": "Periode tak sahih untuk pembaruan GeoIP: %1$s. Nilai sahih adalah %2$s.",
- "ISPDatabase": "Basisdata Penyedia Layanan Internet",
- "LocationDatabase": "Basisdata Lokasi",
- "LocationDatabaseHint": "Sebuah basisdata lokasi merupakan salah satu basisdata suatu negara, wilayah, atau kota.",
- "UnsupportedArchiveType": "Mengandung arsip tak didukung jenis %1$s.",
- "UpdaterHasNotBeenRun": "Pembaruan belum pernah berjalan.",
- "UpdaterWasLastRun": "Pembaruan terakhir berjalan dalam %s."
+ "HowToSetupGeoIP": "Cara mengatur geolokasi yang akurat dengan dbip",
+ "HowToSetupGeoIPIntro": "Anda tampaknya tidak memiliki pengaturan Geolokasi yang akurat. Ini adalah fitur yang berguna dan tanpanya Anda tidak akan melihat informasi lokasi yang akurat dan lengkap untuk pengunjung Anda. Inilah cara cepat untuk mulai menggunakannya:",
+ "HowToSetupGeoIP_Step1": "%1$sUnduh%2$s basis data DBIP City Lite dari %3$sdbip%4$s.",
+ "HowToSetupGeoIP_Step2": "Ekstrak file ini dan salin hasilnya, %1$s ke dalam subdirektori %2$smisc%3$s Matomo dan ganti namanya menjadi %4$s (Anda dapat melakukannya dengan FTP atau SSH).",
+ "HowToSetupGeoIP_Step3": "Muat ulang layar ini. Penyedia %1$sDBIP / GeoIP (PHP)%2$s sekarang akan %3$sDipasang%4$s. Pilih itu.",
+ "HowToSetupGeoIP_Step4": "Dan Anda sudah selesai! Anda baru saja mengatur Matomo untuk menggunakan DBIP yang berarti Anda akan dapat melihat wilayah dan kota pengunjung Anda bersama dengan informasi negara yang sangat akurat.",
+ "HttpServerModule": "Modul Server HTTP",
+ "IPurchasedGeoIPDBs": "Saya membeli basis data yang lebih akurat dari %3$sdbip%4$s atau %1$sMaxMind%2$s dan ingin mengatur pembaruan otomatis.",
+ "ISPDatabase": "Basis Data ISP",
+ "ISPRequiresProviderPlugin": "Pelacakan penyedia layanan internet memerlukan plugin Provider untuk dipasang dan diaktifkan.",
+ "IWantToDownloadFreeGeoIP": "Saya ingin mengunduh basis data DBIP gratis...",
+ "InvalidGeoIPUpdateHost": "Host pembaruan URL GeoIP %1$s tidak tepercaya. Untuk mengizinkan pengunduhan pembaruan GeoIP dari host selain %2$s, harap sesuaikan pengaturan untuk %3$s dikonfigurasi.",
+ "InvalidGeoIPUpdatePeriod": "Periode tidak valid untuk pembaruan GeoIP: %1$s. Nilai yang valid adalah %2$s.",
+ "LocationDatabase": "Basis Data Lokasi",
+ "LocationDatabaseHint": "Basis data lokasi adalah basis data negara, wilayah, atau kota.",
+ "LocationProviderDesc_Php": "Penyedia lokasi ini adalah yang paling sederhana untuk dipasang karena tidak memerlukan konfigurasi server (ideal untuk hosting bersama!). Ini menggunakan basis data DBIP atau GeoIP 2 dan API PHP MaxMind yang secara akurat menentukan lokasi pengunjung Anda.",
+ "LocationProviderDesc_Php_WithExtension": "Penyedia lokasi ini dipercepat oleh ekstensi %1$smaxminddb%2$s yang diinstal.",
+ "LocationProviderDesc_ServerModule": "Penyedia lokasi ini menggunakan modul GeoIP 2 yang telah terpasang di server HTTP Anda. Penyedia ini cepat dan akurat, tetapi %1$s hanya dapat digunakan dengan pelacakan peramban biasa.%2$s",
+ "LocationProviderDesc_ServerModule2": "Jika Anda harus mengimpor berkas log atau melakukan hal lain yang memerlukan pengaturan alamat IP, gunakan %3$simplementasi PHP GeoIP 2%4$s dan pasang %1$sekstensi maxminddb%2$s.",
+ "MalFormedUpdateUrl": "URL %1$s tampaknya tidak valid. Harap pastikan untuk memasukkan URL yang valid yang dimulai dengan http:// atau https://",
+ "NotManagingGeoIPDBs": "Matomo saat ini tidak mengelola basis data DBIP atau MaxMind.",
+ "PluginDescription": "Menyediakan penyedia lokasi DBIP / GeoIP2.",
+ "ServerBasedVariablesConfiguration": "Konfigurasi untuk variabel server yang digunakan oleh modul server GeoIP 2",
+ "ServerVariableFor": "Variabel server untuk %s",
+ "SetupAutomaticUpdatesOfGeoIP": "Siapkan pembaruan otomatis basis data geolokasi",
+ "ShowCustomServerVariablesConfig": "Saya menggunakan modul server GeoIp2 (Nginx, Apache...) dan ingin mengonfigurasi variabel server",
+ "ThisUrlIsNotAValidGeoIPDB": "Berkas yang diunduh bukanlah basis data geolokasi yang valid. Silakan periksa kembali URL atau unduh berkas secara manual.",
+ "UnsupportedArchiveType": "Menemukan jenis arsip yang tidak didukung %1$s.",
+ "UpdaterHasNotBeenRun": "Pembaruan belum pernah dijalankan.",
+ "UpdaterIsNotScheduledToRun": "Itu tidak dijadwalkan untuk berjalan di masa depan.",
+ "UpdaterScheduledForNextRun": "Ini dijadwalkan untuk dijalankan selama eksekusi perintah cron core:archive berikutnya.",
+ "UpdaterWasLastRun": "Pembaruan terakhir dijalankan pada %s.",
+ "UpdaterWillRunNext": "Selanjutnya dijadwalkan untuk berjalan pada %s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/GeoIp2/templates/configuration.twig b/plugins/GeoIp2/templates/configuration.twig
index 91ea3dd5d6..537b27e7e5 100644
--- a/plugins/GeoIp2/templates/configuration.twig
+++ b/plugins/GeoIp2/templates/configuration.twig
@@ -1,51 +1,17 @@
-<div piwik-content-block
- content-title="{% if not geoIPDatabasesInstalled %}{{ 'GeoIp2_GeoIPDatabases'|translate|e('html_attr') }}{% else %}{{ 'GeoIp2_SetupAutomaticUpdatesOfGeoIP'|translate|e('html_attr') }}{% endif %}"
- id="geoip-db-mangement">
-
- <div piwik-geoip2-updater
- geoip-database-installed="{% if geoIPDatabasesInstalled %}1{% else %}0{% endif %}">
-
- {% if showGeoIPUpdateSection %}
- {% if not geoIPDatabasesInstalled %}
- <div ng-show="!locationUpdater.geoipDatabaseInstalled">
- <div ng-show="locationUpdater.showPiwikNotManagingInfo">
- <h3>{{ 'GeoIp2_NotManagingGeoIPDBs'|translate|e('html_attr') }}</h3>
- <div id="manage-geoip-dbs">
- <div class="row" id="geoipdb-screen1">
- <div class="geoipdb-column-1 col s6">
- <p>{{ 'GeoIp2_IWantToDownloadFreeGeoIP'|translate|raw }}<sup><small>*</small></sup></p>
- </div>
- <div class="geoipdb-column-2 col s6">
- <p>{{ 'GeoIp2_IPurchasedGeoIPDBs'|translate('<a rel="noreferrer noopener" href="http://www.maxmind.com/en/geolocation_landing?rId=piwik">','</a>','<a rel="noreferrer noopener" href="https://db-ip.com/db/?refid=mtm">','</a>')|raw }}</p>
- </div>
- <div class="geoipdb-column-1 col s6">
- <input type="button" class="btn"
- ng-click="locationUpdater.startDownloadFreeGeoIp()"
- value="{{ 'General_GetStarted'|translate }}..."/>
- </div>
- <div class="geoipdb-column-2 col s6">
- <input type="button" class="btn"
- ng-click="locationUpdater.startAutomaticUpdateGeoIp()"
- value="{{ 'General_GetStarted'|translate }}..." id="start-automatic-update-geoip"/>
- </div>
- </div>
- <div class="row">
- <p><sup>* <small>{{ 'UserCountry_GeoIpDbIpAccuracyNote'|translate('<a href="https://dev.maxmind.com/geoip/geoip2/geolite2/?rId=piwik" rel="noreferrer noopener" target="_blank">', '</a>')|raw }}.</small></sup></p>
- </div>
- </div>
- </div>
- <div id="geoipdb-screen2-download" ng-show="locationUpdater.showFreeDownload">
- <div piwik-progressbar
- label="{{ ('GeoIp2_DownloadingDb'|translate('<a href="'~dbipLiteUrl~'">'~dbipLiteFilename~'</a>') ~ '...')|json_encode }}"
- progress="locationUpdater.progressFreeDownload">
- </div>
- </div>
- </div>
- {% endif %}
-
- {% include "@GeoIp2/_updaterManage.twig" %}
- {% else %}
- <p class="form-description">{{ 'GeoIp2_CannotSetupGeoIPAutoUpdating'|translate }}</p>
- {% endif %}
- </div>
-</div> \ No newline at end of file
+<div
+ piwik-geoip2-updater
+ geoip-database-started-installed="{{ geoIPDatabasesInstalled|default(null)|json_encode|e('html_attr') }}"
+ show-geoip-update-section="{{ showGeoIPUpdateSection|default(null)|json_encode|e('html_attr') }}"
+ dbip-lite-url="{{ dbipLiteUrl|default(null)|json_encode|e('html_attr') }}"
+ dbip-lite-filename="{{ dbipLiteFilename|default(null)|json_encode|e('html_attr') }}"
+ geoip-loc-url="{{ geoIPLocUrl|default(null)|json_encode|e('html_attr') }}"
+ is-provider-plugin-active="{{ isProviderPluginActive|default(null)|json_encode|e('html_attr') }}"
+ geoip-isp-url="{{ geoIPIspUrl|default(null)|json_encode|e('html_attr') }}"
+ last-time-updater-run="{{ lastTimeUpdaterRun|default(null)|json_encode|e('html_attr') }}"
+ geoip-update-period="{{ geoIPUpdatePeriod|default(null)|json_encode|e('html_attr') }}"
+ update-period-options="{{ updatePeriodOptions|default(null)|json_encode|e('html_attr') }}"
+ is-provider-plugin-active="{{ isProviderPluginActive|default(null)|json_encode|e('html_attr') }}"
+ next-run-time="{{ (nextRunTime ? nextRunTime.getTimestamp() : null)|json_encode|e('html_attr') }}"
+ next-run-time-pretty="{{ (nextRunTime ? nextRunTime.toString() : null)|json_encode|e('html_attr') }}"
+>
+</div>
diff --git a/plugins/GeoIp2/vue/dist/GeoIp2.umd.js b/plugins/GeoIp2/vue/dist/GeoIp2.umd.js
new file mode 100644
index 0000000000..75a3f46248
--- /dev/null
+++ b/plugins/GeoIp2/vue/dist/GeoIp2.umd.js
@@ -0,0 +1,661 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", , "CorePluginsAdmin"], factory);
+ else if(typeof exports === 'object')
+ exports["GeoIp2"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else
+ root["GeoIp2"] = factory(root["CoreHome"], root["Vue"], root["CorePluginsAdmin"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a5a2__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/GeoIp2/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "a5a2":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "Geoip2Updater", function() { return /* reexport */ Geoip2Updater; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.vue?vue&type=template&id=423508b8
+
+var _hoisted_1 = {
+ key: 0
+};
+var _hoisted_2 = {
+ key: 0
+};
+var _hoisted_3 = {
+ id: "manage-geoip-dbs"
+};
+var _hoisted_4 = {
+ class: "row",
+ id: "geoipdb-screen1"
+};
+var _hoisted_5 = {
+ class: "geoipdb-column-1 col s6"
+};
+
+var _hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("sup", null, [/*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("small", null, "*")], -1);
+
+var _hoisted_7 = {
+ class: "geoipdb-column-2 col s6"
+};
+var _hoisted_8 = ["innerHTML"];
+var _hoisted_9 = {
+ class: "geoipdb-column-1 col s6"
+};
+var _hoisted_10 = ["value"];
+var _hoisted_11 = {
+ class: "geoipdb-column-2 col s6"
+};
+var _hoisted_12 = ["value"];
+var _hoisted_13 = {
+ class: "row"
+};
+
+var _hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])("* ");
+
+var _hoisted_15 = ["innerHTML"];
+var _hoisted_16 = {
+ id: "geoipdb-screen2-download"
+};
+var _hoisted_17 = {
+ key: 1,
+ id: "geoipdb-update-info"
+};
+var _hoisted_18 = ["innerHTML"];
+
+var _hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_20 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_21 = ["innerHTML"];
+var _hoisted_22 = ["innerHTML"];
+
+var _hoisted_23 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_24 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_25 = {
+ id: "locationProviderUpdatePeriodInlineHelp",
+ class: "inline-help-node",
+ ref: "inlineHelpNode"
+};
+var _hoisted_26 = ["innerHTML"];
+var _hoisted_27 = {
+ key: 1
+};
+
+var _hoisted_28 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_29 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_30 = ["innerHTML"];
+var _hoisted_31 = ["value"];
+
+var _hoisted_32 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ id: "done-updating-updater"
+}, null, -1);
+
+var _hoisted_33 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ id: "geoipdb-update-info-error"
+}, null, -1);
+
+var _hoisted_34 = ["innerHTML"];
+var _hoisted_35 = {
+ key: 1
+};
+var _hoisted_36 = {
+ class: "form-description"
+};
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Progressbar = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Progressbar");
+
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_ContentBlock, {
+ "content-title": _ctx.contentTitle,
+ id: "geoip-db-mangement"
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [_ctx.showGeoipUpdateSection ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [!_ctx.geoipDatabaseInstalled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('GeoIp2_NotManagingGeoIPDBs')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('GeoIp2_IWantToDownloadFreeGeoIP')), 1), _hoisted_6])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", {
+ innerHTML: _ctx.$sanitize(_ctx.purchasedGeoIpText)
+ }, null, 8, _hoisted_8)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "button",
+ class: "btn",
+ onClick: _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.startDownloadFreeGeoIp();
+ }),
+ value: "".concat(_ctx.translate('General_GetStarted'), "...")
+ }, null, 8, _hoisted_10)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "button",
+ class: "btn",
+ id: "start-automatic-update-geoip",
+ onClick: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.startAutomaticUpdateGeoIp();
+ }),
+ value: "".concat(_ctx.translate('General_GetStarted'), "...")
+ }, null, 8, _hoisted_12)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("sup", null, [_hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("small", {
+ innerHTML: _ctx.$sanitize(_ctx.accuracyNote)
+ }, null, 8, _hoisted_15)])])])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showPiwikNotManagingInfo]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Progressbar, {
+ label: _ctx.freeProgressbarLabel,
+ progress: _ctx.progressFreeDownload
+ }, null, 8, ["label", "progress"])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showFreeDownload]])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.geoipDatabaseInstalled && !_ctx.downloadErrorMessage ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.geoIPUpdaterInstructions)
+ }, null, 8, _hoisted_18), _hoisted_19, _hoisted_20, !!_ctx.dbipLiteUrl ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", {
+ key: 0,
+ innerHTML: _ctx.$sanitize(_ctx.geoliteCityLink)
+ }, null, 8, _hoisted_21)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.maxMindLinkExplanation)
+ }, null, 8, _hoisted_22), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [_hoisted_23, _hoisted_24, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('GeoIp2_GeoIPUpdaterIntro')) + ": ", 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.geoipDatabaseInstalled]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "geoip-location-db",
+ introduction: _ctx.translate('GeoIp2_LocationDatabase'),
+ title: _ctx.translate('Actions_ColumnDownloadURL'),
+ "inline-help": _ctx.translate('GeoIp2_LocationDatabaseHint'),
+ modelValue: _ctx.locationDbUrl,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.locationDbUrl = $event;
+ })
+ }, null, 8, ["introduction", "title", "inline-help", "modelValue"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "geoip-isp-db",
+ introduction: _ctx.translate('GeoIp2_ISPDatabase'),
+ title: _ctx.translate('Actions_ColumnDownloadURL'),
+ "inline-help": _ctx.providerPluginHelp,
+ modelValue: _ctx.ispDbUrl,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.ispDbUrl = $event;
+ }),
+ disabled: !_ctx.isProviderPluginActive
+ }, null, 8, ["introduction", "title", "inline-help", "modelValue", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "radio",
+ name: "geoip-update-period",
+ introduction: _ctx.translate('GeoIp2_DownloadNewDatabasesEvery'),
+ modelValue: _ctx.updatePeriod,
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.updatePeriod = $event;
+ }),
+ options: _ctx.updatePeriodOptions
+ }, {
+ "inline-help": Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_25, [_ctx.lastTimeUpdaterRun ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", {
+ key: 0,
+ innerHTML: _ctx.$sanitize(_ctx.translate('GeoIp2_UpdaterWasLastRun', _ctx.lastTimeUpdaterRun))
+ }, null, 8, _hoisted_26)) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_27, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('GeoIp2_UpdaterHasNotBeenRun')), 1)), _hoisted_28, _hoisted_29, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ id: "geoip-updater-next-run-time",
+ innerHTML: _ctx.$sanitize(_ctx.nextRunTimeText)
+ }, null, 8, _hoisted_30)], 512)];
+ }),
+ _: 1
+ }, 8, ["introduction", "modelValue", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "button",
+ class: "btn",
+ onClick: _cache[5] || (_cache[5] = function ($event) {
+ return _ctx.saveGeoIpLinks();
+ }),
+ value: _ctx.buttonUpdateSaveText
+ }, null, 8, _hoisted_31), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [_hoisted_32, _hoisted_33, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Progressbar, {
+ progress: _ctx.progressUpdateDownload,
+ label: _ctx.progressUpdateLabel
+ }, null, 8, ["progress", "label"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.isUpdatingGeoIpDatabase]])])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.downloadErrorMessage ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
+ key: 2,
+ innerHTML: _ctx.$sanitize(_ctx.downloadErrorMessage)
+ }, null, 8, _hoisted_34)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_35, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", _hoisted_36, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('GeoIp2_CannotSetupGeoIPAutoUpdating')), 1)]))];
+ }),
+ _: 1
+ }, 8, ["content-title"]);
+}
+// CONCATENATED MODULE: ./plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.vue?vue&type=template&id=423508b8
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.vue?vue&type=script&lang=ts
+
+
+
+var _window = window,
+ $ = _window.$;
+/* harmony default export */ var Geoip2Updatervue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ geoipDatabaseStartedInstalled: Boolean,
+ showGeoipUpdateSection: {
+ type: Boolean,
+ required: true
+ },
+ dbipLiteUrl: {
+ type: String,
+ required: true
+ },
+ dbipLiteFilename: {
+ type: String,
+ required: true
+ },
+ geoipLocUrl: String,
+ isProviderPluginActive: Boolean,
+ geoipIspUrl: String,
+ lastTimeUpdaterRun: String,
+ geoipUpdatePeriod: String,
+ updatePeriodOptions: {
+ type: Object,
+ required: true
+ },
+ nextRunTime: Number,
+ nextRunTimePretty: String
+ },
+ components: {
+ Progressbar: external_CoreHome_["Progressbar"],
+ Field: external_CorePluginsAdmin_["Field"],
+ ContentBlock: external_CoreHome_["ContentBlock"]
+ },
+ data: function data() {
+ return {
+ geoipDatabaseInstalled: !!this.geoipDatabaseStartedInstalled,
+ showFreeDownload: false,
+ showPiwikNotManagingInfo: true,
+ progressFreeDownload: 0,
+ progressUpdateDownload: 0,
+ buttonUpdateSaveText: Object(external_CoreHome_["translate"])('General_Save'),
+ progressUpdateLabel: '',
+ locationDbUrl: this.geoipLocUrl || '',
+ ispDbUrl: this.geoipIspUrl || '',
+ orgDbUrl: '',
+ updatePeriod: this.geoipUpdatePeriod || 'month',
+ isUpdatingGeoIpDatabase: false,
+ downloadErrorMessage: null
+ };
+ },
+ methods: {
+ startDownloadFreeGeoIp: function startDownloadFreeGeoIp() {
+ var _this = this;
+
+ this.showFreeDownload = true;
+ this.showPiwikNotManagingInfo = false;
+ this.progressFreeDownload = 0; // start download of free dbs
+
+ this.downloadNextChunk('downloadFreeDBIPLiteDB', function (v) {
+ _this.progressFreeDownload = v;
+ }, false, {}).then(function () {
+ window.location.reload();
+ }).catch(function (e) {
+ _this.geoipDatabaseInstalled = true;
+ _this.downloadErrorMessage = e.message;
+ });
+ },
+ startAutomaticUpdateGeoIp: function startAutomaticUpdateGeoIp() {
+ this.buttonUpdateSaveText = Object(external_CoreHome_["translate"])('General_Continue');
+ this.showGeoIpUpdateInfo();
+ },
+ showGeoIpUpdateInfo: function showGeoIpUpdateInfo() {
+ this.geoipDatabaseInstalled = true; // todo we need to replace this the proper way eventually
+ },
+ saveGeoIpLinks: function saveGeoIpLinks() {
+ var _this2 = this;
+
+ return external_CoreHome_["AjaxHelper"].post({
+ period: this.updatePeriod,
+ module: 'GeoIp2',
+ action: 'updateGeoIPLinks'
+ }, {
+ loc_db: this.locationDbUrl,
+ isp_db: this.ispDbUrl,
+ org_db: this.orgDbUrl
+ }, {
+ withTokenInUrl: true
+ }).then(function (response) {
+ return _this2.downloadNextFileIfNeeded(response, null);
+ }).then(function (response) {
+ _this2.progressUpdateLabel = '';
+ _this2.isUpdatingGeoIpDatabase = false;
+ external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('General_Done'),
+ placeat: '#done-updating-updater',
+ context: 'success',
+ noclear: true,
+ type: 'toast',
+ style: {
+ display: 'inline-block'
+ },
+ id: 'userCountryGeoIpUpdate'
+ });
+ _this2.nextRunTimePrettyUpdated = response.nextRunTime;
+ $(_this2.$refs.inlineHelpNode).effect('highlight', {
+ color: '#FFFFCB'
+ }, 2000);
+ return undefined;
+ }).catch(function (e) {
+ _this2.isUpdatingGeoIpDatabase = false;
+ external_CoreHome_["NotificationsStore"].show({
+ message: e.message,
+ placeat: '#geoipdb-update-info-error',
+ context: 'error',
+ style: {
+ display: 'inline-block'
+ },
+ id: 'userCountryGeoIpUpdate',
+ type: 'transient'
+ });
+ });
+ },
+ downloadNextFileIfNeeded: function downloadNextFileIfNeeded(response, currentDownloading) {
+ var _this3 = this;
+
+ if (response !== null && response !== void 0 && response.to_download) {
+ var continuing = currentDownloading === response.to_download;
+ this.progressUpdateDownload = 0;
+ this.progressUpdateLabel = response.to_download_label;
+ this.isUpdatingGeoIpDatabase = true; // start/continue download
+
+ return this.downloadNextChunk('downloadMissingGeoIpDb', function (v) {
+ _this3.progressUpdateDownload = v;
+ }, continuing, {
+ key: response.to_download
+ }).then(function (r) {
+ return _this3.downloadNextFileIfNeeded(r, response.to_download);
+ });
+ }
+
+ return Promise.resolve(response);
+ },
+ downloadNextChunk: function downloadNextChunk(action, progressBarSet, cont, extraData) {
+ var _this4 = this;
+
+ var data = Object.assign({}, extraData);
+ return external_CoreHome_["AjaxHelper"].post({
+ module: 'GeoIp2',
+ action: action,
+ continue: cont ? 1 : 0
+ }, data, {
+ withTokenInUrl: true
+ }).catch(function () {
+ throw new Error(Object(external_CoreHome_["translate"])('GeoIp2_FatalErrorDuringDownload'));
+ }).then(function (response) {
+ if (response.error) {
+ throw new Error(response.error);
+ } // update progress bar
+
+
+ var newProgressVal = Math.floor(response.current_size / response.expected_file_size * 100); // if incomplete, download next chunk, otherwise, show updater manager
+
+ progressBarSet(Math.min(newProgressVal, 100));
+
+ if (newProgressVal < 100) {
+ return _this4.downloadNextChunk(action, progressBarSet, true, extraData);
+ }
+
+ return response;
+ });
+ }
+ },
+ computed: {
+ nextRunTimeText: function nextRunTimeText() {
+ if (this.nextRunTimePrettyUpdated) {
+ return this.nextRunTimePrettyUpdated;
+ }
+
+ if (!this.nextRunTime) {
+ return Object(external_CoreHome_["translate"])('GeoIp2_UpdaterIsNotScheduledToRun');
+ }
+
+ if (this.nextRunTime * 1000 < Date.now()) {
+ return Object(external_CoreHome_["translate"])('GeoIp2_UpdaterScheduledForNextRun');
+ }
+
+ return Object(external_CoreHome_["translate"])('GeoIp2_UpdaterWillRunNext', "<strong>".concat(this.nextRunTimePretty, "</strong>"));
+ },
+ providerPluginHelp: function providerPluginHelp() {
+ if (this.isProviderPluginActive) {
+ return undefined;
+ }
+
+ var text = Object(external_CoreHome_["translate"])('GeoIp2_ISPRequiresProviderPlugin');
+ return "<div style=\"margin:0\" class='alert alert-warning'>".concat(text, "</div>");
+ },
+ contentTitle: function contentTitle() {
+ return Object(external_CoreHome_["translate"])(this.geoipDatabaseInstalled ? 'GeoIp2_SetupAutomaticUpdatesOfGeoIP' : 'GeoIp2_GeoIPDatabases');
+ },
+ accuracyNote: function accuracyNote() {
+ return Object(external_CoreHome_["translate"])('UserCountry_GeoIpDbIpAccuracyNote', '<a href="https://dev.maxmind.com/geoip/geoip2/geolite2/?rId=piwik" rel="noreferrer noopener" target="_blank">', '</a>');
+ },
+ purchasedGeoIpText: function purchasedGeoIpText() {
+ var maxMindLink = 'http://www.maxmind.com/en/geolocation_landing?rId=piwik';
+ return Object(external_CoreHome_["translate"])('GeoIp2_IPurchasedGeoIPDBs', "<a rel=\"noreferrer noopener\" href=\"".concat(maxMindLink, "\" target=\"_blank\">"), '</a>', '<a rel="noreferrer noopener" href="https://db-ip.com/db/?refid=mtm" target="_blank">', '</a>');
+ },
+ geoIPUpdaterInstructions: function geoIPUpdaterInstructions() {
+ return Object(external_CoreHome_["translate"])('GeoIp2_GeoIPUpdaterInstructions', '<a href="http://www.maxmind.com/?rId=piwik" rel="noreferrer noopener" target="_blank">', '</a>', '<a rel="noreferrer noopener" href="https://db-ip.com/?refid=mtm" target="_blank">', '</a>');
+ },
+ geoliteCityLink: function geoliteCityLink() {
+ var translation = Object(external_CoreHome_["translate"])('GeoIp2_GeoLiteCityLink', "<a rel=\"noreferrer noopener\" href=\"".concat(this.dbipLiteUrl, "\" target=\"_blank\">"), this.dbipLiteUrl, '</a>');
+ return "".concat(translation, "<br /><br />");
+ },
+ maxMindLinkExplanation: function maxMindLinkExplanation() {
+ var link = 'https://matomo.org/faq/how-to/' + 'how-do-i-get-the-geolocation-download-url-for-the-free-maxmind-db/';
+ return Object(external_CoreHome_["translate"])('UserCountry_MaxMindLinkExplanation', "<a href=\"".concat(link, "\" rel=\"noreferrer noopener\" target=\"_blank\">"), '</a>');
+ },
+ freeProgressbarLabel: function freeProgressbarLabel() {
+ return Object(external_CoreHome_["translate"])('GeoIp2_DownloadingDb', "<a href=\"".concat(this.dbipLiteUrl, "\">").concat(this.dbipLiteFilename, "</a>..."));
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.vue
+
+
+
+Geoip2Updatervue_type_script_lang_ts.render = render
+
+/* harmony default export */ var Geoip2Updater = (Geoip2Updatervue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+/* harmony default export */ var Geoip2Updater_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: Geoip2Updater,
+ scope: {
+ geoIpDatabasesInstalled: {
+ angularJsBind: '<'
+ },
+ showGeoIpUpdateSection: {
+ angularJsBind: '<'
+ },
+ dbipLiteUrl: {
+ angularJsBind: '<'
+ },
+ dbipLiteFilename: {
+ angularJsBind: '<'
+ },
+ geoipLocUrl: {
+ angularJsBind: '<'
+ },
+ isProviderPluginActive: {
+ angularJsBind: '<'
+ },
+ geoipIspUrl: {
+ angularJsBind: '<'
+ },
+ lastTimeUpdaterRun: {
+ angularJsBind: '<'
+ },
+ geoipUpdatePeriod: {
+ angularJsBind: '<'
+ },
+ updatePeriodOptions: {
+ angularJsBind: '<'
+ },
+ geoipDatabaseStartedInstalled: {
+ angularJsBind: '<'
+ },
+ showGeoipUpdateSection: {
+ angularJsBind: '<'
+ },
+ nextRunTime: {
+ angularJsBind: '<'
+ },
+ nextRunTimePretty: {
+ angularJsBind: '<'
+ }
+ },
+ directiveName: 'piwikGeoip2Updater',
+ transclude: true
+}));
+// CONCATENATED MODULE: ./plugins/GeoIp2/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=GeoIp2.umd.js.map \ No newline at end of file
diff --git a/plugins/GeoIp2/vue/dist/GeoIp2.umd.min.js b/plugins/GeoIp2/vue/dist/GeoIp2.umd.min.js
new file mode 100644
index 0000000000..e634cb447e
--- /dev/null
+++ b/plugins/GeoIp2/vue/dist/GeoIp2.umd.min.js
@@ -0,0 +1,8 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["GeoIp2"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["GeoIp2"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var r=t[o]={i:o,l:!1,exports:{}};return e[o].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(o,r,function(t){return e[t]}.bind(null,r));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/GeoIp2/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"Geoip2Updater",(function(){return W})),"undefined"!==typeof window){var o=window.document.currentScript,r=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var a=n("19dc"),i=n("8bbf"),l={key:0},d={key:0},c={id:"manage-geoip-dbs"},s={class:"row",id:"geoipdb-screen1"},p={class:"geoipdb-column-1 col s6"},u=Object(i["createElementVNode"])("sup",null,[Object(i["createElementVNode"])("small",null,"*")],-1),b={class:"geoipdb-column-2 col s6"},m=["innerHTML"],g={class:"geoipdb-column-1 col s6"},f=["value"],j={class:"geoipdb-column-2 col s6"},O=["value"],h={class:"row"},w=Object(i["createTextVNode"])("* "),I=["innerHTML"],v={id:"geoipdb-screen2-download"},N={key:1,id:"geoipdb-update-info"},U=["innerHTML"],D=Object(i["createElementVNode"])("br",null,null,-1),G=Object(i["createElementVNode"])("br",null,null,-1),k=["innerHTML"],x=["innerHTML"],y=Object(i["createElementVNode"])("br",null,null,-1),P=Object(i["createElementVNode"])("br",null,null,-1),V={id:"locationProviderUpdatePeriodInlineHelp",class:"inline-help-node",ref:"inlineHelpNode"},E=["innerHTML"],_={key:1},T=Object(i["createElementVNode"])("br",null,null,-1),L=Object(i["createElementVNode"])("br",null,null,-1),B=["innerHTML"],S=["value"],C=Object(i["createElementVNode"])("div",{id:"done-updating-updater"},null,-1),M=Object(i["createElementVNode"])("div",{id:"geoipdb-update-info-error"},null,-1),H=["innerHTML"],F={key:1},R={class:"form-description"};function A(e,t,n,o,r,a){var A=Object(i["resolveComponent"])("Progressbar"),J=Object(i["resolveComponent"])("Field"),q=Object(i["resolveComponent"])("ContentBlock");return Object(i["openBlock"])(),Object(i["createBlock"])(q,{"content-title":e.contentTitle,id:"geoip-db-mangement"},{default:Object(i["withCtx"])((function(){return[e.showGeoipUpdateSection?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",l,[e.geoipDatabaseInstalled?Object(i["createCommentVNode"])("",!0):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",d,[Object(i["withDirectives"])(Object(i["createElementVNode"])("div",null,[Object(i["createElementVNode"])("h3",null,Object(i["toDisplayString"])(e.translate("GeoIp2_NotManagingGeoIPDBs")),1),Object(i["createElementVNode"])("div",c,[Object(i["createElementVNode"])("div",s,[Object(i["createElementVNode"])("div",p,[Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("GeoIp2_IWantToDownloadFreeGeoIP")),1),u])]),Object(i["createElementVNode"])("div",b,[Object(i["createElementVNode"])("p",{innerHTML:e.$sanitize(e.purchasedGeoIpText)},null,8,m)]),Object(i["createElementVNode"])("div",g,[Object(i["createElementVNode"])("input",{type:"button",class:"btn",onClick:t[0]||(t[0]=function(t){return e.startDownloadFreeGeoIp()}),value:"".concat(e.translate("General_GetStarted"),"...")},null,8,f)]),Object(i["createElementVNode"])("div",j,[Object(i["createElementVNode"])("input",{type:"button",class:"btn",id:"start-automatic-update-geoip",onClick:t[1]||(t[1]=function(t){return e.startAutomaticUpdateGeoIp()}),value:"".concat(e.translate("General_GetStarted"),"...")},null,8,O)])]),Object(i["createElementVNode"])("div",h,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("sup",null,[w,Object(i["createElementVNode"])("small",{innerHTML:e.$sanitize(e.accuracyNote)},null,8,I)])])])])],512),[[i["vShow"],e.showPiwikNotManagingInfo]]),Object(i["withDirectives"])(Object(i["createElementVNode"])("div",v,[Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(A,{label:e.freeProgressbarLabel,progress:e.progressFreeDownload},null,8,["label","progress"])])],512),[[i["vShow"],e.showFreeDownload]])])),e.geoipDatabaseInstalled&&!e.downloadErrorMessage?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",N,[Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.geoIPUpdaterInstructions)},null,8,U),D,G,e.dbipLiteUrl?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",{key:0,innerHTML:e.$sanitize(e.geoliteCityLink)},null,8,k)):Object(i["createCommentVNode"])("",!0),Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.maxMindLinkExplanation)},null,8,x),Object(i["withDirectives"])(Object(i["createElementVNode"])("span",null,[y,P,Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("GeoIp2_GeoIPUpdaterIntro"))+": ",1)],512),[[i["vShow"],e.geoipDatabaseInstalled]])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(J,{uicontrol:"text",name:"geoip-location-db",introduction:e.translate("GeoIp2_LocationDatabase"),title:e.translate("Actions_ColumnDownloadURL"),"inline-help":e.translate("GeoIp2_LocationDatabaseHint"),modelValue:e.locationDbUrl,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.locationDbUrl=t})},null,8,["introduction","title","inline-help","modelValue"])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(J,{uicontrol:"text",name:"geoip-isp-db",introduction:e.translate("GeoIp2_ISPDatabase"),title:e.translate("Actions_ColumnDownloadURL"),"inline-help":e.providerPluginHelp,modelValue:e.ispDbUrl,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.ispDbUrl=t}),disabled:!e.isProviderPluginActive},null,8,["introduction","title","inline-help","modelValue","disabled"])]),Object(i["createElementVNode"])("div",null,[Object(i["createVNode"])(J,{uicontrol:"radio",name:"geoip-update-period",introduction:e.translate("GeoIp2_DownloadNewDatabasesEvery"),modelValue:e.updatePeriod,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.updatePeriod=t}),options:e.updatePeriodOptions},{"inline-help":Object(i["withCtx"])((function(){return[Object(i["createElementVNode"])("div",V,[e.lastTimeUpdaterRun?(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",{key:0,innerHTML:e.$sanitize(e.translate("GeoIp2_UpdaterWasLastRun",e.lastTimeUpdaterRun))},null,8,E)):(Object(i["openBlock"])(),Object(i["createElementBlock"])("span",_,Object(i["toDisplayString"])(e.translate("GeoIp2_UpdaterHasNotBeenRun")),1)),T,L,Object(i["createElementVNode"])("div",{id:"geoip-updater-next-run-time",innerHTML:e.$sanitize(e.nextRunTimeText)},null,8,B)],512)]})),_:1},8,["introduction","modelValue","options"])]),Object(i["createElementVNode"])("input",{type:"button",class:"btn",onClick:t[5]||(t[5]=function(t){return e.saveGeoIpLinks()}),value:e.buttonUpdateSaveText},null,8,S),Object(i["createElementVNode"])("div",null,[C,M,Object(i["createElementVNode"])("div",null,[Object(i["withDirectives"])(Object(i["createVNode"])(A,{progress:e.progressUpdateDownload,label:e.progressUpdateLabel},null,8,["progress","label"]),[[i["vShow"],e.isUpdatingGeoIpDatabase]])])])])):Object(i["createCommentVNode"])("",!0),e.downloadErrorMessage?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",{key:2,innerHTML:e.$sanitize(e.downloadErrorMessage)},null,8,H)):Object(i["createCommentVNode"])("",!0)])):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",F,[Object(i["createElementVNode"])("p",R,Object(i["toDisplayString"])(e.translate("GeoIp2_CannotSetupGeoIPAutoUpdating")),1)]))]})),_:1},8,["content-title"])}var J=n("a5a2"),q=window,$=q.$,z=Object(i["defineComponent"])({props:{geoipDatabaseStartedInstalled:Boolean,showGeoipUpdateSection:{type:Boolean,required:!0},dbipLiteUrl:{type:String,required:!0},dbipLiteFilename:{type:String,required:!0},geoipLocUrl:String,isProviderPluginActive:Boolean,geoipIspUrl:String,lastTimeUpdaterRun:String,geoipUpdatePeriod:String,updatePeriodOptions:{type:Object,required:!0},nextRunTime:Number,nextRunTimePretty:String},components:{Progressbar:a["Progressbar"],Field:J["Field"],ContentBlock:a["ContentBlock"]},data:function(){return{geoipDatabaseInstalled:!!this.geoipDatabaseStartedInstalled,showFreeDownload:!1,showPiwikNotManagingInfo:!0,progressFreeDownload:0,progressUpdateDownload:0,buttonUpdateSaveText:Object(a["translate"])("General_Save"),progressUpdateLabel:"",locationDbUrl:this.geoipLocUrl||"",ispDbUrl:this.geoipIspUrl||"",orgDbUrl:"",updatePeriod:this.geoipUpdatePeriod||"month",isUpdatingGeoIpDatabase:!1,downloadErrorMessage:null}},methods:{startDownloadFreeGeoIp:function(){var e=this;this.showFreeDownload=!0,this.showPiwikNotManagingInfo=!1,this.progressFreeDownload=0,this.downloadNextChunk("downloadFreeDBIPLiteDB",(function(t){e.progressFreeDownload=t}),!1,{}).then((function(){window.location.reload()})).catch((function(t){e.geoipDatabaseInstalled=!0,e.downloadErrorMessage=t.message}))},startAutomaticUpdateGeoIp:function(){this.buttonUpdateSaveText=Object(a["translate"])("General_Continue"),this.showGeoIpUpdateInfo()},showGeoIpUpdateInfo:function(){this.geoipDatabaseInstalled=!0},saveGeoIpLinks:function(){var e=this;return a["AjaxHelper"].post({period:this.updatePeriod,module:"GeoIp2",action:"updateGeoIPLinks"},{loc_db:this.locationDbUrl,isp_db:this.ispDbUrl,org_db:this.orgDbUrl},{withTokenInUrl:!0}).then((function(t){return e.downloadNextFileIfNeeded(t,null)})).then((function(t){e.progressUpdateLabel="",e.isUpdatingGeoIpDatabase=!1,a["NotificationsStore"].show({message:Object(a["translate"])("General_Done"),placeat:"#done-updating-updater",context:"success",noclear:!0,type:"toast",style:{display:"inline-block"},id:"userCountryGeoIpUpdate"}),e.nextRunTimePrettyUpdated=t.nextRunTime,$(e.$refs.inlineHelpNode).effect("highlight",{color:"#FFFFCB"},2e3)})).catch((function(t){e.isUpdatingGeoIpDatabase=!1,a["NotificationsStore"].show({message:t.message,placeat:"#geoipdb-update-info-error",context:"error",style:{display:"inline-block"},id:"userCountryGeoIpUpdate",type:"transient"})}))},downloadNextFileIfNeeded:function(e,t){var n=this;if(null!==e&&void 0!==e&&e.to_download){var o=t===e.to_download;return this.progressUpdateDownload=0,this.progressUpdateLabel=e.to_download_label,this.isUpdatingGeoIpDatabase=!0,this.downloadNextChunk("downloadMissingGeoIpDb",(function(e){n.progressUpdateDownload=e}),o,{key:e.to_download}).then((function(t){return n.downloadNextFileIfNeeded(t,e.to_download)}))}return Promise.resolve(e)},downloadNextChunk:function(e,t,n,o){var r=this,i=Object.assign({},o);return a["AjaxHelper"].post({module:"GeoIp2",action:e,continue:n?1:0},i,{withTokenInUrl:!0}).catch((function(){throw new Error(Object(a["translate"])("GeoIp2_FatalErrorDuringDownload"))})).then((function(n){if(n.error)throw new Error(n.error);var a=Math.floor(n.current_size/n.expected_file_size*100);return t(Math.min(a,100)),a<100?r.downloadNextChunk(e,t,!0,o):n}))}},computed:{nextRunTimeText:function(){return this.nextRunTimePrettyUpdated?this.nextRunTimePrettyUpdated:this.nextRunTime?1e3*this.nextRunTime<Date.now()?Object(a["translate"])("GeoIp2_UpdaterScheduledForNextRun"):Object(a["translate"])("GeoIp2_UpdaterWillRunNext","<strong>".concat(this.nextRunTimePretty,"</strong>")):Object(a["translate"])("GeoIp2_UpdaterIsNotScheduledToRun")},providerPluginHelp:function(){if(!this.isProviderPluginActive){var e=Object(a["translate"])("GeoIp2_ISPRequiresProviderPlugin");return"<div style=\"margin:0\" class='alert alert-warning'>".concat(e,"</div>")}},contentTitle:function(){return Object(a["translate"])(this.geoipDatabaseInstalled?"GeoIp2_SetupAutomaticUpdatesOfGeoIP":"GeoIp2_GeoIPDatabases")},accuracyNote:function(){return Object(a["translate"])("UserCountry_GeoIpDbIpAccuracyNote",'<a href="https://dev.maxmind.com/geoip/geoip2/geolite2/?rId=piwik" rel="noreferrer noopener" target="_blank">',"</a>")},purchasedGeoIpText:function(){var e="http://www.maxmind.com/en/geolocation_landing?rId=piwik";return Object(a["translate"])("GeoIp2_IPurchasedGeoIPDBs",'<a rel="noreferrer noopener" href="'.concat(e,'" target="_blank">'),"</a>",'<a rel="noreferrer noopener" href="https://db-ip.com/db/?refid=mtm" target="_blank">',"</a>")},geoIPUpdaterInstructions:function(){return Object(a["translate"])("GeoIp2_GeoIPUpdaterInstructions",'<a href="http://www.maxmind.com/?rId=piwik" rel="noreferrer noopener" target="_blank">',"</a>",'<a rel="noreferrer noopener" href="https://db-ip.com/?refid=mtm" target="_blank">',"</a>")},geoliteCityLink:function(){var e=Object(a["translate"])("GeoIp2_GeoLiteCityLink",'<a rel="noreferrer noopener" href="'.concat(this.dbipLiteUrl,'" target="_blank">'),this.dbipLiteUrl,"</a>");return"".concat(e,"<br /><br />")},maxMindLinkExplanation:function(){var e="https://matomo.org/faq/how-to/how-do-i-get-the-geolocation-download-url-for-the-free-maxmind-db/";return Object(a["translate"])("UserCountry_MaxMindLinkExplanation",'<a href="'.concat(e,'" rel="noreferrer noopener" target="_blank">'),"</a>")},freeProgressbarLabel:function(){return Object(a["translate"])("GeoIp2_DownloadingDb",'<a href="'.concat(this.dbipLiteUrl,'">').concat(this.dbipLiteFilename,"</a>..."))}}});z.render=A;var W=z;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */Object(a["createAngularJsAdapter"])({component:W,scope:{geoIpDatabasesInstalled:{angularJsBind:"<"},showGeoIpUpdateSection:{angularJsBind:"<"},dbipLiteUrl:{angularJsBind:"<"},dbipLiteFilename:{angularJsBind:"<"},geoipLocUrl:{angularJsBind:"<"},isProviderPluginActive:{angularJsBind:"<"},geoipIspUrl:{angularJsBind:"<"},lastTimeUpdaterRun:{angularJsBind:"<"},geoipUpdatePeriod:{angularJsBind:"<"},updatePeriodOptions:{angularJsBind:"<"},geoipDatabaseStartedInstalled:{angularJsBind:"<"},showGeoipUpdateSection:{angularJsBind:"<"},nextRunTime:{angularJsBind:"<"},nextRunTimePretty:{angularJsBind:"<"}},directiveName:"piwikGeoip2Updater",transclude:!0})}})}));
+//# sourceMappingURL=GeoIp2.umd.min.js.map \ No newline at end of file
diff --git a/plugins/GeoIp2/vue/dist/umd.metadata.json b/plugins/GeoIp2/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..dce4477a3c
--- /dev/null
+++ b/plugins/GeoIp2/vue/dist/umd.metadata.json
@@ -0,0 +1,6 @@
+{
+ "dependsOn": [
+ "CoreHome",
+ "CorePluginsAdmin"
+ ]
+} \ No newline at end of file
diff --git a/plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.adapter.ts b/plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.adapter.ts
new file mode 100644
index 0000000000..4ab8d05aa8
--- /dev/null
+++ b/plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.adapter.ts
@@ -0,0 +1,59 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter } from 'CoreHome';
+import Geoip2Updater from './Geoip2Updater.vue';
+
+export default createAngularJsAdapter({
+ component: Geoip2Updater,
+ scope: {
+ geoIpDatabasesInstalled: {
+ angularJsBind: '<',
+ },
+ showGeoIpUpdateSection: {
+ angularJsBind: '<',
+ },
+ dbipLiteUrl: {
+ angularJsBind: '<',
+ },
+ dbipLiteFilename: {
+ angularJsBind: '<',
+ },
+ geoipLocUrl: {
+ angularJsBind: '<',
+ },
+ isProviderPluginActive: {
+ angularJsBind: '<',
+ },
+ geoipIspUrl: {
+ angularJsBind: '<',
+ },
+ lastTimeUpdaterRun: {
+ angularJsBind: '<',
+ },
+ geoipUpdatePeriod: {
+ angularJsBind: '<',
+ },
+ updatePeriodOptions: {
+ angularJsBind: '<',
+ },
+ geoipDatabaseStartedInstalled: {
+ angularJsBind: '<',
+ },
+ showGeoipUpdateSection: {
+ angularJsBind: '<',
+ },
+ nextRunTime: {
+ angularJsBind: '<',
+ },
+ nextRunTimePretty: {
+ angularJsBind: '<',
+ },
+ },
+ directiveName: 'piwikGeoip2Updater',
+ transclude: true,
+});
diff --git a/plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.vue b/plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.vue
new file mode 100644
index 0000000000..83e84dd15a
--- /dev/null
+++ b/plugins/GeoIp2/vue/src/Geoip2Updater/Geoip2Updater.vue
@@ -0,0 +1,474 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <ContentBlock :content-title="contentTitle" id="geoip-db-mangement">
+ <div v-if="showGeoipUpdateSection">
+ <div v-if="!geoipDatabaseInstalled">
+ <div v-show="showPiwikNotManagingInfo">
+ <h3>{{ translate('GeoIp2_NotManagingGeoIPDBs') }}</h3>
+ <div id="manage-geoip-dbs">
+ <div
+ class="row"
+ id="geoipdb-screen1"
+ >
+ <div class="geoipdb-column-1 col s6">
+ <p>{{ translate('GeoIp2_IWantToDownloadFreeGeoIP') }}<sup><small>*</small></sup></p>
+ </div>
+ <div class="geoipdb-column-2 col s6">
+ <p v-html="$sanitize(purchasedGeoIpText)"></p>
+ </div>
+ <div class="geoipdb-column-1 col s6">
+ <input
+ type="button"
+ class="btn"
+ @click="startDownloadFreeGeoIp()"
+ :value="`${translate('General_GetStarted')}...`"
+ />
+ </div>
+ <div class="geoipdb-column-2 col s6">
+ <input
+ type="button"
+ class="btn"
+ id="start-automatic-update-geoip"
+ @click="startAutomaticUpdateGeoIp()"
+ :value="`${translate('General_GetStarted')}...`"
+ />
+ </div>
+ </div>
+ <div class="row">
+ <p><sup>* <small v-html="$sanitize(accuracyNote)"></small></sup></p>
+ </div>
+ </div>
+ </div>
+ <div
+ id="geoipdb-screen2-download"
+ v-show="showFreeDownload"
+ >
+ <div>
+ <Progressbar
+ :label="freeProgressbarLabel"
+ :progress="progressFreeDownload"
+ >
+ </Progressbar>
+ </div>
+ </div>
+ </div>
+
+ <div
+ id="geoipdb-update-info"
+ v-if="geoipDatabaseInstalled && !downloadErrorMessage"
+ >
+ <p>
+ <span v-html="$sanitize(geoIPUpdaterInstructions)"></span>
+ <br /><br />
+ <span v-if="!!dbipLiteUrl" v-html="$sanitize(geoliteCityLink)"></span>
+ <span v-html="$sanitize(maxMindLinkExplanation)"></span>
+ <span v-show="geoipDatabaseInstalled">
+ <br /><br />{{ translate('GeoIp2_GeoIPUpdaterIntro') }}:
+ </span>
+ </p>
+ <div>
+ <Field
+ uicontrol="text"
+ name="geoip-location-db"
+ :introduction="translate('GeoIp2_LocationDatabase')"
+ :title="translate('Actions_ColumnDownloadURL')"
+ :inline-help="translate('GeoIp2_LocationDatabaseHint')"
+ v-model="locationDbUrl"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="text"
+ name="geoip-isp-db"
+ :introduction="translate('GeoIp2_ISPDatabase')"
+ :title="translate('Actions_ColumnDownloadURL')"
+ :inline-help="providerPluginHelp"
+ v-model="ispDbUrl"
+ :disabled="!isProviderPluginActive"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="radio"
+ name="geoip-update-period"
+ :introduction="translate('GeoIp2_DownloadNewDatabasesEvery')"
+ v-model="updatePeriod"
+ :options="updatePeriodOptions"
+ >
+ <template v-slot:inline-help>
+ <div
+ id="locationProviderUpdatePeriodInlineHelp"
+ class="inline-help-node"
+ ref="inlineHelpNode"
+ >
+ <span
+ v-if="lastTimeUpdaterRun"
+ v-html="$sanitize(
+ translate('GeoIp2_UpdaterWasLastRun', lastTimeUpdaterRun),
+ )"
+ />
+ <span v-else>{{ translate('GeoIp2_UpdaterHasNotBeenRun') }}</span>
+ <br /><br />
+ <div id="geoip-updater-next-run-time" v-html="$sanitize(nextRunTimeText)">
+ </div>
+ </div>
+ </template>
+ </Field>
+ </div>
+ <input
+ type="button"
+ class="btn"
+ @click="saveGeoIpLinks()"
+ :value="buttonUpdateSaveText"
+ />
+ <div>
+ <div id="done-updating-updater" />
+ <div id="geoipdb-update-info-error" />
+ <div>
+ <Progressbar
+ v-show="isUpdatingGeoIpDatabase"
+ :progress="progressUpdateDownload"
+ :label="progressUpdateLabel"
+ />
+ </div>
+ </div>
+ </div>
+ <div v-if="downloadErrorMessage" v-html="$sanitize(downloadErrorMessage)"></div>
+ </div>
+ <div v-else>
+ <p class="form-description">{{ translate('GeoIp2_CannotSetupGeoIPAutoUpdating') }}</p>
+ </div>
+ </ContentBlock>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ translate,
+ AjaxHelper,
+ Progressbar,
+ ContentBlock,
+ NotificationsStore,
+} from 'CoreHome';
+import { Field } from 'CorePluginsAdmin';
+
+interface Geoip2UpdaterState {
+ geoipDatabaseInstalled: boolean;
+ showFreeDownload: boolean;
+ showPiwikNotManagingInfo: boolean;
+ progressFreeDownload: number;
+ progressUpdateDownload: number;
+ buttonUpdateSaveText: string;
+ progressUpdateLabel: string;
+ locationDbUrl: string;
+ ispDbUrl: string;
+ orgDbUrl: string;
+ updatePeriod: string;
+ isUpdatingGeoIpDatabase: boolean;
+ downloadErrorMessage: string|null;
+ nextRunTimePrettyUpdated?: string;
+}
+
+interface UpdateGeoIpLinksResponse {
+ to_download?: string;
+ to_download_label?: string;
+ nextRunTime: string;
+}
+
+interface DownloadChunkResponse {
+ current_size: number;
+ expected_file_size: number;
+ nextRunTime?: string;
+ to_download?: string;
+ to_download_label?: string;
+ error?: string;
+}
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ geoipDatabaseStartedInstalled: Boolean,
+ showGeoipUpdateSection: {
+ type: Boolean,
+ required: true,
+ },
+ dbipLiteUrl: {
+ type: String,
+ required: true,
+ },
+ dbipLiteFilename: {
+ type: String,
+ required: true,
+ },
+ geoipLocUrl: String,
+ isProviderPluginActive: Boolean,
+ geoipIspUrl: String,
+ lastTimeUpdaterRun: String,
+ geoipUpdatePeriod: String,
+ updatePeriodOptions: {
+ type: Object,
+ required: true,
+ },
+ nextRunTime: Number,
+ nextRunTimePretty: String,
+ },
+ components: {
+ Progressbar,
+ Field,
+ ContentBlock,
+ },
+ data(): Geoip2UpdaterState {
+ return {
+ geoipDatabaseInstalled: !!this.geoipDatabaseStartedInstalled,
+ showFreeDownload: false,
+ showPiwikNotManagingInfo: true,
+ progressFreeDownload: 0,
+ progressUpdateDownload: 0,
+ buttonUpdateSaveText: translate('General_Save'),
+ progressUpdateLabel: '',
+ locationDbUrl: this.geoipLocUrl || '',
+ ispDbUrl: this.geoipIspUrl || '',
+ orgDbUrl: '',
+ updatePeriod: this.geoipUpdatePeriod || 'month',
+ isUpdatingGeoIpDatabase: false,
+ downloadErrorMessage: null,
+ };
+ },
+ methods: {
+ startDownloadFreeGeoIp() {
+ this.showFreeDownload = true;
+ this.showPiwikNotManagingInfo = false;
+ this.progressFreeDownload = 0; // start download of free dbs
+
+ this.downloadNextChunk(
+ 'downloadFreeDBIPLiteDB',
+ (v) => {
+ this.progressFreeDownload = v;
+ },
+ false,
+ {},
+ ).then(() => {
+ window.location.reload();
+ }).catch((e) => {
+ this.geoipDatabaseInstalled = true;
+ this.downloadErrorMessage = e.message;
+ });
+ },
+ startAutomaticUpdateGeoIp() {
+ this.buttonUpdateSaveText = translate('General_Continue');
+ this.showGeoIpUpdateInfo();
+ },
+ showGeoIpUpdateInfo() {
+ this.geoipDatabaseInstalled = true; // todo we need to replace this the proper way eventually
+ },
+ saveGeoIpLinks() {
+ return AjaxHelper.post<UpdateGeoIpLinksResponse>(
+ {
+ period: this.updatePeriod,
+ module: 'GeoIp2',
+ action: 'updateGeoIPLinks',
+ },
+ {
+ loc_db: this.locationDbUrl,
+ isp_db: this.ispDbUrl,
+ org_db: this.orgDbUrl,
+ },
+ {
+ withTokenInUrl: true,
+ },
+ ).then(
+ (response) => this.downloadNextFileIfNeeded(response, null),
+ ).then((response) => {
+ this.progressUpdateLabel = '';
+ this.isUpdatingGeoIpDatabase = false;
+
+ NotificationsStore.show({
+ message: translate('General_Done'),
+ placeat: '#done-updating-updater',
+ context: 'success',
+ noclear: true,
+ type: 'toast',
+ style: {
+ display: 'inline-block',
+ },
+ id: 'userCountryGeoIpUpdate',
+ });
+
+ this.nextRunTimePrettyUpdated = response.nextRunTime;
+ $(this.$refs.inlineHelpNode as HTMLElement).effect('highlight', {
+ color: '#FFFFCB',
+ }, 2000);
+
+ return undefined;
+ }).catch((e) => {
+ this.isUpdatingGeoIpDatabase = false;
+
+ NotificationsStore.show({
+ message: e.message,
+ placeat: '#geoipdb-update-info-error',
+ context: 'error',
+ style: {
+ display: 'inline-block',
+ },
+ id: 'userCountryGeoIpUpdate',
+ type: 'transient',
+ });
+ });
+ },
+ downloadNextFileIfNeeded(
+ response: DownloadChunkResponse|UpdateGeoIpLinksResponse,
+ currentDownloading?: string|null,
+ ): Promise<DownloadChunkResponse|UpdateGeoIpLinksResponse> {
+ if (response?.to_download) {
+ const continuing = currentDownloading === response.to_download;
+
+ this.progressUpdateDownload = 0;
+ this.progressUpdateLabel = response.to_download_label!;
+ this.isUpdatingGeoIpDatabase = true; // start/continue download
+
+ return this.downloadNextChunk(
+ 'downloadMissingGeoIpDb',
+ (v) => {
+ this.progressUpdateDownload = v;
+ },
+ continuing,
+ {
+ key: response.to_download,
+ },
+ ).then((r) => this.downloadNextFileIfNeeded(r, response.to_download));
+ }
+
+ return Promise.resolve(response);
+ },
+ downloadNextChunk(
+ action: string,
+ progressBarSet: (value: number) => void,
+ cont: boolean,
+ extraData: QueryParameters,
+ ): Promise<DownloadChunkResponse> {
+ const data: QueryParameters = { ...extraData };
+
+ return AjaxHelper.post<DownloadChunkResponse>(
+ {
+ module: 'GeoIp2',
+ action,
+ continue: cont ? 1 : 0,
+ },
+ data,
+ { withTokenInUrl: true },
+ ).catch(() => {
+ throw new Error(translate('GeoIp2_FatalErrorDuringDownload'));
+ }).then((response) => {
+ if (response.error) {
+ throw new Error(response.error!);
+ }
+
+ // update progress bar
+ const newProgressVal = Math.floor(
+ (response.current_size / response.expected_file_size) * 100,
+ );
+
+ // if incomplete, download next chunk, otherwise, show updater manager
+ progressBarSet(Math.min(newProgressVal, 100));
+
+ if (newProgressVal < 100) {
+ return this.downloadNextChunk(action, progressBarSet, true, extraData);
+ }
+
+ return response;
+ });
+ },
+ },
+ computed: {
+ nextRunTimeText() {
+ if (this.nextRunTimePrettyUpdated) {
+ return this.nextRunTimePrettyUpdated;
+ }
+
+ if (!this.nextRunTime) {
+ return translate('GeoIp2_UpdaterIsNotScheduledToRun');
+ }
+
+ if (this.nextRunTime * 1000 < Date.now()) {
+ return translate('GeoIp2_UpdaterScheduledForNextRun');
+ }
+
+ return translate(
+ 'GeoIp2_UpdaterWillRunNext',
+ `<strong>${this.nextRunTimePretty}</strong>`,
+ );
+ },
+ providerPluginHelp() {
+ if (this.isProviderPluginActive) {
+ return undefined;
+ }
+
+ const text = translate('GeoIp2_ISPRequiresProviderPlugin');
+ return `<div style="margin:0" class='alert alert-warning'>${text}</div>`;
+ },
+ contentTitle() {
+ return translate(
+ this.geoipDatabaseInstalled ? 'GeoIp2_SetupAutomaticUpdatesOfGeoIP' : 'GeoIp2_GeoIPDatabases',
+ );
+ },
+ accuracyNote() {
+ return translate(
+ 'UserCountry_GeoIpDbIpAccuracyNote',
+ '<a href="https://dev.maxmind.com/geoip/geoip2/geolite2/?rId=piwik" rel="noreferrer noopener" target="_blank">',
+ '</a>',
+ );
+ },
+ purchasedGeoIpText() {
+ const maxMindLink = 'http://www.maxmind.com/en/geolocation_landing?rId=piwik';
+ return translate(
+ 'GeoIp2_IPurchasedGeoIPDBs',
+ `<a rel="noreferrer noopener" href="${maxMindLink}" target="_blank">`,
+ '</a>',
+ '<a rel="noreferrer noopener" href="https://db-ip.com/db/?refid=mtm" target="_blank">',
+ '</a>',
+ );
+ },
+ geoIPUpdaterInstructions() {
+ return translate(
+ 'GeoIp2_GeoIPUpdaterInstructions',
+ '<a href="http://www.maxmind.com/?rId=piwik" rel="noreferrer noopener" target="_blank">',
+ '</a>',
+ '<a rel="noreferrer noopener" href="https://db-ip.com/?refid=mtm" target="_blank">',
+ '</a>',
+ );
+ },
+ geoliteCityLink() {
+ const translation = translate(
+ 'GeoIp2_GeoLiteCityLink',
+ `<a rel="noreferrer noopener" href="${this.dbipLiteUrl}" target="_blank">`,
+ this.dbipLiteUrl,
+ '</a>',
+ );
+ return `${translation}<br /><br />`;
+ },
+ maxMindLinkExplanation() {
+ const link = 'https://matomo.org/faq/how-to/'
+ + 'how-do-i-get-the-geolocation-download-url-for-the-free-maxmind-db/';
+ return translate(
+ 'UserCountry_MaxMindLinkExplanation',
+ `<a href="${link}" rel="noreferrer noopener" target="_blank">`,
+ '</a>',
+ );
+ },
+ freeProgressbarLabel() {
+ return translate(
+ 'GeoIp2_DownloadingDb',
+ `<a href="${this.dbipLiteUrl}">${this.dbipLiteFilename}</a>...`,
+ );
+ },
+ },
+});
+</script>
diff --git a/plugins/GeoIp2/vue/src/index.ts b/plugins/GeoIp2/vue/src/index.ts
new file mode 100644
index 0000000000..f7050104d1
--- /dev/null
+++ b/plugins/GeoIp2/vue/src/index.ts
@@ -0,0 +1,10 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import './Geoip2Updater/Geoip2Updater.adapter';
+
+export { default as Geoip2Updater } from './Geoip2Updater/Geoip2Updater.vue';
diff --git a/plugins/Goals/lang/ga.json b/plugins/Goals/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Goals/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Goals/lang/id.json b/plugins/Goals/lang/id.json
index 07f8ec405b..5b985a6a10 100644
--- a/plugins/Goals/lang/id.json
+++ b/plugins/Goals/lang/id.json
@@ -1,95 +1,133 @@
{
"Goals": {
"AbandonedCart": "Keranjang Terabaikan",
- "AddGoal": "Tambah Tujuan",
- "AddNewGoal": "Tambah Tujuan baru",
- "AddNewGoalOrEditExistingGoal": "%1$sTambah Tujuan baru%2$s atau %3$sSunting%4$s Tujuan saat ini",
- "AllowGoalConvertedMoreThanOncePerVisit": "Perbolehkan Tujuan dikonversi lebih dari sekali tiap kunjungan",
+ "AddGoal": "Tambahkan Sasaran",
+ "AddNewGoal": "Tambah Sasaran baru",
+ "AddNewGoalOrEditExistingGoal": "%1$sTambah Sasaran baru%2$s atau %3$sSunting%4$s Sasaran saat ini",
+ "AllowGoalConvertedMoreThanOncePerVisit": "Perbolehkan Sasaran dikonversi lebih dari sekali tiap kunjungan",
"AllowMultipleConversionsPerVisit": "Perbolehkan banyak konversi tiap kunjungan",
- "BestCountries": "Konversi terbaik untuk negara Anda adalah:",
- "BestKeywords": "Kata kunci konversi terbaik Anda adalah:",
- "BestReferrers": "Konversi Situs Pengarah terbaik adalah:",
- "CaseSensitive": "Peka huruf sesuai",
+ "AtLeastMinutes": "setidaknya %1$s menit. Gunakan desimal untuk mencocokkan detik, misalnya, %2$s untuk mencocokkan 30 detik.",
+ "BestCountries": "Negara pengonversi terbaik Anda adalah:",
+ "BestKeywords": "Kata kunci konversi teratas Anda adalah:",
+ "BestReferrers": "Perujuk situs web konversi terbaik Anda adalah:",
+ "CancelAndReturnToGoals": "Batalkan dan %1$skembali ke daftar sasaran%2$s",
+ "CaseSensitive": "Kecocokan peka kapital",
"CategoryTextDevicesDetection_DevicesDetection": "Perangkat",
+ "CategoryTextGeneral_Visit": "keterlibatan",
"CategoryTextGeneral_Visitors": "Lokasi pengguna",
- "CategoryTextReferrers_Referrers": "Pengarah",
+ "CategoryTextReferrers_Referrers": "Perujuk",
"CategoryTextVisitsSummary_VisitsSummary": "Atribut pengguna",
- "ClickOutlink": "Klik Tautan ke situs luar",
- "ColumnAverageOrderRevenueDocumentation": "Rerata Nilai Pesanan (RNP) merupakan total pendapatan dari seluruh Permintaan Niaga-E dibagi dengan jumlah pesanan.",
- "ColumnAveragePriceDocumentation": "Pendapatan rerata untuk %s ini.",
- "ColumnAverageQuantityDocumentation": "Rerata kuantitas %s ini yang terjual dalam permintaan Niaga-E.",
- "ColumnConversionRateDocumentation": "Persentase kunjungan yang dipacu oleh tujuan %s.",
- "ColumnConversionRateProductDocumentation": "Tingkat konversi %s merupakan jumlah permintaan yang mengandung produk ini dibagi dengan jumlah kunjungan dalam halaman produk.",
+ "ClickOutlink": "Klik Tautan ke situs web eksternal",
+ "ClickToViewThisGoal": "Klik untuk melihat sasaran ini.",
+ "ColumnAverageOrderRevenueDocumentation": "Average Order Value (AOV) merupakan total pendapatan dari seluruh Permintaan Niaga-el dibagi dengan jumlah pesanan.",
+ "ColumnAveragePriceDocumentation": "Pendapatan rata-rata untuk %s ini.",
+ "ColumnAverageQuantityDocumentation": "Kuantitas rata-rata dari %s ini terjual dalam pesanan Niaga-el.",
+ "ColumnConversionRateDocumentation": "Persentase kunjungan yang memicu sasaran %s.",
+ "ColumnConversionRateProductDocumentation": "Rasio konversi %s adalah jumlah pesanan yang berisi produk ini dibagi dengan jumlah kunjungan di halaman produk.",
"ColumnConversions": "Konversi",
"ColumnConversionsDocumentation": "Jumlah konversi untuk %s.",
- "ColumnOrdersDocumentation": "Jumlah permintaan Niaga-E yang mengandung %s ini setidaknya sekali.",
+ "ColumnOrdersDocumentation": "Jumlah total pesanan Niaga-el yang berisi %s ini setidaknya sekali.",
"ColumnOverallRevenue": "Pendapatan keseluruhan",
- "ColumnPurchasedProductsDocumentation": "Jumlah Produk yang dibeli adalah jumlah kuantitas Produk terjual dalam seluruh Niaga-E.",
- "ColumnQuantityDocumentation": "Kuantitas merupakan jumlah produk terjual untuk setiap %s.",
+ "ColumnPurchasedProductsDocumentation": "Jumlah produk yang dibeli adalah jumlah kuantitas Produk yang terjual di semua pesanan Niaga-el.",
+ "ColumnQuantityDocumentation": "Kuantitas adalah jumlah total produk yang terjual untuk setiap %s.",
"ColumnRevenueDocumentation": "Total pendapatan yang dihasilkan oleh %s.",
"ColumnRevenuePerVisitDocumentation": "Total pendapatan yang dihasilkan oleh %s dibagi dengan jumlah kunjungan.",
- "ColumnVisits": "Jumlah kunjungan, terlepas dari apakah tujuan telah dipicu atau tidak.",
- "ColumnVisitsProductDocumentation": "Jumlah kunjungan halaman Produk/Kategori. Ini juga digunakan untuk mengolah tingkat konversi %s. Matrik ini juga berada di laporan bila tampilan pelacakan Niaga-E diatur dalam halaman Produk/Kategori.",
+ "ColumnVisits": "Jumlah total kunjungan, terlepas dari apakah sasaran dipicu atau tidak.",
+ "ColumnVisitsProductDocumentation": "Jumlah kunjungan pada halaman Produk/ Kategori. Ini juga digunakan untuk mengolah rasio konversi %s. Metrik ini ada di dalam laporan jika pelacakan tampilan Niaga-el telah disiapkan di halaman Produk/ Kategori.",
"Contains": "mengandung %s",
- "ConversionByTypeReportDocumentation": "Laporan ini menyediakan laporan terperinci tentang kinerja tujuan (konversi, ringkat konversi, dan pendapatan tiap kunjungan) untuk setiap kategori yang tersedia di panel kiri. %1$s Silakan klik salah satu kategori untuk melihat laporan. %2$s Informasi selengkapnya, silakan melihat %3$s dokumentasi Pelacakan Tujuan di piwik.org%4$s",
- "ConversionRate": "%s tingkat konversi",
+ "Conversion": "Konversi",
+ "ConversionByTypeReportDocumentation": "Laporan ini menyediakan laporan terperinci tentang kinerja sasaran (konversi, rasio konversi, dan pendapatan tiap kunjungan) untuk setiap kategori yang tersedia di panel kiri. %1$s Silakan klik salah satu kategori untuk melihat laporan. %2$s Informasi selengkapnya, silakan lihat %3$sdokumentasi Pelacakan Sasaran%4$s",
+ "ConversionRate": "%s rasio konversi",
"Conversions": "%s konversi",
"ConversionsDescription": "konversi",
"ConversionsOverview": "Iktisar Konversi",
"ConversionsOverviewBy": "Iktisar konversi berdasarkan jenis kunjungan",
- "DaysToConv": "Hari ke Konversi",
- "DefaultGoalConvertedOncePerVisit": "(asali) Tujuan hanya dapat dikonversi sekali tiap kunjungan",
- "DefaultRevenueHelp": "Sebagai contoh, Borang Kontak yang dikirim oleh pengunjung mungkin benilai rerata $10. Matomo akan membantu Anda mengerti bagaimana seberapa baik ruas pengunjung Anda berkinerja.",
- "DeleteGoalConfirm": "Apakah Anda yakin menghapus Tujuan %s?",
- "Details": "Detail tujuan",
+ "DaysToConv": "Hari menuju Konversi",
+ "DaysToConvReportDocumentation": "Laporan ini menunjukkan berapa hari berlalu sebelum pengunjung Anda mengonversi sasaran.",
+ "DefaultGoalConvertedOncePerVisit": "(asali) Tujuan hanya dapat dikonversi satu kali tiap kunjungan",
+ "DefaultRevenueHelp": "Misalnya, Formulir Kontak yang dikirimkan oleh pengunjung mungkin bernilai rata-rata $10. Matomo akan membantu Anda memahami seberapa baik kinerja segmen pengunjung Anda.",
+ "DefaultRevenueLabel": "Pendapatan asali sasaran",
+ "DeleteGoalConfirm": "Yakin ingin menghapus Sasaran %s?",
+ "Details": "Detail sasaran",
"DocumentationRevenueGeneratedByProductSales": "Penjulan produk. Tak termasuk pajak, pengiriman, dan potongan harga",
"Download": "Unduh berkas",
- "Ecommerce": "Niaga-E",
- "EcommerceAndGoalsMenu": "Niaga-E & Tujuan",
- "EcommerceLog": "Catatan Niaga-E",
- "EcommerceOrder": "Permintaan Niaga-E",
- "EcommerceOverview": "Iktisar Niaga-E",
- "EcommerceReports": "Laporan Niaga-E",
- "ExceptionInvalidMatchingString": "Bila Anda memilih 'persis sesuai', pencocokan huruf harus URL yang dimulai dengan %1$s. Misalnya, '%2$s'.",
- "ExternalWebsiteUrl": "URL situs luar",
+ "Ecommerce": "Niaga-el",
+ "EcommerceAndGoalsMenu": "Niaga-el &amp; Sasaran",
+ "EcommerceLog": "Log Niaga-el",
+ "EcommerceOrder": "Pesanan niaga-el",
+ "EcommerceOverview": "Iktisar Niaga-el",
+ "EcommerceReports": "Laporan Niaga-el",
+ "EventValueAsRevenueHelp": "Jika peristiwa yang Anda cocokkan memiliki pendapatan dan pendapatan tersebut dilacak sebagai nilai peristiwa, Anda dapat mengaktifkan opsi ini untuk mencatat nilai peristiwa sebagai pendapatan konversi sasaran. Jika pendapatan sasaran Anda tidak akan bervariasi per konversi, Anda dapat mengabaikan opsi ini dan cukup menetapkan pendapatan asali di atas.",
+ "EventValueAsRevenueHelp2": "Catatan: Jika pendapatan sasaran asali dan nilai peristiwa ditentukan, nilai peristiwa akan digunakan. Jika opsi ini diaktifkan dan tidak ada nilai peristiwa yang dikirim dalam permintaan, pendapatan asali akan digunakan (jika telah ditentukan).",
+ "ExceptionInvalidMatchingString": "Jika Anda memilih 'pencocokan persis', string yang cocok harus berupa URL yang dimulai dengan %1$s. Misalnya, '%2$s'.",
+ "ExternalWebsiteUrl": "URL situs web eksternal",
"Filename": "nama berkas",
- "GoalConversion": "Konversi Tujuan",
- "GoalConversions": "Konversi Tujuan",
- "GoalConversionsBy": "Konversi %s tujuan berdasarkan jenis kunjungan",
- "GoalIsTriggered": "Tujuan terpicu",
- "GoalIsTriggeredWhen": "Tujuan terpicu ketika",
- "GoalName": "Nama Tujuan",
- "GoalX": "Tujuan %s",
- "Goals": "Tujuan",
- "GoalsOverview": "Iktisar Tujuan",
- "GoalsOverviewDocumentation": "Ini adalah iktisar dari konversi tujuan Anda. Pada mulanya, grafik menunjukkan keseluruhan konversi. %s Di bawah grafik, Anda dapat melihat laporan setiap tujuan Anda. Bagan garis dapat diperbesar dengan mengekliknya.",
- "HelpOneConversionPerVisit": "Jika Halaman sesuai dengan Tujuan ini dimuat ulang atau ditampilkan lebih dari sekali dalam sekali Kunjungan, Tujuan hanya dapat dilacak saat waktu pertama halaman dimuat selama Kunjungan tersebut.",
- "IsExactly": "adalah tepatnya %s",
- "LeftInCart": "%s tersisa di keranjang",
- "Manually": "manual",
- "ManuallyTriggeredUsingJavascriptFunction": "Tujuan terpicu secara manual menggunakan API JavaScript trackGoal()",
+ "GoalConversion": "Konversi sasaran",
+ "GoalConversions": "Konversi sasaran",
+ "GoalConversionsBy": "Konversi sasaran %s berdasarkan jenis kunjungan",
+ "GoalIsTriggered": "Sasaran terpicu",
+ "GoalIsTriggeredWhen": "Sasaran terpicu ketika",
+ "GoalName": "Nama Sasaran",
+ "GoalRevenue": "Pendapatan Sasaran",
+ "GoalX": "Sasaran %s",
+ "Goals": "Sasaran",
+ "GoalsAdjective": "Sasaran %s",
+ "GoalsBy": "Sasaran menurut %s",
+ "GoalsOverview": "Iktisar Sasaran",
+ "GoalsOverviewDocumentation": "Ini adalah ikhtisar dari konversi sasaran Anda. Pada mulanya, grafik menunjukkan keseluruhan konversi. %s Di bawah grafik, Anda dapat melihat laporan setiap sasaran Anda. Grafik mini dapat diperbesar dengan cara mengekliknya.",
+ "GoalsOverviewSubcategoryHelp1": "Ikhtisar Sasaran melaporkan kinerja sasaran yang ditentukan untuk situs web. Anda dapat mengakses persentase konversi sasaran Anda, jumlah pendapatan yang dihasilkan, dan laporan lengkap untuk masing-masing sasaran.",
+ "GoalsOverviewSubcategoryHelp2": "Klik metrik individual dalam bagan grafik mini untuk memfokuskannya dalam grafik evolusi ukuran penuh.",
+ "HelpOneConversionPerVisit": "Jika Halaman yang cocok dengan Sasaran ini disegarkan atau dilihat lebih dari sekali dalam suatu Kunjungan, Sasaran hanya akan dilacak saat pertama kali halaman dimuat selama kunjungan ini.",
+ "IsExactly": "persis %s",
+ "LearnMoreAboutGoalTrackingDocumentation": "Pelajari lebih lanjut tentang %1$s Sasaran Pelacakan di Matomo%2$s di dokumentasi pengguna.",
+ "LeftInCart": "%s tertinggal di keranjang",
+ "ManageGoals": "Kelola Sasaran",
+ "ManageGoalsSubcategoryHelp1": "Bagian ini memungkinkan Anda untuk membuat dan mengedit Sasaran untuk tindakan tertentu yang dilakukan pengunjung di situs Anda, seperti mengunjungi laman tertentu atau mengirimkan formulir tertentu. Laporan sasaran bervariasi, tetapi dapat membantu Anda melacak kinerja situs web Anda terhadap tujuan bisnis seperti perolehan prospek, penjualan online, dan peningkatan eksposur merek.",
+ "ManageGoalsSubcategoryHelp2": "Pelajari lebih lanjut dalam panduan Sasaran kami di sini.",
+ "Manually": "secara manual",
+ "ManuallyTriggeredUsingJavascriptFunction": "Sasaran dipicu secara manual menggunakan JavaScript API trackGoal()",
"MatchesExpression": "sesuai dengan ekspresi %s",
+ "NGoals": "%s sasaran",
+ "NItems": "%s barang",
"NRevenue": "%s pendapatan",
- "NewGoalIntro": "Pelacakan Konversi Tujuan merupakan salah satu cara efisien untuk mengukur dan memperbaiki tujuan usaha Anda.",
- "NewVisitorsConversionRateIs": "Tingkat pengunjung baru adalah %s",
- "Optional": "(pilihan)",
+ "NeedAccess": "Hanya Administrator atau pengguna dengan akses Pengguna Super yang dapat mengelola Sasaran untuk situs web tertentu.",
+ "NewGoalIntro": "Pelacakan Konversi Sasaran adalah salah satu cara paling efisien untuk mengukur dan meningkatkan tujuan bisnis Anda.",
+ "NewVisitorsConversionRateIs": "Rasio konversi pengunjung baru adalah %s",
+ "NoConversionsNoReportsMessage": "Laporan tidak ditampilkan karena tidak ada data konversi untuk sasaran dan periode yang dipilih.",
+ "NoGoalsNeedAccess2": "Hanya pengguna Tulis, Administrator, atau pengguna dengan akses Pengguna Super yang dapat mengelola Sasaran untuk situs web tertentu. Harap minta administrator Matomo Anda untuk menyiapkan Sasaran untuk situs web Anda. <br>Sasaran Pelacakan adalah cara yang bagus untuk membantu memahami dan memaksimalkan kinerja situs web Anda!",
+ "Optional": "(opsional)",
+ "OverallConversionRate": "rasio konversi keseluruhan (kunjungan dengan sasaran selesai)",
"OverallRevenue": "pendapatan keseluruhan",
+ "OverviewReportDocumentation": "Laporan ini memberikan ikhtisar tentang seberapa baik pengunjung Anda dalam mengonversi sasaran tertentu.",
"PageTitle": "Judul Halaman",
"Pattern": "Pola",
+ "PluginDescription": "Buat Sasaran dan lihat laporan terperinci tentang konversi sasaran Anda: evolusi dari waktu ke waktu, pendapatan per kunjungan, konversi per perujuk, per kata kunci, dan masih banyak lagi.",
"ProductCategory": "Kategori Produk",
"ProductName": "Nama Produk",
- "ProductSKU": "Produk SKU",
+ "ProductNames": "Nama Produk",
+ "ProductPrice": "Harga Produk",
+ "ProductQuantity": "Kuantitas Produk",
+ "ProductSKU": "SKU Produk",
+ "ProductSKUs": "SKU Produk",
"Products": "Produk",
- "ReturningVisitorsConversionRateIs": "Tingkat konversi pengunjung kembali adalah %s",
- "SingleGoalOverviewDocumentation": "Ini merupakan iktisar dari tujuan tunggal. %s Bagan garis dapat diperbesar dengan mengekliknya.",
+ "ReturningVisitorsConversionRateIs": "Rasio konversi pengunjung yang kembali adalah %s",
+ "SendEvent": "Kirim acara",
+ "SingleGoalOverviewDocumentation": "Ini adalah ikhtisar konversi untuk satu sasaran. %s Grafik mini di bawah dapat diperbesar dengan cara mengekliknya.",
+ "ThereIsNoGoalToManage": "Tidak ada sasaran yang dikelola untuk situs web %s",
+ "TimeInMinutes": "Waktu dalam Hitungan Menit",
"URL": "URL",
- "UpdateGoal": "Perbarui Tujuan",
- "ViewAndEditGoals": "Tampilkan dan Sunting Tujuan",
- "VisitPageTitle": "Kunjungi Judul Halaman yang diberikan",
- "VisitUrl": "Kunjungi URL yang diberikan (halaman atau kelompok halaman)",
- "VisitsUntilConv": "Kunjungan ke Konversi",
+ "UpdateGoal": "Perbarui Sasaran",
+ "UseEventValueAsRevenue": "Gunakan nilai peristiwa (jika ada) sebagai pendapatan konversi sasaran.",
+ "ViewAndEditGoals": "Lihat dan Edit Sasaran",
+ "VisitDuration": "durasi kunjungan adalah",
+ "VisitDurationMatchAttr": "Tinggal untuk jangka waktu tertentu",
+ "VisitPageTitle": "Kunjungi Judul Halaman tertentu",
+ "VisitUrl": "Kunjungi URL tertentu (halaman atau grup halaman)",
+ "VisitsUntilConv": "Kunjungan hingga Dikonversi",
+ "VisitsUntilConvReportDocumentation": "Laporan ini menunjukkan jumlah kunjungan yang dilakukan sebelum pengunjung mengonversi sasaran.",
"WhenVisitors": "ketika pengunjung",
"WhereThe": "di mana",
- "YouCanEnableEcommerceReports": "Anda dapat mengaktifkan %1$s untuk situs ini dalam halaman %2$s."
+ "WhereVisitedPageManuallyCallsJavascriptTrackerLearnMore": "Halaman yang dikunjungi harus berisi panggilan ke metode JavaScript 'trackGoal' (%1$spelajari lebih lanjut%2$s)",
+ "YouCanEnableEcommerceReports": "Anda dapat mengaktifkan %1$s untuk situs web ini di halaman %2$s."
}
}
diff --git a/plugins/Goals/lang/nb.json b/plugins/Goals/lang/nb.json
index 6f1a876827..6e18dc038b 100644
--- a/plugins/Goals/lang/nb.json
+++ b/plugins/Goals/lang/nb.json
@@ -43,6 +43,7 @@
"ConversionsOverview": "Oversikt over konverteringer",
"ConversionsOverviewBy": "Konverteringsoversikt etter besøkstype",
"DaysToConv": "Dager til konvertering",
+ "DaysToConvReportDocumentation": "Denne rapporten viser hvor mange dager som går før dine besøkende konverterer et mål.",
"DefaultGoalConvertedOncePerVisit": "(standard) Mål kan kun konverteres én gang per besøk",
"DefaultRevenueHelp": "For eksempel kan et kontaktskjema innsendt av en besøker være verdt 100 kr i gjennomsnitt. Matomo hjelper deg å forstå hvor godt besøkssegmentene yter.",
"DefaultRevenueLabel": "Målsatt forvalgt omsetning",
@@ -58,10 +59,12 @@
"EcommerceReports": "Netthandelsrapporter",
"EventValueAsRevenueHelp": "Hvis hendelsen du jamfører har en omsetning, og den omsetningen spores som hendelsesverdien, kan du skru på dette valget for å registrere hendelsesverdien som målsatt konverteringsomsetning. Hvis din målsatte omsetning ikke varierer per konvertering kan du se bort fra dette valget og bare sette en forvalgt omsetning ovenfor.",
"EventValueAsRevenueHelp2": "Merk: Hvis både forvalgt målsatt omsetning og hendelsesverdien er definert, vil hendelsesverdien bli brukt. Hvis dette valget er påslått og ingen hendelsesverdi sendes i forespørselen, vil forvalgt omsetning brukes (hvis definert).",
+ "ExceptionInvalidMatchingString": "Hvis du velger «nøyaktig samsvar», må samsvarende streng være en nettadresse som starter med %1$s. For eksempel, «%2$s».",
"ExternalWebsiteUrl": "ekstern nettside-nettadresse",
"Filename": "filnavn",
"GoalConversion": "Målkonvertering",
"GoalConversions": "Målkonverteringer",
+ "GoalConversionsBy": "%s-målkonverteringer etter besøkstype",
"GoalIsTriggered": "Målet blir utløst",
"GoalIsTriggeredWhen": "Målet blir utløst når",
"GoalName": "Målnavn",
@@ -71,11 +74,16 @@
"GoalsAdjective": "Mål %s",
"GoalsBy": "Mål etter %s",
"GoalsOverview": "Måloversikt",
+ "GoalsOverviewDocumentation": "Dette er en oversikt over dine målkonverteringer. I utgangspunktet viser grafen summen av konverteringer. %sUnder grafen kan du se konverteringsrapporter for hver av målene dine. Miniatyrdiagrammene kan forstørres ved å klikke på dem.",
"GoalsOverviewSubcategoryHelp1": "Måloversikten rapporterer ytelsen for mål definert på nettsiden din. Du får tilgang til konverteringsprosenter, mengden omsetning generert, og fullstendige rapporter for hver av dem.",
"GoalsOverviewSubcategoryHelp2": "Klikk på en individuell måling i minidiagrammet for å fokusere på det i det fullstendige utviklingsdiagrammet.",
+ "HelpOneConversionPerVisit": "Hvis en side som samsvarer med et mål gjenoppfriskes eller vises mer enn én gang i løpet av et besøk, vil målet kun sporet første gang siden ble innlastet under dette besøket.",
"IsExactly": "er akuratt %s",
+ "LearnMoreAboutGoalTrackingDocumentation": "Lær mer om %1$s-sporingsmål i Matomo%2$s i brukerdokumentasjonen.",
"LeftInCart": "%s igjen i handlekurv",
"ManageGoals": "Behandle mål",
+ "ManageGoalsSubcategoryHelp1": "Denne delen lar deg opprette og redigere mål for spesifikke handlinger dine besøkende foretar seg på siden din, som f.eks. å besøke en gitt side eller å sende inn et gitt skjema. Målrapporter kan variere, men du kan spore din nettsideytelse mot målobjektiver som mulighetsgenerering, nettsalg, og økt merkevareoppmerksomhet.",
+ "ManageGoalsSubcategoryHelp2": "Lær mer i målveiledningen her.",
"Manually": "manuelt",
"ManuallyTriggeredUsingJavascriptFunction": "Målet utløses manuelt ved bruk av JavaScript-API-ets trackGoal()",
"MatchesExpression": "samsvarer med utrykket «%s»",
@@ -86,6 +94,7 @@
"NewGoalIntro": "Sporing av målkonvertering er en av de mest effektive måtene å måle og forbedre dine forretningsmål.",
"NewVisitorsConversionRateIs": "Ny besøkskonverteringsrate er %s",
"NoConversionsNoReportsMessage": "Rapporter vises ikke fordi det ikke er noen konverteringsdata for valgt mål og periode.",
+ "NoGoalsNeedAccess2": "Kun en bruker med skrivetilgang, en administrator, eller en bruker med superbrukertilgang kan håndtere mål for en gitt nettside. Spør din Matomo-administrator om å sette opp mål for din nettside. <br>Sporingsmål er en flott måte å forstå og maksimalisere din nettsideytelse.",
"Optional": "(valgfritt)",
"OverallConversionRate": "samlet konverteringsrate (besøk med et fullført mål)",
"OverallRevenue": "samlet omsetning",
@@ -112,6 +121,7 @@
"ViewAndEditGoals": "Vis og rediger mål",
"VisitDuration": "besøksvarigheten er",
"VisitDurationMatchAttr": "Bli værende en gitt mengde tid",
+ "VisitPageTitle": "Besøk en gitt sidetittel",
"VisitUrl": "Besøk en gitt nettadresse (side eller grupper av sider)",
"VisitsUntilConv": "Besøk per konvertering",
"VisitsUntilConvReportDocumentation": "Denne rapporten viser antall besøk gjort før en besøkende konverterte et mål.",
diff --git a/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal.png b/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal.png
index 6cb1f10071..afe451f5df 100644
--- a/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal.png
+++ b/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:4d5f0bb76708545cb504070c6b4cd6568f87122fce3997297a27cdffb8f86e44
-size 198169
+oid sha256:0ac52a11e25e786fcf4d15067f1732b8ecac7058876ea79e72ed57874cc94974
+size 200161
diff --git a/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal_updated.png b/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal_updated.png
index 49fa2bf91e..d4e72bb065 100644
--- a/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal_updated.png
+++ b/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_individual_goal_updated.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:5dc6b5d99fdb21dda605a06d9a170e65c053eb3e50b28f6c33f6bd9d48922940
-size 199016
+oid sha256:72e576d64c1732bdf480747a17f92511b57588c643ed5dce1217daf618fc202f
+size 201041
diff --git a/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_overview.png b/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_overview.png
index 500b46f795..3bb51b9f70 100644
--- a/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_overview.png
+++ b/plugins/Goals/tests/UI/expected-screenshots/GoalsPages_overview.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d67025f70426ce81442c1fd0fc4ed2da51d0209fb4882863dc2b21009efa2d46
-size 163865
+oid sha256:601a598d35e2914b002510549c090229ee8d676b996531debcb42f2c1180f476
+size 165909
diff --git a/plugins/Goals/vue/dist/Goals.umd.js b/plugins/Goals/vue/dist/Goals.umd.js
index c87161e4da..5c51d5945f 100644
--- a/plugins/Goals/vue/dist/Goals.umd.js
+++ b/plugins/Goals/vue/dist/Goals.umd.js
@@ -234,7 +234,7 @@ window.angular.module('piwikApp').directive('piwikGoalPageLink', piwikGoalPageLi
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=template&id=065a1b7c
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=template&id=5d9639fc
var _hoisted_1 = {
id: "entityEditContainer",
@@ -441,9 +441,9 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
loading: _ctx.isLoading
}, null, 8, ["loading"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.learnMoreAboutGoalTracking
+ innerHTML: _ctx.$sanitize(_ctx.learnMoreAboutGoalTracking)
}, null, 8, _hoisted_3), !_ctx.ecommerceEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_4, [_hoisted_5, _hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Optional')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Ecommerce')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.youCanEnableEcommerceReports
+ innerHTML: _ctx.$sanitize(_ctx.youCanEnableEcommerceReports)
}, null, 8, _hoisted_7)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("table", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", _hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Id')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_GoalName')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Description')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_GoalIsTriggeredWhen')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ColumnRevenue')), 1), _ctx.beforeGoalListActionsHeadComponent ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDynamicComponent"])(_ctx.beforeGoalListActionsHeadComponent), {
key: 0
})) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userCanEditGoals ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", _hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Edit')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userCanEditGoals ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", _hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Delete')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tbody", null, [!Object.keys(_ctx.goals || {}).length ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_12, [_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_ThereIsNoGoalToManage', _ctx.siteName)) + " ", 1), _hoisted_14, _hoisted_15])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.goals || [], function (goal) {
@@ -452,7 +452,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
key: goal.idgoal
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.idgoal), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.name), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.description), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.goalMatchAttributeTranslations[goal.match_attribute] || goal.match_attribute), 1), goal.match_attribute === 'visit_duration' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.lcfirst(_ctx.translate('General_OperationGreaterThan'))) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Intl_NMinutes', goal.pattern)), 1)) : !!goal.pattern_type ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_20, [_hoisted_21, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Goals_Pattern')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.pattern_type) + ": " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(goal.pattern), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", {
class: "center",
- innerHTML: goal.revenue === 0 || goal.revenue === '0' ? '-' : _ctx.$sanitize(goal.revenue_pretty)
+ innerHTML: _ctx.$sanitize(goal.revenue === 0 || goal.revenue === '0' ? '-' : goal.revenue_pretty)
}, null, 8, _hoisted_22), _ctx.beforeGoalListActionsBodyComponent[goal.idgoal] ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDynamicComponent"])(_ctx.beforeGoalListActionsBodyComponent[goal.idgoal]), {
key: 0
})) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userCanEditGoals ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", _hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("button", {
@@ -524,7 +524,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.whereVisitedPageManuallyCallsJsTrackerText
+ innerHTML: _ctx.$sanitize(_ctx.whereVisitedPageManuallyCallsJsTrackerText)
}, null, 8, _hoisted_43)];
}),
_: 1
@@ -633,13 +633,13 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
onClick: _cache[14] || (_cache[14] = function ($event) {
return _ctx.showListOfReports();
}),
- innerHTML: _ctx.cancelText
+ innerHTML: _ctx.$sanitize(_ctx.cancelText)
}, null, 8, _hoisted_63), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showEditGoal]])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512), [[_directive_form]])];
}),
_: 1
}, 8, ["content-title"])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showEditGoal]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.userCanEditGoals]]), _hoisted_64]);
}
-// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=template&id=065a1b7c
+// CONCATENATED MODULE: ./plugins/Goals/vue/src/ManageGoals/ManageGoals.vue?vue&type=template&id=5d9639fc
// EXTERNAL MODULE: external "CorePluginsAdmin"
var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
diff --git a/plugins/Goals/vue/dist/Goals.umd.min.js b/plugins/Goals/vue/dist/Goals.umd.min.js
index beedb32148..ce6c88a407 100644
--- a/plugins/Goals/vue/dist/Goals.umd.min.js
+++ b/plugins/Goals/vue/dist/Goals.umd.min.js
@@ -5,7 +5,7 @@
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function u(){return{restrict:"A",link:function(e,t,a){var n={instance:null,value:{idGoal:a.piwikGoalPageLink},oldValue:null,modifiers:{},dir:{}};s.mounted(t[0],n)}}}l["Matomo"].on("Matomo.processDynamicHtml",(function(e){e.find("[goal-page-link]").each((function(e,t){if(!i(t).attr("goal-page-link-handled")){var a=i(t).attr("goal-page-link");a&&c.mounted(t,{instance:null,value:{idGoal:a},oldValue:null,modifiers:{},dir:{}}),i(t).attr("goal-page-link-handled","1")}}))})),window.angular.module("piwikApp").directive("piwikGoalPageLink",u);var d=a("8bbf"),b={id:"entityEditContainer",feature:"true",class:"managegoals"},p={class:"contentHelp"},m=["innerHTML"],O={key:0},j=Object(d["createElementVNode"])("br",null,null,-1),g=Object(d["createElementVNode"])("br",null,null,-1),h=["innerHTML"],v={class:"first"},y={key:1},f={key:2},_={key:0},G={colspan:"8"},E=Object(d["createElementVNode"])("br",null,null,-1),V=Object(d["createElementVNode"])("br",null,null,-1),N=Object(d["createElementVNode"])("br",null,null,-1),w=["id"],T={class:"first"},S={class:"matchAttribute"},k={key:0},D={key:1},C=Object(d["createElementVNode"])("br",null,null,-1),x=["innerHTML"],A={key:1,style:{"padding-top":"2px"}},M=["onClick","title"],B=Object(d["createElementVNode"])("span",{class:"icon-edit"},null,-1),L=[B],P={key:2,style:{"padding-top":"2px"}},H=["onClick","title"],F=Object(d["createElementVNode"])("span",{class:"icon-delete"},null,-1),U=[F],R={key:0,class:"tableActionBar"},I=Object(d["createElementVNode"])("span",{class:"icon-add"},null,-1),J={class:"ui-confirm",ref:"confirm"},q=["value"],W=["value"],z={class:"addEditGoal"},Y=["innerHTML"],K={class:"row goalIsTriggeredWhen"},Q={class:"col s12"},X={class:"row"},Z={class:"col s12 m6 goalTriggerType"},ee={class:"col s12 m6"},te=["innerHTML"],ae={class:"row whereTheMatchAttrbiute"},ne={class:"col s12"},oe={class:"row"},le={class:"col s12 m6 l4"},re={key:0,class:"col s12 m6 l4"},ie={key:1,class:"col s12 m6 l4"},ce={class:"col s12 m6 l4"},se={id:"examples_pattern",class:"col s12"},ue=Object(d["createElementVNode"])("br",null,null,-1),de=Object(d["createElementVNode"])("br",null,null,-1),be=Object(d["createElementVNode"])("br",null,null,-1),pe=Object(d["createElementVNode"])("br",null,null,-1),me=Object(d["createElementVNode"])("br",null,null,-1),Oe=Object(d["createElementVNode"])("br",null,null,-1),je=Object(d["createElementVNode"])("br",null,null,-1),ge=Object(d["createElementVNode"])("br",null,null,-1),he={ref:"endedittable"},ve=Object(d["createElementVNode"])("input",{type:"hidden",name:"goalIdUpdate",value:""},null,-1),ye={key:0},fe=["innerHTML"],_e=Object(d["createElementVNode"])("a",{id:"bottom"},null,-1);function Ge(e,t,a,n,o,l){var r,i=Object(d["resolveComponent"])("ActivityIndicator"),c=Object(d["resolveComponent"])("ContentBlock"),s=Object(d["resolveComponent"])("Field"),u=Object(d["resolveComponent"])("Alert"),B=Object(d["resolveComponent"])("SaveButton"),F=Object(d["resolveDirective"])("content-table"),$=Object(d["resolveDirective"])("form");return Object(d["openBlock"])(),Object(d["createElementBlock"])("div",null,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",b,[Object(d["createVNode"])(c,{"content-title":e.translate("Goals_ManageGoals")},{default:Object(d["withCtx"])((function(){return[Object(d["createVNode"])(i,{loading:e.isLoading},null,8,["loading"]),Object(d["createElementVNode"])("div",p,[Object(d["createElementVNode"])("span",{innerHTML:e.learnMoreAboutGoalTracking},null,8,m),e.ecommerceEnabled?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("span",O,[j,g,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_Optional"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Ecommerce"))+": ",1),Object(d["createElementVNode"])("span",{innerHTML:e.youCanEnableEcommerceReports},null,8,h)]))]),Object(d["withDirectives"])(Object(d["createElementVNode"])("table",null,[Object(d["createElementVNode"])("thead",null,[Object(d["createElementVNode"])("tr",null,[Object(d["createElementVNode"])("th",v,Object(d["toDisplayString"])(e.translate("General_Id")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("Goals_GoalName")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("General_Description")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("Goals_GoalIsTriggeredWhen")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("General_ColumnRevenue")),1),e.beforeGoalListActionsHeadComponent?(Object(d["openBlock"])(),Object(d["createBlock"])(Object(d["resolveDynamicComponent"])(e.beforeGoalListActionsHeadComponent),{key:0})):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("th",y,Object(d["toDisplayString"])(e.translate("General_Edit")),1)):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("th",f,Object(d["toDisplayString"])(e.translate("General_Delete")),1)):Object(d["createCommentVNode"])("",!0)])]),Object(d["createElementVNode"])("tbody",null,[Object.keys(e.goals||{}).length?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("tr",_,[Object(d["createElementVNode"])("td",G,[E,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_ThereIsNoGoalToManage",e.siteName))+" ",1),V,N])])),(Object(d["openBlock"])(!0),Object(d["createElementBlock"])(d["Fragment"],null,Object(d["renderList"])(e.goals||[],(function(t){return Object(d["openBlock"])(),Object(d["createElementBlock"])("tr",{id:t.idgoal,key:t.idgoal},[Object(d["createElementVNode"])("td",T,Object(d["toDisplayString"])(t.idgoal),1),Object(d["createElementVNode"])("td",null,Object(d["toDisplayString"])(t.name),1),Object(d["createElementVNode"])("td",null,Object(d["toDisplayString"])(t.description),1),Object(d["createElementVNode"])("td",null,[Object(d["createElementVNode"])("span",S,Object(d["toDisplayString"])(e.goalMatchAttributeTranslations[t.match_attribute]||t.match_attribute),1),"visit_duration"===t.match_attribute?(Object(d["openBlock"])(),Object(d["createElementBlock"])("span",k,Object(d["toDisplayString"])(e.lcfirst(e.translate("General_OperationGreaterThan")))+" "+Object(d["toDisplayString"])(e.translate("Intl_NMinutes",t.pattern)),1)):t.pattern_type?(Object(d["openBlock"])(),Object(d["createElementBlock"])("span",D,[C,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_Pattern"))+" "+Object(d["toDisplayString"])(t.pattern_type)+": "+Object(d["toDisplayString"])(t.pattern),1)])):Object(d["createCommentVNode"])("",!0)]),Object(d["createElementVNode"])("td",{class:"center",innerHTML:0===t.revenue||"0"===t.revenue?"-":e.$sanitize(t.revenue_pretty)},null,8,x),e.beforeGoalListActionsBodyComponent[t.idgoal]?(Object(d["openBlock"])(),Object(d["createBlock"])(Object(d["resolveDynamicComponent"])(e.beforeGoalListActionsBodyComponent[t.idgoal]),{key:0})):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("td",A,[Object(d["createElementVNode"])("button",{onClick:function(a){return e.editGoal(t.idgoal)},class:"table-action",title:e.translate("General_Edit")},L,8,M)])):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("td",P,[Object(d["createElementVNode"])("button",{onClick:function(a){return e.deleteGoal(t.idgoal)},class:"table-action",title:e.translate("General_Delete")},U,8,H)])):Object(d["createCommentVNode"])("",!0)],8,w)})),128))])],512),[[F]]),e.userCanEditGoals&&!e.onlyShowAddNewGoal?(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",R,[Object(d["createElementVNode"])("button",{id:"add-goal",onClick:t[0]||(t[0]=function(t){return e.createGoal()})},[I,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_AddNewGoal")),1)])])):Object(d["createCommentVNode"])("",!0)]})),_:1},8,["content-title"])],512),[[d["vShow"],e.showGoalList]]),Object(d["createElementVNode"])("div",J,[Object(d["createElementVNode"])("h2",null,Object(d["toDisplayString"])(e.translate("Goals_DeleteGoalConfirm",'"'.concat(null===(r=e.goalToDelete)||void 0===r?void 0:r.name,'"'))),1),Object(d["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,q),Object(d["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,W)],512)],512),[[d["vShow"],!e.onlyShowAddNewGoal]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",z,[Object(d["createVNode"])(c,{"content-title":e.goal.idgoal?e.translate("Goals_UpdateGoal"):e.translate("Goals_AddNewGoal")},{default:Object(d["withCtx"])((function(){return[Object(d["createElementVNode"])("div",{innerHTML:e.$sanitize(e.addNewGoalIntro)},null,8,Y),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",null,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"text",name:"goal_name",modelValue:e.goal.name,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.goal.name=t}),maxlength:50,title:e.translate("Goals_GoalName")},null,8,["modelValue","title"])]),Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"text",name:"goal_description",modelValue:e.goal.description,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.goal.description=t}),maxlength:255,title:e.translate("General_Description")},null,8,["modelValue","title"])]),Object(d["createElementVNode"])("div",K,[Object(d["createElementVNode"])("div",Q,[Object(d["createElementVNode"])("h3",null,Object(d["toDisplayString"])(e.translate("Goals_GoalIsTriggered")),1)])]),Object(d["createElementVNode"])("div",X,[Object(d["createElementVNode"])("div",Z,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"trigger_type","model-value":e.triggerType,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.triggerType=t,e.changedTriggerType()}),"full-width":!0,options:e.goalTriggerTypeOptions},null,8,["model-value","options"])])]),Object(d["createElementVNode"])("div",ee,[Object(d["withDirectives"])(Object(d["createVNode"])(u,{severity:"info"},{default:Object(d["withCtx"])((function(){return[Object(d["createElementVNode"])("span",{innerHTML:e.whereVisitedPageManuallyCallsJsTrackerText},null,8,te)]})),_:1},512),[[d["vShow"],"manually"===e.triggerType]]),Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createVNode"])(s,{uicontrol:"radio",name:"match_attribute","full-width":!0,"model-value":e.goal.match_attribute,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.goal.match_attribute=t,e.initPatternType()}),options:e.goalMatchAttributeOptions},null,8,["model-value","options"]),[[d["vShow"],"manually"!==e.triggerType]])])])]),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",ae,[Object(d["createElementVNode"])("h3",ne,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("Goals_WhereThe"))+" ",1),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_URL")),513),[[d["vShow"],"url"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_PageTitle")),513),[[d["vShow"],"title"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_Filename")),513),[[d["vShow"],"file"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_ExternalWebsiteUrl")),513),[[d["vShow"],"external_website"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_VisitDuration")),513),[[d["vShow"],"visit_duration"===e.goal.match_attribute]])])],512),[[d["vShow"],"manually"!==e.triggerType]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",oe,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",le,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"event_type",modelValue:e.eventType,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.eventType=t}),"full-width":!0,options:e.eventTypeOptions},null,8,["modelValue","options"])])],512),[[d["vShow"],"event"===e.goal.match_attribute]]),e.isMatchAttributeNumeric?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",re,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"pattern_type",modelValue:e.goal.pattern_type,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.goal.pattern_type=t}),"full-width":!0,options:e.patternTypeOptions},null,8,["modelValue","options"])])])),e.isMatchAttributeNumeric?(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",ie,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"pattern_type",modelValue:e.goal.pattern_type,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.goal.pattern_type=t}),"full-width":!0,options:e.numericComparisonTypeOptions},null,8,["modelValue","options"])])])):Object(d["createCommentVNode"])("",!0),Object(d["createElementVNode"])("div",ce,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"text",name:"pattern",modelValue:e.goal.pattern,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.goal.pattern=t}),maxlength:255,title:e.patternFieldLabel,"full-width":!0},null,8,["modelValue","title"])])]),Object(d["createElementVNode"])("div",se,[Object(d["createVNode"])(u,{severity:"info"},{default:Object(d["withCtx"])((function(){return[Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'checkout/confirmation'"))+" ",1),ue,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'http://example.com/thank-you.html'"))+" ",1),de,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_MatchesExpression","'(.*)\\/demo\\/(.*)'")),1)],512),[[d["vShow"],"url"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'Order confirmation'")),513),[[d["vShow"],"title"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'files/brochure.pdf'"))+" ",1),be,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'http://example.com/files/brochure.pdf'"))+" ",1),pe,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_MatchesExpression","'(.*)\\.zip'")),1)],512),[[d["vShow"],"file"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'amazon.com'"))+" ",1),me,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'http://mypartner.com/landing.html'"))+" ",1),Oe,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.matchesExpressionExternal),1)],512),[[d["vShow"],"external_website"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'video'"))+" ",1),je,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'click'"))+" ",1),ge,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_MatchesExpression","'(.*)_banner'"))+'" ',1)],512),[[d["vShow"],"event"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_AtLeastMinutes","5","0.5")),513),[[d["vShow"],"visit_duration"===e.goal.match_attribute]])]})),_:1})])],512),[[d["vShow"],"manually"!==e.triggerType]]),Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createVNode"])(s,{uicontrol:"checkbox",name:"case_sensitive",modelValue:e.goal.case_sensitive,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.goal.case_sensitive=t}),title:e.caseSensitiveTitle},null,8,["modelValue","title"]),[[d["vShow"],"manually"!==e.triggerType&&!e.isMatchAttributeNumeric]])]),Object(d["createElementVNode"])("div",null,["visit_duration"!==e.goal.match_attribute?(Object(d["openBlock"])(),Object(d["createBlock"])(s,{key:0,uicontrol:"radio",name:"allow_multiple","model-value":e.goal.allow_multiple?1:0,"onUpdate:modelValue":t[10]||(t[10]=function(t){return e.goal.allow_multiple=t}),options:e.allowMultipleOptions,introduction:e.translate("Goals_AllowMultipleConversionsPerVisit"),"inline-help":e.translate("Goals_HelpOneConversionPerVisit")},null,8,["model-value","options","introduction","inline-help"])):Object(d["createCommentVNode"])("",!0)]),Object(d["createElementVNode"])("h3",null,Object(d["toDisplayString"])(e.translate("Goals_GoalRevenue"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Optional")),1),Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"number",name:"revenue",modelValue:e.goal.revenue,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.goal.revenue=t}),placeholder:e.translate("Goals_DefaultRevenueLabel"),"inline-help":e.translate("Goals_DefaultRevenueHelp")},null,8,["modelValue","placeholder","inline-help"])]),Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createVNode"])(s,{uicontrol:"checkbox",name:"use_event_value",modelValue:e.goal.event_value_as_revenue,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.goal.event_value_as_revenue=t}),title:e.translate("Goals_UseEventValueAsRevenue"),"inline-help":e.useEventValueAsRevenueHelp},null,8,["modelValue","title","inline-help"]),[[d["vShow"],"event"===e.goal.match_attribute]])]),Object(d["createElementVNode"])("div",he,[e.endEditTableComponent?(Object(d["openBlock"])(),Object(d["createBlock"])(Object(d["resolveDynamicComponent"])(e.endEditTableComponent),{key:0})):Object(d["createCommentVNode"])("",!0)],512),ve,Object(d["createVNode"])(B,{saving:e.isLoading,onConfirm:t[13]||(t[13]=function(t){return e.save()}),value:e.submitText},null,8,["saving","value"]),e.onlyShowAddNewGoal?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",ye,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",{class:"entityCancel",onClick:t[14]||(t[14]=function(t){return e.showListOfReports()}),innerHTML:e.cancelText},null,8,fe),[[d["vShow"],e.showEditGoal]])]))],512),[[$]])]})),_:1},8,["content-title"])],512),[[d["vShow"],e.showEditGoal]])],512),[[d["vShow"],e.userCanEditGoals]]),_e])}var Ee=a("a5a2");function Ve(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ne(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function we(e,t,a){return t&&Ne(e.prototype,t),a&&Ne(e,a),e}function Te(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}
+function u(){return{restrict:"A",link:function(e,t,a){var n={instance:null,value:{idGoal:a.piwikGoalPageLink},oldValue:null,modifiers:{},dir:{}};s.mounted(t[0],n)}}}l["Matomo"].on("Matomo.processDynamicHtml",(function(e){e.find("[goal-page-link]").each((function(e,t){if(!i(t).attr("goal-page-link-handled")){var a=i(t).attr("goal-page-link");a&&c.mounted(t,{instance:null,value:{idGoal:a},oldValue:null,modifiers:{},dir:{}}),i(t).attr("goal-page-link-handled","1")}}))})),window.angular.module("piwikApp").directive("piwikGoalPageLink",u);var d=a("8bbf"),b={id:"entityEditContainer",feature:"true",class:"managegoals"},p={class:"contentHelp"},m=["innerHTML"],O={key:0},j=Object(d["createElementVNode"])("br",null,null,-1),g=Object(d["createElementVNode"])("br",null,null,-1),h=["innerHTML"],v={class:"first"},y={key:1},f={key:2},_={key:0},G={colspan:"8"},E=Object(d["createElementVNode"])("br",null,null,-1),V=Object(d["createElementVNode"])("br",null,null,-1),N=Object(d["createElementVNode"])("br",null,null,-1),w=["id"],T={class:"first"},S={class:"matchAttribute"},k={key:0},D={key:1},C=Object(d["createElementVNode"])("br",null,null,-1),x=["innerHTML"],A={key:1,style:{"padding-top":"2px"}},M=["onClick","title"],B=Object(d["createElementVNode"])("span",{class:"icon-edit"},null,-1),L=[B],P={key:2,style:{"padding-top":"2px"}},H=["onClick","title"],F=Object(d["createElementVNode"])("span",{class:"icon-delete"},null,-1),U=[F],R={key:0,class:"tableActionBar"},I=Object(d["createElementVNode"])("span",{class:"icon-add"},null,-1),J={class:"ui-confirm",ref:"confirm"},z=["value"],q=["value"],W={class:"addEditGoal"},Y=["innerHTML"],K={class:"row goalIsTriggeredWhen"},Q={class:"col s12"},X={class:"row"},Z={class:"col s12 m6 goalTriggerType"},ee={class:"col s12 m6"},te=["innerHTML"],ae={class:"row whereTheMatchAttrbiute"},ne={class:"col s12"},oe={class:"row"},le={class:"col s12 m6 l4"},re={key:0,class:"col s12 m6 l4"},ie={key:1,class:"col s12 m6 l4"},ce={class:"col s12 m6 l4"},se={id:"examples_pattern",class:"col s12"},ue=Object(d["createElementVNode"])("br",null,null,-1),de=Object(d["createElementVNode"])("br",null,null,-1),be=Object(d["createElementVNode"])("br",null,null,-1),pe=Object(d["createElementVNode"])("br",null,null,-1),me=Object(d["createElementVNode"])("br",null,null,-1),Oe=Object(d["createElementVNode"])("br",null,null,-1),je=Object(d["createElementVNode"])("br",null,null,-1),ge=Object(d["createElementVNode"])("br",null,null,-1),he={ref:"endedittable"},ve=Object(d["createElementVNode"])("input",{type:"hidden",name:"goalIdUpdate",value:""},null,-1),ye={key:0},fe=["innerHTML"],_e=Object(d["createElementVNode"])("a",{id:"bottom"},null,-1);function Ge(e,t,a,n,o,l){var r,i=Object(d["resolveComponent"])("ActivityIndicator"),c=Object(d["resolveComponent"])("ContentBlock"),s=Object(d["resolveComponent"])("Field"),u=Object(d["resolveComponent"])("Alert"),B=Object(d["resolveComponent"])("SaveButton"),F=Object(d["resolveDirective"])("content-table"),$=Object(d["resolveDirective"])("form");return Object(d["openBlock"])(),Object(d["createElementBlock"])("div",null,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",b,[Object(d["createVNode"])(c,{"content-title":e.translate("Goals_ManageGoals")},{default:Object(d["withCtx"])((function(){return[Object(d["createVNode"])(i,{loading:e.isLoading},null,8,["loading"]),Object(d["createElementVNode"])("div",p,[Object(d["createElementVNode"])("span",{innerHTML:e.$sanitize(e.learnMoreAboutGoalTracking)},null,8,m),e.ecommerceEnabled?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("span",O,[j,g,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_Optional"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Ecommerce"))+": ",1),Object(d["createElementVNode"])("span",{innerHTML:e.$sanitize(e.youCanEnableEcommerceReports)},null,8,h)]))]),Object(d["withDirectives"])(Object(d["createElementVNode"])("table",null,[Object(d["createElementVNode"])("thead",null,[Object(d["createElementVNode"])("tr",null,[Object(d["createElementVNode"])("th",v,Object(d["toDisplayString"])(e.translate("General_Id")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("Goals_GoalName")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("General_Description")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("Goals_GoalIsTriggeredWhen")),1),Object(d["createElementVNode"])("th",null,Object(d["toDisplayString"])(e.translate("General_ColumnRevenue")),1),e.beforeGoalListActionsHeadComponent?(Object(d["openBlock"])(),Object(d["createBlock"])(Object(d["resolveDynamicComponent"])(e.beforeGoalListActionsHeadComponent),{key:0})):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("th",y,Object(d["toDisplayString"])(e.translate("General_Edit")),1)):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("th",f,Object(d["toDisplayString"])(e.translate("General_Delete")),1)):Object(d["createCommentVNode"])("",!0)])]),Object(d["createElementVNode"])("tbody",null,[Object.keys(e.goals||{}).length?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("tr",_,[Object(d["createElementVNode"])("td",G,[E,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_ThereIsNoGoalToManage",e.siteName))+" ",1),V,N])])),(Object(d["openBlock"])(!0),Object(d["createElementBlock"])(d["Fragment"],null,Object(d["renderList"])(e.goals||[],(function(t){return Object(d["openBlock"])(),Object(d["createElementBlock"])("tr",{id:t.idgoal,key:t.idgoal},[Object(d["createElementVNode"])("td",T,Object(d["toDisplayString"])(t.idgoal),1),Object(d["createElementVNode"])("td",null,Object(d["toDisplayString"])(t.name),1),Object(d["createElementVNode"])("td",null,Object(d["toDisplayString"])(t.description),1),Object(d["createElementVNode"])("td",null,[Object(d["createElementVNode"])("span",S,Object(d["toDisplayString"])(e.goalMatchAttributeTranslations[t.match_attribute]||t.match_attribute),1),"visit_duration"===t.match_attribute?(Object(d["openBlock"])(),Object(d["createElementBlock"])("span",k,Object(d["toDisplayString"])(e.lcfirst(e.translate("General_OperationGreaterThan")))+" "+Object(d["toDisplayString"])(e.translate("Intl_NMinutes",t.pattern)),1)):t.pattern_type?(Object(d["openBlock"])(),Object(d["createElementBlock"])("span",D,[C,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_Pattern"))+" "+Object(d["toDisplayString"])(t.pattern_type)+": "+Object(d["toDisplayString"])(t.pattern),1)])):Object(d["createCommentVNode"])("",!0)]),Object(d["createElementVNode"])("td",{class:"center",innerHTML:e.$sanitize(0===t.revenue||"0"===t.revenue?"-":t.revenue_pretty)},null,8,x),e.beforeGoalListActionsBodyComponent[t.idgoal]?(Object(d["openBlock"])(),Object(d["createBlock"])(Object(d["resolveDynamicComponent"])(e.beforeGoalListActionsBodyComponent[t.idgoal]),{key:0})):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("td",A,[Object(d["createElementVNode"])("button",{onClick:function(a){return e.editGoal(t.idgoal)},class:"table-action",title:e.translate("General_Edit")},L,8,M)])):Object(d["createCommentVNode"])("",!0),e.userCanEditGoals?(Object(d["openBlock"])(),Object(d["createElementBlock"])("td",P,[Object(d["createElementVNode"])("button",{onClick:function(a){return e.deleteGoal(t.idgoal)},class:"table-action",title:e.translate("General_Delete")},U,8,H)])):Object(d["createCommentVNode"])("",!0)],8,w)})),128))])],512),[[F]]),e.userCanEditGoals&&!e.onlyShowAddNewGoal?(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",R,[Object(d["createElementVNode"])("button",{id:"add-goal",onClick:t[0]||(t[0]=function(t){return e.createGoal()})},[I,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("Goals_AddNewGoal")),1)])])):Object(d["createCommentVNode"])("",!0)]})),_:1},8,["content-title"])],512),[[d["vShow"],e.showGoalList]]),Object(d["createElementVNode"])("div",J,[Object(d["createElementVNode"])("h2",null,Object(d["toDisplayString"])(e.translate("Goals_DeleteGoalConfirm",'"'.concat(null===(r=e.goalToDelete)||void 0===r?void 0:r.name,'"'))),1),Object(d["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,z),Object(d["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,q)],512)],512),[[d["vShow"],!e.onlyShowAddNewGoal]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",W,[Object(d["createVNode"])(c,{"content-title":e.goal.idgoal?e.translate("Goals_UpdateGoal"):e.translate("Goals_AddNewGoal")},{default:Object(d["withCtx"])((function(){return[Object(d["createElementVNode"])("div",{innerHTML:e.$sanitize(e.addNewGoalIntro)},null,8,Y),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",null,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"text",name:"goal_name",modelValue:e.goal.name,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.goal.name=t}),maxlength:50,title:e.translate("Goals_GoalName")},null,8,["modelValue","title"])]),Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"text",name:"goal_description",modelValue:e.goal.description,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.goal.description=t}),maxlength:255,title:e.translate("General_Description")},null,8,["modelValue","title"])]),Object(d["createElementVNode"])("div",K,[Object(d["createElementVNode"])("div",Q,[Object(d["createElementVNode"])("h3",null,Object(d["toDisplayString"])(e.translate("Goals_GoalIsTriggered")),1)])]),Object(d["createElementVNode"])("div",X,[Object(d["createElementVNode"])("div",Z,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"trigger_type","model-value":e.triggerType,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.triggerType=t,e.changedTriggerType()}),"full-width":!0,options:e.goalTriggerTypeOptions},null,8,["model-value","options"])])]),Object(d["createElementVNode"])("div",ee,[Object(d["withDirectives"])(Object(d["createVNode"])(u,{severity:"info"},{default:Object(d["withCtx"])((function(){return[Object(d["createElementVNode"])("span",{innerHTML:e.$sanitize(e.whereVisitedPageManuallyCallsJsTrackerText)},null,8,te)]})),_:1},512),[[d["vShow"],"manually"===e.triggerType]]),Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createVNode"])(s,{uicontrol:"radio",name:"match_attribute","full-width":!0,"model-value":e.goal.match_attribute,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.goal.match_attribute=t,e.initPatternType()}),options:e.goalMatchAttributeOptions},null,8,["model-value","options"]),[[d["vShow"],"manually"!==e.triggerType]])])])]),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",ae,[Object(d["createElementVNode"])("h3",ne,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("Goals_WhereThe"))+" ",1),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_URL")),513),[[d["vShow"],"url"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_PageTitle")),513),[[d["vShow"],"title"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_Filename")),513),[[d["vShow"],"file"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_ExternalWebsiteUrl")),513),[[d["vShow"],"external_website"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("Goals_VisitDuration")),513),[[d["vShow"],"visit_duration"===e.goal.match_attribute]])])],512),[[d["vShow"],"manually"!==e.triggerType]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("div",oe,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",le,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"event_type",modelValue:e.eventType,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.eventType=t}),"full-width":!0,options:e.eventTypeOptions},null,8,["modelValue","options"])])],512),[[d["vShow"],"event"===e.goal.match_attribute]]),e.isMatchAttributeNumeric?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",re,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"pattern_type",modelValue:e.goal.pattern_type,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.goal.pattern_type=t}),"full-width":!0,options:e.patternTypeOptions},null,8,["modelValue","options"])])])),e.isMatchAttributeNumeric?(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",ie,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"select",name:"pattern_type",modelValue:e.goal.pattern_type,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.goal.pattern_type=t}),"full-width":!0,options:e.numericComparisonTypeOptions},null,8,["modelValue","options"])])])):Object(d["createCommentVNode"])("",!0),Object(d["createElementVNode"])("div",ce,[Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"text",name:"pattern",modelValue:e.goal.pattern,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.goal.pattern=t}),maxlength:255,title:e.patternFieldLabel,"full-width":!0},null,8,["modelValue","title"])])]),Object(d["createElementVNode"])("div",se,[Object(d["createVNode"])(u,{severity:"info"},{default:Object(d["withCtx"])((function(){return[Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'checkout/confirmation'"))+" ",1),ue,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'http://example.com/thank-you.html'"))+" ",1),de,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_MatchesExpression","'(.*)\\/demo\\/(.*)'")),1)],512),[[d["vShow"],"url"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'Order confirmation'")),513),[[d["vShow"],"title"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'files/brochure.pdf'"))+" ",1),be,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'http://example.com/files/brochure.pdf'"))+" ",1),pe,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_MatchesExpression","'(.*)\\.zip'")),1)],512),[[d["vShow"],"file"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'amazon.com'"))+" ",1),me,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'http://mypartner.com/landing.html'"))+" ",1),Oe,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.matchesExpressionExternal),1)],512),[[d["vShow"],"external_website"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,[Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Contains","'video'"))+" ",1),je,Object(d["createTextVNode"])(" "+Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_IsExactly","'click'"))+" ",1),ge,Object(d["createTextVNode"])(Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_MatchesExpression","'(.*)_banner'"))+'" ',1)],512),[[d["vShow"],"event"===e.goal.match_attribute]]),Object(d["withDirectives"])(Object(d["createElementVNode"])("span",null,Object(d["toDisplayString"])(e.translate("General_ForExampleShort"))+" "+Object(d["toDisplayString"])(e.translate("Goals_AtLeastMinutes","5","0.5")),513),[[d["vShow"],"visit_duration"===e.goal.match_attribute]])]})),_:1})])],512),[[d["vShow"],"manually"!==e.triggerType]]),Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createVNode"])(s,{uicontrol:"checkbox",name:"case_sensitive",modelValue:e.goal.case_sensitive,"onUpdate:modelValue":t[9]||(t[9]=function(t){return e.goal.case_sensitive=t}),title:e.caseSensitiveTitle},null,8,["modelValue","title"]),[[d["vShow"],"manually"!==e.triggerType&&!e.isMatchAttributeNumeric]])]),Object(d["createElementVNode"])("div",null,["visit_duration"!==e.goal.match_attribute?(Object(d["openBlock"])(),Object(d["createBlock"])(s,{key:0,uicontrol:"radio",name:"allow_multiple","model-value":e.goal.allow_multiple?1:0,"onUpdate:modelValue":t[10]||(t[10]=function(t){return e.goal.allow_multiple=t}),options:e.allowMultipleOptions,introduction:e.translate("Goals_AllowMultipleConversionsPerVisit"),"inline-help":e.translate("Goals_HelpOneConversionPerVisit")},null,8,["model-value","options","introduction","inline-help"])):Object(d["createCommentVNode"])("",!0)]),Object(d["createElementVNode"])("h3",null,Object(d["toDisplayString"])(e.translate("Goals_GoalRevenue"))+" "+Object(d["toDisplayString"])(e.translate("Goals_Optional")),1),Object(d["createElementVNode"])("div",null,[Object(d["createVNode"])(s,{uicontrol:"number",name:"revenue",modelValue:e.goal.revenue,"onUpdate:modelValue":t[11]||(t[11]=function(t){return e.goal.revenue=t}),placeholder:e.translate("Goals_DefaultRevenueLabel"),"inline-help":e.translate("Goals_DefaultRevenueHelp")},null,8,["modelValue","placeholder","inline-help"])]),Object(d["createElementVNode"])("div",null,[Object(d["withDirectives"])(Object(d["createVNode"])(s,{uicontrol:"checkbox",name:"use_event_value",modelValue:e.goal.event_value_as_revenue,"onUpdate:modelValue":t[12]||(t[12]=function(t){return e.goal.event_value_as_revenue=t}),title:e.translate("Goals_UseEventValueAsRevenue"),"inline-help":e.useEventValueAsRevenueHelp},null,8,["modelValue","title","inline-help"]),[[d["vShow"],"event"===e.goal.match_attribute]])]),Object(d["createElementVNode"])("div",he,[e.endEditTableComponent?(Object(d["openBlock"])(),Object(d["createBlock"])(Object(d["resolveDynamicComponent"])(e.endEditTableComponent),{key:0})):Object(d["createCommentVNode"])("",!0)],512),ve,Object(d["createVNode"])(B,{saving:e.isLoading,onConfirm:t[13]||(t[13]=function(t){return e.save()}),value:e.submitText},null,8,["saving","value"]),e.onlyShowAddNewGoal?Object(d["createCommentVNode"])("",!0):(Object(d["openBlock"])(),Object(d["createElementBlock"])("div",ye,[Object(d["withDirectives"])(Object(d["createElementVNode"])("div",{class:"entityCancel",onClick:t[14]||(t[14]=function(t){return e.showListOfReports()}),innerHTML:e.$sanitize(e.cancelText)},null,8,fe),[[d["vShow"],e.showEditGoal]])]))],512),[[$]])]})),_:1},8,["content-title"])],512),[[d["vShow"],e.showEditGoal]])],512),[[d["vShow"],e.userCanEditGoals]]),_e])}var Ee=a("a5a2");function Ve(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function Ne(e,t){for(var a=0;a<t.length;a++){var n=t[a];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function we(e,t,a){return t&&Ne(e.prototype,t),a&&Ne(e,a),e}function Te(e,t,a){return t in e?Object.defineProperty(e,t,{value:a,enumerable:!0,configurable:!0,writable:!0}):e[t]=a,e}
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue b/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue
index 667935117b..37bcbe18ad 100644
--- a/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue
+++ b/plugins/Goals/vue/src/ManageGoals/ManageGoals.vue
@@ -18,12 +18,12 @@
<ActivityIndicator :loading="isLoading"/>
<div class="contentHelp">
- <span v-html="learnMoreAboutGoalTracking"/>
+ <span v-html="$sanitize(learnMoreAboutGoalTracking)"/>
<span v-if="!ecommerceEnabled">
<br /><br/>
{{ translate('Goals_Optional') }} {{ translate('Goals_Ecommerce') }}:
- <span v-html="youCanEnableEcommerceReports"/>
+ <span v-html="$sanitize(youCanEnableEcommerceReports)"/>
</span>
</div>
@@ -73,9 +73,9 @@
</td>
<td
class="center"
- v-html="goal.revenue === 0 || goal.revenue === '0'
- ? '-'
- : $sanitize(goal.revenue_pretty)"
+ v-html="$sanitize(
+ goal.revenue === 0 || goal.revenue === '0' ? '-' : goal.revenue_pretty,
+ )"
>
</td>
@@ -173,7 +173,7 @@
</div>
<div class="col s12 m6">
<Alert severity="info" v-show="triggerType === 'manually'">
- <span v-html="whereVisitedPageManuallyCallsJsTrackerText"></span>
+ <span v-html="$sanitize(whereVisitedPageManuallyCallsJsTrackerText)"></span>
</Alert>
<div>
@@ -368,7 +368,7 @@
class='entityCancel'
v-show="showEditGoal"
@click="showListOfReports()"
- v-html="cancelText"
+ v-html="$sanitize(cancelText)"
>
</div>
</div>
diff --git a/plugins/ImageGraph/lang/ga.json b/plugins/ImageGraph/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/ImageGraph/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Insights/lang/fr.json b/plugins/Insights/lang/fr.json
index e8b029d154..3309c7303f 100644
--- a/plugins/Insights/lang/fr.json
+++ b/plugins/Insights/lang/fr.json
@@ -1,6 +1,5 @@
{
"Insights": {
- "PluginDescription": "Fournit des Aperçus de votre trafic. Les aperçus sont disponibles comme gadgets pour le tableau de bord ainsi qu'en tant que nouvel icône dans les rapports pour vous permettre de voir les tendances les plus importantes au sein de vos données.",
"ControlComparedToDescription": "Croissance comparée à",
"ControlFilterByDescription": "Tout afficher, seulement les déplacés, seulement nouveaux ou seulement disparus",
"DatePeriodCombinationNotSupported": "Il n'est pas possible de générer des indicateurs pour cette combinaison de date et de période.",
@@ -17,9 +16,10 @@
"IgnoredChanges": "Les modifications affectant moins de %s ont été ignorées.",
"MonthComparedToPreviousMonth": "mois précédent",
"MonthComparedToPreviousYear": "même mois de l'année précédente",
- "MoversAndShakersWidgetTitle": "Déplaceurs et Shakers",
+ "MoversAndShakersWidgetTitle": "Plus &amp; moins",
"NoResultMatchesCriteria": "Aucune ligne ne correspond aux critères",
"OverviewWidgetTitle": "Aperçu des idées",
+ "PluginDescription": "Fournit des Aperçus de votre trafic. Les aperçus sont disponibles comme gadgets pour le tableau de bord ainsi qu'en tant que nouvel icône dans les rapports pour vous permettre de voir les tendances les plus importantes au sein de vos données.",
"TitleConsideredInsightsChanges": "Les enregistrements ont augmenté ou diminué d'au moins %1$s visites (%2$s%% de %3$s visites totales).",
"TitleConsideredInsightsGrowth": "Les enregistrements suivants ont une croissance d'au moins %1$s%% comparé à %2$s.",
"TitleConsideredMoversAndShakersChanges": "Considérés comme étant en évolution uniquement s'ils ont augmenté de plus de %1$s%% visites ou diminué par moins de %2$s%% visites, nouveaux entrants uniquement si augmentées par plus de %3$s%% visites (%4$s), et sortants si diminués par moins de %5$s%% visites (%6$s).",
@@ -32,4 +32,4 @@
"WidgetCategory": "Idées",
"YearComparedToPreviousYear": "année précédente"
}
-} \ No newline at end of file
+}
diff --git a/plugins/Insights/lang/ga.json b/plugins/Insights/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Insights/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Installation/lang/de.json b/plugins/Installation/lang/de.json
index c5c7822e01..bf7beacaed 100644
--- a/plugins/Installation/lang/de.json
+++ b/plugins/Installation/lang/de.json
@@ -4,7 +4,7 @@
"CannotConnectToDbResolvingExplanation": "Dies könnte ein temporäres Problem sein. Versuchen Sie diese %1$sSeite neu zu laden%2$s. Wenn das Problem weiterhin besteht, wenden Sie sich bitte an Ihren Matomo Administrator.",
"CollaborativeProject": "Matomo ist ein gemeinschaftliches Projekt, geschaffen mit Liebe.",
"ConfigurationHelp": "Korrigieren Sie Ihre Matomo Konfigurationstatei indem Sie entweder die config/config.ini.php löschen und mit der Installation fortfahren, oder indem Sie die Einstellungen zur Datenbankverbindung korrigieren.",
- "ConfirmDeleteExistingTables": "Wollen Sie wirklich die Tabellen: %s aus der Datenbank löschen? WARNUNG: DATEN AUS DIESEN TABELLEN KÖNNEN NICHT WIEDERHERGESTELLT WERDEN!",
+ "ConfirmDeleteExistingTables": "Sollen die Tabellen %s aus Ihrer Datenbank gelöscht werden? WARNUNG: DATEN AUS DIESEN TABELLEN KÖNNEN NICHT WIEDERHERGESTELLT WERDEN!",
"Congratulations": "Glückwunsch",
"CongratulationsHelp": "<p>Glückwunsch! Matomo ist nun installiert.</p><p>Stellen Sie sicher, dass der Tracking-Code auf Ihrer Webseite eingefügt wird und warten Sie auf Ihre ersten Besucher!</p>",
"CopyBelowInfoForSupport": "Kopieren Sie die untenstehende Information oder laden Sie sie herunter für den Fall, dass unser Supportteam Sie danach fragen wird.",
@@ -30,7 +30,7 @@
"GetInvolved": "Wenn Ihnen gefällt, was Sie sehen, können Sie %1$smitmachen%2$s.",
"GoBackAndDefinePrefix": "Zurückgehen und einen Präfix für die Matomo-Tabellen definieren",
"HappyAnalysing": "Viel Spaß beim Analysieren!",
- "IfPiwikInstalledBeforeTablesCanBeKept": "Wenn Sie Matomo zuvor schon installiert haben und noch Tabellen in der Datenbank vorhanden sind: Keine Angst, Sie können diese Tabellen und die enthaltenen Daten weiterhin verwenden!",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Wenn Sie Matomo zuvor schon installiert haben und noch Tabellen in der Datenbank vorhanden sind: Keine Angst, Sie können diese Tabellen und die enthaltenen Daten weiterhin verwenden.",
"InformationalResults": "Informationen",
"Installation": "Installation",
"InstallationStatus": "Status der Installation",
@@ -58,7 +58,7 @@
"PerformanceSettingsDesc2": "Dies erfordert, dass Sie einen Matomo Aufruf zu Cron hinzufügen, was nicht automatisch während der Installation gemacht werden kann. Aber Sie können %1$sunser FAQ lesen um zu erfahren, wie Sie es selbst einrichten können.%2$s",
"PhpBinaryCheck": "64-bit PHP Binär",
"PhpBinaryCheckHelp": "32-bit <p> Wir empfehlen ein Upgrade auf eine 64-Bit-PHP-Binärdatei bis spätestens Januar 2026, um Fehler in der Zukunft zu vermeiden.</p>",
- "PiwikOrgNewsletter": "mich per E-Mail über wichtige Updates der Matomo-Community informieren",
+ "PiwikOrgNewsletter": "Abonnieren Sie unseren Newsletter, um regelmäßig Informationen über Matomo zu erhalten.",
"PleaseFixTheFollowingErrors": "Bitte beheben Sie die folgenden Fehler",
"ProfessionalServicesAdTitle": "Erweiterte Analytik und Service",
"ProfessionalServicesNewsletter": "senden Sie mir Informationen über %1$sprofessionelle Dienstleistungen und Produkte%2$s für Matomo",
@@ -74,7 +74,7 @@
"SetupWebsiteError": "Die Website konnte nicht hinzugefügt werden",
"SetupWebsiteSetupSuccess": "Website %s erfolgreich angelegt",
"SiteSetup": "Konfigurieren Sie Ihre erste Website, welche über Matomo getrackt und analysiert werden soll:",
- "SiteSetupFootnote": "Hinweis: Sie können weitere Websites hinzufügen, sobald die Installation von Matomo abgeschlossen wurde!",
+ "SiteSetupFootnote": "Hinweis: Sie können weitere Websites hinzufügen, sobald die Installation von Matomo abgeschlossen wurde.",
"SuperUser": "Hauptadministrator",
"SuperUserLogin": "Hauptadministrator Login",
"SuperUserSetupError": "Der Hauptadministrator konnte nicht hinzugefügt werden",
@@ -114,19 +114,19 @@
"SystemCheckOpenURLHelp": "Eintragen in den Newsletter, Aktualisierungshinweise und Ein-Klick-Aktualisierungen erfordern die \"cURL\" Erweiterung, allow_url_fopen=On und fsockopen() aktiviert.",
"SystemCheckOtherExtensions": "Andere Erweiterungen",
"SystemCheckOtherFunctions": "Andere Funktionen",
- "SystemCheckPackHelp": "Die Funktion pack() wird benötigt um Besucher in Matomo tracken zu können.",
+ "SystemCheckPackHelp": "Die Funktion 'pack()' wird benötigt um Besucher in Matomo tracken zu können.",
"SystemCheckPageSpeedDisabled": "PageSpeed ist deaktiviert",
- "SystemCheckPageSpeedWarning": "Wir empfehlen, das PageSpeed Module auf Ihrem Web Server %s zu deaktivieren: PageSpeed führt Meldungen zufolge zu diversen Problemen in Kombination mit Matomo, so wie: Fehlerhafte Seitenberichte, fehlerhafte Zeilenentwicklungen, und weitere Fälle, welche schwer zu behandeln sind. Bitte mod_pagespeed auf diesem Server deaktivieren.",
- "SystemCheckParseIniFileHelp": "Diese Funktion wird von Ihrem System nicht unterstützt. Matomo wird versuchen, diese Funktion zu emulieren, aber es könnte sein, dass dadurch Sicherheitseinstellungen gelockert werden müssen. Die Geschwindigkeit des Tracker könnte auch beeinflusst werden.",
+ "SystemCheckPageSpeedWarning": "Es wird empfohlen, das PageSpeed-Modul auf Ihrem %s Webserver zu deaktivieren: PageSpeed verursacht verschiedene Probleme mit Matomo, wie z.B.: fehlerhafte Seitenberichte, fehlerhafte Zeilenentwicklungen, etc. Bitte schalten Sie mod_pagespeed auf diesem Server aus.",
+ "SystemCheckParseIniFileHelp": "Diese integrierte Funktion wurde auf Ihrem Host deaktiviert. Matomo wird versuchen, sie zu emulieren, kann aber auf weitere Sicherheitseinschränkungen stoßen. Die Tracker-Leistung wird beeinträchtigt.",
"SystemCheckPdoAndMysqliHelp": "Auf einem Linux-Server können Sie PHP mit den folgenden Optionen kompilieren: %1$s In Ihrer php.ini fügen Sie dann die folgenden Zeilen ein: %2$s",
"SystemCheckPhp": "PHP-Version",
"SystemCheckPhpPdoAndMysqli": "Weitere Informationen unter: %1$sPHP PDO%2$s und %3$sMYSQLI%4$s.",
"SystemCheckPhpSetting": "Um schwerwiegende Probleme zu verhindern, sollten Sie Folgendes in Ihrer php.ini setzen: %s",
- "SystemCheckSessionHelp": "Sie müssen PHP mit aktiviertem \"session\" Support (--disable-session nicht verwenden) konfigurieren und neu starten.",
+ "SystemCheckSessionHelp": "Konfigurieren Sie PHP mit der erforderlichen \"session\" Unterstützung und bauen Sie es neu (verwenden Sie nicht --disable-session).",
"SystemCheckSettings": "Benötigte PHP Konfiguration (php.ini)",
"SystemCheckShellExecHelp": "Es wird empfohlen diese eingebaute Funktion von PHP zu aktivieren. %1$sLesen Sie folgendes, um mehr zu erfahren.%2$s",
- "SystemCheckSummaryNoProblems": "Gratulation! Es gibt keine Probleme mit Ihrer Matomo Installation. Sie können sich selbst auf die Schulter klopfen.",
- "SystemCheckSummaryThereWereErrors": "Ohje! Matomo hat einige %1$skritische Fehler%2$s mit Ihrer Installation festgestellt. %3$sDiese sollten schnellstmöglich behoben werden.%4$s",
+ "SystemCheckSummaryNoProblems": "Es gibt keine Probleme mit Ihrer Matomo Installation. Sie können sich selbst auf die Schulter klopfen.",
+ "SystemCheckSummaryThereWereErrors": "Ihr Matomo Installation hat einige %1$skritische Fehler%2$s. %3$sDiese sollten schnellstmöglich behoben werden.%4$s",
"SystemCheckSummaryThereWereWarnings": "Es gibt einige Ungereimtheiten mit Ihrem System. Matomo wird funktionieren, aber es könnten geringfügige Probleme auftauchen.",
"SystemCheckTimeLimitHelp": "Auf einer stark frequentierten Website könnte es passieren, dass die Archivierung mehr Zeit erfordert als erlaubt. Falls erforderlich, ändern Sie den max_execution_time Wert in ihrer php.ini Datei.",
"SystemCheckTracker": "Tracker-Status",
@@ -139,13 +139,13 @@
"SystemCheckWarnLibXmlHelp": "Sie müssen die \"libxml\" Erweiterung aktivieren (z.B. installieren Sie das \"php-libxml\" Paket), wie es auch von anderen PHP-Erweiterungen benötigt wird.",
"SystemCheckWarnOpensslHelp": "Sie sollten die \"openssl\" Erweiterung aktivieren, um sichere Updates zu ermöglichen.",
"SystemCheckWarnSimpleXMLHelp": "Sie sollten die \"SimpleXML\" Erweiterung aktivieren (z.Bsp. installieren Sie das \"php-simplexml\" und/oder \"php-xml\" Paket).",
- "SystemCheckWarning": "Matomo wird funktionieren, aber einige Funktionen werden fehlen",
+ "SystemCheckWarning": "Matomo wird normal funktionieren, aber einige Funktionen können fehlen.",
"SystemCheckWinPdoAndMysqliHelp": "Auf einem Windows-Server können Sie die folgenden Zeilen in Ihre php.ini einfügen: %s",
"SystemCheckWriteDirs": "Verzeichnisse mit Schreibzugriff",
"SystemCheckWriteDirsHelp": "Um diesen Fehler im Linux-System zu beheben, versuchen Sie den/die folgenden Befehl(e) einzugeben",
"SystemCheckZlibHelp": "Sie müssen PHP mit \"zlib\" Unterstützung konfigurieren und neu übersetzen ( --with-zlib).",
"Tables": "Erstelle die Tabellen",
- "TablesCreatedSuccess": "Die Tabellen wurden erfolgreich erzeugt!",
+ "TablesCreatedSuccess": "Tabellen erstellt",
"TablesDelete": "Entferne die erkannten Tabellen",
"TablesDeletedSuccess": "Vorhandene Matomotabellen wurden erfolgreich entfernt",
"TablesFound": "Die folgenden Tabellen wurden in der Datenbank gefunden",
@@ -155,9 +155,9 @@
"TablesWithSameNamesFound": "Einige %1$s Tabellen in Ihrer %2$s Datenbank haben dieselben Namen wie die Tabellen, die Matomo versucht zu erstellen",
"Timezone": "Zeitzone der Website",
"WeHopeYouWillEnjoyPiwik": "Wir hoffen, Sie haben soviel Spaß daran, Matomo zu nutzen, wie wir hatten, es zu erstellen.",
- "Welcome": "Willkommen!",
+ "Welcome": "Willkommen",
"WelcomeHelp": "<p>Matomo ist eine frei verfügbare Webanalyse-Software, welche erlaubt, einfach die gewünschten Informationen über die Besucher Ihrer Website zu erhalten.</p><p>Dieser Prozess ist aufgeteilt in %s einfache Schritte und wird rund 5 Minuten dauern.</p>",
- "WelcomeToCommunity": "Willkommen in der Matomo Community!",
+ "WelcomeToCommunity": "Willkommen in der Matomo Community.",
"YouMayInstallPiwikNow": "Sie können %1$sMatomo jetzt installieren%2$s"
}
}
diff --git a/plugins/Installation/lang/ga.json b/plugins/Installation/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Installation/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Installation/lang/id.json b/plugins/Installation/lang/id.json
index c0602a649c..46e7d99b7f 100644
--- a/plugins/Installation/lang/id.json
+++ b/plugins/Installation/lang/id.json
@@ -1,102 +1,163 @@
{
"Installation": {
+ "CannotConnectToDb": "Tidak dapat terhubung ke basis data",
+ "CannotConnectToDbResolvingExplanation": "Ini mungkin hanya masalah sementara, coba %1$ssegarkan halaman%2$s. Silakan hubungi administrator Matomo Anda jika masalah ini terus berlanjut.",
"CollaborativeProject": "Matomo adalah proyek kolaborasi yang dibangun dengan cinta.",
- "ConfirmDeleteExistingTables": "Apakan Anda yakin menghapus tabel: %s dari basisdata Anda? PERINGATAN: DATA DALAM TABEL TERSEBUT TAK DAPAT DIKEMBALIKAN!",
- "Congratulations": "Selesai",
- "DatabaseAbilities": "Kemampuan Basisdata",
- "DatabaseCreation": "Pembuatan basisdata",
- "DatabaseErrorConnect": "Galat ketika coba sambungan ke peladen basisdata",
- "DatabaseServerVersion": "Versi peladen basisdata",
- "DatabaseSetup": "Pengaturan Basisdata",
- "DatabaseSetupAdapter": "adaptor",
- "DatabaseSetupDatabaseName": "nama basisdata",
- "DatabaseSetupLogin": "masuk-log",
- "DatabaseSetupServer": "peladen basisdata",
- "DatabaseSetupTablePrefix": "awalan tabel",
+ "ConfigurationHelp": "Perbaiki berkas konfigurasi Matomo Anda dengan menghapus config/config.ini.php dan melanjutkan instalasi, atau dengan memperbaiki pengaturan untuk koneksi basis data.",
+ "ConfirmDeleteExistingTables": "Hapus tabel %s dari basis data Anda? PERINGATAN: DATA DARI TABEL INI TIDAK DAPAT DIKEMBALIKAN!",
+ "Congratulations": "Selamat",
+ "CongratulationsHelp": "<p>Selamat! Instalasi Matomo Anda sudah selesai.</p><p>Pastikan kode pelacakan Anda sudah dimasukkan di halaman Anda dan tunggulah pengunjung pertama Anda.</p>",
+ "CopyBelowInfoForSupport": "Salin atau unduh info di bawah ini, jika tim dukungan kami meminta info ini dari Anda.",
+ "CopySystemCheck": "Salin pemeriksaan sistem",
+ "DatabaseAbilities": "Kemampuan basis data",
+ "DatabaseCreation": "Pembuatan basis data",
+ "DatabaseErrorConnect": "Tidak dapat terhubung ke server basis data",
+ "DatabaseServerVersion": "Versi basis data-server",
+ "DatabaseSetup": "Pengaturan Basis Data",
+ "DatabaseSetupAdapter": "Adaptor",
+ "DatabaseSetupDatabaseName": "Nama Basis Data",
+ "DatabaseSetupLogin": "Masuk",
+ "DatabaseSetupServer": "Server Basis Data",
+ "DatabaseSetupTablePrefix": "Prefiks Tabel",
+ "DefaultSettings": "Pengaturan asali Matomo",
+ "DefaultSettingsHelp": "Matomo hadir dengan pengaturan bawaan. Anda dapat menyesuaikannya sekarang atau melakukannya nanti di layar admin.",
+ "DownloadSystemCheck": "Unduh pemeriksaan sistem",
"Email": "Surel",
+ "EmailPrivacyNotice": "Alamat surel Anda hanya akan digunakan untuk mengirimi Anda buletin. Itu dibagikan dengan Mad Mimi untuk melakukannya, tetapi penyedia pihak ketiga dapat berubah. Kami tidak akan membagikan surel Anda dengan orang lain atau menggunakannya untuk tujuan lain. Anda dapat berhenti berlangganan kapan saja. %1$sKebijakan Privasi%2$s memiliki info yang lebih lengkap.",
"Extension": "ekstensi",
+ "FasterReportLoading": "pemuatan laporan lebih cepat",
"Filesystem": "Sistem Berkas",
"GetInvolved": "Bila Anda menyukai apa yang Anda lihat, Anda dapat juga %1$sterlibat%2$s.",
- "GoBackAndDefinePrefix": "Kembali dan tetapkan kode awalan untuk tabel Matomo",
- "HappyAnalysing": "Selamat menganalisiis!",
+ "GoBackAndDefinePrefix": "Kembali dan tetapkan prefiks untuk tabel Matomo",
+ "HappyAnalysing": "Selamat menganalisis!",
+ "IfPiwikInstalledBeforeTablesCanBeKept": "Jika Anda menginstal Matomo sebelumnya dan memiliki beberapa tabel di basis data Anda, jangan khawatir, Anda dapat menggunakan kembali tabel yang sama dan data yang sudah ada akan tetap tersimpan.",
+ "InformationalResults": "Hasil informasi",
"Installation": "Instalasi",
"InstallationStatus": "Status Instalasi",
- "InsufficientPrivilegesHelp": "Anda dapat menambah hak akses tersrbut menggunakan perangkat seperti phpMyAdmin atau mengeksekusi kueri SQL yang sesuai. Apabila Anda tak mengetahui bagaimana melakukannya, harap bertanya kepada pengurus sistem Anda untuk memperoleh hak tersebut.",
- "InsufficientPrivilegesMain": "Basisdata tidak ada (dan tidak dapat dibuat), atau Pengguna tersebut tidak memiliki perizinan yang memadai. Pengguna basisdata harus memiliki perizinan sebagai berikut: %s",
+ "InsufficientPrivilegesHelp": "Hak istimewa ini dapat ditambahkan di phpMyAdmin atau dengan menjalankan kueri SQL yang tepat. Jika Anda tidak tahu caranya, silakan minta sysadmin Anda untuk melakukannya.",
+ "InsufficientPrivilegesMain": "Basis data tidak ada (dan tidak dapat dibuat) atau pengguna tersebut tidak memiliki izin yang memadai. Pengguna basis data harus memiliki izin sebagai berikut: %s",
"InvalidStateError": "Galat: Matomo telah terpasang sebelumnya. %1$s Kembali %2$s ke Matomo%3$s.",
- "JSTracking_EndNote": "Catatan: Setelah proses pemasangan, Anda dapat membangkitkan kode pelacakan tersesuaikan di bidang %1$sKode Pelacakan%2$s dalam halaman pengelola.",
- "JSTracking_Intro": "Untuk melacak lalu lintas ramatraya menggunakan Matomo, Anda harus menambah beberapa kode tambahan untuk setiap halaman situs Anda.",
- "JsTagArchivingHelp1": "Untuk kunjungan situs menengah dan tinggi terdapat beberapa optimasi yang haris dibuat untuk membantu Matomo berjalan lebih cepat (seperti %1$smengatur pengarsipan-otomatis%2$s).",
- "LargePiwikInstances": "Bantuan perihal Matomo besar",
+ "JSTracking_EndNote": "Catatan: Setelah instalasi, Anda dapat membuat kode pelacakan khusus di bagian admin %1$sKode Pelacakan%2$s.",
+ "JSTracking_Intro": "Untuk melacak lalu lintas web Anda dengan Matomo, Anda perlu memastikan bahwa beberapa kode tambahan telah ditambahkan ke setiap halaman web Anda.",
+ "JsTagArchivingHelp1": "Untuk situs web dengan lalu lintas sedang dan tinggi, pengoptimalan tertentu membantu Matomo agar berjalan lebih cepat (seperti %1$smenyiapkan pengarsipan otomatis%2$s).",
+ "LargePiwikInstances": "Bantuan untuk pengguna situs web dengan lalu lintas tinggi",
"Legend": "Legenda",
- "LoadDataInfileUnavailableHelp": "Menggunakan %1$s akan meningkatkan kecapatan pengarsipan Matomo. Untuk menjadikan ini tersedia untkuk Matomo, silakan memperbarui perangkat lunak PHP & MySQL Anda dan pastikan pengguna basisdata Anda memiliki hak %2$s.",
- "NfsFilesystemWarning": "Peladen Anda menggunakan berkas sistem NFS.",
- "NfsFilesystemWarningSuffixAdmin": "Ini berarti Matomo akan sangat lambat ketika menggunakan sesi berdasar berkas.",
- "NfsFilesystemWarningSuffixInstall": "Menggunakan sesi berdasar berkas dalam sisten berkas dalam NFS sangat lambat, sehingga Matomo akan menggunakan sesi berdasar basisdata. Bila Anda memiliki pengguna panel kendali secara bersamaan, Anda munkin membutuhkan peningkatan jumlah sambungan pengguna ke peladen basisdata.",
+ "LoadDataInfileRecommended": "Anda harus memperbaiki masalah ini jika server Matomo Anda melacak situs web dengan lalu lintas tinggi (mis. &gt; 100.000 halaman per bulan).",
+ "LoadDataInfileUnavailableHelp": "Petunjuk: Menggunakan %1$s dengan memperbarui perangkat lunak PHP dan MySQL Anda dan memastikan pengguna basis data Anda memiliki hak istimewa %2$s mempercepat proses pengarsipan Matomo.",
+ "NfsFilesystemWarning": "Server Anda menggunakan berkas sistem NFS.",
+ "NfsFilesystemWarningSuffixAdmin": "Ini berarti Matomo akan sangat lambat ketika menggunakan sesi berbasis berkas.",
+ "NfsFilesystemWarningSuffixInstall": "Menggunakan sesi berbasis berkas di NFS akan sangat lambat, jadi Matomo akan menggunakan sesi basis data. Jika Anda memiliki banyak pengguna dasbor secara bersamaan, Anda mungkin perlu menambah jumlah maksimum koneksi klien ke server basis data.",
+ "NoConfigFileFound": "Tidak dapat menemukan berkas pengaturan Matomo dan Anda mencoba untuk mengakses halaman Matomo.",
+ "NotSupported": "tidak didukung",
"Optional": "Pilihan",
- "Password": "Sandi lewat",
- "PasswordDoNotMatch": "sandi tak sama",
- "PasswordRepeat": "Sandi lewat (ulangi)",
- "PercentDone": "%s%% Selesai",
+ "Password": "Kata Sandi",
+ "PasswordDoNotMatch": "kata sandi tidak cocok",
+ "PasswordRepeat": "Kata Sandi (ulangi)",
+ "PercentDone": "%s %% selesai",
+ "PerformanceSettingsDesc1": "Matomo Anda sudah diatur dan siap untuk melacak dan melaporkan lalu lintas situs web Anda. Siapkan %1$sPengarsipan CLI%2$s jika Anda merasakan proses berjalan lambat. Ini akan menghasilkan laporan di latar belakang, bukan sesuai permintaan.",
+ "PerformanceSettingsDesc2": "Ini memerlukan penambahan perintah Matomo ke Cron yang tidak dapat dilakukan secara otomatis oleh penginstal. %1$sBaca FAQ kami untuk mempelajari cara menyiapkannya sendiri.%2$s",
+ "PhpBinaryCheck": "64-bit PHP Binary",
+ "PhpBinaryCheckHelp": "32-bit <p>Tingkatkan ke 64-bit PHP binary sebelum Januari 2026 untuk mencegah terjadinya kesalahan.</p>",
+ "PiwikOrgNewsletter": "berlangganan buletin kami untuk menerima informasi reguler tentang Matomo.",
"PleaseFixTheFollowingErrors": "Silakan perbaiki galat berikut ini",
+ "ProfessionalServicesAdTitle": "Analisis dan Layanan Lanjutan",
+ "ProfessionalServicesNewsletter": "kirimi saya info tentang %1$sLayanan dan produk profesional%2$s untuk Matomo",
+ "ProfessionalServicesfessionalDiscoverHow": "Pelajari tentang %1$sproduk dan layanan tambahan%2$s untuk Matomo dan cara meningkatkan konversi dan pendapatan Anda.",
+ "ProfessionalServicesfessionalServicesAdText": "Tim ahli kami dapat membantu organisasi Anda dalam menggunakan analitik Matomo secara maksimal.",
"Requirements": "Persyaratan Matomo",
- "RestartWebServer": "Setelah membuat perubahan tersebut, muat ulang peladen web Anda.",
- "SeeBelowForMoreInfo": "Lihat di bawah untuk informasi selengkapnya.",
- "SetupWebsite": "Atur Situs",
- "SetupWebsiteError": "Terdapat galat ketika menambah situs",
- "SetupWebsiteSetupSuccess": "Situs %s berhasil dibuat!",
- "SiteSetup": "harap mengatur situs pertama yang ingin Anda lacak dan analisis menggunkana Matomo:",
- "SiteSetupFootnote": "Catatan: sekali Pemasangan Matomo selesai, Anda akan mampu menambah Situs lain untuk dilacak!",
+ "RestartWebServer": "Setelah membuat perubahan tersebut, muat ulang server web Anda.",
+ "ReusingTables": "Menggunakan kembali Tabel",
+ "SeeBelowForMoreInfo": "Info lebih lanjut di bawah ini.",
+ "SetupWebSiteName": "Nama situs web",
+ "SetupWebSiteURL": "URL Situs Web",
+ "SetupWebsite": "Menyiapkan Situs Web",
+ "SetupWebsiteError": "Tidak dapat menambahkan situs web",
+ "SetupWebsiteSetupSuccess": "Situs web %s telah dibuat",
+ "SiteSetup": "Silakan atur situs web pertama yang ingin Anda lacak dan analisis dengan Matomo:",
+ "SiteSetupFootnote": "Catatan: Saat pemasangan Matomo telah selesai, Anda dapat menambahkan situs web lain untuk dilacak.",
"SuperUser": "Pengguna Super",
- "SuperUserSetupSuccess": "Pengguna Super berhasil dibuat!",
+ "SuperUserLogin": "Masuk sebagai pengguna super",
+ "SuperUserSetupError": "Tidak dapat menambahkan pengguna super",
+ "SuperUserSetupSuccess": "Pengguna super berhasil dibuat.",
"SystemCheck": "Pemeriksaan Sistem",
- "SystemCheckAutoUpdateHelp": "Catatan: Satu-Klik pembaruan Matomo membutuhkan izin-tulis ke map Matomo dan isinya.",
- "SystemCheckDatabaseHelp": "Matomo membutuhkan ekstensi mysqli atau kedua ekstensi PDO dan pdo_mysql.",
+ "SystemCheckAutoUpdateHelp": "Catatan: Pembaruan satu-klik Matomo memerlukan izin menulis ke folder Matomo beserta isinya.",
+ "SystemCheckCronArchiveProcess": "Siapkan Cron",
+ "SystemCheckCronArchiveProcessCLI": "Mengelola proses melalui CLI",
+ "SystemCheckDatabaseExtensions": "Ekstensi MySQL",
+ "SystemCheckDatabaseHelp": "Matomo membutuhkan ekstensi MySQLi atau kedua ekstensi PDO dan pdo_mysql.",
+ "SystemCheckDatabaseSSL": "Koneksi SSL Basis Data",
+ "SystemCheckDatabaseSSLCipher": "Sandi SSL sedang digunakan",
+ "SystemCheckDatabaseSSLDisabled": "Dukungan SSL dimatikan di server database Anda",
+ "SystemCheckDatabaseSSLNo": "Server basis data tidak dikompilasi dengan dukungan SSL",
+ "SystemCheckDatabaseSSLNotWorking": "%s diatur ke '1', tetapi koneksi SSL tidak berfungsi",
+ "SystemCheckDatabaseSSLOn": "Basis data Anda tidak menggunakan koneksi SSL, tetapi mendukungnya. Periksa pengaturan SSL basis data Anda di berkas pengaturan Matomo",
"SystemCheckDebugBacktraceHelp": "View::factory tidak akan dapat membuat tampilan untuk modul panggilan.",
- "SystemCheckError": "Telah terjadi galat - harus diperbaiki sebelum Anda melanjutkannya",
- "SystemCheckEvalHelp": "Dibutuhkan oleh sistem HTML QuickForm dan Smarty templating.",
- "SystemCheckExtensions": "Ekstensi lain dibutuhkan",
+ "SystemCheckError": "Terjadi kesalahan dan harus diperbaiki sebelum melanjutkan",
+ "SystemCheckEvalHelp": "Dibutuhkan oleh HTML QuickForm dan sistem templat Twig.",
+ "SystemCheckExtensions": "Ekstensi lain yang dibutuhkan",
"SystemCheckFileIntegrity": "Integritas berkas",
+ "SystemCheckFilterHelp": "Anda perlu mengonfigurasi dan membangun kembali PHP dengan dukungan \"filter\" (jangan gunakan --disable-filter).",
"SystemCheckFunctions": "Fungsi yang dibutuhkan",
- "SystemCheckGDFreeType": "GD &gt; 2.x + Freetype (grafis)",
- "SystemCheckGDHelp": "Bagan garis (grafik kecil) tak bekerja.",
- "SystemCheckGlobHelp": "Fungsi bawaan ini telah dimatikan dalam inang Anda. Matomo akan mencoba untuk meniru fungsi ini namun mungkin menghadapi pembatasan keamanan lebih lanjut. Fungsionalitas mungkin terkena dampak.",
- "SystemCheckGzcompressHelp": "Anda dapat mengaktifkan ekstensi zlib dan fungsi gzcompress.",
- "SystemCheckGzuncompressHelp": "Anda dapat mengaktifkam ekstensi zlib dan fungsi gzuncompress.",
- "SystemCheckMailHelp": "Pesan Umpanbalik dan Pemulihan Sandi tidak terkirim tanpa fungsi mail().",
- "SystemCheckMemoryLimit": "Batas Memori",
- "SystemCheckMemoryLimitHelp": "Dalam situs dengan kunjungan tinggi, kemungkinan pengarsipan membutuhkan memori lebih banyak daripada yang diperbolehkan saat ini. Bila dibutuhkan, ubah nilai memory_limit dalam berkas php.ini Anda.",
+ "SystemCheckGDFreeType": "GD &gt; 2.x + FreeType (grafik)",
+ "SystemCheckGDHelp": "Grafik mini (grafik kecil) dan grafik gambar (dalam aplikasi seluler Matomo dan laporan surel) tidak akan berfungsi.",
+ "SystemCheckGlobHelp": "Fungsi bawaan ini telah dimatikan di host Anda. Matomo akan mencoba untuk meniru fungsi tersebut, tetapi mungkin mengalami pembatasan keamanan lebih lanjut. Fungsionalitas mungkin terpengaruh.",
+ "SystemCheckGzcompressHelp": "Anda perlu mengaktifkan ekstensi zlib dan fungsi gzcompress.",
+ "SystemCheckGzuncompressHelp": "Anda perlu mengaktifkan ekstensi zlib dan fungsi gzuncompress.",
+ "SystemCheckHashHelp": "Konfigurasikan dan bangun kembali PHP dengan dukungan hash() yang diperlukan dengan mengecualikan opsi --disable-hash.",
+ "SystemCheckJsonHelp": "Ekstensi php-json diperlukan oleh Matomo untuk membaca dan menulis data JSON.",
+ "SystemCheckMailHelp": "Umpan balik dan pesan 'Kata sandi yang hilang' tidak akan dikirim tanpa 'mail()'.",
+ "SystemCheckMemoryLimit": "Batas memori",
+ "SystemCheckMemoryLimitHelp": "Pada situs dengan tingkat kunjungan tinggi, pengarsipan mungkin membutuhkan memori yang lebih banyak daripada yang diperbolehkan saat ini. Bila dibutuhkan, ubah nilai memory_limit dalam berkas php.ini Anda.",
+ "SystemCheckMemoryNoMemoryLimitSet": "Tidak ada batas memori yang ditetapkan",
+ "SystemCheckNoErrorsOrWarnings": "Tidak ada kesalahan atau peringatan",
"SystemCheckOpenURL": "Buka URL",
- "SystemCheckOpenURLHelp": "Berlangganan Buletin, memperbarui pemberitahuan, dan pembaruan satu-klik membutuhkan ekstensi \"curl\", allow_url_fopen=On, atau fsockopen() yang diaktifkan.",
- "SystemCheckOtherExtensions": "Ekstensi lain",
- "SystemCheckOtherFunctions": "Fungsi lain",
- "SystemCheckPackHelp": "Fungsi pack() dibutuhkan untuk melacak pengunjung di Matomo.",
- "SystemCheckParseIniFileHelp": "Fungsi bawaan ini telah dimatikan dalam inang Anda. Matomo akan mencoba untuk meniru fungsi ini namun mungkin menghadapi pembatasan keamanan lebih lanjut. Kinerja pelacak juga akan terpengaruh.",
- "SystemCheckPdoAndMysqliHelp": "Dalam peladen Linux Anda dapat mengompilasi php dengan opsi berikut: %1$s Di php.ini Anda, tambah baris berikut: %2$s",
+ "SystemCheckOpenURLHelp": "Langganan buletin, pemberitahuan pembaruan, dan pembaruan sekali klik memerlukan ekstensi \"cURL\", allow_url_fopen=On, atau fsockopen() diaktifkan.",
+ "SystemCheckOtherExtensions": "Ekstensi lainnya",
+ "SystemCheckOtherFunctions": "Fungsi lainnya",
+ "SystemCheckPackHelp": "Fungsi 'pack()' dibutuhkan untuk melacak pengunjung di Matomo.",
+ "SystemCheckPageSpeedDisabled": "PageSpeed dimatikan",
+ "SystemCheckPageSpeedWarning": "Disarankan untuk mematikan modul PageSpeed di server web %s Anda: PageSpeed menyebabkan beberapa masalah dengan Matomo, seperti: laporan halaman rusak, evolusi baris rusak, dll. Harap matikan mod_pagespeed di server ini.",
+ "SystemCheckParseIniFileHelp": "Fungsi bawaan ini telah dimatikan pada host Anda. Matomo akan mencoba menirunya, tetapi mungkin menghadapi batasan keamanan lebih lanjut. Kinerja pelacak akan terpengaruh.",
+ "SystemCheckPdoAndMysqliHelp": "Pada server GNU/ Linux, Anda dapat mengompilasi PHP dengan opsi berikut: %1$s Di php.ini Anda, tambahkan baris berikut: %2$s",
"SystemCheckPhp": "Versi PHP",
- "SystemCheckPhpPdoAndMysqli": "Informasi lebih lanjut di: %1$sPHP PDO%2$s dan %3$sMYSQLI%4$s.",
- "SystemCheckShellExecHelp": "Kami sarankan Anda mengaktifkan fungsi built-in PHP ini. %1$s Baca ini untuk mempelajari lebih lanjut. %2$s",
- "SystemCheckSummaryNoProblems": "Hore! Tidak ada permasalahan dalam pemasangan Matomo Anda. Beri diri Anda sebuah tepukan punggung.",
- "SystemCheckSummaryThereWereErrors": "Uh-oh! Matomo mendeteksi beberapa %1$spermsalahan kritis%2$s dalam with your Matomo setup. %3$sPermasalahan tersebut harus segera diperbaiki segera.%4$s",
- "SystemCheckSummaryThereWereWarnings": "Terdapat beberapa permasalahan dalam sistem Anda. Matomo akan berjalan, tetapi Anda mungkin mengalami beberapa permasalahan kecil.",
- "SystemCheckTimeLimitHelp": "Dalam situs dengan kunjungan tinggi, mengeksekusi proses pengarsipan kemungkinan membutuhkan lebih banyak waktu daripada yang dibolehkan sekarang. Bila diperlukan, ubah nilai max_execution_time dalam berkas php.ini Anda.",
+ "SystemCheckPhpPdoAndMysqli": "Info lebih lanjut: %1$sPHP PDO%2$s dan %3$sMYSQLI%4$s.",
+ "SystemCheckPhpSetting": "Siapkan berkas php.ini Anda seperti ini untuk mencegah kesalahan kritis: %s",
+ "SystemCheckSessionHelp": "Konfigurasikan dan bangun kembali PHP dengan dukungan \"sesi\" yang diperlukan (jangan gunakan --disable-session).",
+ "SystemCheckSettings": "Konfigurasi PHP yang diperlukan (php.ini)",
+ "SystemCheckShellExecHelp": "Disarankan untuk mengaktifkan fungsi bawaan PHP ini. %1$sBaca ini untuk mempelajarinya lebih lanjut.%2$s",
+ "SystemCheckSummaryNoProblems": "Tidak ada masalah dengan pengaturan Matomo Anda. Beri diri Anda tepukan di punggung.",
+ "SystemCheckSummaryThereWereErrors": "Pengaturan Matomo Anda memiliki beberapa %1$smasalah kritis%2$s. %3$sSegera perbaiki.%4$s",
+ "SystemCheckSummaryThereWereWarnings": "Ada beberapa masalah dengan sistem Anda. Matomo akan berjalan, tetapi Anda mungkin mengalami masalah kecil.",
+ "SystemCheckTimeLimitHelp": "Di situs web dengan lalu lintas tinggi, menjalankan proses pengarsipan mungkin membutuhkan waktu lebih lama dari yang diizinkan saat ini. Jika perlu, ubah direktif 'max_execution_time' di berkas php.ini Anda.",
"SystemCheckTracker": "Status Pelacak",
- "SystemCheckWarnDomHelp": "Anda harus mengaktifkan ekstensi \"dom\" (misalnya, memasang paket \"php-dom\" dan/atau \"php-xml\").",
- "SystemCheckWarnLibXmlHelp": "Anda harus mengaktifkan ekstensi \"libxml\" (misalnya, paket \"instalasi php-libxml\") seperti yang dipersyaratkan oleh ekstensi PHP inti lainnya.",
- "SystemCheckWarnSimpleXMLHelp": "Anda harus mengaktifkan ekstensi \"SimpleXML\" (misalnya, memasang \"php-simplexml\" dan/atau \"php-xml\").",
- "SystemCheckWarning": "Matomo akan berjalan normal, tetapi beberapa fitur kemungkinan tak tersedia",
- "SystemCheckWinPdoAndMysqliHelp": "Dalam peladen Windows Anda dapat menambah baris berikut dalam php.ini Anda: %s",
+ "SystemCheckTrackerHelp": "Tidak dapat melakukan permintaan GET ke matomo.php. Coba masukkan URL ini ke daftar putih dari autentikasi HTTP dan nonaktifkan 'mod_security' (Anda mungkin harus bertanya pada pengelola hosting Anda). Info lebih lanjut tentang kesalahan bisa dilihat di masing-masing berkas log di server Anda.",
+ "SystemCheckUpdateHttps": "Perbarui melalui HTTPS",
+ "SystemCheckUpdateHttpsNotSupported": "Matomo tidak dapat menggunakan HTTPS untuk memperbarui dan akan kembali ke pembaruan HTTP yang tidak aman. Periksa apakah CURL atau allow_url_fopen didukung dan ekstensi PHP OpenSSL telah diinstal: https://matomo.org/faq/troubleshooting/faq_177/.",
+ "SystemCheckViewFullSystemCheck": "Lihat laporan pemeriksaan sistem secara lengkap",
+ "SystemCheckWarnDomHelp": "Anda harus mengaktifkan ekstensi \"dom\" (misalnya, memasang paket \"php-dom\" dan/ atau \"php-xml\").",
+ "SystemCheckWarnJsonHelp": "Anda harus mengaktifkan ekstensi \"JSON\" (mis., instal paket \"php-json\").",
+ "SystemCheckWarnLibXmlHelp": "Anda harus mengaktifkan ekstensi \"libxml\" (misalnya, paket \"install the php-libxml\") seperti yang diperlukan oleh ekstensi inti PHP lainnya.",
+ "SystemCheckWarnOpensslHelp": "Anda harus mengaktifkan ekstensi \"OpenSSL\" untuk mengizinkan pembaruan yang aman.",
+ "SystemCheckWarnSimpleXMLHelp": "Anda harus mengaktifkan ekstensi \"SimpleXML\" (misalnya, memasang paket \"php-simplexml\" dan/ atau \"php-xml\").",
+ "SystemCheckWarning": "Matomo akan berjalan normal, tetapi beberapa fitur kemungkinan tak tersedia.",
+ "SystemCheckWinPdoAndMysqliHelp": "Pada server Windows Anda dapat menambahkan baris berikut ke php.ini Anda: %s",
"SystemCheckWriteDirs": "Direktori dengan akses tulis",
- "SystemCheckWriteDirsHelp": "Untuk dapat memperbaiki galat tersebut di sistem Linux Anda, coba untuk mengetik perintah berikut",
- "SystemCheckZlibHelp": "Anda dapat mengonfigurasi dan membangun ulang PHP dengan dukungan \"zlib\" diaktifkan, --with-zlib.",
+ "SystemCheckWriteDirsHelp": "Untuk memperbaiki kesalahan ini pada sistem GNU/ Linux Anda, coba ketikkan perintah berikut",
+ "SystemCheckZlibHelp": "Atur dan bangun kembali PHP dengan dukungan \"zlib\" yang diperlukan, --with-zlib.",
"Tables": "Membuat Tabel",
- "TablesCreatedSuccess": "Tabel berhasil dibuat!",
- "TablesDelete": "Hapus tabel yang ditemukan",
- "TablesDeletedSuccess": "Tabel Matomo saat ini berhasil dihapus",
- "TablesFound": "Tabel berikut telah ditemukan dalam basisdata",
+ "TablesCreatedSuccess": "Tabel berhasil dibuat",
+ "TablesDelete": "Hapus tabel yang terdeteksi",
+ "TablesDeletedSuccess": "Tabel Matomo yang sudah ada telah dihapus",
+ "TablesFound": "Tabel berikut ini ditemukan di dalam basis data",
"TablesReuse": "Gunakan ulang tabel saat ini",
- "TablesWarningHelp": "Di antara pilihan menggunakan ulang tabel yang telah ada atau memilih instalasi bersih untuk menghapus seluruh data yang ada dalam basisdata.",
- "TablesWithSameNamesFound": "Beberapa tabel %1$s dalam basisdata Anda %2$s memiliki beberapa nama dengan nama tabel yang akan dibuat oleh Matomo",
- "Welcome": "Selamat Datang!"
+ "TablesUpdatedSuccess": "Basis data sudah diperbarui dari %1$s ke %2$s!",
+ "TablesWarningHelp": "Pilih untuk menggunakan kembali tabel basis data yang ada atau pilih instalasi bersih untuk menghapus semua data di basis data yang sudah ada.",
+ "TablesWithSameNamesFound": "Beberapa tabel %1$s di basis data '%2$s' Anda memiliki nama yang sama dengan tabel yang coba dibuat oleh Matomo",
+ "Timezone": "Zona waktu situs web",
+ "WeHopeYouWillEnjoyPiwik": "Nikmati penggunaan Matomo seperti kami menikmati dalam proses membuatnya.",
+ "Welcome": "Selamat Datang",
+ "WelcomeHelp": "<p>Matomo adalah perangkat lunak gratis yang digunakan untuk menganalisis lalu lintas dari pengunjung situs web Anda.</p><p>Proses ini memiliki %s langkah dan memakan waktu sekitar 5 menit.</p>",
+ "WelcomeToCommunity": "Selamat datang di komunitas Matomo.",
+ "YouMayInstallPiwikNow": "Anda dapat %1$smenginstal Matomo sekarang%2$s"
}
}
diff --git a/plugins/Installation/lang/sv.json b/plugins/Installation/lang/sv.json
index 583185ca22..4b034aa0ba 100644
--- a/plugins/Installation/lang/sv.json
+++ b/plugins/Installation/lang/sv.json
@@ -2,7 +2,7 @@
"Installation": {
"CannotConnectToDb": "Kan inte ansluta till databasen",
"CannotConnectToDbResolvingExplanation": "Det här kan vara ett tillfälligt problem, försök att %1$shämta sidan igen%2$s. Kontakta din Matomo administratör om problemet kvarstår.",
- "CollaborativeProject": "Matomo är ett projekt som arbetats fram av människor från hela världen, med samma mål och mycket kärlek!",
+ "CollaborativeProject": "Matomo är ett samarbetsprojekt byggt med kärlek.",
"ConfigurationHelp": "Din Matomo konfigurationsfil verkar vara felkonfigurerad. Du kan antingen ta bort config/config.ini.php och återuppta installationen, eller korrigera inställningarna för databasanslutningen.",
"ConfirmDeleteExistingTables": "Är du säker på att du vill ta bort tabellerna: %s från din databas? Varning: Data från dessa tabeller kommer inte kunna återskapas!",
"Congratulations": "Grattis",
diff --git a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png
index 225ca5760d..a1431a951f 100644
--- a/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png
+++ b/plugins/Installation/tests/UI/expected-screenshots/Installation_superuser_de.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:effe088d45a5f90d2f2b9dc10269234fe8b148cbd02514f68adbb8465a967193
-size 112113
+oid sha256:b5772e740266cf08fa0bd1de273dbc23a0b753c9049157769b1ce50feb0b4b01
+size 113583
diff --git a/plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php b/plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php
index 48afa1aad0..b5b1396226 100644
--- a/plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php
+++ b/plugins/LanguagesManager/TranslationWriter/Validate/NoScripts.php
@@ -25,7 +25,7 @@ class NoScripts extends ValidateAbstract
// check if any translation contains restricted script tags
$serializedStrings = serialize($translations);
- $invalids = array("<script", 'document.', 'javascript:', 'src=', 'background=', 'onload=');
+ $invalids = array("<script", 'javascript:', 'src=', 'background=', 'onload=');
foreach ($invalids as $invalid) {
if (stripos($serializedStrings, $invalid) !== false) {
diff --git a/plugins/LanguagesManager/lang/ga.json b/plugins/LanguagesManager/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/LanguagesManager/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/LanguagesManager/tests/Unit/TranslationWriter/Validate/NoScriptsTest.php b/plugins/LanguagesManager/tests/Unit/TranslationWriter/Validate/NoScriptsTest.php
index b6b01790fd..8c77400f30 100644
--- a/plugins/LanguagesManager/tests/Unit/TranslationWriter/Validate/NoScriptsTest.php
+++ b/plugins/LanguagesManager/tests/Unit/TranslationWriter/Validate/NoScriptsTest.php
@@ -86,13 +86,6 @@ class NoScriptsTest extends \PHPUnit\Framework\TestCase
array(
array(
'test' => array(
- 'test' => 'that will fail on document. or not?'
- )
- ),
- ),
- array(
- array(
- 'test' => array(
'test' => 'bla <a background="yellow">link</a>'
)
),
diff --git a/plugins/Live/lang/ga.json b/plugins/Live/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Live/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Live/lang/id.json b/plugins/Live/lang/id.json
index d0418e435a..74517676b4 100644
--- a/plugins/Live/lang/id.json
+++ b/plugins/Live/lang/id.json
@@ -1,29 +1,69 @@
{
"Live": {
- "AveragePageGenerationTime": "Setiap halaman rata-rata memakan %1$s membuat untuk pengguna ini.",
+ "ActionsAndDuration": "%1$s tindakan dalam %2$s",
+ "AveragePageGenerationTime": "Setiap halaman rata-rata membutuhkan %1$s untuk memuat untuk pengunjung ini.",
+ "CalculatedOverNPageViews": "Dihitung menggunakan tampilan %1$s halaman terakhir dari pengunjung ini.",
+ "ClickToSeeAllContents": "Klik untuk melihat setiap interaksi/ tayangan konten",
+ "ClickToViewAllActions": "Klik untuk melihat semua tindakan grup ini secara detail",
"ClickToViewMoreAboutVisit": "Klik untuk melihat informasi lebih lanjut tentang kunjungan ini",
+ "ConvertedNGoals": "Mengonversi %s Sasaran",
+ "DisableVisitorProfile": "Nonaktifkan profil pengunjung saja",
+ "DisableVisitorProfileDescription": "Di sini Anda dapat menonaktifkan fitur profil pengunjung. Semua fitur terkait log kunjungan akan tetap berfungsi.",
+ "DisableVisitsLogAndProfile": "Nonaktifkan log kunjungan &amp; profil pengunjung",
+ "DisableVisitsLogAndProfileDescription": "Di sini Anda dapat menonaktifkan log kunjungan dan fitur profil pengunjung. Ini juga akan menonaktifkan fitur yang bergantung pada seperti log niaga-el, log kunjungan tersegmentasi, peta waktu nyata, atau widget waktu nyata. Ini mungkin diperlukan untuk mematuhi undang-undang/ pedoman privasi di negara Anda.",
"FirstVisit": "Kunjungan pertama",
"GoalType": "Jenis",
"HideMap": "sembunyikan peta",
- "KeywordRankedOnSearchResultForThisVisitor": "Kata kunci %1$s menuduki peringkat %2$s dalam halaman pencarian %3$s untuk pengunjung ini",
- "LastHours": "Jam %s terakhir",
- "LastMinutes": "Menit %s terakhir",
+ "KeywordRankedOnSearchResultForThisVisitor": "Kata kunci %1$s menduduki peringkat %2$s dalam halaman pencarian %3$s untuk pengunjung ini",
+ "LastHours": "%s jam terakhir",
+ "LastMinutes": "%s menit terakhir",
"LastVisit": "Kunjungan terakhir",
- "LoadMoreVisits": "Muat kunjungan lebih banyak",
+ "LimitedSummary": "Informasi dalam profil ini merangkum %1$s kunjungan terakhir. Secara total, pengguna ini memiliki lebih banyak kunjungan.",
+ "LimitedVisitsShown": "Hanya %1$s kunjungan terakhir yang ditampilkan. Secara total, pengguna ini memiliki lebih banyak kunjungan.",
+ "LinkVisitorLog": "Lihat rincian log kunjungan",
+ "LoadMoreVisits": "Muat lebih banyak kunjungan",
"MorePagesNotDisplayed": "halaman lain untuk pengguna tersebut tak dapat ditampilkan",
"NbVisitor": "1 pengunjung",
"NbVisitors": "%s pengunjung",
"NextVisitor": "Pengunjung selanjutnya",
- "PageRefreshed": "Jumlah kali halaman ini ditampilkan \/ disegarkan berurutan.",
+ "NoMoreVisits": "Tidak ada lagi kunjungan untuk pengunjung ini.",
+ "OnClickPause": "%s dimulai. Klik untuk menjeda.",
+ "OnClickStart": "%s dihentikan. Klik untuk memulai.",
+ "PageRefreshed": "Frekuensi halaman ini dilihat/ disegarkan secara berturut-turut.",
+ "PluginDescription": "Menyediakan Log Pengunjung langsung dan memungkinkan Anda untuk melihat pengunjung Anda secara langsung di widget dasbor dalam waktu nyata. Plugin ini juga memungkinkan Anda untuk melihat profil Pengunjung untuk pengguna tertentu.",
"PreviousVisitor": "Pengunjung sebelumnya",
+ "QueryMaxExecutionTimeExceeded": "Kueri membutuhkan waktu terlalu lama untuk dieksekusi.",
+ "QueryMaxExecutionTimeExceededReasonDateRange": "Ini dapat terjadi jika rentang tanggal yang dipilih terlalu besar. Coba pilih rentang tanggal yang lebih kecil.",
+ "QueryMaxExecutionTimeExceededReasonSegment": "Ini dapat terjadi jika segmen yang dipilih tidak cocok dengan kunjungan mana pun. Coba periksa segmen yang Anda pilih.",
+ "QueryMaxExecutionTimeExceededReasonUnknown": "Silahkan coba lagi. Jika terjadi berulang kali, silakan hubungi administrator atau layanan dukungan.",
+ "RealTimeHelp1": "Laporan Kunjungan dalam Waktu Nyata menunjukkan aliran kunjungan dalam waktu nyata ke situs web Anda. Ini mencakup penghitung waktu nyata dari kunjungan dan tampilan halaman Anda dalam 24 jam terakhir dan 30 menit sebelumnya.",
+ "RealTimeHelp2": "Laporan ini diperbarui setiap 5 detik dan menampilkan kunjungan baru (atau pengunjung lama yang melihat halaman baru) di bagian atas daftar dengan efek memudar.",
"RealTimeVisitorCount": "Jumlah Pengunjung Waktu Nyata",
- "Referrer_URL": "URL Pengarah",
+ "RealTimeVisitors": "Kunjungan Waktu Nyata",
+ "Referrer_URL": "URL Perujuk",
+ "RevisitedPages": "Halaman dilihat lebih dari sekali",
+ "RowActionTooltipDefault": "Tampilkan Log Kunjungan tersegmentasi menurut baris ini",
+ "RowActionTooltipTitle": "Buka Log Kunjungan Tersegmentasi",
+ "RowActionTooltipWithDimension": "Tampilkan Log Kunjungan tersegmentasi oleh %s ini",
+ "SegmentedVisitorLogTitle": "Log Kunjungan menunjukkan kunjungan di mana %1$s adalah \"%2$s\"",
"ShowMap": "tampilkan peta",
- "SimpleRealTimeWidget_Message": "%1$s dan %2$s dalam %3$s terakhir.",
+ "SimpleRealTimeWidget_Message": "%1$s dan %2$s dalam %3$s terakhir",
+ "ToggleActions": "Alihkan visibilitas semua tindakan",
+ "TopVisitedPages": "Halaman yang paling sering dikunjungi",
"ViewVisitorProfile": "Lihat profil pengunjung",
- "RevisitedPages": "Halaman-halaman yang dilihat lebih dari sekali",
- "VisitorLogDocumentation": "Tabel berikut menampilkan kunjungan terakhir selama rentang tanggal yang dipilih.%1$s Bila hari ini termasuk dalam rentang tanggal, Anda dapat melihat pengunjung Anda dalam waktu nyata! %2$s Data yang ditampilkan di sini selalu ditampilkan secara langsung, tidak terpengaruh bagaimana Anda mengatur pengarsipan di tugas Cron.",
+ "VisitSummary": "Menghabiskan total %1$s%2$s di situs web%3$s dan melihat halaman %4$s%5$s dalam %6$s kunjungan%7$s.",
+ "VisitSummaryWithActionDetails": "Menghabiskan total %1$s%2$s di situs web%3$s dan melakukan %4$s tindakan%5$s (%6$s) dalam %7$s kunjungan%8$s.",
+ "VisitedPages": "Halaman yang dikunjungi",
+ "VisitorLog": "Log Kunjungan",
+ "VisitorLogDocumentation": "Tabel berikut ini menampilkan kunjungan terakhir selama rentang tanggal yang dipilih.%1$s Bila hari ini termasuk dalam rentang tanggal tersebut, Anda dapat melihat pengunjung Anda dalam waktu nyata! %2$s Data yang ditampilkan di sini selalu ditampilkan secara langsung, tidak terpengaruh bagaimana Anda mengatur pengarsipan di tugas Cron.",
+ "VisitorLogNoDataMessagePurged": "Kemungkinan data telah dihapus karena penghapusan reguler data mentah lama diaktifkan dan tanggal laporan ini lebih dari %s hari. Pengguna super dapat mengubah pengaturan ini dengan membuka Administrasi =&gt; Privasi.",
+ "VisitorLogSubcategoryHelp1": "Log Kunjungan menunjukkan kepada Anda setiap kunjungan yang diterima situs web Anda secara rinci. Anda dapat melihat tindakan apa yang telah dilakukan oleh setiap pengunjung, bagaimana mereka sampai ke situs Anda, sedikit tentang siapa mereka, dan masih banyak lagi (sambil tetap mematuhi peraturan privasi negara Anda).",
+ "VisitorLogSubcategoryHelp2": "Sementara laporan lain di Matomo menunjukkan bagaimana pengunjung Anda berperilaku pada tingkat agregat, Log Kunjungan memberikan detail terperinci. Anda juga dapat menggunakan segmen untuk mempersempitnya menjadi jenis kunjungan tertentu untuk memahami pengunjung Anda dengan lebih baik.",
+ "VisitorLogSubcategoryHelp3": "Pelajari lebih lanjut di panduan Log Kunjungan.",
"VisitorProfile": "Profil pengunjung",
- "VisitorsLastVisit": "Pengunjung ini telah berkunjung %s hari yang lalu."
+ "VisitorsInRealTime": "Kunjungan secara waktu nyata",
+ "VisitorsLastVisit": "Pengunjung ini telah berkunjung %s hari yang lalu.",
+ "VisitsFrom": "%1$s%2$s kunjungan%3$s dari",
+ "VisitsLog": "Log Kunjungan"
}
-} \ No newline at end of file
+}
diff --git a/plugins/LogViewer b/plugins/LogViewer
-Subproject 33ce153d1f476c086653e7673e52875af3a25b4
+Subproject f1cc8e6905dcef7c21fc9bb84275f1a6b3871e3
diff --git a/plugins/Login/lang/ga.json b/plugins/Login/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Login/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Login/lang/id.json b/plugins/Login/lang/id.json
index fc2eff3484..30d147e2e3 100644
--- a/plugins/Login/lang/id.json
+++ b/plugins/Login/lang/id.json
@@ -1,20 +1,59 @@
{
"Login": {
- "ChangeYourPassword": "Ubah sandi lewat Anda",
- "ConfirmationLinkSent": "Tautan konfirmasi telah dikirim ke kotak masuk Anda. Periksa surel Anda dan kunjungi tautan ini untuk memberi izin permintaan perubahan sandi Anda.",
- "ExceptionInvalidSuperUserAccessAuthenticationMethod": "Pengguna dengan akses Pengguna Super tidak bisa diautentikasi menggunakan mekanisme '%s'",
- "ExceptionPasswordMD5HashExpected": "Parameter sandi diperkirakan menjadi hash MD5 dari sandi.",
- "InvalidOrExpiredToken": "Kepingan tak sahih atau telah kedaluwarsa.",
- "InvalidUsernameEmail": "Nama-id dan/atau alamat surel tak sahih",
- "LogIn": "Masuk-log",
- "LoginPasswordNotCorrect": "Nama-id dan Sandi tak sesuai",
+ "BruteForceLog": "Log Paksaan",
+ "ChangeYourPassword": "Ubah kata sandi Anda",
+ "ConfirmPasswordReset": "Konfirmasi pengaturan ulang kata sandi",
+ "ConfirmPasswordResetIntro": "Untuk mengonfirmasi bahwa memang Anda yang meminta perubahan kata sandi ini, masukkan kembali kata sandi baru Anda.",
+ "ConfirmPasswordResetWrongPassword": "Kata sandi yang dimasukkan tidak cocok dengan kata sandi baru Anda. Jika Anda tidak ingat kata sandi yang baru Anda pilih, Anda dapat mengatur ulang kata sandi Anda lagi. Jika Anda tidak meminta perubahan kata sandi, jangan lakukan apa pun dan kata sandi Anda tidak akan diubah.",
+ "ConfirmPasswordToContinue": "Konfirmasikan kata sandi Anda untuk melanjutkan",
+ "ConfirmationLinkSent": "Tautan konfirmasi telah dikirim ke kotak masuk Anda. Periksa surel Anda dan kunjungi tautan ini untuk memberi izin permintaan perubahan kata sandi Anda.",
+ "ContactAdmin": "Alasan yang mungkin: host Anda mungkin telah menonaktifkan fungsi mail(). <br>Silakan hubungi administrator Matomo Anda.",
+ "CurrentlyBlockedIPs": "IP yang diblokir saat ini",
+ "CurrentlyBlockedIPsUnblockConfirm": "Apakah Anda yakin ingin membuka blokiran semua IP yang saat ini diblokir?",
+ "CurrentlyBlockedIPsUnblockInfo": "Anda dapat membuka blokir IP yang saat ini diblokir, sehingga mereka dapat masuk kembali jika salah ditandai dan harus dapat masuk lagi.",
+ "ExceptionInvalidSuperUserAccessAuthenticationMethod": "Pengguna dengan akses Pengguna Super tidak dapat diautentikasi menggunakan mekanisme '%s'.",
+ "ExceptionPasswordMD5HashExpected": "Parameter kata sandi yang diharapkan yaitu berbentuk hash MD5 dari kata sandi.",
+ "HelpIpRange": "Masukkan satu alamat IP atau satu rentang IP per baris. Anda dapat menggunakan notasi CIDR mis. %1$s atau Anda dapat menggunakan wildcard, mis. %2$s atau %3$s",
+ "IPsAlwaysBlocked": "IP ini selalu diblokir",
+ "InvalidNonceOrigin": "Keamanan formulir gagal, asal tidak valid. Jika sebelumnya Anda terhubung menggunakan HTTPS, pastikan Anda terhubung melalui koneksi yang aman (SSL/ TLS) dan coba lagi.",
+ "InvalidNonceReferrer": "Keamanan formulir gagal, header perujuk tidak valid. Jika Anda menggunakan server proksi, Anda harus %1$s mengonfigurasi Matomo untuk menerima header proksi %2$s yang meneruskan header Host. Juga, periksa apakah header Perujuk Anda dikirim dengan benar dan jika sebelumnya Anda terhubung menggunakan HTTPS, pastikan Anda terhubung melalui koneksi yang aman (SSL/ TLS) dan coba lagi.",
+ "InvalidNonceSSLMisconfigured": "Juga, Anda dapat %1$s memaksa Matomo untuk menggunakan koneksi yang aman%2$s: di berkas konfigurasi Anda %3$s atur %4$s di bawah bagian %5$s",
+ "InvalidNonceToken": "Keamanan formulir gagal, token tidak cocok. Harap muat ulang formulir dan periksa apakah kuki Anda diaktifkan atau tidak.",
+ "InvalidNonceUnexpectedReferrer": "Keamanan formulir gagal, header perujuk berbeda dari header perujuk yang diharapkan, periksa apakah header Perujuk Anda dikirim dengan benar.",
+ "InvalidOrExpiredToken": "Token tidak valid atau telah kedaluwarsa.",
+ "InvalidUsernameEmail": "Nama pengguna atau alamat surel tidak valid.",
+ "LogIn": "Masuk",
+ "LoginNotAllowedBecauseBlocked": "Saat ini Anda tidak diizinkan untuk masuk karena Anda memiliki terlalu banyak percobaan masuk yang gagal, coba lagi nanti.",
+ "LoginNotAllowedBecauseUserLoginBlocked": "Fungsionalitas masuk untuk sementara dinonaktifkan karena kami melihat upaya masuk yang gagal dalam jumlah yang mencurigakan dalam satu jam terakhir.",
+ "LoginOrEmail": "Nama pengguna atau Surel",
+ "LoginPasswordNotCorrect": "Kombinasi nama pengguna dan kata sandi salah.",
"LostYourPassword": "Lupa sandi?",
- "MailTopicPasswordChange": "Konfirmasi Pengubahan Sandi",
- "NewPassword": "Sandi lewat baru",
- "NewPasswordRepeat": "Sandi lewat baru (ulangi)",
- "PasswordChanged": "Sandi Anda telah berubah.",
- "PasswordRepeat": "Sandi (ulangi)",
- "PasswordsDoNotMatch": "Sandi tak sesuai.",
- "RememberMe": "Ingat Saya"
+ "MailPasswordChangeBody2": "Hai %1$s,\n\nPermintaan reset kata sandi diterima dari %2$s. Untuk mengonfirmasi perubahan kata sandi ini sehingga Anda dapat masuk dengan kredensial baru Anda, silakan salin dan tempel tautan berikut ini di peramban Anda:\n\n%3$s\n\nCatatan: tautan ini akan kedaluwarsa dalam waktu 24 jam.\n\nTerima kasih karena telah menggunakan Matomo!",
+ "MailTopicPasswordChange": "Konfirmasi Perubahan Kata Sandi",
+ "NewPassword": "Kata sandi yang baru",
+ "NewPasswordRepeat": "Kata sandi yang baru (ulangi)",
+ "NotAllowListTakesPrecendence": "Jika IP cocok dengan daftar blokir dan tidak pernah diblokir, maka daftar blokir lebih diutamakan dan IP tidak akan diizinkan.",
+ "PasswordChanged": "Kata sandi Anda telah diubah.",
+ "PasswordRepeat": "Kata sandi (ulangi)",
+ "PasswordResetAlreadySent": "Anda telah meminta terlalu banyak pengaturan ulang kata sandi baru-baru ini. Permintaan selanjutnya baru dapat dibuat satu jam lagi. Jika Anda mengalami masalah dalam menyetel ulang kata sandi, hubungi administrator Anda untuk mendapatkan bantuan.",
+ "PasswordsDoNotMatch": "Kata sandi tak sesuai.",
+ "PluginDescription": "Menyediakan autentikasi melalui nama pengguna dan kata sandi serta fungsi pengaturan ulang kata sandi. Metode autentikasi dapat diubah dengan menggunakan plugin Login lain seperti LoginLdap yang tersedia di Lokapasar.",
+ "RememberMe": "Ingat Saya",
+ "SettingBruteForceBlacklistIp": "Selalu blokir IP ini agar tidak masuk",
+ "SettingBruteForceEnable": "Aktifkan Deteksi Paksaan",
+ "SettingBruteForceEnableHelp": "Deteksi Paksaan adalah fitur keamanan penting yang digunakan untuk melindungi data Anda dari akses yang tidak sah. Alih-alih mengizinkan pengguna untuk mencoba ribuan atau jutaan kombinasi kata sandi dalam waktu yang sangat singkat, itu hanya akan memungkinkan jumlah tertentu dari login yang gagal dalam waktu singkat. Jika terlalu banyak login yang gagal terjadi dalam rentang waktu tersebut, pengguna tidak akan dapat login hingga beberapa waktu berlalu. Harap dicatat bahwa jika IP diblokir, setiap pengguna yang menggunakan IP itu juga akan diblokir untuk masuk.",
+ "SettingBruteForceMaxFailedLogins": "Jumlah percobaan login yang diizinkan dalam rentang waktu",
+ "SettingBruteForceMaxFailedLoginsHelp": "Jika jumlah login yang gagal dalam suatu rentang waktu melebihi jumlah yang ditetapkan di bawah ini, blokir IP.",
+ "SettingBruteForceTimeRange": "Hitung percobaan login dalam rentang waktu ini dalam hitungan menit",
+ "SettingBruteForceTimeRangeHelp": "Masukkan angka dalam hitungan menit.",
+ "SettingBruteForceWhitelistIp": "Jangan pernah memblokir IP ini untuk masuk",
+ "SuspiciousLoginAttemptsInLastHourEmail1": "Kami telah melihat banyak sekali upaya masuk yang mencurigakan ke akun Matomo Anda dalam satu jam terakhir, khususnya %1$s upaya login dari %2$s alamat IP yang berbeda. Kami menduga seseorang mungkin mencoba untuk membobol akun Anda.",
+ "SuspiciousLoginAttemptsInLastHourEmail2": "Untuk melindungi Matomo Anda, kami sarankan untuk mengambil tindakan pencegahan berikut ini:",
+ "SuspiciousLoginAttemptsInLastHourEmail3": "Pastikan kata sandi Anda adalah kata sandi acak yang aman dengan panjang yang sesuai (misalnya, setidaknya 30 karakter).",
+ "SuspiciousLoginAttemptsInLastHourEmail4": "Siapkan autentikasi dua faktor sehingga penyerang akan membutuhkan lebih banyak informasi daripada sekadar kata sandi Anda untuk masuk.",
+ "SuspiciousLoginAttemptsInLastHourEmail5": "Selain itu, jika Matomo Anda memiliki sekumpulan pengguna atau IP terbatas yang dapat digunakan pengguna untuk mengaksesnya, mungkin akan bermanfaat untuk menyiapkan daftar alamat IP yang diizinkan. %1$sBaca dokumen kami untuk informasi lebih lanjut.%2$s",
+ "SuspiciousLoginAttemptsInLastHourEmailSubject": "Kami telah melihat beberapa upaya masuk yang mencurigakan ke akun Anda...",
+ "UnblockAllIPs": "Buka blokir semua IP yang saat ini diblokir",
+ "WrongPasswordEntered": "Silakan masukkan kata sandi Anda yang benar."
}
}
diff --git a/plugins/MarketingCampaignsReporting b/plugins/MarketingCampaignsReporting
-Subproject f926dd8397c6d008b180825fd956ab54d107e29
+Subproject 031006264cde967432e65512a387b963aac89cb
diff --git a/plugins/Marketplace/Controller.php b/plugins/Marketplace/Controller.php
index f138a5b491..3436e34b05 100644
--- a/plugins/Marketplace/Controller.php
+++ b/plugins/Marketplace/Controller.php
@@ -209,7 +209,7 @@ class Controller extends \Piwik\Plugin\ControllerAdmin
$view = $this->configureViewAndCheckPermission('@Marketplace/overview');
$show = Common::getRequestVar('show', 'plugins', 'string');
- $query = Common::getRequestVar('query', '', 'string', $_POST);
+ $query = Common::getRequestVar('query', '', 'string');
$sort = new Sort();
$sort = $sort->getSort();
diff --git a/plugins/Marketplace/Marketplace.php b/plugins/Marketplace/Marketplace.php
index e043742518..8be0a63aee 100644
--- a/plugins/Marketplace/Marketplace.php
+++ b/plugins/Marketplace/Marketplace.php
@@ -55,16 +55,15 @@ class Marketplace extends \Piwik\Plugin
public function getJsFiles(&$jsFiles)
{
$jsFiles[] = "node_modules/iframe-resizer/js/iframeResizer.min.js";
-
- $jsFiles[] = "plugins/Marketplace/angularjs/plugins/plugin-name.directive.js";
- $jsFiles[] = "plugins/Marketplace/angularjs/marketplace/marketplace.controller.js";
- $jsFiles[] = "plugins/Marketplace/angularjs/marketplace/marketplace.directive.js";
}
public function getClientSideTranslationKeys(&$translationKeys)
{
$translationKeys[] = 'Marketplace_LicenseKeyActivatedSuccess';
$translationKeys[] = 'Marketplace_LicenseKeyDeletedSuccess';
+ $translationKeys[] = 'Marketplace_Show';
+ $translationKeys[] = 'Marketplace_Sort';
+ $translationKeys[] = 'General_Plugins';
$translationKeys[] = 'Marketplace_PaidPluginsNoLicenseKeyIntro';
$translationKeys[] = 'Marketplace_PaidPluginsWithLicenseKeyIntro';
$translationKeys[] = 'Marketplace_RemoveLicenseKey';
diff --git a/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js b/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js
deleted file mode 100644
index adc146beb4..0000000000
--- a/plugins/Marketplace/angularjs/marketplace/marketplace.controller.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('PiwikMarketplaceController', PiwikMarketplaceController);
-
- PiwikMarketplaceController.$inject = ['piwik'];
-
- function PiwikMarketplaceController(piwik) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
-
- this.changePluginSort = function () {
- piwik.broadcast.propagateNewPage('query=&sort=' + this.pluginSort);
- };
-
- this.changePluginType = function () {
- piwik.broadcast.propagateNewPage('query=&show=' + this.pluginType);
- };
- }
-})();
diff --git a/plugins/Marketplace/angularjs/marketplace/marketplace.directive.js b/plugins/Marketplace/angularjs/marketplace/marketplace.directive.js
deleted file mode 100644
index 4df38744db..0000000000
--- a/plugins/Marketplace/angularjs/marketplace/marketplace.directive.js
+++ /dev/null
@@ -1,116 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div piwik-marketplace>
- */
-(function () {
-
- angular.module('piwikApp').directive('piwikMarketplace', piwikMarketplace);
-
- piwikMarketplace.$inject = ['piwik', '$timeout'];
-
- function piwikMarketplace(piwik, $timeout){
-
- return {
- restrict: 'A',
- compile: function (element, attrs) {
-
- return function (scope, element, attrs) {
-
- $timeout(function () {
-
-
- $('.installAllPaidPlugins').click(function (event) {
- event.preventDefault();
-
- piwikHelper.modalConfirm('#installAllPaidPluginsAtOnce');
- });
-
- // Keeps the plugin descriptions the same height
- $('.marketplace .plugin .description').dotdotdot({
- after: 'a.more',
- watch: 'window'
- });
-
- piwik.helper.compileAngularComponents(element.find('[piwik-plugin-name]'));
-
- function syncMaxHeight2 (selector) {
-
- if (!selector) {
- return;
- }
-
- var $nodes = $(selector);
-
- if (!$nodes || !$nodes.length) {
- return;
- }
-
- var maxh3 = null;
- var maxMeta = null;
- var maxFooter = null;
- var nodesToUpdate = [];
- var lastTop = 0;
- $nodes.each(function (index, node) {
- var $node = $(node);
- var top = $node.offset().top;
-
- if (lastTop !== top) {
- nodesToUpdate = [];
- lastTop = top;
- maxh3 = null;
- maxMeta = null;
- maxFooter = null;
- }
-
- nodesToUpdate.push($node);
-
- var heightH3 = $node.find('h3').height();
- var heightMeta = $node.find('.metadata').height();
- var heightFooter = $node.find('.footer').height();
-
- if (!maxh3) {
- maxh3 = heightH3;
- } else if (maxh3 < heightH3) {
- maxh3 = heightH3;
- }
-
- if (!maxMeta) {
- maxMeta = heightMeta;
- } else if (maxMeta < heightMeta) {
- maxMeta = heightMeta;
- }
-
- if (!maxFooter) {
- maxFooter = heightFooter;
- } else if (maxFooter < heightFooter) {
- maxFooter = heightFooter;
- }
-
- $.each(nodesToUpdate, function (index, $node) {
- if (maxh3) {
- $node.find('h3').height(maxh3 + 'px');
- }
- if (maxMeta) {
- $node.find('.metadata').height(maxMeta + 'px');
- }
- if (maxFooter) {
- $node.find('.footer').height(maxFooter + 'px');
- }
- });
- });
- }
- syncMaxHeight2('.marketplace .plugin');
-
- });
- };
- }
- };
- }
-})();
diff --git a/plugins/Marketplace/angularjs/plugins/plugin-name.directive.js b/plugins/Marketplace/angularjs/plugins/plugin-name.directive.js
deleted file mode 100644
index 17edd4b50e..0000000000
--- a/plugins/Marketplace/angularjs/plugins/plugin-name.directive.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div piwik-plugin-name="MyPluginName" [data-activeplugintab="changelog"]>
- */
-(function () {
-
- broadcast.addPopoverHandler('browsePluginDetail', function (value) {
- var pluginName = value;
- var activeTab = null;
-
- if (-1 !== value.indexOf('!')) {
- activeTab = value.substr(value.indexOf('!') + 1);
- pluginName = value.substr(0, value.indexOf('!'));
- }
-
- var url = 'module=Marketplace&action=pluginDetails&pluginName=' + encodeURIComponent(pluginName);
-
- if (activeTab) {
- url += '&activeTab=' + encodeURIComponent(activeTab);
- }
-
- Piwik_Popover.createPopupAndLoadUrl(url, 'details');
- });
-
- angular.module('piwikApp').directive('piwikPluginName', piwikPluginName);
-
- piwikPluginName.$inject = ['piwik'];
-
- function piwikPluginName(piwik){
-
- return {
- restrict: 'A',
- compile: function (element, attrs) {
-
- return function (scope, element, attrs) {
-
- var pluginName = attrs.piwikPluginName;
- var activeTab = attrs.activeplugintab;
-
- if (!pluginName) {
- return;
- }
-
- element.on('click', function (event) {
- event.preventDefault();
-
- if (activeTab) {
- pluginName += '!' + activeTab;
- }
-
- broadcast.propagateNewPopoverParameter('browsePluginDetail', pluginName);
- });
-
- };
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/Marketplace/lang/ca.json b/plugins/Marketplace/lang/ca.json
index 863f3ca2e3..5f8a20cf56 100644
--- a/plugins/Marketplace/lang/ca.json
+++ b/plugins/Marketplace/lang/ca.json
@@ -83,7 +83,9 @@
"RemoveLicenseKey": "Elimina la clau de llicència",
"Reviews": "Ressenyes",
"Screenshots": "Captures de pantalla",
+ "Show": "Mostra",
"ShownPriceIsExclTax": "El preu mostrat no inclou impostos.",
+ "Sort": "Classifica",
"SortByAlpha": "Alfabèticament",
"SortByLastUpdated": "Última actualització",
"SortByNewest": "El més nou",
diff --git a/plugins/Marketplace/lang/de.json b/plugins/Marketplace/lang/de.json
index fa3dfc9a41..84effd466e 100644
--- a/plugins/Marketplace/lang/de.json
+++ b/plugins/Marketplace/lang/de.json
@@ -24,6 +24,7 @@
"ExceptionLinceseKeyIsExpired": "Dieser Lizenzschlüssel ist abgelaufen.",
"ExceptionLinceseKeyIsNotValid": "Dieser Lizenzschlüssel ist ungültig.",
"FeaturedPlugin": "Top-Plugin",
+ "FreeTrialLabel": "Kostenlose Testphase",
"InstallAllPurchasedPlugins": "Installiere alle erworbenen Plugins auf einmal",
"InstallAllPurchasedPluginsAction": "Installiere und aktiviere %d erworbene Plugins",
"InstallPurchasedPlugins": "Erworbene Plugins installieren",
@@ -82,11 +83,14 @@
"RemoveLicenseKey": "Lizenzschlüssel entfernen",
"Reviews": "Rezensionen",
"Screenshots": "Bildschirmfotos",
+ "Show": "Anzeigen",
"ShownPriceIsExclTax": "Angezeigte Preise sind exkl. Steuern.",
+ "Sort": "Sortieren",
"SortByAlpha": "Alphabetisch",
"SortByLastUpdated": "Zuletzt aktualisiert",
"SortByNewest": "Neueste",
"SortByPopular": "Beliebt",
+ "SpecialOffer": "Sonderangebot",
"StepDownloadingPluginFromMarketplace": "Download des Plugins aus dem Marketplace",
"StepDownloadingThemeFromMarketplace": "Download des Themes aus dem Marketplace",
"StepPluginSuccessfullyInstalled": "Sie haben erfolgreich das Plugin %1$s %2$s installiert.",
@@ -106,6 +110,8 @@
"Support": "Support",
"SupportMatomoThankYou": "Jeder Kauf hilft dabei, die Zukunft des Open Source Projekts Matomo zu sichern. Vielen Dank für Ihre Unterstützung!",
"TeaserExtendPiwikByUpload": "Matomo durch den Upload einer ZIP Datei erweitern",
+ "TrialHints": "Alle Premium-Funktionen enthalten eine %1$skostenlose 30-tägige Testphase%2$s. Sie ist risikofrei und nicht an Bedingungen geknüpft.",
+ "TryFreeTrialTitle": "30 Tage kostenlos testen, danach",
"Updated": "Aktualisiert",
"UpdatingPlugin": "Aktualisiere %1$s",
"UpgradeSubscription": "Abonnement erneuern",
diff --git a/plugins/Marketplace/lang/el.json b/plugins/Marketplace/lang/el.json
index d8f15eafaf..0e646eb762 100644
--- a/plugins/Marketplace/lang/el.json
+++ b/plugins/Marketplace/lang/el.json
@@ -83,7 +83,9 @@
"RemoveLicenseKey": "Αφαίρεση κλειδιού άδειας",
"Reviews": "Κριτικές",
"Screenshots": "Παραδείγματα οθονών",
+ "Show": "Εμφάνιση",
"ShownPriceIsExclTax": "Η εμφανιζόμενη τιμή είναι χωρίς φόρους.",
+ "Sort": "Ταξινόμηση",
"SortByAlpha": "Αλφαβητικά",
"SortByLastUpdated": "Τελευταία ενημέρωση",
"SortByNewest": "Νεότερα",
diff --git a/plugins/Marketplace/lang/en.json b/plugins/Marketplace/lang/en.json
index c139182f02..a9f3266480 100644
--- a/plugins/Marketplace/lang/en.json
+++ b/plugins/Marketplace/lang/en.json
@@ -116,6 +116,8 @@
"LicenseKeyIsExpired": "Your license key is expired, please contact %1$s.",
"MultiServerEnvironmentWarning": "You cannot install or update the plugin directly as you are using Matomo on multiple servers. The plugin would be only installed on one server. Instead, download the plugin and deploy it manually to all your servers.",
"AutoUpdateDisabledWarning": "You cannot install or update the plugin directly as automatic updates are disabled in the config. To enable automatic updates set %1$s in %2$s.",
- "ViewRepositoryChangelog": "View the changes"
+ "ViewRepositoryChangelog": "View the changes",
+ "Show": "Show",
+ "Sort": "Sort"
}
} \ No newline at end of file
diff --git a/plugins/Marketplace/lang/ga.json b/plugins/Marketplace/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Marketplace/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Marketplace/lang/id.json b/plugins/Marketplace/lang/id.json
index 5acecc4fac..42dc425d5f 100644
--- a/plugins/Marketplace/lang/id.json
+++ b/plugins/Marketplace/lang/id.json
@@ -1,30 +1,123 @@
{
"Marketplace": {
- "ActionActivatePlugin": "Aktivasi plugin",
- "ActionActivateTheme": "Aktivasi tema",
- "ActionInstall": "Instal",
- "ActivateLicenseKey": "Diaktifkan",
+ "ActionActivatePlugin": "Aktifkan plugin",
+ "ActionActivateTheme": "Aktifkan tema",
+ "ActionInstall": "Pasang",
+ "ActivateLicenseKey": "Aktifkan",
"AddToCart": "Tambah ke keranjang",
- "BackToMarketplace": "Kembali ke pasar",
- "BrowseMarketplace": "Ramban Pasar",
- "ByXDevelopers": "oleh %s pengembang",
- "CannotInstall": "Tidak dapat menginstal",
+ "AllPaidPluginsInstalledAndActivated": "Semua plugin berbayar berhasil dipasang dan diaktifkan.",
+ "AllowedUploadFormats": "Anda dapat mengunggah plugin atau tema dalam format .zip melalui halaman ini.",
+ "Authors": "Pencipta",
+ "AutoUpdateDisabledWarning": "Anda tidak dapat memasang atau memperbarui plugin secara langsung karena pembaruan otomatis dinonaktifkan di konfigurasi. Untuk mengaktifkan pembaruan otomatis, atur %1$s di %2$s.",
+ "BackToMarketplace": "Kembali ke Lokapasar",
+ "Browse": "Jelajahi",
+ "BrowseMarketplace": "Jelajahi Lokapasar",
+ "ByXDevelopers": "oleh pengembang %s",
+ "CannotInstall": "Tidak dapat memasang",
"CannotUpdate": "Tidak dapat memperbarui",
"ClickToCompletePurchase": "Klik untuk menyelesaikan pembelian.",
- "CurrentNumPiwikUsers": "Matomo Anda saat ini memiliki %1$s pengguna terdaftar.",
+ "ConfirmRemoveLicense": "Apakah Anda yakin ingin menghapus kunci lisensi? Anda tidak akan lagi menerima pembaruan apa pun untuk plugin apa pun yang Anda beli.",
+ "CurrentNumPiwikUsers": "Matomo Anda saat ini memiliki %1$s pengguna yang terdaftar.",
"Developer": "Pengembang",
- "InstallingPlugin": "Menginstal %s",
- "LastUpdated": "Terakhir diperbarui",
+ "DevelopersLearnHowToDevelopPlugins": "Pengembang: Pelajari bagaimana Anda dapat memperluas dan menyesuaikan Matomo dengan %1$smengembangkan plugin atau tema%2$s.",
+ "Exceeded": "Terlampaui",
+ "ExceptionLinceseKeyIsExpired": "Kunci lisensi ini sudah kedaluwarsa.",
+ "ExceptionLinceseKeyIsNotValid": "Kunci lisensi ini tidak valid.",
+ "FeaturedPlugin": "Plugin unggulan",
+ "FreeTrialLabel": "Uji Coba Gratis",
+ "InstallAllPurchasedPlugins": "Pasang semua plugin yang dibeli sekaligus",
+ "InstallAllPurchasedPluginsAction": "Pasang dan aktifkan %d plugin yang dibeli",
+ "InstallPurchasedPlugins": "Memasang plugin yang dibeli",
+ "InstallThesePlugins": "Ini akan memasang dan mengaktifkan plugin berikut ini:",
+ "InstallingNewPluginViaMarketplaceOrUpload": "Anda dapat menginstal %1$s secara otomatis dari Lokapasar atau %2$smengunggah %3$s%4$s dalam format .zip.",
+ "InstallingPlugin": "Memasang %s",
+ "LastCommitTime": "(commit terakhir %s)",
+ "LastUpdated": "Terakhir Diperbarui",
+ "LatestMarketplaceUpdates": "Pembaruan Lokapasar Terbaru",
"License": "Lisensi",
- "LicenseExpired": "Lisensi telah kadaluwarsa",
+ "LicenseExceeded": "Lisensi terlampaui",
+ "LicenseExceededDescription": "Lisensi untuk plugin berikut tidak lagi valid karena jumlah pengguna resmi untuk lisensi tersebut telah terlampaui: %1$s. %2$sAnda tidak akan dapat mengunduh pembaruan untuk plugin ini. Untuk mengatasi masalah ini, hapus beberapa pengguna atau %3$stingkatkan langganan sekarang%4$s.",
+ "LicenseExceededPossibleCause": "Lisensi terlampaui. Mungkin jumlah pengguna di instalasi Matomo ini lebih banyak dari jumlah yang diizinkan oleh langganan.",
+ "LicenseExpired": "Lisensi berakhir",
+ "LicenseExpiredDescription": "Lisensi untuk plugin berikut telah kedaluwarsa: %1$s. %2$sAnda tidak akan lagi menerima pembaruan apa pun untuk plugin ini. Untuk mengatasi masalah ini %3$sperpanjang langganan Anda sekarang%4$s atau nonaktifkan plugin jika Anda tidak lagi menggunakannya.",
"LicenseKey": "Kunci Lisensi",
+ "LicenseKeyActivatedSuccess": "Kunci lisensi berhasil diaktifkan!",
"LicenseKeyDeletedSuccess": "Kunci lisensi berhasil dihapus.",
- "Marketplace": "Pasar",
+ "LicenseKeyExpiresSoon": "Kunci lisensi Anda akan segera kedaluwarsa, silakan hubungi %1$s.",
+ "LicenseKeyIsExpired": "Kunci lisensi Anda kedaluwarsa, silakan hubungi %1$s.",
+ "LicenseKeyIsValidShort": "Kunci lisensi berlaku!",
+ "LicenseMissing": "Lisensi tidak ditemukan",
+ "LicenseMissingDeactivatedDescription": "Plugin berikut ini telah dinonaktifkan karena Anda menggunakannya tanpa lisensi: %1$s. %2$sUntuk mengatasi masalah ini, perbarui kunci lisensi Anda, %3$sberlangganan sekarang%4$s atau nonaktifkan plugin.",
+ "LicenseRenewsNextPaymentDate": "Perbarui pada tanggal pembayaran berikutnya",
+ "Marketplace": "Lokapasar",
+ "MultiServerEnvironmentWarning": "Anda tidak dapat memasang atau memperbarui plugin secara langsung karena Anda menggunakan Matomo di beberapa server. Plugin hanya akan dipasang di satu server. Sebagai gantinya, unduh plugin dan terapkan secara manual ke semua server Anda.",
+ "NewVersion": "versi baru",
+ "NoPluginsFound": "Tidak ada plugin yang ditemukan",
+ "NoSubscriptionsFound": "Tidak ada langganan yang ditemukan",
+ "NoThemesFound": "Tidak ada tema yang ditemukan",
+ "NoValidSubscriptionNoUpdates": "Setelah langganan kedaluwarsa, Anda tidak akan lagi menerima pembaruan apa pun untuk plugin ini.",
+ "NotAllowedToBrowseMarketplacePlugins": "Anda dapat menelusuri daftar plugin yang dapat dipasang untuk menyesuaikan atau memperluas platform Matomo Anda. Silakan hubungi administrator Anda jika Anda perlu memasangnya.",
+ "NotAllowedToBrowseMarketplaceThemes": "Anda dapat menelusuri daftar tema yang dapat dipasang untuk menyesuaikan tampilan platform Matomo. Silakan hubungi administrator Anda untuk memasangkan salah satu tema tersebut untuk Anda.",
+ "NoticeRemoveMarketplaceFromReportingMenu": "Anda dapat menghapus Lokapasar dari menu pelaporan dengan memasang plugin %1$sWhite Label%2$s.",
+ "NumDownloadsLatestVersion": "Versi terbaru: %s Unduh",
+ "OnlySomePaidPluginsInstalledAndActivated": "Beberapa plugin berbayar tidak berhasil dipasang.",
+ "OverviewPluginSubscriptions": "Ikhtisar langganan plugin Anda",
+ "OverviewPluginSubscriptionsAllDetails": "Untuk melihat semua detail atau untuk mengubah langganan, silakan masuk ke akun Anda.",
+ "OverviewPluginSubscriptionsMissingInfo": "Ada kemungkinan langganan tidak ada, misalnya jika pembayaran belum selesai. Jika demikian, coba lagi dalam beberapa jam atau hubungi tim Matomo.",
+ "OverviewPluginSubscriptionsMissingLicense": "Anda tidak memiliki set kunci lisensi. Jika Anda telah membeli langganan plugin, buka %1$sLokapasar%2$s dan masukkan kunci lisensi Anda.",
+ "PaidPlugins": "Fitur Premium",
+ "PaidPluginsNoLicenseKeyIntro": "Jika Anda telah membeli %1$splugin premium berbayar%2$s, masukkan kunci lisensi yang sudah diterima di bawah ini.",
+ "PaidPluginsNoLicenseKeyIntroNoSuperUserAccess": "Jika Anda telah membeli %1$splugin premium berbayar%2$s di Lokapasar, mintalah pengguna dengan akses Pengguna Super untuk menambahkan kunci lisensi.",
+ "PaidPluginsWithLicenseKeyIntro": "Kunci lisensi yang valid telah disiapkan. Untuk alasan keamanan, kami tidak menampilkan kunci lisensi Anda di sini. Jika Anda kehilangan kunci lisensi, harap hubungi tim Matomo.",
+ "PluginDescription": "Perpanjang dan perluas fungsionalitas Matomo melalui Lokapasar dengan mengunduh plugin dan tema.",
"PluginKeywords": "Kata Kunci",
+ "PluginLicenseExceededDescription": "Anda tidak diperbolehkan untuk mengunduh plugin ini. Lisensi untuk plugin ini tidak lagi berlaku karena jumlah pengguna resmi untuk lisensi tersebut telah terlampaui. Untuk mengatasi masalah ini, hapus beberapa pengguna atau tingkatkan langganan Anda sekarang.",
+ "PluginLicenseMissingDescription": "Anda tidak diperbolehkan untuk mengunduh plugin ini karena tidak ada lisensi untuk plugin ini. Untuk mengatasi masalah ini, perbarui kunci lisensi Anda, mulailah berlangganan, atau hapus plugin.",
+ "PluginSubscriptionsList": "Ini adalah daftar langganan yang terkait dengan kunci lisensi Anda.",
+ "PluginUpdateAvailable": "Anda menggunakan versi %1$s dan versi baru %2$s sudah tersedia.",
+ "PluginUploadDisabled": "Unggahan plugin dinonaktifkan di berkas konfigurasi. Untuk mengaktifkan fitur ini, perbarui konfigurasi Anda atau hubungi administrator Anda",
"PluginVersionInfo": "%1$s dari %2$s",
- "StepThemeSuccessfullyInstalled": "Anda telah berhasil menginstal tema %1$s %2$s.",
+ "PluginWebsite": "Situs Web Plugin",
+ "PriceExclTax": "%1$s %2$s tidak termasuk pajak.",
+ "PriceFromPerPeriod": "Dari %1$s / %2$s",
+ "RemoveLicenseKey": "Hapus kunci lisensi",
+ "Reviews": "Ulasan",
+ "Screenshots": "Tangkapan layar",
+ "Show": "Tampilkan",
+ "ShownPriceIsExclTax": "Harga yang ditampilkan tidak termasuk pajak.",
+ "Sort": "Urutkan",
+ "SortByAlpha": "Sesuai abjad",
+ "SortByLastUpdated": "Terakhir diperbarui",
+ "SortByNewest": "Terbaru",
+ "SortByPopular": "Populer",
+ "SpecialOffer": "Penawaran istimewa",
+ "StepDownloadingPluginFromMarketplace": "Mengunduh plugin dari Lokapasar",
+ "StepDownloadingThemeFromMarketplace": "Mengunduh tema dari Lokapasar",
+ "StepPluginSuccessfullyInstalled": "Anda telah berhasil memasang plugin %1$s %2$s.",
+ "StepPluginSuccessfullyUpdated": "Anda telah berhasil memperbarui plugin %1$s %2$s.",
+ "StepReplaceExistingPlugin": "Mengganti plugin yang ada",
+ "StepReplaceExistingTheme": "Mengganti tema yang ada",
+ "StepThemeSuccessfullyInstalled": "Anda telah berhasil memasang tema %1$s %2$s.",
+ "StepThemeSuccessfullyUpdated": "Anda telah berhasil memperbarui tema %1$s %2$s.",
"StepUnzippingPlugin": "Membuka plugin",
"StepUnzippingTheme": "Membuka tema",
- "SubscriptionType": "Jenis"
+ "SubscriptionEndDate": "Tanggal berakhir",
+ "SubscriptionExpiresSoon": "Langganan ini akan segera berakhir",
+ "SubscriptionInvalid": "Langganan ini tidak valid atau kedaluwarsa",
+ "SubscriptionNextPaymentDate": "Tanggal pembayaran berikutnya",
+ "SubscriptionStartDate": "Tanggal mulai",
+ "SubscriptionType": "Jenis",
+ "Support": "Dukungan",
+ "SupportMatomoThankYou": "Setiap pembelian akan membantu kami untuk mendanai masa depan proyek sumber terbuka Matomo. Terima kasih atas dukungan Anda!",
+ "TeaserExtendPiwikByUpload": "Perluas Matomo dengan mengunggah berkas ZIP",
+ "TrialHints": "Semua fitur premium hadir dengan %1$suji coba gratis selama 30 hari%2$s. Bebas risiko dan tidak ada ikatan.",
+ "TryFreeTrialTitle": "Coba gratis selama 30 hari, lalu",
+ "Updated": "Diperbarui",
+ "UpdatingPlugin": "Memperbarui %1$s",
+ "UpgradeSubscription": "Tingkatkan Langganan",
+ "UploadZipFile": "Unggah berkas ZIP",
+ "ViewRepositoryChangelog": "Lihat perubahan",
+ "ViewSubscriptions": "Lihat langganan",
+ "ViewSubscriptionsSummary": "%1$s Lihat langganan plugin Anda. %2$s"
}
}
diff --git a/plugins/Marketplace/lang/pt-br.json b/plugins/Marketplace/lang/pt-br.json
index 2643277d3d..c94bb46d12 100644
--- a/plugins/Marketplace/lang/pt-br.json
+++ b/plugins/Marketplace/lang/pt-br.json
@@ -83,7 +83,9 @@
"RemoveLicenseKey": "Remover chave de licença",
"Reviews": "Revisar",
"Screenshots": "Capturas de tela",
+ "Show": "Mostrar",
"ShownPriceIsExclTax": "O preço mostrado é excl. tax.",
+ "Sort": "Ordenar",
"SortByAlpha": "Por ordem alfabética",
"SortByLastUpdated": "Última atualização",
"SortByNewest": "Mais recente",
diff --git a/plugins/Marketplace/lang/tr.json b/plugins/Marketplace/lang/tr.json
index 682759e15a..2b021a4e33 100644
--- a/plugins/Marketplace/lang/tr.json
+++ b/plugins/Marketplace/lang/tr.json
@@ -83,7 +83,9 @@
"RemoveLicenseKey": "Lisans anahtarını kaldır",
"Reviews": "Yorumlar",
"Screenshots": "Ekran görüntüleri",
+ "Show": "Görüntüle",
"ShownPriceIsExclTax": "Fiyat vergi hariç görüntüleniyor.",
+ "Sort": "Sırala",
"SortByAlpha": "Alfabetik olarak",
"SortByLastUpdated": "Son güncelleme",
"SortByNewest": "En yeni",
diff --git a/plugins/Marketplace/templates/overview.twig b/plugins/Marketplace/templates/overview.twig
index c55c047a92..81c43d97e1 100644
--- a/plugins/Marketplace/templates/overview.twig
+++ b/plugins/Marketplace/templates/overview.twig
@@ -4,7 +4,7 @@
{% block content %}
- <div class="marketplace" piwik-marketplace>
+ <div class="marketplace">
<div piwik-content-intro>
<h2 piwik-enriched-headline feature-name="{{ 'CorePluginsAdmin_Marketplace'|translate }}"
@@ -28,46 +28,20 @@
{{ 'Marketplace_NoticeRemoveMarketplaceFromReportingMenu'|translate('<a href="#" piwik-plugin-name="WhiteLabel">', '</a>')|raw }}
{% endif %}
</p>
-
{% include '@Marketplace/licenseform.twig' %}
{% include '@Marketplace/uploadPluginDialog.twig' %}
- <div class="row marketplaceActions" ng-controller="PiwikMarketplaceController as marketplace">
- <div piwik-field uicontrol="select" name="plugin_type"
- class="col s12 m6 l4"
- ng-model="marketplace.pluginType"
- ng-change="marketplace.changePluginType()"
- data-title="{{ 'Show'|translate|e('html_attr') }}"
- value="{{ pluginType }}"
- full-width="true"
- options="{{ pluginTypeOptions|json_encode }}">
- </div>
-
- <div piwik-field uicontrol="select" name="plugin_sort"
- data-title="{{ 'Sort'|translate|e('html_attr') }}"
- value="{{ sort }}"
- ng-model="marketplace.pluginSort"
- ng-change="marketplace.changePluginSort()"
- class="col s12 m6 l4"
- full-width="true"
- options="{{ pluginSortOptions|json_encode }}">
- </div>
-
- {# Hide filters and search for themes because we don't have many of them #}
- {% if (pluginsToShow|length) > 20 or query %}
- <div class="col s12 m12 l4 ">
- <form action="{{ linkTo({'sort': '', 'embed': '0'}) }}" method="post" class="plugin-search">
- <div piwik-field uicontrol="text" name="query"
- data-title="{{ 'General_Search'|translate }} {{ numAvailablePlugins }} {{ 'General_Plugins'|translate|lcfirst }}..."
- value="{{ query }}"
- full-width="true">
- </div>
- <span class="icon-search" onclick="$('form.plugin-search').submit();"></span>
- </form>
- </div>
- {% endif %}
- </div>
+ <div
+ vue-entry="Marketplace.Marketplace"
+ plugin-type="{{ pluginType|default(null)|json_encode|e('html_attr') }}"
+ plugin-type-options="{{ pluginTypeOptions|default(null)|json_encode|e('html_attr') }}"
+ sort="{{ sort|default(null)|json_encode|e('html_attr') }}"
+ plugin-sort-options="{{ pluginSortOptions|default(null)|json_encode|e('html_attr') }}"
+ plugins-to-show="{{ pluginsToShow|default(null)|json_encode|e('html_attr') }}"
+ query="{{ query|default(null)|json_encode|e('html_attr') }}"
+ num-available-plugins="{{ numAvailablePlugins|default(null)|json_encode|e('html_attr') }}"
+ ></div>
</div>
{% include '@Marketplace/plugin-list.twig' %}
diff --git a/plugins/Marketplace/templates/plugin-list.twig b/plugins/Marketplace/templates/plugin-list.twig
index d225ce5439..21c8165926 100644
--- a/plugins/Marketplace/templates/plugin-list.twig
+++ b/plugins/Marketplace/templates/plugin-list.twig
@@ -8,18 +8,18 @@
{% import '@CorePluginsAdmin/macros.twig' as pluginsMacro %}
<div class="plugin">
<h3 class="card-title" title="{{ 'General_MoreDetails'|translate }}">
- <a href="#" piwik-plugin-name="{{ plugin.name }}">{{ plugin.displayName }}</a>
+ <a href="#" vue-directive="Marketplace.PluginName" vue-directive-value="{{ { pluginName: plugin.name }|json_encode|e('html_attr') }}">{{ plugin.displayName }}</a>
</h3>
<p class="description">
{{ plugin.description }}
- <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
+ <a class="more" href="#" vue-directive="Marketplace.PluginName" vue-directive-value="{{ { pluginName: plugin.name }|json_encode|e('html_attr') }}" title="{{ 'General_MoreDetails'|translate }}">
&rsaquo; {{ 'General_MoreLowerCase'|translate }}</a>
</p>
{% if showThemes %}
{# Screenshot for themes #}
- <a class="more" href="#" piwik-plugin-name="{{ plugin.name }}">
+ <a class="more" href="#" vue-directive="Marketplace.PluginName" vue-directive-value="{{ { pluginName: plugin.name }|json_encode|e('html_attr') }}">
<img title="{{ 'General_MoreDetails'|translate }}"
class="preview" src="{{ plugin.screenshots|first }}?w=250&h=150"/></a>
{% endif %}
@@ -36,7 +36,7 @@
{% if plugin.changelog is defined and plugin.changelog and plugin.changelog.url is defined and plugin.changelog.url %}
target="_blank" href="{{ plugin.changelog.url|e('html_attr') }}"
{% else %}
- href="#" piwik-plugin-name="{{ plugin.name }}"
+ href="#" vue-directive="Marketplace.PluginName" vue-directive-value="{{ { pluginName: plugin.name }|json_encode|e('html_attr') }}"
{% endif %}
title="{{ 'Marketplace_PluginUpdateAvailable'|translate(plugin.currentVersion, plugin.latestVersion) }}">
{{ 'Marketplace_NewVersion'|translate }}</a>
@@ -54,7 +54,7 @@
{% macro moreDetailsLink(plugin) %}
{% set canBePurchased = not plugin.isDownloadable and plugin.shop is defined and plugin.shop and plugin.shop.url %}
- <a class="btn btn-block plugin-details {% if canBePurchased %}purchaseable{% endif %}" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">
+ <a class="btn btn-block plugin-details {% if canBePurchased %}purchaseable{% endif %}" href="#" vue-directive="Marketplace.PluginName" vue-directive-value="{{ { pluginName: plugin.name }|json_encode|e('html_attr') }}" title="{{ 'General_MoreDetails'|translate }}">
{% if canBePurchased and plugin.shop.variations %}
{% set foundCheapest = 0 %}
@@ -82,14 +82,14 @@
<div class="alert alert-danger" >
{{ 'Marketplace_LicenseMissing'|translate }}
- <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
+ <span style="white-space:nowrap">(<a class="plugin-details" href="#" vue-directive="Marketplace.PluginName" vue-directive-value="{{ { pluginName: plugin.name }|json_encode|e('html_attr') }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
</div>
{% elseif plugin.hasExceededLicense is defined and plugin.hasExceededLicense %}
<div class="alert alert-danger">
{{ 'Marketplace_LicenseExceeded'|translate }}
- <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
+ <span style="white-space:nowrap">(<a class="plugin-details" href="#" vue-directive="Marketplace.PluginName" vue-directive-value="{{ { pluginName: plugin.name }|json_encode|e('html_attr') }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>)</span>
</div>
{% elseif plugin.canBeUpdated and 0 == plugin.missingRequirements|length and isAutoUpdatePossible %}
@@ -110,7 +110,7 @@
{% if plugin.canBeUpdated and 0 == plugin.missingRequirements|length %}
{{ 'Marketplace_CannotUpdate'|translate }}
- <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
+ <span style="white-space:nowrap">(<a class="plugin-details" href="#" vue-directive="Marketplace.PluginName" vue-directive-value="{{ { pluginName: plugin.name }|json_encode|e('html_attr') }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
{% elseif plugin.isInstalled %}
{{ 'General_Installed'|translate }}
{{ _self.downloadButton(false, plugin, isAutoUpdatePossible, true)|raw }}
@@ -119,7 +119,7 @@
{% else %}
{{ 'Marketplace_CannotInstall'|translate }}
- <span style="white-space:nowrap">(<a class="plugin-details" href="#" piwik-plugin-name="{{ plugin.name }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
+ <span style="white-space:nowrap">(<a class="plugin-details" href="#" vue-directive="Marketplace.PluginName" vue-directive-value="{{ { pluginName: plugin.name }|json_encode|e('html_attr') }}" title="{{ 'General_MoreDetails'|translate }}">{{ 'General_Help'|translate }}</a>{{ _self.downloadButton(true, plugin, isAutoUpdatePossible)|raw }})</span>
{% endif %}
{% elseif plugin.isInstalled %}
diff --git a/plugins/Marketplace/tests/UI/Marketplace_spec.js b/plugins/Marketplace/tests/UI/Marketplace_spec.js
index de38c7f32d..6557a7ac8b 100644
--- a/plugins/Marketplace/tests/UI/Marketplace_spec.js
+++ b/plugins/Marketplace/tests/UI/Marketplace_spec.js
@@ -25,7 +25,7 @@ describe("Marketplace", function () {
async function loadPluginDetailPage(pluginName, isFreePlugin)
{
await page.goto(isFreePlugin ? pluginsUrl : paidPluginsUrl);
- const elem = await page.waitForSelector('.card-title [piwik-plugin-name="' + pluginName + '"]');
+ const elem = await page.waitForSelector('.card-title [vue-directive="Marketplace.PluginName"][vue-directive-value*="' + pluginName + '"]');
await elem.click();
await page.waitForNetworkIdle();
await page.waitForSelector('.ui-dialog .pluginDetails');
diff --git a/plugins/Marketplace/vue/dist/Marketplace.umd.js b/plugins/Marketplace/vue/dist/Marketplace.umd.js
index 10b2c36c49..b311896acf 100644
--- a/plugins/Marketplace/vue/dist/Marketplace.umd.js
+++ b/plugins/Marketplace/vue/dist/Marketplace.umd.js
@@ -125,7 +125,9 @@ module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
__webpack_require__.r(__webpack_exports__);
// EXPORTS
+__webpack_require__.d(__webpack_exports__, "Marketplace", function() { return /* reexport */ Marketplace; });
__webpack_require__.d(__webpack_exports__, "LicenseKey", function() { return /* reexport */ LicenseKey; });
+__webpack_require__.d(__webpack_exports__, "PluginName", function() { return /* reexport */ PluginName; });
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
// This file is imported into lib/wc client bundles.
@@ -143,25 +145,364 @@ if (typeof window !== 'undefined') {
// Indicate to webpack that this file can be concatenated
/* harmony default export */ var setPublicPath = (null);
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/PluginName/PluginName.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+window.broadcast.addPopoverHandler('browsePluginDetail', function (value) {
+ var pluginName = value;
+ var activeTab = null;
+
+ if (value.indexOf('!') !== -1) {
+ activeTab = value.substr(value.indexOf('!') + 1);
+ pluginName = value.substr(0, value.indexOf('!'));
+ }
+
+ var url = "module=Marketplace&action=pluginDetails&pluginName=".concat(encodeURIComponent(pluginName));
+
+ if (activeTab) {
+ url += "&activeTab=".concat(encodeURIComponent(activeTab));
+ }
+
+ window.Piwik_Popover.createPopupAndLoadUrl(url, 'details');
+});
+
+function onClickPluginNameLink(binding, event) {
+ var pluginName = binding.value.pluginName;
+ var activePluginTab = binding.value.activePluginTab;
+ event.preventDefault();
+
+ if (activePluginTab) {
+ pluginName += "!".concat(activePluginTab);
+ }
+
+ window.broadcast.propagateNewPopoverParameter('browsePluginDetail', pluginName);
+}
+
+var _window = window,
+ $ = _window.$;
+/* harmony default export */ var PluginName = ({
+ mounted: function mounted(element, binding) {
+ var pluginName = binding.value.pluginName;
+
+ if (!pluginName) {
+ return;
+ }
+
+ binding.value.onClickHandler = onClickPluginNameLink.bind(null, binding);
+ $(element).on('click', binding.value.onClickHandler);
+ },
+ unmounted: function unmounted(element, binding) {
+ $(element).off('click', binding.value.onClickHandler);
+ }
+});
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/PluginName/PluginName.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+function piwikPluginName() {
+ return {
+ restrict: 'A',
+ link: function link(scope, element, attrs) {
+ var binding = {
+ instance: null,
+ value: {
+ pluginName: attrs.piwikPluginName,
+ activePluginTab: attrs.activeplugintab
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {}
+ };
+ PluginName.mounted(element[0], binding);
+ element.on('$destroy', function () {
+ PluginName.unmounted(element[0], binding);
+ });
+ }
+ };
+}
+
+window.angular.module('piwikApp').directive('piwikPluginName', piwikPluginName);
// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue?vue&type=template&id=391f4838
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Marketplace/vue/src/Marketplace/Marketplace.vue?vue&type=template&id=210cda1c
var _hoisted_1 = {
- class: "marketplace-max-width"
+ class: "row marketplaceActions",
+ ref: "root"
};
var _hoisted_2 = {
- class: "marketplace-paid-intro"
+ class: "col s12 m6 l4"
};
var _hoisted_3 = {
- key: 0
+ class: "col s12 m6 l4"
};
var _hoisted_4 = {
+ key: 0,
+ class: "col s12 m12 l4 "
+};
+var _hoisted_5 = ["action"];
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "plugin_type",
+ "model-value": _ctx.pluginTypeFilter,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ _ctx.pluginTypeFilter = $event;
+
+ _ctx.changePluginType();
+ }),
+ title: _ctx.translate('Marketplace_Show'),
+ "full-width": true,
+ options: _ctx.pluginTypeOptions
+ }, null, 8, ["model-value", "title", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "plugin_sort",
+ "model-value": _ctx.pluginSort,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ _ctx.pluginSort = $event;
+
+ _ctx.changePluginSort();
+ }),
+ title: _ctx.translate('Marketplace_Sort'),
+ "full-width": true,
+ options: _ctx.pluginSortOptions
+ }, null, 8, ["model-value", "title", "options"])]), _ctx.pluginsToShow.length > 20 || _ctx.query ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("form", {
+ method: "post",
+ class: "plugin-search",
+ action: _ctx.pluginSearchFormAction,
+ ref: "pluginSearchForm"
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "query",
+ title: _ctx.queryInputTitle,
+ "full-width": true,
+ modelValue: _ctx.searchQuery,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.searchQuery = $event;
+ })
+ }, null, 8, ["title", "modelValue"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-search",
+ onClick: _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.$refs.pluginSearchForm.submit();
+ })
+ })], 8, _hoisted_5)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512);
+}
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/Marketplace/Marketplace.vue?vue&type=template&id=210cda1c
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Marketplace/vue/src/Marketplace/Marketplace.vue?vue&type=script&lang=ts
+
+
+
+
+var lcfirst = function lcfirst(s) {
+ return "".concat(s[0].toLowerCase()).concat(s.substring(1));
+};
+
+var Marketplacevue_type_script_lang_ts_window = window,
+ Marketplacevue_type_script_lang_ts_$ = Marketplacevue_type_script_lang_ts_window.$;
+/* harmony default export */ var Marketplacevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ pluginType: {
+ type: String,
+ required: true
+ },
+ pluginTypeOptions: {
+ type: [Object, Array],
+ required: true
+ },
+ sort: {
+ type: String,
+ required: true
+ },
+ pluginSortOptions: {
+ type: [Object, Array],
+ required: true
+ },
+ pluginsToShow: {
+ type: Array,
+ required: true
+ },
+ query: {
+ type: String,
+ default: ''
+ },
+ numAvailablePlugins: {
+ type: Number,
+ required: true
+ }
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"]
+ },
+ data: function data() {
+ return {
+ pluginSort: this.sort,
+ pluginTypeFilter: this.pluginType,
+ searchQuery: this.query
+ };
+ },
+ created: function created() {
+ function syncMaxHeight2(selector) {
+ if (!selector) {
+ return;
+ }
+
+ var $nodes = Marketplacevue_type_script_lang_ts_$(selector);
+
+ if (!$nodes || !$nodes.length) {
+ return;
+ }
+
+ var maxh3 = undefined;
+ var maxMeta = undefined;
+ var maxFooter = undefined;
+ var nodesToUpdate = [];
+ var lastTop = 0;
+ $nodes.each(function (index, node) {
+ var $node = Marketplacevue_type_script_lang_ts_$(node);
+
+ var _$node$offset = $node.offset(),
+ top = _$node$offset.top;
+
+ if (lastTop !== top) {
+ nodesToUpdate = [];
+ lastTop = top;
+ maxh3 = undefined;
+ maxMeta = undefined;
+ maxFooter = undefined;
+ }
+
+ nodesToUpdate.push($node);
+ var heightH3 = $node.find('h3').height();
+ var heightMeta = $node.find('.metadata').height();
+ var heightFooter = $node.find('.footer').height();
+
+ if (!maxh3) {
+ maxh3 = heightH3;
+ } else if (maxh3 < heightH3) {
+ maxh3 = heightH3;
+ }
+
+ if (!maxMeta) {
+ maxMeta = heightMeta;
+ } else if (maxMeta < heightMeta) {
+ maxMeta = heightMeta;
+ }
+
+ if (!maxFooter) {
+ maxFooter = heightFooter;
+ } else if (maxFooter < heightFooter) {
+ maxFooter = heightFooter;
+ }
+
+ Marketplacevue_type_script_lang_ts_$.each(nodesToUpdate, function (i, $nodeToUpdate) {
+ if (maxh3) {
+ $nodeToUpdate.find('h3').height("".concat(maxh3, "px"));
+ }
+
+ if (maxMeta) {
+ $nodeToUpdate.find('.metadata').height("".concat(maxMeta, "px"));
+ }
+
+ if (maxFooter) {
+ $nodeToUpdate.find('.footer').height("".concat(maxFooter, "px"));
+ }
+ });
+ });
+ }
+
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () {
+ // Keeps the plugin descriptions the same height
+ var descriptions = Marketplacevue_type_script_lang_ts_$('.marketplace .plugin .description');
+ descriptions.dotdotdot({
+ after: 'a.more',
+ watch: 'window'
+ });
+ external_CoreHome_["Matomo"].helper.compileVueDirectives(descriptions); // have to recompile any vue directives
+
+ syncMaxHeight2('.marketplace .plugin');
+ });
+ },
+ methods: {
+ changePluginSort: function changePluginSort() {
+ external_CoreHome_["MatomoUrl"].updateUrl(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].urlParsed.value), {}, {
+ query: '',
+ sort: this.pluginSort
+ }), Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].hashParsed.value), {}, {
+ query: '',
+ sort: this.pluginSort
+ }));
+ },
+ changePluginType: function changePluginType() {
+ external_CoreHome_["MatomoUrl"].updateUrl(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].urlParsed.value), {}, {
+ query: '',
+ show: this.pluginTypeFilter
+ }), Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].hashParsed.value), {}, {
+ query: '',
+ show: this.pluginTypeFilter
+ }));
+ }
+ },
+ computed: {
+ pluginSearchFormAction: function pluginSearchFormAction() {
+ return "?".concat(external_CoreHome_["MatomoUrl"].stringify(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].urlParsed.value), {}, {
+ sort: '',
+ embed: '0'
+ })), "#?").concat(external_CoreHome_["MatomoUrl"].stringify(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].hashParsed.value), {}, {
+ sort: '',
+ embed: '0',
+ query: this.searchQuery
+ })));
+ },
+ queryInputTitle: function queryInputTitle() {
+ var plugins = lcfirst(Object(external_CoreHome_["translate"])('General_Plugins'));
+ return "".concat(Object(external_CoreHome_["translate"])('General_Search'), " ").concat(this.numAvailablePlugins, " ").concat(plugins, "...");
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/Marketplace/Marketplace.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/Marketplace/Marketplace.vue
+
+
+
+Marketplacevue_type_script_lang_ts.render = render
+
+/* harmony default export */ var Marketplace = (Marketplacevue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue?vue&type=template&id=9372136c
+
+var LicenseKeyvue_type_template_id_9372136c_hoisted_1 = {
+ class: "marketplace-max-width"
+};
+var LicenseKeyvue_type_template_id_9372136c_hoisted_2 = {
+ class: "marketplace-paid-intro"
+};
+var LicenseKeyvue_type_template_id_9372136c_hoisted_3 = {
+ key: 0
+};
+var LicenseKeyvue_type_template_id_9372136c_hoisted_4 = {
key: 0
};
-var _hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var LicenseKeyvue_type_template_id_9372136c_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
var _hoisted_6 = {
class: "licenseToolbar valign-wrapper"
@@ -171,52 +512,49 @@ var _hoisted_8 = {
key: 0
};
var _hoisted_9 = {
- href: "javascript:;",
- class: "btn installAllPaidPlugins valign"
-};
-var _hoisted_10 = {
class: "ui-confirm",
- id: "installAllPaidPluginsAtOnce"
+ id: "installAllPaidPluginsAtOnce",
+ ref: "installAllPaidPluginsAtOnce"
};
-var _hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var _hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var _hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var _hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var _hoisted_13 = ["data-href", "value"];
-var _hoisted_14 = ["value"];
-var _hoisted_15 = {
+var _hoisted_12 = ["data-href", "value"];
+var _hoisted_13 = ["value"];
+var _hoisted_14 = {
key: 1
};
-var _hoisted_16 = {
+var _hoisted_15 = {
key: 0
};
-var _hoisted_17 = ["innerHTML"];
+var _hoisted_16 = ["innerHTML"];
-var _hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var _hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var _hoisted_19 = {
+var _hoisted_18 = {
class: "licenseToolbar valign-wrapper"
};
-var _hoisted_20 = {
+var _hoisted_19 = {
key: 1
};
-var _hoisted_21 = ["innerHTML"];
-var _hoisted_22 = {
+var _hoisted_20 = ["innerHTML"];
+var _hoisted_21 = {
class: "ui-confirm",
id: "confirmRemoveLicense",
ref: "confirmRemoveLicense"
};
+var _hoisted_22 = ["value"];
var _hoisted_23 = ["value"];
-var _hoisted_24 = ["value"];
-function render(_ctx, _cache, $props, $setup, $data, $options) {
+function LicenseKeyvue_type_template_id_9372136c_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_DefaultLicenseKeyFields = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("DefaultLicenseKeyFields");
var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [_ctx.isValidConsumer ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_3, [_ctx.isSuperUser ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_PaidPluginsWithLicenseKeyIntro', '')) + " ", 1), _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DefaultLicenseKeyFields, {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", LicenseKeyvue_type_template_id_9372136c_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", LicenseKeyvue_type_template_id_9372136c_hoisted_2, [_ctx.isValidConsumer ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", LicenseKeyvue_type_template_id_9372136c_hoisted_3, [_ctx.isSuperUser ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", LicenseKeyvue_type_template_id_9372136c_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_PaidPluginsWithLicenseKeyIntro', '')) + " ", 1), LicenseKeyvue_type_template_id_9372136c_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DefaultLicenseKeyFields, {
"model-value": _ctx.licenseKey,
"onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
_ctx.licenseKey = $event;
@@ -239,7 +577,13 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
}, null, 8, ["value"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: "btn valign",
href: _ctx.subscriptionOverviewLink
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_ViewSubscriptions')), 9, _hoisted_7), _ctx.showInstallAllPaidPlugins ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_InstallPurchasedPlugins')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_InstallAllPurchasedPlugins')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_InstallThesePlugins')) + " ", 1), _hoisted_11, _hoisted_12]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.paidPluginsToInstallAtOnce, function (pluginName) {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_ViewSubscriptions')), 9, _hoisted_7), _ctx.showInstallAllPaidPlugins ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ href: "",
+ class: "btn installAllPaidPlugins valign",
+ onClick: _cache[3] || (_cache[3] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ return _ctx.onInstallAllPaidPlugins();
+ }, ["prevent"]))
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_InstallPurchasedPlugins')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_InstallAllPurchasedPlugins')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_InstallThesePlugins')) + " ", 1), _hoisted_10, _hoisted_11]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", null, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.paidPluginsToInstallAtOnce, function (pluginName) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
key: pluginName
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(pluginName), 1);
@@ -248,22 +592,22 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
type: "button",
"data-href": _ctx.installAllPaidPluginsLink,
value: _ctx.translate('Marketplace_InstallAllPurchasedPluginsAction', _ctx.paidPluginsToInstallAtOnce.length)
- }, null, 8, _hoisted_13), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 8, _hoisted_12), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
role: "cancel",
type: "button",
value: _ctx.translate('General_Cancel')
- }, null, 8, _hoisted_14)])])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ }, null, 8, _hoisted_13)])], 512)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
loading: _ctx.isUpdating
- }, null, 8, ["loading"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_15, [_ctx.isSuperUser ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, ["loading"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_14, [_ctx.isSuperUser ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.noLicenseKeyIntroText)
- }, null, 8, _hoisted_17), _hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DefaultLicenseKeyFields, {
+ }, null, 8, _hoisted_16), _hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_DefaultLicenseKeyFields, {
"model-value": _ctx.licenseKey,
- "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
_ctx.licenseKey = $event;
_ctx.updatedLicenseKey();
}),
- onConfirm: _cache[4] || (_cache[4] = function ($event) {
+ onConfirm: _cache[5] || (_cache[5] = function ($event) {
return _ctx.updateLicense();
}),
"has-license-key": _ctx.hasLicenseKey,
@@ -271,25 +615,19 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
"enable-update": _ctx.enableUpdate
}, null, 8, ["model-value", "has-license-key", "is-valid-consumer", "enable-update"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
loading: _ctx.isUpdating
- }, null, 8, ["loading"])])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, null, 8, ["loading"])])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.noLicenseKeyIntroNoSuperUserAccessText)
- }, null, 8, _hoisted_21)]))]))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_22, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_ConfirmRemoveLicense')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 8, _hoisted_20)]))]))]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_21, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Marketplace_ConfirmRemoveLicense')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
role: "yes",
type: "button",
value: _ctx.translate('General_Yes')
- }, null, 8, _hoisted_23), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, null, 8, _hoisted_22), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
role: "no",
type: "button",
value: _ctx.translate('General_No')
- }, null, 8, _hoisted_24)], 512)]);
+ }, null, 8, _hoisted_23)], 512)]);
}
-// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue?vue&type=template&id=391f4838
-
-// EXTERNAL MODULE: external "CoreHome"
-var external_CoreHome_ = __webpack_require__("19dc");
-
-// EXTERNAL MODULE: external "CorePluginsAdmin"
-var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue?vue&type=template&id=9372136c
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Marketplace/vue/src/LicenseKey/DefaultLicenseKeyFields.vue?vue&type=template&id=26188382
@@ -390,6 +728,9 @@ DefaultLicenseKeyFieldsvue_type_script_lang_ts.render = DefaultLicenseKeyFieldsv
};
},
methods: {
+ onInstallAllPaidPlugins: function onInstallAllPaidPlugins() {
+ external_CoreHome_["Matomo"].helper.modalConfirm(this.$refs.installAllPaidPluginsAtOnce);
+ },
updateLicenseKey: function updateLicenseKey(action, licenseKey, onSuccessMessage) {
var _this = this;
@@ -466,7 +807,7 @@ DefaultLicenseKeyFieldsvue_type_script_lang_ts.render = DefaultLicenseKeyFieldsv
-LicenseKeyvue_type_script_lang_ts.render = render
+LicenseKeyvue_type_script_lang_ts.render = LicenseKeyvue_type_template_id_9372136c_render
/* harmony default export */ var LicenseKey = (LicenseKeyvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/Marketplace/vue/src/index.ts
@@ -477,6 +818,9 @@ LicenseKeyvue_type_script_lang_ts.render = render
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
+
+
+
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
diff --git a/plugins/Marketplace/vue/dist/Marketplace.umd.min.js b/plugins/Marketplace/vue/dist/Marketplace.umd.min.js
index 52c95a96e3..0d582d3964 100644
--- a/plugins/Marketplace/vue/dist/Marketplace.umd.min.js
+++ b/plugins/Marketplace/vue/dist/Marketplace.umd.min.js
@@ -1,4 +1,18 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["Marketplace"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["Marketplace"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(l){if(t[l])return t[l].exports;var a=t[l]={i:l,l:!1,exports:{}};return e[l].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,l){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:l})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var l=Object.create(null);if(n.r(l),Object.defineProperty(l,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(l,a,function(t){return e[t]}.bind(null,a));return l},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/Marketplace/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"LicenseKey",(function(){return I})),"undefined"!==typeof window){var l=window.document.currentScript,a=l&&l.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}var i=n("8bbf"),o={class:"marketplace-max-width"},r={class:"marketplace-paid-intro"},c={key:0},s={key:0},u=Object(i["createElementVNode"])("br",null,null,-1),d={class:"licenseToolbar valign-wrapper"},p=["href"],m={key:0},b={href:"javascript:;",class:"btn installAllPaidPlugins valign"},f={class:"ui-confirm",id:"installAllPaidPluginsAtOnce"},v=Object(i["createElementVNode"])("br",null,null,-1),O=Object(i["createElementVNode"])("br",null,null,-1),y=["data-href","value"],j=["value"],g={key:1},h={key:0},k=["innerHTML"],V=Object(i["createElementVNode"])("br",null,null,-1),P={class:"licenseToolbar valign-wrapper"},L={key:1},N=["innerHTML"],K={class:"ui-confirm",id:"confirmRemoveLicense",ref:"confirmRemoveLicense"},B=["value"],E=["value"];function A(e,t,n,l,a,A){var M=Object(i["resolveComponent"])("DefaultLicenseKeyFields"),S=Object(i["resolveComponent"])("SaveButton"),U=Object(i["resolveComponent"])("ActivityIndicator");return Object(i["openBlock"])(),Object(i["createElementBlock"])("div",o,[Object(i["createElementVNode"])("div",r,[e.isValidConsumer?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",c,[e.isSuperUser?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",s,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("Marketplace_PaidPluginsWithLicenseKeyIntro",""))+" ",1),u,Object(i["createElementVNode"])("div",d,[Object(i["createVNode"])(M,{"model-value":e.licenseKey,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.licenseKey=t,e.updatedLicenseKey()}),onConfirm:t[1]||(t[1]=function(t){return e.updateLicense()}),"has-license-key":e.hasLicenseKey,"is-valid-consumer":e.isValidConsumer,"enable-update":e.enableUpdate},null,8,["model-value","has-license-key","is-valid-consumer","enable-update"]),Object(i["createVNode"])(S,{class:"valign",id:"remove_license_key",onConfirm:t[2]||(t[2]=function(t){return e.removeLicense()}),value:e.translate("Marketplace_RemoveLicenseKey")},null,8,["value"]),Object(i["createElementVNode"])("a",{class:"btn valign",href:e.subscriptionOverviewLink},Object(i["toDisplayString"])(e.translate("Marketplace_ViewSubscriptions")),9,p),e.showInstallAllPaidPlugins?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",m,[Object(i["createElementVNode"])("a",b,Object(i["toDisplayString"])(e.translate("Marketplace_InstallPurchasedPlugins")),1),Object(i["createElementVNode"])("div",f,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("Marketplace_InstallAllPurchasedPlugins")),1),Object(i["createElementVNode"])("p",null,[Object(i["createTextVNode"])(Object(i["toDisplayString"])(e.translate("Marketplace_InstallThesePlugins"))+" ",1),v,O]),Object(i["createElementVNode"])("ul",null,[(Object(i["openBlock"])(!0),Object(i["createElementBlock"])(i["Fragment"],null,Object(i["renderList"])(e.paidPluginsToInstallAtOnce,(function(e){return Object(i["openBlock"])(),Object(i["createElementBlock"])("li",{key:e},Object(i["toDisplayString"])(e),1)})),128))]),Object(i["createElementVNode"])("p",null,[Object(i["createElementVNode"])("input",{role:"install",type:"button","data-href":e.installAllPaidPluginsLink,value:e.translate("Marketplace_InstallAllPurchasedPluginsAction",e.paidPluginsToInstallAtOnce.length)},null,8,y),Object(i["createElementVNode"])("input",{role:"cancel",type:"button",value:e.translate("General_Cancel")},null,8,j)])])])):Object(i["createCommentVNode"])("",!0)]),Object(i["createVNode"])(U,{loading:e.isUpdating},null,8,["loading"])])):Object(i["createCommentVNode"])("",!0)])):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",g,[e.isSuperUser?(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",h,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.noLicenseKeyIntroText)},null,8,k),V,Object(i["createElementVNode"])("div",P,[Object(i["createVNode"])(M,{"model-value":e.licenseKey,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.licenseKey=t,e.updatedLicenseKey()}),onConfirm:t[4]||(t[4]=function(t){return e.updateLicense()}),"has-license-key":e.hasLicenseKey,"is-valid-consumer":e.isValidConsumer,"enable-update":e.enableUpdate},null,8,["model-value","has-license-key","is-valid-consumer","enable-update"])]),Object(i["createVNode"])(U,{loading:e.isUpdating},null,8,["loading"])])):(Object(i["openBlock"])(),Object(i["createElementBlock"])("div",L,[Object(i["createElementVNode"])("span",{innerHTML:e.$sanitize(e.noLicenseKeyIntroNoSuperUserAccessText)},null,8,N)]))]))]),Object(i["createElementVNode"])("div",K,[Object(i["createElementVNode"])("h2",null,Object(i["toDisplayString"])(e.translate("Marketplace_ConfirmRemoveLicense")),1),Object(i["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,B),Object(i["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,E)],512)])}var M=n("19dc"),S=n("a5a2"),U={class:"valign licenseKeyText"};function _(e,t,n,l,a,o){var r=Object(i["resolveComponent"])("Field"),c=Object(i["resolveComponent"])("SaveButton");return Object(i["openBlock"])(),Object(i["createElementBlock"])(i["Fragment"],null,[Object(i["createElementVNode"])("div",U,[Object(i["createVNode"])(r,{uicontrol:"text",name:"license_key","full-width":!0,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.$emit("update:modelValue",t)}),placeholder:e.licenseKeyPlaceholder},null,8,["model-value","placeholder"])]),Object(i["createVNode"])(c,{class:"valign",onConfirm:t[1]||(t[1]=function(t){return e.$emit("confirm")}),disabled:!e.enableUpdate,value:e.saveButtonText,id:"submit_license_key"},null,8,["disabled","value"])],64)}var C=Object(i["defineComponent"])({props:{modelValue:String,isValidConsumer:Boolean,hasLicenseKey:Boolean,enableUpdate:Boolean},emits:["update:modelValue","confirm"],components:{Field:S["Field"],SaveButton:S["SaveButton"]},computed:{licenseKeyPlaceholder:function(){return this.isValidConsumer?Object(M["translate"])("Marketplace_LicenseKeyIsValidShort"):Object(M["translate"])("Marketplace_LicenseKey")},saveButtonText:function(){return this.hasLicenseKey?Object(M["translate"])("CoreUpdater_UpdateTitle"):Object(M["translate"])("Marketplace_ActivateLicenseKey")}}});C.render=_;var x=C,T=Object(i["defineComponent"])({props:{isValidConsumer:Boolean,isSuperUser:Boolean,isAutoUpdatePossible:Boolean,isPluginsAdminEnabled:Boolean,hasLicenseKey:Boolean,paidPluginsToInstallAtOnce:{type:Array,required:!0},installNonce:{type:String,required:!0}},components:{SaveButton:S["SaveButton"],ActivityIndicator:M["ActivityIndicator"],DefaultLicenseKeyFields:x},data:function(){return{licenseKey:"",enableUpdate:!1,isUpdating:!1}},methods:{updateLicenseKey:function(e,t,n){var l=this;M["AjaxHelper"].post({module:"API",method:"Marketplace.".concat(e),format:"JSON"},{licenseKey:this.licenseKey},{withTokenInUrl:!0}).then((function(e){l.isUpdating=!1,e&&e.value&&(M["NotificationsStore"].show({message:n,context:"success",type:"transient"}),M["Matomo"].helper.redirect())}),(function(){l.isUpdating=!1}))},removeLicense:function(){var e=this;M["Matomo"].helper.modalConfirm(this.$refs.confirmRemoveLicense,{yes:function(){e.enableUpdate=!1,e.isUpdating=!0,e.updateLicenseKey("deleteLicenseKey","",Object(M["translate"])("Marketplace_LicenseKeyDeletedSuccess"))}})},updatedLicenseKey:function(){this.enableUpdate=!!this.licenseKey},updateLicense:function(){this.enableUpdate=!1,this.isUpdating=!0,this.updateLicenseKey("saveLicenseKey",this.licenseKey,Object(M["translate"])("Marketplace_LicenseKeyActivatedSuccess"))}},computed:{subscriptionOverviewLink:function(){return"?".concat(M["MatomoUrl"].stringify(Object.assign(Object.assign({},M["MatomoUrl"].urlParsed.value),{},{action:"subscriptionOverview"})))},noLicenseKeyIntroText:function(){return Object(M["translate"])("Marketplace_PaidPluginsNoLicenseKeyIntro",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">',"</a>")},noLicenseKeyIntroNoSuperUserAccessText:function(){return Object(M["translate"])("Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">',"</a>")},installAllPaidPluginsLink:function(){return"?".concat(M["MatomoUrl"].stringify(Object.assign(Object.assign({},M["MatomoUrl"].urlParsed.value),{},{action:"installAllPaidPlugins",nonce:this.installNonce})))},showInstallAllPaidPlugins:function(){return this.isAutoUpdatePossible&&this.isPluginsAdminEnabled&&this.paidPluginsToInstallAtOnce.length}}});T.render=A;var I=T;
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["Marketplace"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["Marketplace"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(l){if(t[l])return t[l].exports;var a=t[l]={i:l,l:!1,exports:{}};return e[l].call(a.exports,a,a.exports,n),a.l=!0,a.exports}return n.m=e,n.c=t,n.d=function(e,t,l){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:l})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var l=Object.create(null);if(n.r(l),Object.defineProperty(l,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var a in e)n.d(l,a,function(t){return e[t]}.bind(null,a));return l},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/Marketplace/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"Marketplace",(function(){return P})),n.d(t,"LicenseKey",(function(){return Z})),n.d(t,"PluginName",(function(){return c})),"undefined"!==typeof window){var l=window.document.currentScript,a=l&&l.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);a&&(n.p=a[1])}function i(e,t){var n=e.value.pluginName,l=e.value.activePluginTab;t.preventDefault(),l&&(n+="!".concat(l)),window.broadcast.propagateNewPopoverParameter("browsePluginDetail",n)}
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+window.broadcast.addPopoverHandler("browsePluginDetail",(function(e){var t=e,n=null;-1!==e.indexOf("!")&&(n=e.substr(e.indexOf("!")+1),t=e.substr(0,e.indexOf("!")));var l="module=Marketplace&action=pluginDetails&pluginName=".concat(encodeURIComponent(t));n&&(l+="&activeTab=".concat(encodeURIComponent(n))),window.Piwik_Popover.createPopupAndLoadUrl(l,"details")}));var o=window,r=o.$,c={mounted:function(e,t){var n=t.value.pluginName;n&&(t.value.onClickHandler=i.bind(null,t),r(e).on("click",t.value.onClickHandler))},unmounted:function(e,t){r(e).off("click",t.value.onClickHandler)}};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+function s(){return{restrict:"A",link:function(e,t,n){var l={instance:null,value:{pluginName:n.piwikPluginName,activePluginTab:n.activeplugintab},oldValue:null,modifiers:{},dir:{}};c.mounted(t[0],l),t.on("$destroy",(function(){c.unmounted(t[0],l)}))}}}window.angular.module("piwikApp").directive("piwikPluginName",s);var u=n("8bbf"),d={class:"row marketplaceActions",ref:"root"},p={class:"col s12 m6 l4"},m={class:"col s12 m6 l4"},b={key:0,class:"col s12 m12 l4 "},f=["action"];function g(e,t,n,l,a,i){var o=Object(u["resolveComponent"])("Field");return Object(u["openBlock"])(),Object(u["createElementBlock"])("div",d,[Object(u["createElementVNode"])("div",p,[Object(u["createVNode"])(o,{uicontrol:"select",name:"plugin_type","model-value":e.pluginTypeFilter,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.pluginTypeFilter=t,e.changePluginType()}),title:e.translate("Marketplace_Show"),"full-width":!0,options:e.pluginTypeOptions},null,8,["model-value","title","options"])]),Object(u["createElementVNode"])("div",m,[Object(u["createVNode"])(o,{uicontrol:"select",name:"plugin_sort","model-value":e.pluginSort,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.pluginSort=t,e.changePluginSort()}),title:e.translate("Marketplace_Sort"),"full-width":!0,options:e.pluginSortOptions},null,8,["model-value","title","options"])]),e.pluginsToShow.length>20||e.query?(Object(u["openBlock"])(),Object(u["createElementBlock"])("div",b,[Object(u["createElementVNode"])("form",{method:"post",class:"plugin-search",action:e.pluginSearchFormAction,ref:"pluginSearchForm"},[Object(u["createElementVNode"])("div",null,[Object(u["createVNode"])(o,{uicontrol:"text",name:"query",title:e.queryInputTitle,"full-width":!0,modelValue:e.searchQuery,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.searchQuery=t})},null,8,["title","modelValue"])]),Object(u["createElementVNode"])("span",{class:"icon-search",onClick:t[3]||(t[3]=function(t){return e.$refs.pluginSearchForm.submit()})})],8,f)])):Object(u["createCommentVNode"])("",!0)],512)}var v=n("19dc"),O=n("a5a2"),y=function(e){return"".concat(e[0].toLowerCase()).concat(e.substring(1))},h=window,j=h.$,k=Object(u["defineComponent"])({props:{pluginType:{type:String,required:!0},pluginTypeOptions:{type:[Object,Array],required:!0},sort:{type:String,required:!0},pluginSortOptions:{type:[Object,Array],required:!0},pluginsToShow:{type:Array,required:!0},query:{type:String,default:""},numAvailablePlugins:{type:Number,required:!0}},components:{Field:O["Field"]},data:function(){return{pluginSort:this.sort,pluginTypeFilter:this.pluginType,searchQuery:this.query}},created:function(){function e(e){if(e){var t=j(e);if(t&&t.length){var n=void 0,l=void 0,a=void 0,i=[],o=0;t.each((function(e,t){var r=j(t),c=r.offset(),s=c.top;o!==s&&(i=[],o=s,n=void 0,l=void 0,a=void 0),i.push(r);var u=r.find("h3").height(),d=r.find(".metadata").height(),p=r.find(".footer").height();n?n<u&&(n=u):n=u,l?l<d&&(l=d):l=d,a?a<p&&(a=p):a=p,j.each(i,(function(e,t){n&&t.find("h3").height("".concat(n,"px")),l&&t.find(".metadata").height("".concat(l,"px")),a&&t.find(".footer").height("".concat(a,"px"))}))}))}}}Object(u["nextTick"])((function(){var t=j(".marketplace .plugin .description");t.dotdotdot({after:"a.more",watch:"window"}),v["Matomo"].helper.compileVueDirectives(t),e(".marketplace .plugin")}))},methods:{changePluginSort:function(){v["MatomoUrl"].updateUrl(Object.assign(Object.assign({},v["MatomoUrl"].urlParsed.value),{},{query:"",sort:this.pluginSort}),Object.assign(Object.assign({},v["MatomoUrl"].hashParsed.value),{},{query:"",sort:this.pluginSort}))},changePluginType:function(){v["MatomoUrl"].updateUrl(Object.assign(Object.assign({},v["MatomoUrl"].urlParsed.value),{},{query:"",show:this.pluginTypeFilter}),Object.assign(Object.assign({},v["MatomoUrl"].hashParsed.value),{},{query:"",show:this.pluginTypeFilter}))}},computed:{pluginSearchFormAction:function(){return"?".concat(v["MatomoUrl"].stringify(Object.assign(Object.assign({},v["MatomoUrl"].urlParsed.value),{},{sort:"",embed:"0"})),"#?").concat(v["MatomoUrl"].stringify(Object.assign(Object.assign({},v["MatomoUrl"].hashParsed.value),{},{sort:"",embed:"0",query:this.searchQuery})))},queryInputTitle:function(){var e=y(Object(v["translate"])("General_Plugins"));return"".concat(Object(v["translate"])("General_Search")," ").concat(this.numAvailablePlugins," ").concat(e,"...")}}});k.render=g;var P=k,V={class:"marketplace-max-width"},N={class:"marketplace-paid-intro"},S={key:0},A={key:0},U=Object(u["createElementVNode"])("br",null,null,-1),w={class:"licenseToolbar valign-wrapper"},M=["href"],L={key:0},C={class:"ui-confirm",id:"installAllPaidPluginsAtOnce",ref:"installAllPaidPluginsAtOnce"},T=Object(u["createElementVNode"])("br",null,null,-1),E=Object(u["createElementVNode"])("br",null,null,-1),K=["data-href","value"],B=["value"],_={key:1},x={key:0},I=["innerHTML"],q=Object(u["createElementVNode"])("br",null,null,-1),F={class:"licenseToolbar valign-wrapper"},D={key:1},H=["innerHTML"],$={class:"ui-confirm",id:"confirmRemoveLicense",ref:"confirmRemoveLicense"},R=["value"],G=["value"];function Q(e,t,n,l,a,i){var o=Object(u["resolveComponent"])("DefaultLicenseKeyFields"),r=Object(u["resolveComponent"])("SaveButton"),c=Object(u["resolveComponent"])("ActivityIndicator");return Object(u["openBlock"])(),Object(u["createElementBlock"])("div",V,[Object(u["createElementVNode"])("div",N,[e.isValidConsumer?(Object(u["openBlock"])(),Object(u["createElementBlock"])("div",S,[e.isSuperUser?(Object(u["openBlock"])(),Object(u["createElementBlock"])("div",A,[Object(u["createTextVNode"])(Object(u["toDisplayString"])(e.translate("Marketplace_PaidPluginsWithLicenseKeyIntro",""))+" ",1),U,Object(u["createElementVNode"])("div",w,[Object(u["createVNode"])(o,{"model-value":e.licenseKey,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.licenseKey=t,e.updatedLicenseKey()}),onConfirm:t[1]||(t[1]=function(t){return e.updateLicense()}),"has-license-key":e.hasLicenseKey,"is-valid-consumer":e.isValidConsumer,"enable-update":e.enableUpdate},null,8,["model-value","has-license-key","is-valid-consumer","enable-update"]),Object(u["createVNode"])(r,{class:"valign",id:"remove_license_key",onConfirm:t[2]||(t[2]=function(t){return e.removeLicense()}),value:e.translate("Marketplace_RemoveLicenseKey")},null,8,["value"]),Object(u["createElementVNode"])("a",{class:"btn valign",href:e.subscriptionOverviewLink},Object(u["toDisplayString"])(e.translate("Marketplace_ViewSubscriptions")),9,M),e.showInstallAllPaidPlugins?(Object(u["openBlock"])(),Object(u["createElementBlock"])("div",L,[Object(u["createElementVNode"])("a",{href:"",class:"btn installAllPaidPlugins valign",onClick:t[3]||(t[3]=Object(u["withModifiers"])((function(t){return e.onInstallAllPaidPlugins()}),["prevent"]))},Object(u["toDisplayString"])(e.translate("Marketplace_InstallPurchasedPlugins")),1),Object(u["createElementVNode"])("div",C,[Object(u["createElementVNode"])("h2",null,Object(u["toDisplayString"])(e.translate("Marketplace_InstallAllPurchasedPlugins")),1),Object(u["createElementVNode"])("p",null,[Object(u["createTextVNode"])(Object(u["toDisplayString"])(e.translate("Marketplace_InstallThesePlugins"))+" ",1),T,E]),Object(u["createElementVNode"])("ul",null,[(Object(u["openBlock"])(!0),Object(u["createElementBlock"])(u["Fragment"],null,Object(u["renderList"])(e.paidPluginsToInstallAtOnce,(function(e){return Object(u["openBlock"])(),Object(u["createElementBlock"])("li",{key:e},Object(u["toDisplayString"])(e),1)})),128))]),Object(u["createElementVNode"])("p",null,[Object(u["createElementVNode"])("input",{role:"install",type:"button","data-href":e.installAllPaidPluginsLink,value:e.translate("Marketplace_InstallAllPurchasedPluginsAction",e.paidPluginsToInstallAtOnce.length)},null,8,K),Object(u["createElementVNode"])("input",{role:"cancel",type:"button",value:e.translate("General_Cancel")},null,8,B)])],512)])):Object(u["createCommentVNode"])("",!0)]),Object(u["createVNode"])(c,{loading:e.isUpdating},null,8,["loading"])])):Object(u["createCommentVNode"])("",!0)])):(Object(u["openBlock"])(),Object(u["createElementBlock"])("div",_,[e.isSuperUser?(Object(u["openBlock"])(),Object(u["createElementBlock"])("div",x,[Object(u["createElementVNode"])("span",{innerHTML:e.$sanitize(e.noLicenseKeyIntroText)},null,8,I),q,Object(u["createElementVNode"])("div",F,[Object(u["createVNode"])(o,{"model-value":e.licenseKey,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.licenseKey=t,e.updatedLicenseKey()}),onConfirm:t[5]||(t[5]=function(t){return e.updateLicense()}),"has-license-key":e.hasLicenseKey,"is-valid-consumer":e.isValidConsumer,"enable-update":e.enableUpdate},null,8,["model-value","has-license-key","is-valid-consumer","enable-update"])]),Object(u["createVNode"])(c,{loading:e.isUpdating},null,8,["loading"])])):(Object(u["openBlock"])(),Object(u["createElementBlock"])("div",D,[Object(u["createElementVNode"])("span",{innerHTML:e.$sanitize(e.noLicenseKeyIntroNoSuperUserAccessText)},null,8,H)]))]))]),Object(u["createElementVNode"])("div",$,[Object(u["createElementVNode"])("h2",null,Object(u["toDisplayString"])(e.translate("Marketplace_ConfirmRemoveLicense")),1),Object(u["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,R),Object(u["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,G)],512)])}var z={class:"valign licenseKeyText"};function J(e,t,n,l,a,i){var o=Object(u["resolveComponent"])("Field"),r=Object(u["resolveComponent"])("SaveButton");return Object(u["openBlock"])(),Object(u["createElementBlock"])(u["Fragment"],null,[Object(u["createElementVNode"])("div",z,[Object(u["createVNode"])(o,{uicontrol:"text",name:"license_key","full-width":!0,"model-value":e.modelValue,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.$emit("update:modelValue",t)}),placeholder:e.licenseKeyPlaceholder},null,8,["model-value","placeholder"])]),Object(u["createVNode"])(r,{class:"valign",onConfirm:t[1]||(t[1]=function(t){return e.$emit("confirm")}),disabled:!e.enableUpdate,value:e.saveButtonText,id:"submit_license_key"},null,8,["disabled","value"])],64)}var W=Object(u["defineComponent"])({props:{modelValue:String,isValidConsumer:Boolean,hasLicenseKey:Boolean,enableUpdate:Boolean},emits:["update:modelValue","confirm"],components:{Field:O["Field"],SaveButton:O["SaveButton"]},computed:{licenseKeyPlaceholder:function(){return this.isValidConsumer?Object(v["translate"])("Marketplace_LicenseKeyIsValidShort"):Object(v["translate"])("Marketplace_LicenseKey")},saveButtonText:function(){return this.hasLicenseKey?Object(v["translate"])("CoreUpdater_UpdateTitle"):Object(v["translate"])("Marketplace_ActivateLicenseKey")}}});W.render=J;var Y=W,X=Object(u["defineComponent"])({props:{isValidConsumer:Boolean,isSuperUser:Boolean,isAutoUpdatePossible:Boolean,isPluginsAdminEnabled:Boolean,hasLicenseKey:Boolean,paidPluginsToInstallAtOnce:{type:Array,required:!0},installNonce:{type:String,required:!0}},components:{SaveButton:O["SaveButton"],ActivityIndicator:v["ActivityIndicator"],DefaultLicenseKeyFields:Y},data:function(){return{licenseKey:"",enableUpdate:!1,isUpdating:!1}},methods:{onInstallAllPaidPlugins:function(){v["Matomo"].helper.modalConfirm(this.$refs.installAllPaidPluginsAtOnce)},updateLicenseKey:function(e,t,n){var l=this;v["AjaxHelper"].post({module:"API",method:"Marketplace.".concat(e),format:"JSON"},{licenseKey:this.licenseKey},{withTokenInUrl:!0}).then((function(e){l.isUpdating=!1,e&&e.value&&(v["NotificationsStore"].show({message:n,context:"success",type:"transient"}),v["Matomo"].helper.redirect())}),(function(){l.isUpdating=!1}))},removeLicense:function(){var e=this;v["Matomo"].helper.modalConfirm(this.$refs.confirmRemoveLicense,{yes:function(){e.enableUpdate=!1,e.isUpdating=!0,e.updateLicenseKey("deleteLicenseKey","",Object(v["translate"])("Marketplace_LicenseKeyDeletedSuccess"))}})},updatedLicenseKey:function(){this.enableUpdate=!!this.licenseKey},updateLicense:function(){this.enableUpdate=!1,this.isUpdating=!0,this.updateLicenseKey("saveLicenseKey",this.licenseKey,Object(v["translate"])("Marketplace_LicenseKeyActivatedSuccess"))}},computed:{subscriptionOverviewLink:function(){return"?".concat(v["MatomoUrl"].stringify(Object.assign(Object.assign({},v["MatomoUrl"].urlParsed.value),{},{action:"subscriptionOverview"})))},noLicenseKeyIntroText:function(){return Object(v["translate"])("Marketplace_PaidPluginsNoLicenseKeyIntro",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">',"</a>")},noLicenseKeyIntroNoSuperUserAccessText:function(){return Object(v["translate"])("Marketplace_PaidPluginsNoLicenseKeyIntroNoSuperUserAccess",'<a target="_blank" rel="noreferrer noopener" href="https://matomo.org/recommends/premium-plugins/">',"</a>")},installAllPaidPluginsLink:function(){return"?".concat(v["MatomoUrl"].stringify(Object.assign(Object.assign({},v["MatomoUrl"].urlParsed.value),{},{action:"installAllPaidPlugins",nonce:this.installNonce})))},showInstallAllPaidPlugins:function(){return this.isAutoUpdatePossible&&this.isPluginsAdminEnabled&&this.paidPluginsToInstallAtOnce.length}}});X.render=Q;var Z=X;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue b/plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue
index 637b248e2b..7ccfcfe70a 100644
--- a/plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue
+++ b/plugins/Marketplace/vue/src/LicenseKey/LicenseKey.vue
@@ -34,14 +34,16 @@
</a>
<div v-if="showInstallAllPaidPlugins">
<a
- href="javascript:;"
+ href=""
class="btn installAllPaidPlugins valign"
+ @click.prevent="onInstallAllPaidPlugins()"
>
{{ translate('Marketplace_InstallPurchasedPlugins') }}
</a>
<div
class="ui-confirm"
id="installAllPaidPluginsAtOnce"
+ ref="installAllPaidPluginsAtOnce"
>
<h2>{{ translate('Marketplace_InstallAllPurchasedPlugins') }}</h2>
<p>
@@ -153,6 +155,9 @@ export default defineComponent({
};
},
methods: {
+ onInstallAllPaidPlugins() {
+ Matomo.helper.modalConfirm(this.$refs.installAllPaidPluginsAtOnce as HTMLElement);
+ },
updateLicenseKey(action: string, licenseKey: string, onSuccessMessage: string) {
AjaxHelper.post(
{
diff --git a/plugins/Marketplace/vue/src/Marketplace/Marketplace.vue b/plugins/Marketplace/vue/src/Marketplace/Marketplace.vue
new file mode 100644
index 0000000000..6e8adc90dc
--- /dev/null
+++ b/plugins/Marketplace/vue/src/Marketplace/Marketplace.vue
@@ -0,0 +1,244 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="row marketplaceActions" ref="root">
+ <div class="col s12 m6 l4">
+ <Field
+ uicontrol="select"
+ name="plugin_type"
+ :model-value="pluginTypeFilter"
+ @update:model-value="pluginTypeFilter = $event; changePluginType()"
+ :title="translate('Marketplace_Show')"
+ :full-width="true"
+ :options="pluginTypeOptions"
+ >
+ </Field>
+ </div>
+ <div class="col s12 m6 l4">
+ <Field
+ uicontrol="select"
+ name="plugin_sort"
+ :model-value="pluginSort"
+ @update:model-value="pluginSort = $event; changePluginSort()"
+ :title="translate('Marketplace_Sort')"
+ :full-width="true"
+ :options="pluginSortOptions"
+ >
+ </Field>
+ </div>
+ <!-- Hide filters and search for themes because we don't have many of them -->
+ <div class="col s12 m12 l4 " v-if="pluginsToShow.length > 20 || query">
+ <form
+ method="post"
+ class="plugin-search"
+ :action="pluginSearchFormAction"
+ ref="pluginSearchForm"
+ >
+ <div>
+ <Field
+ uicontrol="text"
+ name="query"
+ :title="queryInputTitle"
+ :full-width="true"
+ v-model="searchQuery"
+ >
+ </Field>
+ </div>
+ <span
+ class="icon-search"
+ @click="$refs.pluginSearchForm.submit()"
+ />
+ </form>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, nextTick } from 'vue';
+import { translate, MatomoUrl, Matomo } from 'CoreHome';
+import { Field } from 'CorePluginsAdmin';
+
+interface MarketplaceState {
+ pluginSort: string;
+ pluginTypeFilter: string;
+ searchQuery: string;
+}
+
+const lcfirst = (s: string) => `${s[0].toLowerCase()}${s.substring(1)}`;
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ pluginType: {
+ type: String,
+ required: true,
+ },
+ pluginTypeOptions: {
+ type: [Object, Array],
+ required: true,
+ },
+ sort: {
+ type: String,
+ required: true,
+ },
+ pluginSortOptions: {
+ type: [Object, Array],
+ required: true,
+ },
+ pluginsToShow: {
+ type: Array,
+ required: true,
+ },
+ query: {
+ type: String,
+ default: '',
+ },
+ numAvailablePlugins: {
+ type: Number,
+ required: true,
+ },
+ },
+ components: {
+ Field,
+ },
+ data(): MarketplaceState {
+ return {
+ pluginSort: this.sort,
+ pluginTypeFilter: this.pluginType,
+ searchQuery: this.query,
+ };
+ },
+ created() {
+ function syncMaxHeight2(selector: string) {
+ if (!selector) {
+ return;
+ }
+
+ const $nodes = $(selector);
+ if (!$nodes || !$nodes.length) {
+ return;
+ }
+
+ let maxh3: number|undefined = undefined;
+ let maxMeta: number|undefined = undefined;
+ let maxFooter: number|undefined = undefined;
+ let nodesToUpdate: JQuery[] = [];
+ let lastTop = 0;
+ $nodes.each((index, node) => {
+ const $node = $(node);
+ const { top } = $node.offset()!;
+
+ if (lastTop !== top) {
+ nodesToUpdate = [];
+ lastTop = top;
+ maxh3 = undefined;
+ maxMeta = undefined;
+ maxFooter = undefined;
+ }
+
+ nodesToUpdate.push($node);
+
+ const heightH3 = $node.find('h3').height()!;
+ const heightMeta = $node.find('.metadata').height()!;
+ const heightFooter = $node.find('.footer').height()!;
+
+ if (!maxh3) {
+ maxh3 = heightH3;
+ } else if (maxh3 < heightH3) {
+ maxh3 = heightH3;
+ }
+
+ if (!maxMeta) {
+ maxMeta = heightMeta;
+ } else if (maxMeta < heightMeta) {
+ maxMeta = heightMeta;
+ }
+
+ if (!maxFooter) {
+ maxFooter = heightFooter;
+ } else if (maxFooter < heightFooter) {
+ maxFooter = heightFooter;
+ }
+
+ $.each(nodesToUpdate, (i, $nodeToUpdate) => {
+ if (maxh3) {
+ $nodeToUpdate.find('h3').height(`${maxh3}px`);
+ }
+ if (maxMeta) {
+ $nodeToUpdate.find('.metadata').height(`${maxMeta}px`);
+ }
+ if (maxFooter) {
+ $nodeToUpdate.find('.footer').height(`${maxFooter}px`);
+ }
+ });
+ });
+ }
+
+ nextTick(() => {
+ // Keeps the plugin descriptions the same height
+ const descriptions = $('.marketplace .plugin .description');
+ descriptions.dotdotdot({
+ after: 'a.more',
+ watch: 'window',
+ });
+
+ Matomo.helper.compileVueDirectives(descriptions); // have to recompile any vue directives
+
+ syncMaxHeight2('.marketplace .plugin');
+ });
+ },
+ methods: {
+ changePluginSort() {
+ MatomoUrl.updateUrl(
+ {
+ ...MatomoUrl.urlParsed.value,
+ query: '',
+ sort: this.pluginSort,
+ },
+ {
+ ...MatomoUrl.hashParsed.value,
+ query: '',
+ sort: this.pluginSort,
+ },
+ );
+ },
+ changePluginType() {
+ MatomoUrl.updateUrl(
+ {
+ ...MatomoUrl.urlParsed.value,
+ query: '',
+ show: this.pluginTypeFilter,
+ },
+ {
+ ...MatomoUrl.hashParsed.value,
+ query: '',
+ show: this.pluginTypeFilter,
+ },
+ );
+ },
+ },
+ computed: {
+ pluginSearchFormAction(): string {
+ return `?${MatomoUrl.stringify({
+ ...MatomoUrl.urlParsed.value,
+ sort: '',
+ embed: '0',
+ })}#?${MatomoUrl.stringify({
+ ...MatomoUrl.hashParsed.value,
+ sort: '',
+ embed: '0',
+ query: this.searchQuery,
+ })}`;
+ },
+ queryInputTitle(): string {
+ const plugins = lcfirst(translate('General_Plugins'));
+ return `${translate('General_Search')} ${this.numAvailablePlugins} ${plugins}...`;
+ },
+ },
+});
+</script>
diff --git a/plugins/Marketplace/vue/src/PluginName/PluginName.adapter.ts b/plugins/Marketplace/vue/src/PluginName/PluginName.adapter.ts
new file mode 100644
index 0000000000..1259800d45
--- /dev/null
+++ b/plugins/Marketplace/vue/src/PluginName/PluginName.adapter.ts
@@ -0,0 +1,34 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { IAttributes, IScope } from 'angular';
+import PluginName from './PluginName';
+
+function piwikPluginName() {
+ return {
+ restrict: 'A',
+ link(scope: IScope, element: JQuery, attrs: IAttributes) {
+ const binding = {
+ instance: null,
+ value: {
+ pluginName: attrs.piwikPluginName,
+ activePluginTab: attrs.activeplugintab,
+ },
+ oldValue: null,
+ modifiers: {},
+ dir: {},
+ };
+
+ PluginName.mounted(element[0], binding);
+ element.on('$destroy', () => {
+ PluginName.unmounted(element[0], binding);
+ });
+ },
+ };
+}
+
+window.angular.module('piwikApp').directive('piwikPluginName', piwikPluginName);
diff --git a/plugins/Marketplace/vue/src/PluginName/PluginName.ts b/plugins/Marketplace/vue/src/PluginName/PluginName.ts
new file mode 100644
index 0000000000..c12b4681ee
--- /dev/null
+++ b/plugins/Marketplace/vue/src/PluginName/PluginName.ts
@@ -0,0 +1,68 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { DirectiveBinding } from 'vue';
+import ClickEvent = JQuery.ClickEvent;
+
+window.broadcast.addPopoverHandler('browsePluginDetail', (value) => {
+ let pluginName = value;
+ let activeTab = null;
+
+ if (value.indexOf('!') !== -1) {
+ activeTab = value.substr(value.indexOf('!') + 1);
+ pluginName = value.substr(0, value.indexOf('!'));
+ }
+
+ let url = `module=Marketplace&action=pluginDetails&pluginName=${encodeURIComponent(pluginName)}`;
+ if (activeTab) {
+ url += `&activeTab=${encodeURIComponent(activeTab)}`;
+ }
+
+ window.Piwik_Popover.createPopupAndLoadUrl(url, 'details');
+});
+
+interface PluginNameDirectiveValue {
+ // input
+ pluginName: string;
+ activePluginTab: string;
+
+ // state
+ onClickHandler?: (event: ClickEvent) => void;
+}
+
+function onClickPluginNameLink(
+ binding: DirectiveBinding<PluginNameDirectiveValue>,
+ event: ClickEvent,
+) {
+ let { pluginName } = binding.value;
+ const { activePluginTab } = binding.value;
+
+ event.preventDefault();
+
+ if (activePluginTab) {
+ pluginName += `!${activePluginTab}`;
+ }
+
+ window.broadcast.propagateNewPopoverParameter('browsePluginDetail', pluginName);
+}
+
+const { $ } = window;
+
+export default {
+ mounted(element: HTMLElement, binding: DirectiveBinding<PluginNameDirectiveValue>): void {
+ const { pluginName } = binding.value;
+ if (!pluginName) {
+ return;
+ }
+
+ binding.value.onClickHandler = onClickPluginNameLink.bind(null, binding);
+ $(element).on('click', binding.value.onClickHandler!);
+ },
+ unmounted(element: HTMLElement, binding: DirectiveBinding<PluginNameDirectiveValue>): void {
+ $(element).off('click', binding.value.onClickHandler!);
+ },
+};
diff --git a/plugins/Marketplace/vue/src/index.ts b/plugins/Marketplace/vue/src/index.ts
index 0eb27f81ef..a26fdfd6fb 100644
--- a/plugins/Marketplace/vue/src/index.ts
+++ b/plugins/Marketplace/vue/src/index.ts
@@ -5,4 +5,8 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
+import './PluginName/PluginName.adapter';
+
+export { default as Marketplace } from './Marketplace/Marketplace.vue';
export { default as LicenseKey } from './LicenseKey/LicenseKey.vue';
+export { default as PluginName } from './PluginName/PluginName';
diff --git a/plugins/MobileAppMeasurable/lang/ga.json b/plugins/MobileAppMeasurable/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/MobileAppMeasurable/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/MobileAppMeasurable/lang/id.json b/plugins/MobileAppMeasurable/lang/id.json
index 783de365a1..495eb3d801 100644
--- a/plugins/MobileAppMeasurable/lang/id.json
+++ b/plugins/MobileAppMeasurable/lang/id.json
@@ -1,7 +1,7 @@
{
"MobileAppMeasurable": {
- "MobileApp": "Aplikasi Mobil",
- "MobileAppDescription": "Aplikasi seluler asli untuk iOS, Android, atau sistem operasi seluler lainnya.",
- "MobileApps": "Aplikasi Mobil"
+ "MobileApp": "Aplikasi Seluler",
+ "MobileAppDescription": "Aplikasi seluler untuk iOS, Android, atau sistem operasi seluler lainnya.",
+ "MobileApps": "Aplikasi Seluler"
}
}
diff --git a/plugins/MobileMessaging/MobileMessaging.php b/plugins/MobileMessaging/MobileMessaging.php
index 9be6bf8a45..7bce744459 100644
--- a/plugins/MobileMessaging/MobileMessaging.php
+++ b/plugins/MobileMessaging/MobileMessaging.php
@@ -65,7 +65,6 @@ class MobileMessaging extends \Piwik\Plugin
public function registerEvents()
{
return array(
- 'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'ScheduledReports.getReportParameters' => 'getReportParameters',
'ScheduledReports.validateReportParameters' => 'validateReportParameters',
@@ -86,15 +85,6 @@ class MobileMessaging extends \Piwik\Plugin
return true;
}
- /**
- * Get JavaScript files
- */
- public function getJsFiles(&$jsFiles)
- {
- $jsFiles[] = "plugins/MobileMessaging/angularjs/delegate-mobile-messaging-settings.controller.js";
- $jsFiles[] = "plugins/MobileMessaging/angularjs/manage-mobile-phone-numbers.controller.js";
- }
-
public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = "plugins/MobileMessaging/stylesheets/MobileMessagingSettings.less";
@@ -113,6 +103,18 @@ class MobileMessaging extends \Piwik\Plugin
$translationKeys[] = 'MobileMessaging_UserKey';
$translationKeys[] = 'General_Password';
$translationKeys[] = 'MobileMessaging_Settings_APIKey';
+ $translationKeys[] = 'MobileMessaging_Settings_LetUsersManageAPICredential';
+ $translationKeys[] = 'MobileMessaging_Settings_SelectCountry';
+ $translationKeys[] = 'MobileMessaging_Settings_CountryCode';
+ $translationKeys[] = 'MobileMessaging_Settings_PhoneNumber';
+ $translationKeys[] = 'MobileMessaging_Settings_EnterActivationCode';
+ $translationKeys[] = 'MobileMessaging_Settings_PhoneNumbers_Add';
+ $translationKeys[] = 'MobileMessaging_Settings_DelegatedPhoneNumbersOnlyUsedByYou';
+ $translationKeys[] = 'MobileMessaging_Settings_PhoneNumbers_Help';
+ $translationKeys[] = 'MobileMessaging_Settings_PhoneNumbers_CountryCode_Help';
+ $translationKeys[] = 'MobileMessaging_Settings_ManagePhoneNumbers';
+ $translationKeys[] = 'MobileMessaging_Settings_VerificationCodeJustSent';
+ $translationKeys[] = 'MobileMessaging_Settings_ValidatePhoneNumber';
}
public function validateReportParameters(&$parameters, $reportType)
diff --git a/plugins/MobileMessaging/angularjs/delegate-mobile-messaging-settings.controller.js b/plugins/MobileMessaging/angularjs/delegate-mobile-messaging-settings.controller.js
deleted file mode 100644
index 642802ac31..0000000000
--- a/plugins/MobileMessaging/angularjs/delegate-mobile-messaging-settings.controller.js
+++ /dev/null
@@ -1,39 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('DelegateMobileMessagingSettingsController', DelegateMobileMessagingSettingsController);
-
- DelegateMobileMessagingSettingsController.$inject = ['piwikApi', 'piwik'];
-
- function DelegateMobileMessagingSettingsController(piwikApi, piwik) {
-
- var self = this;
- this.isLoading = false;
-
- this.save = function () {
- this.isLoading = true;
-
- piwikApi.post(
- {method: 'MobileMessaging.setDelegatedManagement'},
- {delegatedManagement: (this.enabled == '1') ? 'true' : 'false'}
- ).then(function () {
-
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(_pk_translate('CoreAdminHome_SettingsSaveSuccess'), {
- id: 'mobileMessagingSettings', context: 'success'
- });
- notification.scrollToNotification();
-
- piwik.helper.redirect();
- self.isLoading = false;
- }, function () {
- self.isLoading = false;
- });
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/MobileMessaging/angularjs/manage-mobile-phone-numbers.controller.js b/plugins/MobileMessaging/angularjs/manage-mobile-phone-numbers.controller.js
deleted file mode 100644
index 587beb81f5..0000000000
--- a/plugins/MobileMessaging/angularjs/manage-mobile-phone-numbers.controller.js
+++ /dev/null
@@ -1,110 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('ManageMobilePhoneNumbersController', ManageMobilePhoneNumbersController);
-
- ManageMobilePhoneNumbersController.$inject = ['piwikApi', 'piwik'];
-
- function ManageMobilePhoneNumbersController(piwikApi, piwikk) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
-
- var self = this;
- this.isAddingPhonenumber = false;
- this.canAddNumber = false;
- this.isActivated = {};
-
- this.validateActivationCode = function(phoneNumber, index) {
- if (!this.validationCode || !this.validationCode[index] || this.validationCode[index] == '') {
- return;
- }
-
- var verificationCode = this.validationCode[index];
-
- var success = function (response) {
-
- self.isChangingPhoneNumber = false;
-
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
-
- if (!response || !response.value) {
- var message = _pk_translate('MobileMessaging_Settings_InvalidActivationCode');
- notification.show(message, {
- context: 'error',
- id: 'MobileMessaging_ValidatePhoneNumber'
- });
- }
- else {
- var message = _pk_translate('MobileMessaging_Settings_PhoneActivated')
- notification.show(message, {
- context: 'success',
- id: 'MobileMessaging_ValidatePhoneNumber'
- });
-
- self.isActivated[index] = true;
- }
-
- notification.scrollToNotification();
- };
-
- this.isChangingPhoneNumber = true;
-
- piwikApi.post(
- {method: 'MobileMessaging.validatePhoneNumber'},
- {phoneNumber: phoneNumber, verificationCode: verificationCode},
- {placeat: '#invalidVerificationCodeAjaxError'}
- ).then(success, function () {
- self.isChangingPhoneNumber = false;
- });
-
- }
-
- this.removePhoneNumber = function (phoneNumber) {
- if (!phoneNumber) {
- return;
- }
-
- this.isChangingPhoneNumber = true;
-
- piwikApi.post(
- {method: 'MobileMessaging.removePhoneNumber'},
- {phoneNumber: phoneNumber},
- {placeat: '#invalidVerificationCodeAjaxError'}
- ).then(function () {
- self.isChangingPhoneNumber = false;
- piwik.helper.redirect();
- }, function () {
- self.isChangingPhoneNumber = false;
- });
- }
-
- this.validateNewPhoneNumberFormat = function () {
- this.showSuspiciousPhoneNumber = $.trim(this.newPhoneNumber).lastIndexOf('0', 0) === 0;
- this.canAddNumber = !!this.newPhoneNumber && this.newPhoneNumber != '';
- };
-
- this.addPhoneNumber = function() {
- var phoneNumber = '+' + this.countryCallingCode + this.newPhoneNumber;
-
- if (this.canAddNumber && phoneNumber.length > 1) {
- this.isAddingPhonenumber = true;
-
- piwikApi.post(
- {method: 'MobileMessaging.addPhoneNumber'},
- {phoneNumber: phoneNumber},
- {placeat: '#ajaxErrorAddPhoneNumber'}
- ).then(function () {
- self.isAddingPhonenumber = false;
- piwik.helper.redirect();
- }, function () {
- self.isAddingPhonenumber = false;
- });
- }
- }
-
- }
-})(); \ No newline at end of file
diff --git a/plugins/MobileMessaging/angularjs/manage-sms-provider.controller.js b/plugins/MobileMessaging/angularjs/manage-sms-provider.controller.js
deleted file mode 100644
index 9fa5948cb0..0000000000
--- a/plugins/MobileMessaging/angularjs/manage-sms-provider.controller.js
+++ /dev/null
@@ -1,76 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('ManageSmsProviderController', ManageSmsProviderController);
-
- ManageSmsProviderController.$inject = ['piwikApi', 'piwik'];
-
- function ManageSmsProviderController(piwikApi, piwik) {
-
- var self = this;
- this.isDeletingAccount = false;
- this.isUpdatingAccount = false;
- this.showAccountForm = false;
- this.isUpdateAccountPossible = false;
- this.credentials = '{}';
-
- function deleteApiAccount() {
- self.isDeletingAccount = true;
-
- piwikApi.fetch(
- {method: 'MobileMessaging.deleteSMSAPICredential'},
- {placeat: '#ajaxErrorManageSmsProviderSettings'}
- ).then(function () {
- self.isDeletingAccount = false;
- piwik.helper.redirect();
- }, function () {
- self.isDeletingAccount = false;
- });
- }
-
- this.showUpdateAccount = function () {
- this.showAccountForm = true;
- };
-
- this.isUpdateAccountPossible = function () {
-
- var self = this;
- self.canBeUpdated = !!this.smsProvider;
-
- var credentials = angular.fromJson(this.credentials);
-
- angular.forEach(credentials, function(value, key) {
- if (value == '') {
- self.canBeUpdated = false;
- }
- });
-
- return self.canBeUpdated;
- };
-
- this.updateAccount = function () {
- if (this.isUpdateAccountPossible()) {
- this.isUpdatingAccount = true;
-
- piwikApi.post(
- {method: 'MobileMessaging.setSMSAPICredential'},
- {provider: this.smsProvider, credentials: angular.fromJson(this.credentials)},
- {placeat: '#ajaxErrorManageSmsProviderSettings'}
- ).then(function () {
- self.isUpdatingAccount = false;
- piwik.helper.redirect();
- }, function () {
- self.isUpdatingAccount = false;
- });
- }
- };
-
- this.deleteAccount = function () {
- piwikHelper.modalConfirm('#confirmDeleteAccount', {yes: deleteApiAccount});
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/MobileMessaging/angularjs/sms-provider-credentials.directive.js b/plugins/MobileMessaging/angularjs/sms-provider-credentials.directive.js
deleted file mode 100644
index 58fde7ddd8..0000000000
--- a/plugins/MobileMessaging/angularjs/sms-provider-credentials.directive.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div sms-provider-credentials provider="providername">
- */
-(function () {
- angular.module('piwikApp').directive('smsProviderCredentials', smsProviderCredentials);
-
- function smsProviderCredentials() {
-
- return {
- restrict: 'A',
- require:"^ngModel",
- transclude: true,
- scope: {
- provider: '=',
- credentials: '=value'
- },
- template: '<ng-include src="getTemplateUrl()"/>',
- controllerAs: 'ProviderCredentials',
- controller: function($scope) {
- $scope.getTemplateUrl = function() {
- return '?module=MobileMessaging&action=getCredentialFields&provider=' + $scope.provider;
- };
- },
- link: function(scope, elm, attrs, ctrl) {
- if (!ctrl) {
- return;
- }
-
- // view -> model
- scope.$watch('credentials', function (val, oldVal) {
- ctrl.$setViewValue(JSON.stringify(val));
- }, true);
-
- // unset credentials when new provider is shoosen
- scope.$watch('provider', function (val, oldVal) {
- if(val != oldVal) {
- scope.credentials = {};
- }
- }, true);
- }
- };
- }
-})();
diff --git a/plugins/MobileMessaging/lang/id.json b/plugins/MobileMessaging/lang/id.json
index 2c55592162..c33bb775f2 100644
--- a/plugins/MobileMessaging/lang/id.json
+++ b/plugins/MobileMessaging/lang/id.json
@@ -1,38 +1,48 @@
{
"MobileMessaging": {
- "Exception_UnknownProvider": "Nama penyedia '%1$s' tidak dikenal. Coba salah satu berikut ini sebagai pengganti: %2$s.",
- "MobileReport_AdditionalPhoneNumbers": "Anda dapat menambah nomor telepon dengan mengakses",
- "MobileReport_MobileMessagingSettingsLink": "halaman pengaturan Pesan Bergerak",
- "MobileReport_NoPhoneNumbers": "Harap aktifkan sekurangnya satu nomor telepon dengan mengakses",
- "MultiSites_Must_Be_Activated": "Untuk membangkitkan teks SMS untuk statistik situs Anda, harap mengaktifkan pengaya MultiSitus di Matomo.",
+ "Available_Credits": "Kredit yang tersedia: %1$s",
+ "Exception_UnknownProvider": "Nama penyedia '%1$s' tidak dikenal. Coba salah satu dari penyedia berikut ini sebagai pengganti: %2$s.",
+ "MobileReport_AdditionalPhoneNumbers": "Anda dapat menambahkan lebih banyak nomor telepon dengan mengakses",
+ "MobileReport_MobileMessagingSettingsLink": "halaman pengaturan Pesan Seluler",
+ "MobileReport_NoPhoneNumbers": "Silakan aktifkan setidaknya satu nomor telepon dengan mengakses",
+ "MultiSites_Must_Be_Activated": "Untuk menghasilkan teks SMS dari statistik situs web Anda, harap aktifkan plugin MultiSites di Matomo.",
"PhoneNumbers": "Nomor Telepon",
- "PluginDescription": "Buat dan unduh laporan SMS tersesuaikan dan kirimkan ke perangkat bergerak Anda secara harian, mingguan, atau bulanan.",
+ "PluginDescription": "Buat dan unduh laporan SMS khusus dan kirimkan ke ponsel Anda setiap hari, mingguan, atau bulanan.",
+ "SMS_Content_Too_Long": "[terlalu panjang]",
+ "SettingsMenu": "Pesan Seluler",
"Settings_APIKey": "Kunci API",
"Settings_CountryCode": "Kode Negara",
- "Settings_SelectCountry": "Pilih negara",
+ "Settings_CredentialInvalid": "Akun API SMS %1$s Anda telah dikonfigurasi, tetapi terjadi kesalahan saat mencoba untuk menerima kredit yang tersedia.",
"Settings_CredentialNotProvided": "Sebelum Anda dapat membuat dan mengelola nomor telepon, harap menghubungkan Matomo dengan Akun SMS Anda di atas.",
"Settings_CredentialNotProvidedByAdmin": "Sebelum Anda dapat membuat dan mengelola nomor telepon, harap tanyakan pengelola Anda untuk menghubungkan Matomo kepada sebuah Akun SMS.",
"Settings_CredentialProvided": "API SMS %s Anda berhasil diatur!",
- "Settings_DeleteAccountConfirm": "Apakah Anda yahkin ingin menghapus akun SMS ini?",
- "Settings_InvalidActivationCode": "Kode yang dimasukkan tidak sahih, harap coba lagi.",
- "Settings_LetUsersManageAPICredential": "Izinkan pengguna mengelola mandat API SMS mereka sendiri",
+ "Settings_DelegatedPhoneNumbersOnlyUsedByYou": "Nomor telepon yang dikonfigurasi hanya dapat dilihat dan digunakan oleh Anda dan bukan oleh pengguna lain.",
+ "Settings_DelegatedSmsProviderOnlyAppliesToYou": "Penyedia SMS yang dikonfigurasi hanya akan digunakan oleh Anda dan bukan oleh pengguna lainnya.",
+ "Settings_DeleteAccountConfirm": "Apakah Anda yakin ingin menghapus akun SMS ini?",
+ "Settings_EnterActivationCode": "Masukkan kode aktivasi",
+ "Settings_InvalidActivationCode": "Kode yang dimasukkan tidak valid, silakan coba lagi.",
+ "Settings_LetUsersManageAPICredential": "Memungkinkan pengguna untuk mengelola penyedia SMS mereka sendiri",
"Settings_LetUsersManageAPICredential_No_Help": "Seluruh pengguna dapat menerima Laporan SMS dan akan menggunakan kredit akun Anda.",
+ "Settings_LetUsersManageAPICredential_Yes_Help": "Setiap pengguna dapat mengatur Akun API SMS mereka sendiri dan tidak akan menggunakan kredit Anda.",
"Settings_ManagePhoneNumbers": "Kelola Nomor Telepon",
- "Settings_PhoneActivated": "Nomor telepon tersahkan! Anda sekarang dapat menerima SMS dengan statististik Anda.",
+ "Settings_PhoneActivated": "Nomor telepon divalidasi! Anda sekarang dapat menerima SMS yang berisi statistik Anda.",
"Settings_PhoneNumber": "Nomor Telepon",
- "Settings_PhoneNumbers_Add": "Tambah sebuah Nomor Telepon Baru",
+ "Settings_PhoneNumbers_Add": "Tambahkan Nomor Telepon baru",
+ "Settings_PhoneNumbers_CountryCode_Help": "Jika Anda tidak tahu kode negara telepon, Anda bisa mencarinya di sini.",
"Settings_PhoneNumbers_Help": "Sebelum menerima laporan SMS (pesan teks) dalam telepon, nomor telepon harus dimasukkan di bawah.",
+ "Settings_PhoneNumbers_HelpAdd": "Ketika Anda mengeklik \"Tambah\", SMS berisi kode akan dikirimkan ke ponsel. Pengguna yang menerima kode harus masuk ke Matomo, klik Pengaturan, lalu klik Pesan Seluler. Setelah memasukkan kode, pengguna dapat menerima laporan teks di ponsel mereka.",
"Settings_PleaseSignUp": "Untuk membuat laporan SMS dan menerima pesan pendek dengan statistik situs Anda dalam telepon seluler, harap mendaftar dengan API SMS dan masukkan informasi Anda di bawah.",
"Settings_SMSAPIAccount": "Kelola Akun API SMS",
"Settings_SMSProvider": "Penyedia SMS",
+ "Settings_SelectCountry": "Pilih negara",
"Settings_SuperAdmin": "Pengaturan Pengguna Super",
"Settings_SuspiciousPhoneNumber": "Bila Anda tidak menerima pesan teks, silakan coba tanpa awalan nol. Misal, %s",
"Settings_UpdateOrDeleteAccount": "Anda juga dapat %1$smemperbarui%2$s atau %3$smenghapus%4$s akun ini.",
- "Settings_ValidatePhoneNumber": "Sahkan",
- "SettingsMenu": "Pesan Bergerak",
- "SMS_Content_Too_Long": "[terlalu panjang]",
- "TopLinkTooltip": "Dapatkan Laporan Analitis Ramatraya dikirim ke kotak masuk surel atau telepon seluler Anda!",
- "TopMenu": "Laporan Surel & SMS",
- "VerificationText": "Kode adalah %1$s. Untuk mengesahkan nomor telepon Anda dan memperoleh laporan SMS Matomo, harap menyalin kode ini di borang yang daoat diraih melalui Matomo > %2$s > %3$s."
+ "Settings_ValidatePhoneNumber": "Mengesahkan",
+ "Settings_VerificationCodeJustSent": "Kami baru saja mengirim SMS ke nomor ini dengan kode: masukkan kode ini di atas dan klik \"Validasi\".",
+ "TopLinkTooltip": "Dapatkan Laporan Analisis Web yang dikirimkan ke kotak masuk surel atau ponsel Anda.",
+ "TopMenu": "Laporan Surel &amp; SMS",
+ "UserKey": "Kunci pengguna",
+ "VerificationText": "Kodenya adalah %1$s. Untuk memvalidasi nomor telepon Anda dan menerima laporan SMS Matomo, silakan salin kode ini dalam formulir yang dapat diakses melalui Matomo =&gt; %2$s =&gt; %3$s."
}
-} \ No newline at end of file
+}
diff --git a/plugins/MobileMessaging/templates/index.twig b/plugins/MobileMessaging/templates/index.twig
index 32549e9a55..e322654288 100644
--- a/plugins/MobileMessaging/templates/index.twig
+++ b/plugins/MobileMessaging/templates/index.twig
@@ -8,16 +8,11 @@
<div class="manageMobileMessagingSettings">
{% if isSuperUser %}
<div piwik-content-block content-title="{{ title|e('html_attr') }}">
- <div ng-controller="DelegateMobileMessagingSettingsController as delegateManagement">
- <div piwik-field uicontrol="radio" name="delegatedManagement"
- options="{{ delegateManagementOptions|json_encode }}"
- full-width="true"
- ng-model="delegateManagement.enabled"
- data-title="{{ 'MobileMessaging_Settings_LetUsersManageAPICredential'|translate|e('html_attr') }}"
- value="{% if delegatedManagement %}1{% else %}0{% endif %}">
- </div>
- <div piwik-save-button onconfirm="delegateManagement.save()" saving="delegateManagement.isLoading"></div>
- </div>
+ <div
+ vue-entry="MobileMessaging.DelegateMobileMessagingSettings"
+ delegate-management-options="{{ delegateManagementOptions|default(null)|json_encode|e('html_attr') }}"
+ delegated-management="{{ delegatedManagement|default(null)|json_encode|e('html_attr') }}"
+ ></div>
</div>
{% endif %}
@@ -42,124 +37,14 @@
{% endif %}
</p>
{% else %}
- <div ng-controller="ManageMobilePhoneNumbersController as managePhoneNumber">
-
- <p>{{ 'MobileMessaging_Settings_PhoneNumbers_Help'|translate }}</p>
-
- {% if isSuperUser %}
- <p>{{ 'MobileMessaging_Settings_DelegatedPhoneNumbersOnlyUsedByYou'|translate }}</p>
- {% endif %}
-
- <div class="row">
- <h3 class="col s12">{{ 'MobileMessaging_Settings_PhoneNumbers_Add'|translate }}</h3>
- </div>
-
- <div class="form-group row">
- <div class="col s12 m6">
- <div piwik-field uicontrol="select" name="countryCodeSelect"
- value="{{ defaultCallingCode }}"
- ng-model="managePhoneNumber.countryCallingCode"
- full-width="true"
- data-title="{{ 'MobileMessaging_Settings_SelectCountry'|translate|e('html_attr') }}"
- options='{{ countries|json_encode }}'>
- </div>
- </div>
- <div class="col s12 m6 form-help">
- {{ 'MobileMessaging_Settings_PhoneNumbers_CountryCode_Help'|translate }}
- </div>
- </div>
-
- <div class="form-group row addPhoneNumber">
- <div class="col s12 m6">
-
- <div class="countryCode left">
- <span class="countryCodeSymbol">+</span>
- <div piwik-field uicontrol="text" name="countryCallingCode"
- full-width="true"
- ng-model="managePhoneNumber.countryCallingCode"
- maxlength="4"
- data-title="{{ 'MobileMessaging_Settings_CountryCode'|translate }}">
- </div>
- </div>
- <div class="phoneNumber left">
- <div piwik-field uicontrol="text" name="newPhoneNumber"
- ng-model="managePhoneNumber.newPhoneNumber"
- ng-change="managePhoneNumber.validateNewPhoneNumberFormat()"
- full-width="true"
- maxlength="80"
- data-title="{{ 'MobileMessaging_Settings_PhoneNumber'|translate }}">
- </div>
- </div>
- <div class="addNumber left valign-wrapper">
- <div piwik-save-button
- data-disabled="!managePhoneNumber.canAddNumber || managePhoneNumber.isAddingPhonenumber"
- onconfirm="managePhoneNumber.addPhoneNumber()"
- class="valign" value='{{ 'General_Add'|translate }}'></div>
- </div>
-
- <div piwik-alert="warning"
- id="suspiciousPhoneNumber"
- ng-show="managePhoneNumber.showSuspiciousPhoneNumber">
- {{ 'MobileMessaging_Settings_SuspiciousPhoneNumber'|translate('54184032') }}
- </div>
-
- </div>
- <div class="col s12 m6 form-help">
- {{ strHelpAddPhone }}
- </div>
- </div>
-
- <div id="ajaxErrorAddPhoneNumber"></div>
- <div piwik-activity-indicator loading="managePhoneNumber.isAddingPhonenumber"></div>
-
- {% if phoneNumbers|length > 0 %}
- <div class="row"><h3 class="col s12">{{ 'MobileMessaging_Settings_ManagePhoneNumbers'|translate }}</h3></div>
- {% endif %}
-
- {% for phoneNumber, validated in phoneNumbers %}
- <div class="form-group row">
- <div class="col s12 m6">
- <span class='phoneNumber'>{{ phoneNumber }}</span>
-
- {% if not validated %}
- <input type="text"
- ng-hide="managePhoneNumber.isActivated[{{ loop.index }}]"
- ng-model="managePhoneNumber.validationCode[{{ loop.index }}]"
- class='verificationCode'
- placeholder="{{ 'MobileMessaging_Settings_EnterActivationCode'|translate|e('html_attr') }}"/>
- <div piwik-save-button
- ng-hide="managePhoneNumber.isActivated[{{ loop.index }}]"
- value='{{ 'MobileMessaging_Settings_ValidatePhoneNumber'|translate }}'
- data-disabled="!managePhoneNumber.validationCode[{{ loop.index }}] || managePhoneNumber.isChangingPhoneNumber"
- onconfirm='managePhoneNumber.validateActivationCode({{ phoneNumber|json_encode }}, {{ loop.index }})'
- ></div>
- {% endif %}
-
- <div piwik-save-button
- value='{{ 'General_Remove'|translate }}'
- data-disabled="managePhoneNumber.isChangingPhoneNumber"
- onconfirm="managePhoneNumber.removePhoneNumber({{ phoneNumber|json_encode }})"
- ></div>
- </div>
-
- {% if not validated %}
- <div class="form-help col s12 m6">
- <div ng-hide="managePhoneNumber.isActivated[{{ loop.index }}]">
- {{ 'MobileMessaging_Settings_VerificationCodeJustSent'|translate }}
- </div>
- &nbsp;
- </div>
- {% endif %}
- </div>
- {% endfor %}
-
- {% import 'ajaxMacros.twig' as ajax %}
- {{ ajax.errorDiv('invalidVerificationCodeAjaxError') }}
-
- <div piwik-activity-indicator loading="managePhoneNumber.isChangingPhoneNumber"></div>
-
- </div>
-
+ <div
+ vue-entry="MobileMessaging.ManageMobilePhoneNumbers"
+ is-super-user="{{ isSuperUser|default(null)|json_encode|e('html_attr') }}"
+ default-calling-code="{{ defaultCallingCode|default(null)|json_encode|e('html_attr') }}"
+ countries="{{ countries|default(null)|json_encode|e('html_attr') }}"
+ str-help-add-phone="{{ strHelpAddPhone|default(null)|json_encode|e('html_attr') }}"
+ phone-numbers="{{ phoneNumbers|default(null)|json_encode|e('html_attr') }}"
+ ></div>
{% endif %}
</div>
diff --git a/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js b/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js
index 259a4a972c..ce80a64e2d 100644
--- a/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js
+++ b/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.js
@@ -127,6 +127,8 @@ __webpack_require__.r(__webpack_exports__);
// EXPORTS
__webpack_require__.d(__webpack_exports__, "ManageSmsProvider", function() { return /* reexport */ ManageSmsProvider; });
__webpack_require__.d(__webpack_exports__, "SmsProviderCredentials", function() { return /* reexport */ SmsProviderCredentials; });
+__webpack_require__.d(__webpack_exports__, "DelegateMobileMessagingSettings", function() { return /* reexport */ DelegateMobileMessagingSettings; });
+__webpack_require__.d(__webpack_exports__, "ManageMobilePhoneNumbers", function() { return /* reexport */ ManageMobilePhoneNumbers; });
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
// This file is imported into lib/wc client bundles.
@@ -311,10 +313,10 @@ SmsProviderCredentialsvue_type_script_lang_ts.render = render
}
}
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=template&id=e42e6e40
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=template&id=d55b293c
-var ManageSmsProvidervue_type_template_id_e42e6e40_hoisted_1 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+var ManageSmsProvidervue_type_template_id_d55b293c_hoisted_1 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
id: "ajaxErrorManageSmsProviderSettings"
}, null, -1);
@@ -341,7 +343,7 @@ var _hoisted_9 = {
id: "accountForm"
};
var _hoisted_10 = ["innerHTML"];
-function ManageSmsProvidervue_type_template_id_e42e6e40_render(_ctx, _cache, $props, $setup, $data, $options) {
+function ManageSmsProvidervue_type_template_id_d55b293c_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
@@ -354,8 +356,8 @@ function ManageSmsProvidervue_type_template_id_e42e6e40_render(_ctx, _cache, $pr
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
loading: _ctx.isDeletingAccount
- }, null, 8, ["loading"]), ManageSmsProvidervue_type_template_id_e42e6e40_hoisted_1, _ctx.credentialSupplied ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_2, [_ctx.credentialError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_CredentialInvalid', _ctx.provider)), 1), _hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.credentialError), 1)])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_CredentialProvided', _ctx.provider)) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.creditLeft), 1)), _hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.updateOrDeleteAccountText,
+ }, null, 8, ["loading"]), ManageSmsProvidervue_type_template_id_d55b293c_hoisted_1, _ctx.credentialSupplied ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", _hoisted_2, [_ctx.credentialError ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_CredentialInvalid', _ctx.provider)), 1), _hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.credentialError), 1)])) : (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", _hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_CredentialProvided', _ctx.provider)) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.creditLeft), 1)), _hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.updateOrDeleteAccountText),
onClick: _cache[0] || (_cache[0] = function ($event) {
return _ctx.onUpdateOrDeleteClick($event);
})
@@ -390,7 +392,7 @@ function ManageSmsProvidervue_type_template_id_e42e6e40_render(_ctx, _cache, $pr
innerHTML: _ctx.$sanitize(_ctx.currentProviderDescription)
}, null, 8, _hoisted_10)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.credentialSupplied || _ctx.showAccountForm], [_directive_form]])]);
}
-// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=template&id=e42e6e40
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=template&id=d55b293c
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue?vue&type=script&lang=ts
@@ -521,9 +523,401 @@ function ManageSmsProvidervue_type_template_id_e42e6e40_render(_ctx, _cache, $pr
-ManageSmsProvidervue_type_script_lang_ts.render = ManageSmsProvidervue_type_template_id_e42e6e40_render
+ManageSmsProvidervue_type_script_lang_ts.render = ManageSmsProvidervue_type_template_id_d55b293c_render
/* harmony default export */ var ManageSmsProvider = (ManageSmsProvidervue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue?vue&type=template&id=8e4eafcc
+
+function DelegateMobileMessagingSettingsvue_type_template_id_8e4eafcc_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "radio",
+ name: "delegatedManagement",
+ title: _ctx.translate('MobileMessaging_Settings_LetUsersManageAPICredential'),
+ modelValue: _ctx.enabled,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.enabled = $event;
+ }),
+ "full-width": true,
+ options: _ctx.delegateManagementOptions
+ }, null, 8, ["title", "modelValue", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ onConfirm: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.save();
+ }),
+ saving: _ctx.isLoading
+ }, null, 8, ["saving"])]);
+}
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue?vue&type=template&id=8e4eafcc
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue?vue&type=script&lang=ts
+
+
+
+/* harmony default export */ var DelegateMobileMessagingSettingsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ delegateManagementOptions: {
+ type: Array,
+ required: true
+ },
+ delegatedManagement: [Number, Boolean]
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"]
+ },
+ data: function data() {
+ return {
+ isLoading: false,
+ enabled: this.delegatedManagement ? 1 : 0
+ };
+ },
+ methods: {
+ save: function save() {
+ var _this = this;
+
+ this.isLoading = true;
+ external_CoreHome_["AjaxHelper"].post({
+ method: 'MobileMessaging.setDelegatedManagement'
+ }, {
+ delegatedManagement: this.enabled && this.enabled !== '0' ? 'true' : 'false'
+ }).then(function () {
+ var notificationInstanceId = external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('CoreAdminHome_SettingsSaveSuccess'),
+ id: 'mobileMessagingSettings',
+ type: 'transient',
+ context: 'success'
+ });
+ external_CoreHome_["NotificationsStore"].scrollToNotification(notificationInstanceId);
+ external_CoreHome_["Matomo"].helper.redirect();
+ }).finally(function () {
+ _this.isLoading = false;
+ });
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue
+
+
+
+DelegateMobileMessagingSettingsvue_type_script_lang_ts.render = DelegateMobileMessagingSettingsvue_type_template_id_8e4eafcc_render
+
+/* harmony default export */ var DelegateMobileMessagingSettings = (DelegateMobileMessagingSettingsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MobileMessaging/vue/src/ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue?vue&type=template&id=373eda9d
+
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_1 = {
+ key: 0
+};
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_2 = {
+ class: "row"
+};
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_3 = {
+ class: "col s12"
+};
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_4 = {
+ class: "form-group row"
+};
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_5 = {
+ class: "col s12 m6"
+};
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_6 = {
+ class: "col s12 m6 form-help"
+};
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_7 = {
+ class: "form-group row addPhoneNumber"
+};
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_8 = {
+ class: "col s12 m6"
+};
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_9 = {
+ class: "countryCode left"
+};
+
+var ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_10 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "countryCodeSymbol"
+}, "+", -1);
+
+var _hoisted_11 = {
+ class: "phoneNumber left"
+};
+var _hoisted_12 = {
+ class: "addNumber left valign-wrapper"
+};
+var _hoisted_13 = {
+ class: "col s12 m6 form-help"
+};
+
+var _hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ id: "ajaxErrorAddPhoneNumber"
+}, null, -1);
+
+var _hoisted_15 = {
+ key: 1,
+ class: "row"
+};
+var _hoisted_16 = {
+ class: "col s12"
+};
+var _hoisted_17 = {
+ class: "col s12 m6"
+};
+var _hoisted_18 = {
+ class: "phoneNumber"
+};
+var _hoisted_19 = ["onUpdate:modelValue", "placeholder"];
+var _hoisted_20 = {
+ key: 0,
+ class: "form-help col s12 m6"
+};
+
+var _hoisted_21 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])("   ");
+
+var _hoisted_22 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ id: "invalidVerificationCodeAjaxError",
+ style: {
+ "display": "none"
+ }
+}, null, -1);
+
+function ManageMobilePhoneNumbersvue_type_template_id_373eda9d_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _component_Alert = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Alert");
+
+ var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_PhoneNumbers_Help')), 1), _ctx.isSuperUser ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_1, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_DelegatedPhoneNumbersOnlyUsedByYou')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_3, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_PhoneNumbers_Add')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "countryCodeSelect",
+ title: _ctx.translate('MobileMessaging_Settings_SelectCountry'),
+ modelValue: _ctx.countryCallingCode,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.countryCallingCode = $event;
+ }),
+ "full-width": true,
+ options: _ctx.countries
+ }, null, 8, ["title", "modelValue", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_PhoneNumbers_CountryCode_Help')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_9, [ManageMobilePhoneNumbersvue_type_template_id_373eda9d_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "countryCallingCode",
+ title: _ctx.translate('MobileMessaging_Settings_CountryCode'),
+ modelValue: _ctx.countryCallingCode,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.countryCallingCode = $event;
+ }),
+ "full-width": true,
+ maxlength: 4
+ }, null, 8, ["title", "modelValue"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "newPhoneNumber",
+ modelValue: _ctx.newPhoneNumber,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.newPhoneNumber = $event;
+ }),
+ title: _ctx.translate('MobileMessaging_Settings_PhoneNumber'),
+ "full-width": true,
+ maxlength: 80
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ class: "valign",
+ disabled: !_ctx.canAddNumber || _ctx.isAddingPhonenumber,
+ onConfirm: _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.addPhoneNumber();
+ }),
+ value: _ctx.translate('General_Add')
+ }, null, 8, ["disabled", "value"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Alert, {
+ severity: "warning",
+ id: "suspiciousPhoneNumber"
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_SuspiciousPhoneNumber', '54184032')), 1)];
+ }),
+ _: 1
+ }, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showSuspiciousPhoneNumber]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.strHelpAddPhone), 1)]), _hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ loading: _ctx.isAddingPhonenumber
+ }, null, 8, ["loading"]), Object.keys(_ctx.phoneNumbers || {}).length > 0 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", _hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_ManagePhoneNumbers')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.phoneNumbers || [], function (validated, phoneNumber, index) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
+ class: "form-group row",
+ key: index
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", _hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(phoneNumber), 1), !validated && !_ctx.isActivated[index] ? Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("input", {
+ key: 0,
+ type: "text",
+ class: "verificationCode",
+ "onUpdate:modelValue": function onUpdateModelValue($event) {
+ return _ctx.validationCode[index] = $event;
+ },
+ placeholder: _ctx.translate('MobileMessaging_Settings_EnterActivationCode'),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, null, 8, _hoisted_19)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelText"], _ctx.validationCode[index]]]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !validated && !_ctx.isActivated[index] ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createBlock"])(_component_SaveButton, {
+ key: 1,
+ disabled: !_ctx.validationCode[index] || _ctx.isChangingPhoneNumber,
+ onConfirm: function onConfirm($event) {
+ return _ctx.validateActivationCode(phoneNumber, index);
+ },
+ value: _ctx.translate('MobileMessaging_Settings_ValidatePhoneNumber')
+ }, null, 8, ["disabled", "onConfirm", "value"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ disabled: _ctx.isChangingPhoneNumber,
+ onConfirm: function onConfirm($event) {
+ return _ctx.removePhoneNumber(phoneNumber);
+ },
+ value: _ctx.translate('General_Remove'),
+ style: {
+ "margin-left": "3.5px"
+ }
+ }, null, 8, ["disabled", "onConfirm", "value"])]), !validated && !_ctx.isActivated[index] ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('MobileMessaging_Settings_VerificationCodeJustSent')), 1), _hoisted_21])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]);
+ }), 128)), _hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ loading: _ctx.isChangingPhoneNumber
+ }, null, 8, ["loading"])]);
+}
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue?vue&type=template&id=373eda9d
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/MobileMessaging/vue/src/ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue?vue&type=script&lang=ts
+
+
+
+/* harmony default export */ var ManageMobilePhoneNumbersvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ isSuperUser: Boolean,
+ defaultCallingCode: String,
+ countries: {
+ type: Array,
+ required: true
+ },
+ strHelpAddPhone: {
+ type: String,
+ required: true
+ },
+ phoneNumbers: Object
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"],
+ Alert: external_CoreHome_["Alert"],
+ ActivityIndicator: external_CoreHome_["ActivityIndicator"]
+ },
+ data: function data() {
+ return {
+ isAddingPhonenumber: false,
+ isChangingPhoneNumber: false,
+ isActivated: {},
+ countryCallingCode: this.defaultCallingCode || '',
+ newPhoneNumber: '',
+ validationCode: {}
+ };
+ },
+ methods: {
+ validateActivationCode: function validateActivationCode(phoneNumber, index) {
+ var _this = this;
+
+ if (!this.validationCode[index]) {
+ return;
+ }
+
+ var verificationCode = this.validationCode[index];
+ this.isChangingPhoneNumber = true;
+ external_CoreHome_["AjaxHelper"].post({
+ method: 'MobileMessaging.validatePhoneNumber'
+ }, {
+ phoneNumber: phoneNumber,
+ verificationCode: verificationCode
+ }, {
+ errorElement: '#invalidVerificationCodeAjaxError'
+ }).then(function (response) {
+ _this.isChangingPhoneNumber = false;
+ var notificationInstanceId;
+
+ if (!response || !response.value) {
+ var message = Object(external_CoreHome_["translate"])('MobileMessaging_Settings_InvalidActivationCode');
+ notificationInstanceId = external_CoreHome_["NotificationsStore"].show({
+ message: message,
+ context: 'error',
+ id: 'MobileMessaging_ValidatePhoneNumber',
+ type: 'transient'
+ });
+ } else {
+ var _message = Object(external_CoreHome_["translate"])('MobileMessaging_Settings_PhoneActivated');
+
+ notificationInstanceId = external_CoreHome_["NotificationsStore"].show({
+ message: _message,
+ context: 'success',
+ id: 'MobileMessaging_ValidatePhoneNumber',
+ type: 'transient'
+ });
+ _this.isActivated[index] = true;
+ }
+
+ external_CoreHome_["NotificationsStore"].scrollToNotification(notificationInstanceId);
+ }).finally(function () {
+ _this.isChangingPhoneNumber = false;
+ });
+ },
+ removePhoneNumber: function removePhoneNumber(phoneNumber) {
+ var _this2 = this;
+
+ if (!phoneNumber) {
+ return;
+ }
+
+ this.isChangingPhoneNumber = true;
+ external_CoreHome_["AjaxHelper"].post({
+ method: 'MobileMessaging.removePhoneNumber'
+ }, {
+ phoneNumber: phoneNumber
+ }, {
+ errorElement: '#invalidVerificationCodeAjaxError'
+ }).then(function () {
+ _this2.isChangingPhoneNumber = false;
+ external_CoreHome_["Matomo"].helper.redirect();
+ }).finally(function () {
+ _this2.isChangingPhoneNumber = false;
+ });
+ },
+ addPhoneNumber: function addPhoneNumber() {
+ var _this3 = this;
+
+ var phoneNumber = "+".concat(this.countryCallingCode).concat(this.newPhoneNumber);
+
+ if (this.canAddNumber && phoneNumber.length > 1) {
+ this.isAddingPhonenumber = true;
+ external_CoreHome_["AjaxHelper"].post({
+ method: 'MobileMessaging.addPhoneNumber'
+ }, {
+ phoneNumber: phoneNumber
+ }, {
+ errorElement: '#ajaxErrorAddPhoneNumber'
+ }).then(function () {
+ _this3.isAddingPhonenumber = false;
+ external_CoreHome_["Matomo"].helper.redirect();
+ }).finally(function () {
+ _this3.isAddingPhonenumber = false;
+ });
+ }
+ }
+ },
+ computed: {
+ showSuspiciousPhoneNumber: function showSuspiciousPhoneNumber() {
+ return this.newPhoneNumber.trim().lastIndexOf('0', 0) === 0;
+ },
+ canAddNumber: function canAddNumber() {
+ return !!this.newPhoneNumber && this.newPhoneNumber !== '';
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue
+
+
+
+ManageMobilePhoneNumbersvue_type_script_lang_ts.render = ManageMobilePhoneNumbersvue_type_template_id_373eda9d_render
+
+/* harmony default export */ var ManageMobilePhoneNumbers = (ManageMobilePhoneNumbersvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/MobileMessaging/vue/src/index.ts
/*!
* Matomo - free/libre analytics platform
@@ -534,6 +928,8 @@ ManageSmsProvidervue_type_script_lang_ts.render = ManageSmsProvidervue_type_temp
+
+
// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
diff --git a/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js b/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js
index a9ba483777..b023258275 100644
--- a/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js
+++ b/plugins/MobileMessaging/vue/dist/MobileMessaging.umd.min.js
@@ -1,10 +1,10 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["MobileMessaging"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["MobileMessaging"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/MobileMessaging/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ManageSmsProvider",(function(){return V})),n.d(t,"SmsProviderCredentials",(function(){return m})),"undefined"!==typeof window){var r=window.document.currentScript,i=r&&r.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var o=n("8bbf"),c=n("19dc");function l(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var a={key:0};function d(e,t,n,r,i,c){var d=Object(o["resolveComponent"])("Field");return e.fields?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",a,[(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.fields,(function(t){var n;return Object(o["openBlock"])(),Object(o["createBlock"])(d,{key:t.name,uicontrol:t.type,name:t.name,"model-value":null===(n=e.modelValue)||void 0===n?void 0:n[t.name],"onUpdate:modelValue":function(n){return e.$emit("update:modelValue",Object.assign(Object.assign({},e.modelValue),{},l({},t.name,n)))},title:e.translate(t.title)},null,8,["uicontrol","name","model-value","onUpdate:modelValue","title"])})),128))])):Object(o["createCommentVNode"])("",!0)}var s=n("a5a2"),u=Object(o["reactive"])({}),p=Object(o["defineComponent"])({props:{provider:{type:String,required:!0},modelValue:{type:Object,required:!0}},emits:["update:modelValue"],components:{Field:s["Field"]},watch:{provider:function(){this.$emit("update:modelValue",{}),this.getCredentialFields()}},created:function(){this.getCredentialFields()},methods:{getCredentialFields:function(){var e=this;u[this.provider]||c["AjaxHelper"].fetch({module:"MobileMessaging",action:"getCredentialFields",provider:this.provider}).then((function(t){u[e.provider]=t}))}},computed:{fields:function(){return u[this.provider]}}});p.render=d;var m=p,v=(Object(c["createAngularJsAdapter"])({component:m,scope:{provider:{angularJsBind:"="},credentials:{angularJsBind:"=value"}},directiveName:"smsProviderCredentials",transclude:!0,events:{"update:modelValue":function(e,t,n,r,i,o,c){var l=o?o.$viewValue:n.value;e!==l&&c((function(){o?(o.$setViewValue(e),o.$render()):n.value=e}))}},postCreate:function(e,t,n,r,i){var l=i;l?(l.$render=function(){Object(o["nextTick"])((function(){e.modelValue=Object(c["removeAngularJsSpecificProperties"])(l.$viewValue)}))},"undefined"!==typeof t.value?l.$setViewValue(t.value):l.$setViewValue(e.modelValue)):t.$watch("value",(function(t){t!==e.modelValue&&Object(o["nextTick"])((function(){e.modelValue=t}))}))}}),Object(o["createElementVNode"])("div",{id:"ajaxErrorManageSmsProviderSettings"},null,-1)),f={key:0},b={key:0},g=Object(o["createElementVNode"])("br",null,null,-1),j={key:1},O=Object(o["createElementVNode"])("br",null,null,-1),h=["innerHTML"],A={key:1},S={id:"accountForm"},y=["innerHTML"];
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["MobileMessaging"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["MobileMessaging"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/MobileMessaging/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ManageSmsProvider",(function(){return y})),n.d(t,"SmsProviderCredentials",(function(){return b})),n.d(t,"DelegateMobileMessagingSettings",(function(){return E})),n.d(t,"ManageMobilePhoneNumbers",(function(){return ee})),"undefined"!==typeof window){var o=window.document.currentScript,i=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var r=n("8bbf"),l=n("19dc");function a(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}var c={key:0};function s(e,t,n,o,i,l){var s=Object(r["resolveComponent"])("Field");return e.fields?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",c,[(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.fields,(function(t){var n;return Object(r["openBlock"])(),Object(r["createBlock"])(s,{key:t.name,uicontrol:t.type,name:t.name,"model-value":null===(n=e.modelValue)||void 0===n?void 0:n[t.name],"onUpdate:modelValue":function(n){return e.$emit("update:modelValue",Object.assign(Object.assign({},e.modelValue),{},a({},t.name,n)))},title:e.translate(t.title)},null,8,["uicontrol","name","model-value","onUpdate:modelValue","title"])})),128))])):Object(r["createCommentVNode"])("",!0)}var d=n("a5a2"),u=Object(r["reactive"])({}),m=Object(r["defineComponent"])({props:{provider:{type:String,required:!0},modelValue:{type:Object,required:!0}},emits:["update:modelValue"],components:{Field:d["Field"]},watch:{provider:function(){this.$emit("update:modelValue",{}),this.getCredentialFields()}},created:function(){this.getCredentialFields()},methods:{getCredentialFields:function(){var e=this;u[this.provider]||l["AjaxHelper"].fetch({module:"MobileMessaging",action:"getCredentialFields",provider:this.provider}).then((function(t){u[e.provider]=t}))}},computed:{fields:function(){return u[this.provider]}}});m.render=s;var b=m,p=(Object(l["createAngularJsAdapter"])({component:b,scope:{provider:{angularJsBind:"="},credentials:{angularJsBind:"=value"}},directiveName:"smsProviderCredentials",transclude:!0,events:{"update:modelValue":function(e,t,n,o,i,r,l){var a=r?r.$viewValue:n.value;e!==a&&l((function(){r?(r.$setViewValue(e),r.$render()):n.value=e}))}},postCreate:function(e,t,n,o,i){var a=i;a?(a.$render=function(){Object(r["nextTick"])((function(){e.modelValue=Object(l["removeAngularJsSpecificProperties"])(a.$viewValue)}))},"undefined"!==typeof t.value?a.$setViewValue(t.value):a.$setViewValue(e.modelValue)):t.$watch("value",(function(t){t!==e.modelValue&&Object(r["nextTick"])((function(){e.modelValue=t}))}))}}),Object(r["createElementVNode"])("div",{id:"ajaxErrorManageSmsProviderSettings"},null,-1)),g={key:0},v={key:0},f=Object(r["createElementVNode"])("br",null,null,-1),h={key:1},j=Object(r["createElementVNode"])("br",null,null,-1),O=["innerHTML"],N={key:1},C={id:"accountForm"},M=["innerHTML"];
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function M(e,t,n,r,i,c){var l=Object(o["resolveComponent"])("ActivityIndicator"),a=Object(o["resolveComponent"])("Field"),d=Object(o["resolveComponent"])("SmsProviderCredentials"),s=Object(o["resolveComponent"])("SaveButton"),u=Object(o["resolveDirective"])("form");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",null,[Object(o["createVNode"])(l,{loading:e.isDeletingAccount},null,8,["loading"]),v,e.credentialSupplied?(Object(o["openBlock"])(),Object(o["createElementBlock"])("p",f,[e.credentialError?(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",b,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("MobileMessaging_Settings_CredentialInvalid",e.provider)),1),g,Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.credentialError),1)])):(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",j,Object(o["toDisplayString"])(e.translate("MobileMessaging_Settings_CredentialProvided",e.provider))+" "+Object(o["toDisplayString"])(e.creditLeft),1)),O,Object(o["createElementVNode"])("span",{innerHTML:e.updateOrDeleteAccountText,onClick:t[0]||(t[0]=function(t){return e.onUpdateOrDeleteClick(t)})},null,8,h)])):(Object(o["openBlock"])(),Object(o["createElementBlock"])("p",A,Object(o["toDisplayString"])(e.translate("MobileMessaging_Settings_PleaseSignUp")),1)),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",S,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(a,{uicontrol:"select",name:"smsProviders",modelValue:e.smsProvider,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.smsProvider=t}),title:e.translate("MobileMessaging_Settings_SMSProvider"),options:e.smsProviderOptions,value:e.provider},null,8,["modelValue","title","options","value"])]),Object(o["createVNode"])(d,{provider:e.smsProvider,modelValue:e.credentials,"onUpdate:modelValue":[t[2]||(t[2]=function(t){return e.credentials=t}),t[3]||(t[3]=function(t){e.credentials=t})],"model-value":e.credentials},null,8,["provider","modelValue","model-value"]),Object(o["createVNode"])(s,{id:"apiAccountSubmit",disabled:!e.isUpdateAccountPossible,saving:e.isUpdatingAccount,onConfirm:t[4]||(t[4]=function(t){return e.updateAccount()})},null,8,["disabled","saving"]),Object(o["createElementVNode"])("div",{class:"providerDescription",innerHTML:e.$sanitize(e.currentProviderDescription)},null,8,y)],512),[[o["vShow"],!e.credentialSupplied||e.showAccountForm],[u]])])}var P=Object(o["defineComponent"])({props:{credentialSupplied:Boolean,credentialError:String,provider:String,creditLeft:[Number,String],smsProviderOptions:{type:Object,required:!0},smsProviders:{type:Object,required:!0}},components:{ActivityIndicator:c["ActivityIndicator"],Field:s["Field"],SaveButton:s["SaveButton"],SmsProviderCredentials:m},directives:{Form:s["Form"]},data:function(){return{isDeletingAccount:!1,isUpdatingAccount:!1,showAccountForm:!1,credentials:{},smsProvider:this.provider}},methods:{deleteApiAccount:function(){var e=this;this.isDeletingAccount=!0,c["AjaxHelper"].fetch({method:"MobileMessaging.deleteSMSAPICredential"},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){c["Matomo"].helper.redirect()})).finally((function(){e.isDeletingAccount=!1}))},showUpdateAccount:function(){this.showAccountForm=!0},updateAccount:function(){var e=this;this.isUpdateAccountPossible&&(this.isUpdatingAccount=!0,c["AjaxHelper"].post({method:"MobileMessaging.setSMSAPICredential"},{provider:this.smsProvider,credentials:this.credentials},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){c["Matomo"].helper.redirect()})).finally((function(){e.isUpdatingAccount=!1})))},deleteAccount:function(){var e=this;c["Matomo"].helper.modalConfirm("#confirmDeleteAccount",{yes:function(){e.isDeletingAccount=!0,c["AjaxHelper"].fetch({method:"MobileMessaging.deleteSMSAPICredential"},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){e.isDeletingAccount=!1,c["Matomo"].helper.redirect()})).finally((function(){e.isDeletingAccount=!1}))}})},onUpdateOrDeleteClick:function(e){var t=e.target;"displayAccountForm"===t.id?this.showUpdateAccount():"deleteAccount"===t.id&&this.deleteAccount()}},computed:{isUpdateAccountPossible:function(){return!!this.smsProvider&&Object.keys(this.credentials).length>0&&Object.values(this.credentials).every((function(e){return!!e}))},updateOrDeleteAccountText:function(){return Object(c["translate"])("MobileMessaging_Settings_UpdateOrDeleteAccount",'<a id="displayAccountForm">',"</a>",'<a id="deleteAccount">',"</a>")},currentProviderDescription:function(){return this.smsProvider&&this.smsProviders?this.smsProviders[this.smsProvider]:""}}});P.render=M;var V=P;
+ */function V(e,t,n,o,i,l){var a=Object(r["resolveComponent"])("ActivityIndicator"),c=Object(r["resolveComponent"])("Field"),s=Object(r["resolveComponent"])("SmsProviderCredentials"),d=Object(r["resolveComponent"])("SaveButton"),u=Object(r["resolveDirective"])("form");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",null,[Object(r["createVNode"])(a,{loading:e.isDeletingAccount},null,8,["loading"]),p,e.credentialSupplied?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",g,[e.credentialError?(Object(r["openBlock"])(),Object(r["createElementBlock"])("span",v,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_CredentialInvalid",e.provider)),1),f,Object(r["createTextVNode"])(" "+Object(r["toDisplayString"])(e.credentialError),1)])):(Object(r["openBlock"])(),Object(r["createElementBlock"])("span",h,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_CredentialProvided",e.provider))+" "+Object(r["toDisplayString"])(e.creditLeft),1)),j,Object(r["createElementVNode"])("span",{innerHTML:e.$sanitize(e.updateOrDeleteAccountText),onClick:t[0]||(t[0]=function(t){return e.onUpdateOrDeleteClick(t)})},null,8,O)])):(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",N,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_PleaseSignUp")),1)),Object(r["withDirectives"])(Object(r["createElementVNode"])("div",C,[Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(c,{uicontrol:"select",name:"smsProviders",modelValue:e.smsProvider,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.smsProvider=t}),title:e.translate("MobileMessaging_Settings_SMSProvider"),options:e.smsProviderOptions,value:e.provider},null,8,["modelValue","title","options","value"])]),Object(r["createVNode"])(s,{provider:e.smsProvider,modelValue:e.credentials,"onUpdate:modelValue":[t[2]||(t[2]=function(t){return e.credentials=t}),t[3]||(t[3]=function(t){e.credentials=t})],"model-value":e.credentials},null,8,["provider","modelValue","model-value"]),Object(r["createVNode"])(d,{id:"apiAccountSubmit",disabled:!e.isUpdateAccountPossible,saving:e.isUpdatingAccount,onConfirm:t[4]||(t[4]=function(t){return e.updateAccount()})},null,8,["disabled","saving"]),Object(r["createElementVNode"])("div",{class:"providerDescription",innerHTML:e.$sanitize(e.currentProviderDescription)},null,8,M)],512),[[r["vShow"],!e.credentialSupplied||e.showAccountForm],[u]])])}var S=Object(r["defineComponent"])({props:{credentialSupplied:Boolean,credentialError:String,provider:String,creditLeft:[Number,String],smsProviderOptions:{type:Object,required:!0},smsProviders:{type:Object,required:!0}},components:{ActivityIndicator:l["ActivityIndicator"],Field:d["Field"],SaveButton:d["SaveButton"],SmsProviderCredentials:b},directives:{Form:d["Form"]},data:function(){return{isDeletingAccount:!1,isUpdatingAccount:!1,showAccountForm:!1,credentials:{},smsProvider:this.provider}},methods:{deleteApiAccount:function(){var e=this;this.isDeletingAccount=!0,l["AjaxHelper"].fetch({method:"MobileMessaging.deleteSMSAPICredential"},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){l["Matomo"].helper.redirect()})).finally((function(){e.isDeletingAccount=!1}))},showUpdateAccount:function(){this.showAccountForm=!0},updateAccount:function(){var e=this;this.isUpdateAccountPossible&&(this.isUpdatingAccount=!0,l["AjaxHelper"].post({method:"MobileMessaging.setSMSAPICredential"},{provider:this.smsProvider,credentials:this.credentials},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){l["Matomo"].helper.redirect()})).finally((function(){e.isUpdatingAccount=!1})))},deleteAccount:function(){var e=this;l["Matomo"].helper.modalConfirm("#confirmDeleteAccount",{yes:function(){e.isDeletingAccount=!0,l["AjaxHelper"].fetch({method:"MobileMessaging.deleteSMSAPICredential"},{errorElement:"#ajaxErrorManageSmsProviderSettings"}).then((function(){e.isDeletingAccount=!1,l["Matomo"].helper.redirect()})).finally((function(){e.isDeletingAccount=!1}))}})},onUpdateOrDeleteClick:function(e){var t=e.target;"displayAccountForm"===t.id?this.showUpdateAccount():"deleteAccount"===t.id&&this.deleteAccount()}},computed:{isUpdateAccountPossible:function(){return!!this.smsProvider&&Object.keys(this.credentials).length>0&&Object.values(this.credentials).every((function(e){return!!e}))},updateOrDeleteAccountText:function(){return Object(l["translate"])("MobileMessaging_Settings_UpdateOrDeleteAccount",'<a id="displayAccountForm">',"</a>",'<a id="deleteAccount">',"</a>")},currentProviderDescription:function(){return this.smsProvider&&this.smsProviders?this.smsProviders[this.smsProvider]:""}}});S.render=V;var y=S;function P(e,t,n,o,i,l){var a=Object(r["resolveComponent"])("Field"),c=Object(r["resolveComponent"])("SaveButton");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",null,[Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(a,{uicontrol:"radio",name:"delegatedManagement",title:e.translate("MobileMessaging_Settings_LetUsersManageAPICredential"),modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),"full-width":!0,options:e.delegateManagementOptions},null,8,["title","modelValue","options"])]),Object(r["createVNode"])(c,{onConfirm:t[1]||(t[1]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])])}var A=Object(r["defineComponent"])({props:{delegateManagementOptions:{type:Array,required:!0},delegatedManagement:[Number,Boolean]},components:{Field:d["Field"],SaveButton:d["SaveButton"]},data:function(){return{isLoading:!1,enabled:this.delegatedManagement?1:0}},methods:{save:function(){var e=this;this.isLoading=!0,l["AjaxHelper"].post({method:"MobileMessaging.setDelegatedManagement"},{delegatedManagement:this.enabled&&"0"!==this.enabled?"true":"false"}).then((function(){var e=l["NotificationsStore"].show({message:Object(l["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"mobileMessagingSettings",type:"transient",context:"success"});l["NotificationsStore"].scrollToNotification(e),l["Matomo"].helper.redirect()})).finally((function(){e.isLoading=!1}))}}});A.render=P;var E=A,_={key:0},k={class:"row"},x={class:"col s12"},B={class:"form-group row"},w={class:"col s12 m6"},D={class:"col s12 m6 form-help"},U={class:"form-group row addPhoneNumber"},F={class:"col s12 m6"},H={class:"countryCode left"},T=Object(r["createElementVNode"])("span",{class:"countryCodeSymbol"},"+",-1),q={class:"phoneNumber left"},I={class:"addNumber left valign-wrapper"},L={class:"col s12 m6 form-help"},$=Object(r["createElementVNode"])("div",{id:"ajaxErrorAddPhoneNumber"},null,-1),J={key:1,class:"row"},z={class:"col s12"},G={class:"col s12 m6"},R={class:"phoneNumber"},Y=["onUpdate:modelValue","placeholder"],K={key:0,class:"form-help col s12 m6"},Q=Object(r["createTextVNode"])("   "),W=Object(r["createElementVNode"])("div",{id:"invalidVerificationCodeAjaxError",style:{display:"none"}},null,-1);function X(e,t,n,o,i,l){var a=Object(r["resolveComponent"])("Field"),c=Object(r["resolveComponent"])("SaveButton"),s=Object(r["resolveComponent"])("Alert"),d=Object(r["resolveComponent"])("ActivityIndicator");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",null,[Object(r["createElementVNode"])("p",null,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_PhoneNumbers_Help")),1),e.isSuperUser?(Object(r["openBlock"])(),Object(r["createElementBlock"])("p",_,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_DelegatedPhoneNumbersOnlyUsedByYou")),1)):Object(r["createCommentVNode"])("",!0),Object(r["createElementVNode"])("div",k,[Object(r["createElementVNode"])("h3",x,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_PhoneNumbers_Add")),1)]),Object(r["createElementVNode"])("div",B,[Object(r["createElementVNode"])("div",w,[Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(a,{uicontrol:"select",name:"countryCodeSelect",title:e.translate("MobileMessaging_Settings_SelectCountry"),modelValue:e.countryCallingCode,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.countryCallingCode=t}),"full-width":!0,options:e.countries},null,8,["title","modelValue","options"])])]),Object(r["createElementVNode"])("div",D,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_PhoneNumbers_CountryCode_Help")),1)]),Object(r["createElementVNode"])("div",U,[Object(r["createElementVNode"])("div",F,[Object(r["createElementVNode"])("div",H,[T,Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(a,{uicontrol:"text",name:"countryCallingCode",title:e.translate("MobileMessaging_Settings_CountryCode"),modelValue:e.countryCallingCode,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.countryCallingCode=t}),"full-width":!0,maxlength:4},null,8,["title","modelValue"])])]),Object(r["createElementVNode"])("div",q,[Object(r["createElementVNode"])("div",null,[Object(r["createVNode"])(a,{uicontrol:"text",name:"newPhoneNumber",modelValue:e.newPhoneNumber,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.newPhoneNumber=t}),title:e.translate("MobileMessaging_Settings_PhoneNumber"),"full-width":!0,maxlength:80},null,8,["modelValue","title"])])]),Object(r["createElementVNode"])("div",I,[Object(r["createVNode"])(c,{class:"valign",disabled:!e.canAddNumber||e.isAddingPhonenumber,onConfirm:t[3]||(t[3]=function(t){return e.addPhoneNumber()}),value:e.translate("General_Add")},null,8,["disabled","value"])]),Object(r["withDirectives"])(Object(r["createVNode"])(s,{severity:"warning",id:"suspiciousPhoneNumber"},{default:Object(r["withCtx"])((function(){return[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_SuspiciousPhoneNumber","54184032")),1)]})),_:1},512),[[r["vShow"],e.showSuspiciousPhoneNumber]])]),Object(r["createElementVNode"])("div",L,Object(r["toDisplayString"])(e.strHelpAddPhone),1)]),$,Object(r["createVNode"])(d,{loading:e.isAddingPhonenumber},null,8,["loading"]),Object.keys(e.phoneNumbers||{}).length>0?(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",J,[Object(r["createElementVNode"])("h3",z,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_ManagePhoneNumbers")),1)])):Object(r["createCommentVNode"])("",!0),(Object(r["openBlock"])(!0),Object(r["createElementBlock"])(r["Fragment"],null,Object(r["renderList"])(e.phoneNumbers||[],(function(t,n,o){return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",{class:"form-group row",key:o},[Object(r["createElementVNode"])("div",G,[Object(r["createElementVNode"])("span",R,Object(r["toDisplayString"])(n),1),t||e.isActivated[o]?Object(r["createCommentVNode"])("",!0):Object(r["withDirectives"])((Object(r["openBlock"])(),Object(r["createElementBlock"])("input",{key:0,type:"text",class:"verificationCode","onUpdate:modelValue":function(t){return e.validationCode[o]=t},placeholder:e.translate("MobileMessaging_Settings_EnterActivationCode"),style:{"margin-right":"3.5px"}},null,8,Y)),[[r["vModelText"],e.validationCode[o]]]),t||e.isActivated[o]?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createBlock"])(c,{key:1,disabled:!e.validationCode[o]||e.isChangingPhoneNumber,onConfirm:function(t){return e.validateActivationCode(n,o)},value:e.translate("MobileMessaging_Settings_ValidatePhoneNumber")},null,8,["disabled","onConfirm","value"])),Object(r["createVNode"])(c,{disabled:e.isChangingPhoneNumber,onConfirm:function(t){return e.removePhoneNumber(n)},value:e.translate("General_Remove"),style:{"margin-left":"3.5px"}},null,8,["disabled","onConfirm","value"])]),t||e.isActivated[o]?Object(r["createCommentVNode"])("",!0):(Object(r["openBlock"])(),Object(r["createElementBlock"])("div",K,[Object(r["createElementVNode"])("div",null,Object(r["toDisplayString"])(e.translate("MobileMessaging_Settings_VerificationCodeJustSent")),1),Q]))])})),128)),W,Object(r["createVNode"])(d,{loading:e.isChangingPhoneNumber},null,8,["loading"])])}var Z=Object(r["defineComponent"])({props:{isSuperUser:Boolean,defaultCallingCode:String,countries:{type:Array,required:!0},strHelpAddPhone:{type:String,required:!0},phoneNumbers:Object},components:{Field:d["Field"],SaveButton:d["SaveButton"],Alert:l["Alert"],ActivityIndicator:l["ActivityIndicator"]},data:function(){return{isAddingPhonenumber:!1,isChangingPhoneNumber:!1,isActivated:{},countryCallingCode:this.defaultCallingCode||"",newPhoneNumber:"",validationCode:{}}},methods:{validateActivationCode:function(e,t){var n=this;if(this.validationCode[t]){var o=this.validationCode[t];this.isChangingPhoneNumber=!0,l["AjaxHelper"].post({method:"MobileMessaging.validatePhoneNumber"},{phoneNumber:e,verificationCode:o},{errorElement:"#invalidVerificationCodeAjaxError"}).then((function(e){var o;if(n.isChangingPhoneNumber=!1,e&&e.value){var i=Object(l["translate"])("MobileMessaging_Settings_PhoneActivated");o=l["NotificationsStore"].show({message:i,context:"success",id:"MobileMessaging_ValidatePhoneNumber",type:"transient"}),n.isActivated[t]=!0}else{var r=Object(l["translate"])("MobileMessaging_Settings_InvalidActivationCode");o=l["NotificationsStore"].show({message:r,context:"error",id:"MobileMessaging_ValidatePhoneNumber",type:"transient"})}l["NotificationsStore"].scrollToNotification(o)})).finally((function(){n.isChangingPhoneNumber=!1}))}},removePhoneNumber:function(e){var t=this;e&&(this.isChangingPhoneNumber=!0,l["AjaxHelper"].post({method:"MobileMessaging.removePhoneNumber"},{phoneNumber:e},{errorElement:"#invalidVerificationCodeAjaxError"}).then((function(){t.isChangingPhoneNumber=!1,l["Matomo"].helper.redirect()})).finally((function(){t.isChangingPhoneNumber=!1})))},addPhoneNumber:function(){var e=this,t="+".concat(this.countryCallingCode).concat(this.newPhoneNumber);this.canAddNumber&&t.length>1&&(this.isAddingPhonenumber=!0,l["AjaxHelper"].post({method:"MobileMessaging.addPhoneNumber"},{phoneNumber:t},{errorElement:"#ajaxErrorAddPhoneNumber"}).then((function(){e.isAddingPhonenumber=!1,l["Matomo"].helper.redirect()})).finally((function(){e.isAddingPhonenumber=!1})))}},computed:{showSuspiciousPhoneNumber:function(){return 0===this.newPhoneNumber.trim().lastIndexOf("0",0)},canAddNumber:function(){return!!this.newPhoneNumber&&""!==this.newPhoneNumber}}});Z.render=X;var ee=Z;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue b/plugins/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue
new file mode 100644
index 0000000000..96cec67d6d
--- /dev/null
+++ b/plugins/MobileMessaging/vue/src/DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue
@@ -0,0 +1,85 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div>
+ <div>
+ <Field
+ uicontrol="radio"
+ name="delegatedManagement"
+ :title="translate('MobileMessaging_Settings_LetUsersManageAPICredential')"
+ v-model="enabled"
+ :full-width="true"
+ :options="delegateManagementOptions"
+ >
+ </Field>
+ </div>
+ <SaveButton
+ @confirm="save()"
+ :saving="isLoading"
+ />
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ AjaxHelper,
+ translate,
+ Matomo,
+ NotificationsStore,
+} from 'CoreHome';
+import { Field, SaveButton } from 'CorePluginsAdmin';
+
+interface DelegateMobileMessagingSettingsState {
+ isLoading: boolean;
+ enabled: boolean|string|number;
+}
+
+export default defineComponent({
+ props: {
+ delegateManagementOptions: {
+ type: Array,
+ required: true,
+ },
+ delegatedManagement: [Number, Boolean],
+ },
+ components: {
+ Field,
+ SaveButton,
+ },
+ data(): DelegateMobileMessagingSettingsState {
+ return {
+ isLoading: false,
+ enabled: this.delegatedManagement ? 1 : 0,
+ };
+ },
+ methods: {
+ save() {
+ this.isLoading = true;
+ AjaxHelper.post(
+ {
+ method: 'MobileMessaging.setDelegatedManagement',
+ },
+ {
+ delegatedManagement: this.enabled && this.enabled !== '0' ? 'true' : 'false',
+ },
+ ).then(() => {
+ const notificationInstanceId = NotificationsStore.show({
+ message: translate('CoreAdminHome_SettingsSaveSuccess'),
+ id: 'mobileMessagingSettings',
+ type: 'transient',
+ context: 'success',
+ });
+ NotificationsStore.scrollToNotification(notificationInstanceId);
+ Matomo.helper.redirect();
+ }).finally(() => {
+ this.isLoading = false;
+ });
+ },
+ },
+});
+</script>
diff --git a/plugins/MobileMessaging/vue/src/ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue b/plugins/MobileMessaging/vue/src/ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue
new file mode 100644
index 0000000000..8cbdfaf035
--- /dev/null
+++ b/plugins/MobileMessaging/vue/src/ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue
@@ -0,0 +1,279 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div>
+ <p>{{ translate('MobileMessaging_Settings_PhoneNumbers_Help') }}</p>
+ <p v-if="isSuperUser">
+ {{ translate('MobileMessaging_Settings_DelegatedPhoneNumbersOnlyUsedByYou') }}
+ </p>
+ <div class="row">
+ <h3 class="col s12">{{ translate('MobileMessaging_Settings_PhoneNumbers_Add') }}</h3>
+ </div>
+ <div class="form-group row">
+ <div class="col s12 m6">
+ <div>
+ <Field
+ uicontrol="select"
+ name="countryCodeSelect"
+ :title="translate('MobileMessaging_Settings_SelectCountry')"
+ v-model="countryCallingCode"
+ :full-width="true"
+ :options="countries"
+ >
+ </Field>
+ </div>
+ </div>
+ <div class="col s12 m6 form-help">
+ {{ translate('MobileMessaging_Settings_PhoneNumbers_CountryCode_Help') }}
+ </div>
+ </div>
+ <div class="form-group row addPhoneNumber">
+ <div class="col s12 m6">
+ <div class="countryCode left">
+ <span class="countryCodeSymbol">+</span>
+ <div>
+ <Field
+ uicontrol="text"
+ name="countryCallingCode"
+ :title="translate('MobileMessaging_Settings_CountryCode')"
+ v-model="countryCallingCode"
+ :full-width="true"
+ :maxlength="4"
+ >
+ </Field>
+ </div>
+ </div>
+ <div class="phoneNumber left">
+ <div>
+ <Field
+ uicontrol="text"
+ name="newPhoneNumber"
+ v-model="newPhoneNumber"
+ :title="translate('MobileMessaging_Settings_PhoneNumber')"
+ :full-width="true"
+ :maxlength="80"
+ >
+ </Field>
+ </div>
+ </div>
+ <div class="addNumber left valign-wrapper">
+ <SaveButton
+ class="valign"
+ :disabled="!canAddNumber || isAddingPhonenumber"
+ @confirm="addPhoneNumber()"
+ :value="translate('General_Add')"
+ />
+ </div>
+ <Alert severity="warning" id="suspiciousPhoneNumber" v-show="showSuspiciousPhoneNumber">
+ {{ translate('MobileMessaging_Settings_SuspiciousPhoneNumber', '54184032') }}
+ </Alert>
+ </div>
+ <div class="col s12 m6 form-help">
+ {{ strHelpAddPhone }}
+ </div>
+ </div>
+ <div id="ajaxErrorAddPhoneNumber" />
+ <ActivityIndicator :loading="isAddingPhonenumber" />
+ <div class="row" v-if="Object.keys(phoneNumbers || {}).length > 0">
+ <h3 class="col s12">{{ translate('MobileMessaging_Settings_ManagePhoneNumbers') }}</h3>
+ </div>
+ <div
+ class="form-group row"
+ v-for="(validated, phoneNumber, index) in phoneNumbers || []"
+ :key="index"
+ >
+ <div class="col s12 m6">
+ <span class="phoneNumber">{{ phoneNumber }}</span>
+ <input
+ v-if="!validated && !isActivated[index]"
+ type="text"
+ class="verificationCode"
+ v-model="validationCode[index]"
+ :placeholder="translate('MobileMessaging_Settings_EnterActivationCode')"
+ style="margin-right:3.5px"
+ />
+ <SaveButton
+ v-if="!validated && !(isActivated[index])"
+ :disabled="!validationCode[index] || isChangingPhoneNumber"
+ @confirm="validateActivationCode(phoneNumber, index)"
+ :value="translate('MobileMessaging_Settings_ValidatePhoneNumber')"
+ />
+ <SaveButton
+ :disabled="isChangingPhoneNumber"
+ @confirm="removePhoneNumber(phoneNumber)"
+ :value="translate('General_Remove')"
+ style="margin-left:3.5px"
+ />
+ </div>
+ <div class="form-help col s12 m6" v-if="!validated && !(isActivated[index])">
+ <div>
+ {{ translate('MobileMessaging_Settings_VerificationCodeJustSent') }}
+ </div>
+ &nbsp;
+ </div>
+ </div>
+ <div id="invalidVerificationCodeAjaxError" style="display:none"></div>
+ <ActivityIndicator :loading="isChangingPhoneNumber"/>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ translate,
+ NotificationsStore,
+ AjaxHelper,
+ Matomo,
+ Alert,
+ ActivityIndicator,
+} from 'CoreHome';
+import { Field, SaveButton } from 'CorePluginsAdmin';
+
+interface ManageMobilePhoneNumbersState {
+ isAddingPhonenumber: boolean;
+ isChangingPhoneNumber: boolean;
+ isActivated: Record<string, boolean>;
+ countryCallingCode: string;
+ newPhoneNumber: string;
+ validationCode: Record<string, string>;
+}
+
+export default defineComponent({
+ props: {
+ isSuperUser: Boolean,
+ defaultCallingCode: String,
+ countries: {
+ type: Array,
+ required: true,
+ },
+ strHelpAddPhone: {
+ type: String,
+ required: true,
+ },
+ phoneNumbers: Object,
+ },
+ components: {
+ Field,
+ SaveButton,
+ Alert,
+ ActivityIndicator,
+ },
+ data(): ManageMobilePhoneNumbersState {
+ return {
+ isAddingPhonenumber: false,
+ isChangingPhoneNumber: false,
+ isActivated: {},
+ countryCallingCode: this.defaultCallingCode || '',
+ newPhoneNumber: '',
+ validationCode: {},
+ };
+ },
+ methods: {
+ validateActivationCode(phoneNumber: string, index: number) {
+ if (!this.validationCode[index]) {
+ return;
+ }
+
+ const verificationCode = this.validationCode[index];
+
+ this.isChangingPhoneNumber = true;
+ AjaxHelper.post(
+ {
+ method: 'MobileMessaging.validatePhoneNumber',
+ },
+ {
+ phoneNumber,
+ verificationCode,
+ },
+ {
+ errorElement: '#invalidVerificationCodeAjaxError',
+ },
+ ).then((response) => {
+ this.isChangingPhoneNumber = false;
+
+ let notificationInstanceId;
+ if (!response || !response.value) {
+ const message = translate('MobileMessaging_Settings_InvalidActivationCode');
+ notificationInstanceId = NotificationsStore.show({
+ message,
+ context: 'error',
+ id: 'MobileMessaging_ValidatePhoneNumber',
+ type: 'transient',
+ });
+ } else {
+ const message = translate('MobileMessaging_Settings_PhoneActivated');
+ notificationInstanceId = NotificationsStore.show({
+ message,
+ context: 'success',
+ id: 'MobileMessaging_ValidatePhoneNumber',
+ type: 'transient',
+ });
+ this.isActivated[index] = true;
+ }
+
+ NotificationsStore.scrollToNotification(notificationInstanceId);
+ }).finally(() => {
+ this.isChangingPhoneNumber = false;
+ });
+ },
+ removePhoneNumber(phoneNumber: string) {
+ if (!phoneNumber) {
+ return;
+ }
+
+ this.isChangingPhoneNumber = true;
+ AjaxHelper.post(
+ {
+ method: 'MobileMessaging.removePhoneNumber',
+ },
+ {
+ phoneNumber,
+ },
+ {
+ errorElement: '#invalidVerificationCodeAjaxError',
+ },
+ ).then(() => {
+ this.isChangingPhoneNumber = false;
+ Matomo.helper.redirect();
+ }).finally(() => {
+ this.isChangingPhoneNumber = false;
+ });
+ },
+ addPhoneNumber() {
+ const phoneNumber = `+${this.countryCallingCode}${this.newPhoneNumber}`;
+
+ if (this.canAddNumber && phoneNumber.length > 1) {
+ this.isAddingPhonenumber = true;
+ AjaxHelper.post(
+ {
+ method: 'MobileMessaging.addPhoneNumber',
+ },
+ {
+ phoneNumber,
+ },
+ {
+ errorElement: '#ajaxErrorAddPhoneNumber',
+ },
+ ).then(() => {
+ this.isAddingPhonenumber = false;
+ Matomo.helper.redirect();
+ }).finally(() => {
+ this.isAddingPhonenumber = false;
+ });
+ }
+ },
+ },
+ computed: {
+ showSuspiciousPhoneNumber() {
+ return this.newPhoneNumber.trim().lastIndexOf('0', 0) === 0;
+ },
+ canAddNumber() {
+ return !!this.newPhoneNumber && this.newPhoneNumber !== '';
+ },
+ },
+});
+</script>
diff --git a/plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue b/plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue
index cdca5e1603..d2c415575f 100644
--- a/plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue
+++ b/plugins/MobileMessaging/vue/src/ManageSmsProvider/ManageSmsProvider.vue
@@ -18,7 +18,10 @@
{{ creditLeft }}
</span>
<br />
- <span v-html="updateOrDeleteAccountText" @click="onUpdateOrDeleteClick($event)"></span>
+ <span
+ v-html="$sanitize(updateOrDeleteAccountText)"
+ @click="onUpdateOrDeleteClick($event)"
+ />
</p>
<p v-else>{{ translate('MobileMessaging_Settings_PleaseSignUp') }}</p>
<div
diff --git a/plugins/MobileMessaging/vue/src/index.ts b/plugins/MobileMessaging/vue/src/index.ts
index 2bddb6f845..a26a2b9526 100644
--- a/plugins/MobileMessaging/vue/src/index.ts
+++ b/plugins/MobileMessaging/vue/src/index.ts
@@ -9,3 +9,5 @@ import './SmsProviderCredentials/SmsProviderCredentials.adapter';
export { default as ManageSmsProvider } from './ManageSmsProvider/ManageSmsProvider.vue';
export { default as SmsProviderCredentials } from './SmsProviderCredentials/SmsProviderCredentials.vue';
+export { default as DelegateMobileMessagingSettings } from './DelegateMobileMessagingSettings/DelegateMobileMessagingSettings.vue';
+export { default as ManageMobilePhoneNumbers } from './ManageMobilePhoneNumbers/ManageMobilePhoneNumbers.vue';
diff --git a/plugins/Morpheus/javascripts/piwikHelper.js b/plugins/Morpheus/javascripts/piwikHelper.js
index 7fc4c9ddb9..3e59e44ef3 100644
--- a/plugins/Morpheus/javascripts/piwikHelper.js
+++ b/plugins/Morpheus/javascripts/piwikHelper.js
@@ -164,6 +164,7 @@ window.piwikHelper = {
.replace(/[A-Z]/g, function (s) { return '-' + s[0].toLowerCase(); });
}
+ // process vue-entry attributes
$('[vue-entry]', selector).add($(selector).filter('[vue-entry]')).each(function () {
var entry = $(this).attr('vue-entry');
var componentsToRegister = ($(this).attr('vue-components') || '').split(/\s+/).filter(function (s) {
@@ -179,7 +180,7 @@ window.piwikHelper = {
var createVueApp = CoreHome.createVueApp;
var plugin = window[parts[0]];
if (!plugin) {
- throw new Error('Unknown plugin in vue-entry: ' + plugin);
+ throw new Error('Unknown plugin in vue-entry: ' + entry);
}
var component = plugin[parts[1]];
@@ -187,6 +188,8 @@ window.piwikHelper = {
throw new Error('Unknown component in vue-entry: ' + entry);
}
+ $(this).attr('ng-non-bindable', '');
+
var paramsStr = '';
var componentParams = {};
@@ -239,6 +242,52 @@ window.piwikHelper = {
app.unmount();
});
});
+
+ // process vue-directive attributes (only uses .mounted/.unmounted hooks)
+ piwikHelper.compileVueDirectives(selector);
+ },
+
+ compileVueDirectives: function (selector) {
+ $('[vue-directive]', selector).add($(selector).filter('[vue-entry]')).each(function () {
+ var vueDirectiveName = $(this).attr('vue-directive');
+
+ var parts = vueDirectiveName.split('.');
+ if (parts.length !== 2) {
+ throw new Error('Expects vue-entry to have format Plugin.Component, where Component is exported Vue component. Got: ' + vueDirectiveName);
+ }
+
+ var plugin = window[parts[0]];
+ if (!plugin) {
+ throw new Error('Unknown plugin in vue-entry: ' + vueDirectiveName);
+ }
+
+ var directive = plugin[parts[1]];
+ if (!directive) {
+ throw new Error('Unknown component in vue-entry: ' + vueDirectiveName);
+ }
+
+ var directiveArgument = $(this).attr('vue-directive-value');
+
+ var value;
+ try {
+ value = JSON.parse(directiveArgument || '{}');
+ } catch (e) {
+ console.log('failed to parse directive value ' + value + ': ' + directiveArgument);
+ return;
+ }
+
+ var binding = { value: value };
+
+ if (directive.mounted) {
+ directive.mounted(this, binding);
+ }
+
+ this.addEventListener('matomoVueDestroy', function () {
+ if (directive.unmounted) {
+ directive.unmounted(this, binding);
+ }
+ });
+ });
},
destroyVueComponent: function (selector) {
@@ -694,7 +743,11 @@ window.piwikHelper = {
} else {
return Math.round((dividend / divisor) * 1000) / 1000;
}
- }
+ },
+
+ showVisitorProfilePopup: function (visitorId, idSite) {
+ require('piwik/UI').VisitorProfileControl.showPopover(visitorId, idSite);
+ },
};
if (typeof String.prototype.trim !== 'function') {
String.prototype.trim = function() {
diff --git a/plugins/MultiSites/lang/ga.json b/plugins/MultiSites/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/MultiSites/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/MultiSites/lang/id.json b/plugins/MultiSites/lang/id.json
index 7fb12d6ea3..2a629fddc3 100644
--- a/plugins/MultiSites/lang/id.json
+++ b/plugins/MultiSites/lang/id.json
@@ -1,7 +1,16 @@
{
"MultiSites": {
- "Evolution": "Perkembangan",
- "LoadingWebsites": "Memuat situs",
- "TopLinkTooltip": "Bandingkan statistik Analisis Ramatraya untuk seluruh Situs Anda."
+ "AllWebsitesDashboardDocumentation": "Laporan ini memberikan Anda gambaran umum mengenai informasi untuk setiap situs web Anda, berisi metrik paling umum tentang pengunjung Anda.",
+ "Evolution": "Evolusi",
+ "EvolutionComparisonDay": "%1$s %2$s hari ini dibandingkan dengan %3$s %2$s pada periode parsial sebelumnya (%4$s) Evolusi: %5$s",
+ "EvolutionComparisonIncomplete": "Jangka waktu yang dipilih saat ini adalah %1$s selesai.",
+ "EvolutionComparisonMonth": "%1$s %2$s bulan ini dibandingkan dengan %3$s %2$s pada periode parsial sebelumnya (%4$s) Evolusi: %5$s",
+ "EvolutionComparisonProportional": "Ketika periode sebelumnya juga %1$s selesai, akan ada perkiraan %2$s %3$s\n (dari total %4$s %3$s pada periode sebelumnya).",
+ "EvolutionComparisonWeek": "%1$s %2$s minggu ini dibandingkan dengan %3$s %2$s pada periode parsial sebelumnya (%4$s) Evolusi: %5$s",
+ "EvolutionComparisonYear": "%1$s %2$s tahun ini dibandingkan dengan %3$s %2$s pada periode parsial sebelumnya (%4$s) Evolusi: %5$s",
+ "LoadingWebsites": "Memuat situs web",
+ "PluginDescription": "Lihat dan bandingkan semua situs web dan aplikasi Anda di dasbor 'Semua Situs Web' yang berguna ini.",
+ "SingleWebsitesDashboardDocumentation": "Laporan ini memberikan Anda gambaran umum tentang informasi untuk situs web tertentu. Laporan ini berisi metrik paling umum tentang pengunjung Anda.",
+ "TopLinkTooltip": "Bandingkan statistik Analisis Web untuk semua Situs Web Anda."
}
}
diff --git a/plugins/Overlay/lang/ga.json b/plugins/Overlay/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Overlay/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Overlay/lang/id.json b/plugins/Overlay/lang/id.json
index 6c4f5c7149..ab9086767a 100644
--- a/plugins/Overlay/lang/id.json
+++ b/plugins/Overlay/lang/id.json
@@ -2,7 +2,7 @@
"Overlay": {
"Clicks": "%s klik",
"ClicksFromXLinks": "%1$s klik dari salah satu %2$s tautan",
- "Domain": "Ranah",
+ "Domain": "Domain",
"ErrorNoSiteUrls": "PERINGATAN: Situs web ini tidak memiliki URL Situs yang ditentukan di Matomo. Ini dapat menyebabkan Hamparan dan fitur lainnya rusak atau berperilaku aneh. Untuk memperbaikinya, tambahkan URL di pengaturan situs web ini di bagian Administrasi Matomo.",
"ErrorNotLoading": "Sesi Penghampar Halaman belum dapat diluncurkan.",
"ErrorNotLoadingDetails": "Kemungkinan yang dimuat di kanan tidak memiliki kode pelcakan Matomo. Dalam hal ini, silakan mencoba meluncurkan Penghampar untuk halaman yang berbeda dari laporan halaman.",
@@ -14,7 +14,7 @@
"OneClick": "1 kilik",
"OpenFullScreen": "Menuju halaman penuh (tanpa batang sisi)",
"Overlay": "Penghampar Halaman",
- "PluginDescription": "Lihat data analitik Anda sebagai Hamparan di situs web Anda yang sebenarnya. Lihat berapa kali pengguna Anda mengeklik setiap tautan. Catatan: Membutuhkan plugin Transitions yang diaktifkan.",
+ "PluginDescription": "Lihat data analisis Anda sebagai Hamparan di situs web Anda yang sebenarnya. Lihat berapa kali pengguna Anda mengeklik setiap tautan. Catatan: Membutuhkan plugin Transitions yang diaktifkan.",
"RedirectUrlError": "Anda mencoba membuka Hamparan Halaman untuk URL \"%1$s\". %2$s Tidak ada domain dari pengaturan Matomo yang cocok dengan tautan.",
"RedirectUrlErrorAdmin": "Anda dapat menambah ranah sebagai URL tambahan di %1$spengaturan%2$s.",
"RedirectUrlErrorUser": "Silakan bertanya kepada pengelola Anda untuk menambah ranah sebagai URL tambahan."
diff --git a/plugins/PagePerformance/lang/ga.json b/plugins/PagePerformance/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/PagePerformance/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/PagePerformance/lang/pt-br.json b/plugins/PagePerformance/lang/pt-br.json
index 7f7829ea5c..4f5a8ae73f 100644
--- a/plugins/PagePerformance/lang/pt-br.json
+++ b/plugins/PagePerformance/lang/pt-br.json
@@ -1,6 +1,43 @@
{
"PagePerformance": {
- "ColumnTimeServer": "Horário do servidor",
- "Performance": "Desempenho"
+ "ColumnAveragePageLoadTime": "Tempo médio de carga da página",
+ "ColumnAveragePageLoadTimeDocumentation": "Tempo médio (em segundos) que leva desde a solicitação de uma página até que a página seja totalmente renderizada no navegador",
+ "ColumnAverageTimeDomCompletion": "Tempo médio de completar o DOM",
+ "ColumnAverageTimeDomCompletionDocumentation": "Tempo médio (em segundos) que o navegador leva para carregar a mídia e executar qualquer código Javascript ouvindo o evento DOMContentLoaded depois que a página da Web foi carregada e o usuário já pode interagir com ela.",
+ "ColumnAverageTimeDomProcessing": "Tempo médio do processamento DOM",
+ "ColumnAverageTimeDomProcessingDocumentation": "Tempo médio (em segundos) que o navegador leva para carregar a página da Web depois que a resposta foi totalmente recebida e antes que o usuário possa começar a interagir com ela.",
+ "ColumnAverageTimeNetwork": "Tempo médio de rede",
+ "ColumnAverageTimeNetworkDocumentation": "Tempo médio (em segundos) que leva para se conectar ao servidor. Isso inclui o tempo necessário para pesquisar DNS e estabelecer uma conexão TCP. Esse valor pode ser 0 após a primeira solicitação para um domínio, pois o navegador pode armazenar em cache a conexão.",
+ "ColumnAverageTimeOnLoad": "Tempo médio de carga",
+ "ColumnAverageTimeOnLoadDocumentation": "Tempo médio (em segundos) que o navegador leva para executar o código Javascript aguardando o evento window.load. Este evento é acionado assim que o DOM for completamente renderizado.",
+ "ColumnAverageTimeServer": "Tempo médio do servidor",
+ "ColumnAverageTimeServerDocumentation": "Tempo médio (em segundos) que o servidor leva para gerar a página. Este é o tempo entre o servidor receber a solicitação e começar a servir a resposta.",
+ "ColumnAverageTimeTransfer": "Tempo médio de transferência",
+ "ColumnAverageTimeTransferDocumentation": "Tempo médio (em segundos) que o navegador leva para baixar a resposta do servidor. Este é o tempo desde o recebimento do primeiro byte até que a resposta seja concluída.",
+ "ColumnTimeDomCompletion": "Tempo de conclusão DOM",
+ "ColumnTimeDomProcessing": "Tempo de processamento DOM",
+ "ColumnTimeNetwork": "Tempo de rede",
+ "ColumnTimeOnLoad": "No tempo de carregamento",
+ "ColumnTimeServer": "Tempo do servidor",
+ "ColumnTimeTransfer": "Tempo de transferência",
+ "ColumnViewsWithTimeDomCompletion": "Visualizações de página com tempo de conclusão do DOM",
+ "ColumnViewsWithTimeDomProcessing": "Visualizações de página com tempo de processamento DOM",
+ "ColumnViewsWithTimeNetwork": "Visualizações de página com tempo da rede",
+ "ColumnViewsWithTimeOnLoad": "Visualizações de página com tempo de carregamento",
+ "ColumnViewsWithTimeServer": "Visualizações de página com tempo do servidor",
+ "ColumnViewsWithTimeTransfer": "Visualizações de página com tempo de transferência",
+ "EvolutionOverPeriod": "Evolução das métricas de desempenho da página",
+ "HelpNote": "Algumas dessas métricas podem nem sempre estar disponíveis. Você pode encontrar mais informações em nosso %1$sguia online%2$s.",
+ "Overview": "Visão geral do desempenho",
+ "OverviewDocumentation": "Este relatório fornece uma visão geral da rapidez com que suas páginas da web se tornam visíveis para seus visitantes. Isso inclui quanto tempo leva para os navegadores baixarem suas páginas da Web e quanto tempo leva para os navegadores exibi-las.",
+ "PageLoadTime": "Tempo de carregamento da página",
+ "PagePerformanceTitle": "Performance da página com %1$s \"%2$s\"",
+ "Performance": "Performance",
+ "PerformanceSubcategoryHelp1": "A seção Performance pode ajudar você a analisar o desempenho geral do seu site ou aplicativo e descobrir se você tem páginas específicas que se desviam significativamente de suas médias.",
+ "PerformanceSubcategoryHelp2": "Você também pode encontrar relatórios mostrando exatamente quanto tempo cada página do seu site leva para carregar e o que está contribuindo para o tempo de carregamento.",
+ "PerformanceTable": "Tabela com métricas de desempenho",
+ "PluginDescription": "Adiciona alguns relatórios de desempenho da página",
+ "RowActionDescription": "Mostrar relatório de desempenho da página para esta linha",
+ "RowActionTitle": "Abrir o relatório de desempenho de página"
}
-} \ No newline at end of file
+}
diff --git a/plugins/PrivacyManager/Model/DataSubjects.php b/plugins/PrivacyManager/Model/DataSubjects.php
index 0e9acd71a5..3c63448a90 100644
--- a/plugins/PrivacyManager/Model/DataSubjects.php
+++ b/plugins/PrivacyManager/Model/DataSubjects.php
@@ -70,10 +70,19 @@ class DataSubjects
}
$logTables = $this->getLogTablesToDeleteFrom();
- $results = array_merge($results, $this->deleteLogDataFrom($logTables, function ($tableToSelectFrom) use ($idSitesNoLongerExisting) {
- $idSitesNoLongerExisting = array_map('intval', $idSitesNoLongerExisting);
- return [$tableToSelectFrom . '.idsite in ('. implode(',', $idSitesNoLongerExisting).')', []];
- }));
+ // It's quicker to call the delete queries one site at a time instead of using the IN operator and potentially
+ // creating a huge result set
+ foreach ($idSitesNoLongerExisting as $idSiteNoLongerExisting) {
+ $r = $this->deleteLogDataFrom($logTables, function($tableToSelectFrom) use ($idSiteNoLongerExisting) {
+ return [$tableToSelectFrom . '.idsite = '. $idSiteNoLongerExisting, []];
+ });
+ foreach ($r as $k => $v) {
+ if (!array_key_exists($k, $results)) {
+ $results[$k] = 0;
+ }
+ $results[$k] += $v;
+ }
+ }
krsort($results); // make sure test results are always in same order
return $results;
diff --git a/plugins/PrivacyManager/PrivacyManager.php b/plugins/PrivacyManager/PrivacyManager.php
index f11ff26b43..96c234e628 100644
--- a/plugins/PrivacyManager/PrivacyManager.php
+++ b/plugins/PrivacyManager/PrivacyManager.php
@@ -1,4 +1,5 @@
<?php
+
/**
* Matomo - free/libre analytics platform
*
@@ -6,6 +7,7 @@
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*
*/
+
namespace Piwik\Plugins\PrivacyManager;
use HTML_QuickForm2_DataSource_Array;
@@ -48,7 +50,7 @@ class PrivacyManager extends Plugin
// options for data purging feature array[configName => configSection]
- public static $purgeDataOptions = array(
+ public static $purgeDataOptions = [
'delete_logs_enable' => 'Deletelogs',
'delete_logs_schedule_lowest_interval' => 'Deletelogs',
'delete_logs_older_than' => 'Deletelogs',
@@ -66,7 +68,7 @@ class PrivacyManager extends Plugin
'delete_reports_keep_year_reports' => 'Deletereports',
'delete_reports_keep_range_reports' => 'Deletereports',
'delete_reports_keep_segment_reports' => 'Deletereports',
- );
+ ];
private $dntChecker = null;
private $ipAnonymizer = null;
@@ -108,7 +110,8 @@ class PrivacyManager extends Plugin
$strPeriod = Common::getRequestVar('period', false);
$strDate = Common::getRequestVar('date', false);
- if (false !== $strPeriod
+ if (
+ false !== $strPeriod
&& false !== $strDate
&& (is_null($dataTable)
|| (!empty($dataTable) && $dataTable->getRowsCount() == 0))
@@ -175,12 +178,12 @@ class PrivacyManager extends Plugin
*/
public function registerEvents()
{
- return array(
+ return [
'AssetManager.getJavaScriptFiles' => 'getJsFiles',
'AssetManager.getStylesheetFiles' => 'getStylesheetFiles',
'Tracker.setTrackerCacheGeneral' => 'setTrackerCacheGeneral',
- 'Tracker.isExcludedVisit' => array($this->dntChecker, 'checkHeaderInTracker'),
- 'Tracker.setVisitorIp' => array($this->ipAnonymizer, 'setVisitorIpAddress'),
+ 'Tracker.isExcludedVisit' => [$this->dntChecker, 'checkHeaderInTracker'],
+ 'Tracker.setVisitorIp' => [$this->ipAnonymizer, 'setVisitorIpAddress'],
'Installation.defaultSettingsForm.init' => 'installationFormInit',
'Installation.defaultSettingsForm.submit' => 'installationFormSubmit',
'Translate.getClientSideTranslationKeys' => 'getClientSideTranslationKeys',
@@ -188,7 +191,7 @@ class PrivacyManager extends Plugin
'Db.getTablesInstalled' => 'getTablesInstalled',
'Visualization.beforeRender' => 'onConfigureVisualisation',
'CustomJsTracker.shouldAddTrackerFile' => 'shouldAddTrackerFile'
- );
+ ];
}
public function onConfigureVisualisation(Plugin\Visualization $view)
@@ -226,63 +229,118 @@ class PrivacyManager extends Plugin
public function getClientSideTranslationKeys(&$translationKeys)
{
- $translationKeys[] = 'General_Visit';
+ $translationKeys[] = 'CoreAdminHome_OptOutExplanation';
+ $translationKeys[] = 'CoreAdminHome_OptOutExplanationIntro';
+ $translationKeys[] = 'CoreAdminHome_SettingsSaveSuccess';
$translationKeys[] = 'General_Action';
+ $translationKeys[] = 'General_ClickHere';
+ $translationKeys[] = 'General_DailyReports';
$translationKeys[] = 'General_Details';
+ $translationKeys[] = 'General_MonthlyReports';
+ $translationKeys[] = 'General_RangeReports';
+ $translationKeys[] = 'General_Recommended';
+ $translationKeys[] = 'General_UserId';
+ $translationKeys[] = 'General_Visit';
$translationKeys[] = 'General_VisitId';
$translationKeys[] = 'General_VisitorID';
$translationKeys[] = 'General_VisitorIP';
- $translationKeys[] = 'General_UserId';
$translationKeys[] = 'General_Website';
+ $translationKeys[] = 'General_WeeklyReports';
+ $translationKeys[] = 'General_YearlyReports';
+ $translationKeys[] = 'Intl_PeriodDays';
+ $translationKeys[] = 'Intl_PeriodMonths';
$translationKeys[] = 'Live_ViewVisitorProfile';
- $translationKeys[] = 'CoreAdminHome_SettingsSaveSuccess';
- $translationKeys[] = 'CoreAdminHome_OptOutExplanation';
- $translationKeys[] = 'CoreAdminHome_OptOutExplanationIntro';
- $translationKeys[] = 'PrivacyManager_OptOutCustomize';
- $translationKeys[] = 'PrivacyManager_FontColor';
- $translationKeys[] = 'PrivacyManager_BackgroundColor';
- $translationKeys[] = 'PrivacyManager_FontSize';
- $translationKeys[] = 'PrivacyManager_FontFamily';
- $translationKeys[] = 'PrivacyManager_OptOutHtmlCode';
- $translationKeys[] = 'PrivacyManager_OptOutPreview';
- $translationKeys[] = 'PrivacyManager_AnonymizeSites';
- $translationKeys[] = 'PrivacyManager_AnonymizeRowDataFrom';
- $translationKeys[] = 'PrivacyManager_AnonymizeRowDataTo';
+ $translationKeys[] = 'PrivacyManager_AddUserIdToSearch';
+ $translationKeys[] = 'PrivacyManager_AddVisitorIPToSearch';
+ $translationKeys[] = 'PrivacyManager_AddVisitorIdToSearch';
+ $translationKeys[] = 'PrivacyManager_AnonymizeDataConfirm';
+ $translationKeys[] = 'PrivacyManager_AnonymizeDataNow';
$translationKeys[] = 'PrivacyManager_AnonymizeIp';
+ $translationKeys[] = 'PrivacyManager_AnonymizeIpDescription';
$translationKeys[] = 'PrivacyManager_AnonymizeIpHelp';
+ $translationKeys[] = 'PrivacyManager_AnonymizeIpInlineHelp';
+ $translationKeys[] = 'PrivacyManager_AnonymizeIpMaskLengtDescription';
$translationKeys[] = 'PrivacyManager_AnonymizeLocation';
$translationKeys[] = 'PrivacyManager_AnonymizeLocationHelp';
+ $translationKeys[] = 'PrivacyManager_AnonymizeOrderIdNote';
+ $translationKeys[] = 'PrivacyManager_AnonymizeProcessInfo';
+ $translationKeys[] = 'PrivacyManager_AnonymizeReferrer';
+ $translationKeys[] = 'PrivacyManager_AnonymizeReferrerNote';
+ $translationKeys[] = 'PrivacyManager_AnonymizeRowDataFrom';
+ $translationKeys[] = 'PrivacyManager_AnonymizeRowDataTo';
+ $translationKeys[] = 'PrivacyManager_AnonymizeSites';
$translationKeys[] = 'PrivacyManager_AnonymizeUserId';
$translationKeys[] = 'PrivacyManager_AnonymizeUserIdHelp';
- $translationKeys[] = 'PrivacyManager_AnonymizeProcessInfo';
- $translationKeys[] = 'PrivacyManager_AnonymizeDataNow';
- $translationKeys[] = 'PrivacyManager_AnonymizeDataConfirm';
- $translationKeys[] = 'PrivacyManager_UnsetVisitColumns';
- $translationKeys[] = 'PrivacyManager_UnsetVisitColumnsHelp';
- $translationKeys[] = 'PrivacyManager_UnsetActionColumns';
- $translationKeys[] = 'PrivacyManager_UnsetActionColumnsHelp';
- $translationKeys[] = 'PrivacyManager_SearchForDataSubject';
- $translationKeys[] = 'PrivacyManager_FindDataSubjectsBy';
- $translationKeys[] = 'PrivacyManager_NoDataSubjectsFound';
+ $translationKeys[] = 'PrivacyManager_BackgroundColor';
+ $translationKeys[] = 'PrivacyManager_DeleteAggregateReportsDetailedInfo';
+ $translationKeys[] = 'PrivacyManager_DeleteDataInterval';
+ $translationKeys[] = 'PrivacyManager_DeleteLogsOlderThan';
+ $translationKeys[] = 'PrivacyManager_DeleteRawDataInfo';
+ $translationKeys[] = 'PrivacyManager_DeleteReportsInfo2';
+ $translationKeys[] = 'PrivacyManager_DeleteReportsInfo3';
+ $translationKeys[] = 'PrivacyManager_DeleteReportsOlderThan';
+ $translationKeys[] = 'PrivacyManager_DeleteSchedulingSettings';
+ $translationKeys[] = 'PrivacyManager_DeleteSelectedVisits';
$translationKeys[] = 'PrivacyManager_DeleteVisitsConfirm';
- $translationKeys[] = 'PrivacyManager_ResultTruncated';
- $translationKeys[] = 'PrivacyManager_AddVisitorIdToSearch';
- $translationKeys[] = 'PrivacyManager_AddVisitorIPToSearch';
- $translationKeys[] = 'PrivacyManager_AddUserIdToSearch';
+ $translationKeys[] = 'PrivacyManager_DeletionFromMatomoOnly';
+ $translationKeys[] = 'PrivacyManager_DoNotTrack_Description';
$translationKeys[] = 'PrivacyManager_ExportSelectedVisits';
- $translationKeys[] = 'PrivacyManager_DeleteSelectedVisits';
- $translationKeys[] = 'PrivacyManager_SelectWebsite';
- $translationKeys[] = 'PrivacyManager_MatchingDataSubjects';
- $translationKeys[] = 'PrivacyManager_VisitsMatchedCriteria';
$translationKeys[] = 'PrivacyManager_ExportingNote';
- $translationKeys[] = 'PrivacyManager_DeletionFromMatomoOnly';
- $translationKeys[] = 'PrivacyManager_ResultIncludesAllVisits';
+ $translationKeys[] = 'PrivacyManager_FindDataSubjectsBy';
+ $translationKeys[] = 'PrivacyManager_FontColor';
+ $translationKeys[] = 'PrivacyManager_FontFamily';
+ $translationKeys[] = 'PrivacyManager_FontSize';
+ $translationKeys[] = 'PrivacyManager_ForceCookielessTracking';
+ $translationKeys[] = 'PrivacyManager_ForceCookielessTrackingDescription';
+ $translationKeys[] = 'PrivacyManager_ForceCookielessTrackingDescription2';
+ $translationKeys[] = 'PrivacyManager_ForceCookielessTrackingDescriptionNotWritable';
$translationKeys[] = 'PrivacyManager_GdprTools';
+ $translationKeys[] = 'PrivacyManager_GdprToolsOverviewHint';
$translationKeys[] = 'PrivacyManager_GdprToolsPageIntro1';
$translationKeys[] = 'PrivacyManager_GdprToolsPageIntro2';
$translationKeys[] = 'PrivacyManager_GdprToolsPageIntroAccessRight';
$translationKeys[] = 'PrivacyManager_GdprToolsPageIntroEraseRight';
- $translationKeys[] = 'PrivacyManager_GdprToolsOverviewHint';
+ $translationKeys[] = 'PrivacyManager_GeolocationAnonymizeIpNote';
+ $translationKeys[] = 'PrivacyManager_GetPurgeEstimate';
+ $translationKeys[] = 'PrivacyManager_KeepBasicMetrics';
+ $translationKeys[] = 'PrivacyManager_KeepBasicMetricsReportsDetailedInfo';
+ $translationKeys[] = 'PrivacyManager_KeepDataFor';
+ $translationKeys[] = 'PrivacyManager_KeepReportSegments';
+ $translationKeys[] = 'PrivacyManager_LastAction';
+ $translationKeys[] = 'PrivacyManager_LastDelete';
+ $translationKeys[] = 'PrivacyManager_LeastDaysInput';
+ $translationKeys[] = 'PrivacyManager_LeastMonthsInput';
+ $translationKeys[] = 'PrivacyManager_MatchingDataSubjects';
+ $translationKeys[] = 'PrivacyManager_NextDelete';
+ $translationKeys[] = 'PrivacyManager_NoDataSubjectsFound';
+ $translationKeys[] = 'PrivacyManager_OptOutCustomize';
+ $translationKeys[] = 'PrivacyManager_OptOutHtmlCode';
+ $translationKeys[] = 'PrivacyManager_OptOutPreview';
+ $translationKeys[] = 'PrivacyManager_PseudonymizeUserId';
+ $translationKeys[] = 'PrivacyManager_PseudonymizeUserIdNote';
+ $translationKeys[] = 'PrivacyManager_PseudonymizeUserIdNote2';
+ $translationKeys[] = 'PrivacyManager_PurgeNow';
+ $translationKeys[] = 'PrivacyManager_ReportsDataSavedEstimate';
+ $translationKeys[] = 'PrivacyManager_ResultIncludesAllVisits';
+ $translationKeys[] = 'PrivacyManager_ResultTruncated';
+ $translationKeys[] = 'PrivacyManager_SearchForDataSubject';
+ $translationKeys[] = 'PrivacyManager_SelectWebsite';
+ $translationKeys[] = 'PrivacyManager_UnsetActionColumns';
+ $translationKeys[] = 'PrivacyManager_UnsetActionColumnsHelp';
+ $translationKeys[] = 'PrivacyManager_UnsetVisitColumns';
+ $translationKeys[] = 'PrivacyManager_UnsetVisitColumnsHelp';
+ $translationKeys[] = 'PrivacyManager_UseAnonymizeIp';
+ $translationKeys[] = 'PrivacyManager_UseAnonymizeOrderId';
+ $translationKeys[] = 'PrivacyManager_UseAnonymizedIpForVisitEnrichment';
+ $translationKeys[] = 'PrivacyManager_UseAnonymizedIpForVisitEnrichmentNote';
+ $translationKeys[] = 'PrivacyManager_UseDeleteLog';
+ $translationKeys[] = 'PrivacyManager_UseDeleteReports';
+ $translationKeys[] = 'PrivacyManager_VisitsMatchedCriteria';
+ $translationKeys[] = 'PrivacyManager_VisitsSuccessfullyDeleted';
+ $translationKeys[] = 'PrivacyManager_VisitsSuccessfullyExported';
+ $translationKeys[] = 'UsersManager_AllWebsites';
+ $translationKeys[] = 'General_Id';
+ $translationKeys[] = 'PrivacyManager_FindMatchingDataSubjects';
}
public function setTrackerCacheGeneral(&$cacheContent)
@@ -299,26 +357,16 @@ class PrivacyManager extends Plugin
public function getJsFiles(&$jsFiles)
{
- $jsFiles[] = "plugins/PrivacyManager/angularjs/report-deletion.model.js";
- $jsFiles[] = "plugins/PrivacyManager/angularjs/schedule-report-deletion/schedule-report-deletion.controller.js";
- $jsFiles[] = "plugins/PrivacyManager/angularjs/anonymize-ip/anonymize-ip.controller.js";
- $jsFiles[] = "plugins/PrivacyManager/angularjs/do-not-track-preference/do-not-track-preference.controller.js";
- $jsFiles[] = "plugins/PrivacyManager/angularjs/delete-old-logs/delete-old-logs.controller.js";
- $jsFiles[] = "plugins/PrivacyManager/angularjs/delete-old-reports/delete-old-reports.controller.js";
$jsFiles[] = "plugins/PrivacyManager/angularjs/opt-out-customizer/opt-out-customizer.controller.js";
$jsFiles[] = "plugins/PrivacyManager/angularjs/opt-out-customizer/opt-out-customizer.directive.js";
- $jsFiles[] = "plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.controller.js";
- $jsFiles[] = "plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.js";
- $jsFiles[] = "plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.controller.js";
- $jsFiles[] = "plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.js";
}
public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = "plugins/PrivacyManager/angularjs/opt-out-customizer/opt-out-customizer.directive.less";
- $stylesheets[] = "plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.less";
+ $stylesheets[] = "plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.less";
$stylesheets[] = "plugins/PrivacyManager/stylesheets/gdprOverview.less";
- $stylesheets[] = "plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.less";
+ $stylesheets[] = "plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.less";
$stylesheets[] = "plugins/PrivacyManager/stylesheets/footerLinks.less";
}
@@ -329,20 +377,28 @@ class PrivacyManager extends Plugin
*/
public function installationFormInit(FormDefaultSettings $form)
{
- $form->addElement('checkbox', 'do_not_track', null,
- array(
+ $form->addElement(
+ 'checkbox',
+ 'do_not_track',
+ null,
+ [
'content' => '<div class="form-help">' . Piwik::translate('PrivacyManager_DoNotTrack_EnabledMoreInfo') . '</div> &nbsp;&nbsp;' . Piwik::translate('PrivacyManager_DoNotTrack_Enable')
- ));
- $form->addElement('checkbox', 'anonymise_ip', null,
- array(
- 'content' => '<div class="form-help">' . Piwik::translate('PrivacyManager_AnonymizeIpExtendedHelp', array('213.34.51.91', '213.34.0.0')) . '</div> &nbsp;&nbsp;' . Piwik::translate('PrivacyManager_AnonymizeIpInlineHelp')
- ));
+ ]
+ );
+ $form->addElement(
+ 'checkbox',
+ 'anonymise_ip',
+ null,
+ [
+ 'content' => '<div class="form-help">' . Piwik::translate('PrivacyManager_AnonymizeIpExtendedHelp', ['213.34.51.91', '213.34.0.0']) . '</div> &nbsp;&nbsp;' . Piwik::translate('PrivacyManager_AnonymizeIpInlineHelp')
+ ]
+ );
// default values
- $form->addDataSource(new HTML_QuickForm2_DataSource_Array(array(
+ $form->addDataSource(new HTML_QuickForm2_DataSource_Array([
'do_not_track' => $this->dntChecker->isActive(),
'anonymise_ip' => IPAnonymizer::isActive(),
- )));
+ ]));
}
/**
@@ -375,7 +431,7 @@ class PrivacyManager extends Plugin
*/
public static function getPurgeDataSettings()
{
- $settings = array();
+ $settings = [];
// load settings from ini config
$config = PiwikConfig::getInstance();
@@ -520,7 +576,7 @@ class PrivacyManager extends Plugin
$settings = self::getPurgeDataSettings();
}
- $result = array();
+ $result = [];
if ($settings['delete_logs_enable']) {
/** @var LogDataPurger $logDataPurger */
@@ -539,8 +595,7 @@ class PrivacyManager extends Plugin
private static function getReportDate($strPeriod, $strDate)
{
// if range, only look at the first date
- if ($strPeriod == 'range') {
-
+ if ($strPeriod === 'range') {
$idSite = Common::getRequestVar('idSite', '');
if (intval($idSite) != 0) {
@@ -552,13 +607,10 @@ class PrivacyManager extends Plugin
$period = new Range('range', $strDate, $timezone);
$reportDate = $period->getDateStart();
-
} elseif (Period::isMultiplePeriod($strDate, $strPeriod)) {
-
// if a multiple period, this function is irrelevant
return false;
-
- } else {
+ } else {
// otherwise, use the date as given
$reportDate = Date::factory($strDate);
}
@@ -598,8 +650,7 @@ class PrivacyManager extends Plugin
$reportsOlderThan = Date::factory('today')->subMonth(1 + $reportsOlderThan);
}
- return ReportsPurger::shouldReportBePurged(
- $reportDateYear, $reportDateMonth, $reportsOlderThan);
+ return ReportsPurger::shouldReportBePurged($reportDateYear, $reportDateMonth, $reportsOlderThan);
}
/**
@@ -608,9 +659,9 @@ class PrivacyManager extends Plugin
*/
private static function getMetricsToKeep()
{
- return array('nb_uniq_visitors', 'nb_visits', 'nb_users', 'nb_actions', 'max_actions',
- 'sum_visit_length', 'bounce_count', 'nb_visits_converted', 'nb_conversions',
- 'revenue', 'quantity', 'price', 'orders');
+ return ['nb_uniq_visitors', 'nb_visits', 'nb_users', 'nb_actions', 'max_actions',
+ 'sum_visit_length', 'bounce_count', 'nb_visits_converted', 'nb_conversions',
+ 'revenue', 'quantity', 'price', 'orders'];
}
/**
@@ -640,8 +691,7 @@ class PrivacyManager extends Plugin
// for each goal metric, there's a different name for each goal, including the overview,
// the order report & cart report
foreach ($goalMetricsToKeep as $metric) {
- for ($i = 1; $i <= $maxGoalId; ++$i) // maxGoalId can be 0
- {
+ for ($i = 1; $i <= $maxGoalId; ++$i) { // maxGoalId can be 0
$metricsToKeep[] = Archiver::getRecordName($metric, $i);
}
@@ -672,9 +722,10 @@ class PrivacyManager extends Plugin
$deleteIntervalDays = $settings[$setting];
$deleteIntervalSeconds = $this->getDeleteIntervalInSeconds($deleteIntervalDays);
- if ($lastDelete === false ||
- $lastDelete === '' ||
- ((int)$lastDelete + $deleteIntervalSeconds) <= time()
+ if (
+ $lastDelete === false
+ || $lastDelete === ''
+ || ((int)$lastDelete + $deleteIntervalSeconds) <= time()
) {
return true;
} else // not time to run data purge
@@ -683,7 +734,7 @@ class PrivacyManager extends Plugin
}
}
- function getDeleteIntervalInSeconds($deleteInterval)
+ private function getDeleteIntervalInSeconds($deleteInterval)
{
return (int)$deleteInterval * 24 * 60 * 60;
}
diff --git a/plugins/PrivacyManager/angularjs/anonymize-ip/anonymize-ip.controller.js b/plugins/PrivacyManager/angularjs/anonymize-ip/anonymize-ip.controller.js
deleted file mode 100644
index cc14920c72..0000000000
--- a/plugins/PrivacyManager/angularjs/anonymize-ip/anonymize-ip.controller.js
+++ /dev/null
@@ -1,42 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('AnonymizeIpController', AnonymizeIpController);
-
- AnonymizeIpController.$inject = ['piwikApi'];
-
- function AnonymizeIpController(piwikApi) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
-
- var self = this;
- this.isLoading = false;
-
- this.save = function () {
- this.isLoading = true;
-
- piwikApi.post({module: 'API', method: 'PrivacyManager.setAnonymizeIpSettings'}, {
- anonymizeIPEnable: this.enabled ? '1' : '0',
- anonymizeUserId: this.anonymizeUserId ? '1' : '0',
- anonymizeOrderId: this.anonymizeOrderId ? '1' : '0',
- forceCookielessTracking: this.forceCookielessTracking ? '1' : '0',
- anonymizeReferrer: this.anonymizeReferrer ? this.anonymizeReferrer : '',
- maskLength: this.maskLength,
- useAnonymizedIpForVisitEnrichment: parseInt(this.useAnonymizedIpForVisitEnrichment, 10) ? '1' : '0'
- }).then(function (success) {
- self.isLoading = false;
-
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(_pk_translate('CoreAdminHome_SettingsSaveSuccess'), {context: 'success', id:'privacyManagerSettings'});
- notification.scrollToNotification();
-
- }, function () {
- self.isLoading = false;
- });
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.controller.js b/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.controller.js
deleted file mode 100644
index 4ae473318c..0000000000
--- a/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.controller.js
+++ /dev/null
@@ -1,145 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('AnonymizeLogDataController', AnonymizeLogDataController);
-
- AnonymizeLogDataController.$inject = ["$scope", "piwikApi", "piwik", "$timeout"];
-
- function AnonymizeLogDataController($scope, piwikApi, piwik, $timeout) {
- function sub(value)
- {
- if (value < 10) {
- return '0' + value;
- }
- return value;
- }
-
- var self = this;
- var now = new Date();
- this.isLoading = false;
- this.isDeleting = false;
- this.anonymizeIp = false;
- this.anonymizeLocation = false;
- this.anonymizeUserId = false;
- this.site = {id: 'all', name: 'All Websites'};
- this.availableVisitColumns = [];
- this.availableActionColumns = [];
- this.selectedVisitColumns = [{column: ''}];
- this.selectedActionColumns = [{column: ''}];
- this.start_date = now.getFullYear() + '-' + sub(now.getMonth() + 1) + '-' + sub(now.getDay() + 1);
- this.end_date = this.start_date;
-
- piwikApi.fetch({method: 'PrivacyManager.getAvailableVisitColumnsToAnonymize'}).then(function (columns) {
- self.availableVisitColumns = [];
- angular.forEach(columns, function (column) {
- self.availableVisitColumns.push({key: column.column_name, value: column.column_name});
- });
- });
-
- piwikApi.fetch({method: 'PrivacyManager.getAvailableLinkVisitActionColumnsToAnonymize'}).then(function (columns) {
- self.availableActionColumns = [];
-
- angular.forEach(columns, function (column) {
- self.availableActionColumns.push({key: column.column_name, value: column.column_name});
- });
- });
-
- this.onVisitColumnChange = function () {
- var hasAll = true;
- angular.forEach(this.selectedVisitColumns, function (visitColumn) {
- if (!visitColumn || !visitColumn.column) {
- hasAll = false;
- }
- });
- if (hasAll) {
- this.addVisitColumn();
- }
- };
-
- this.addVisitColumn = function () {
- this.selectedVisitColumns.push({column: ''});
- };
-
- this.removeVisitColumn = function (index) {
- if (index > -1) {
- var lastIndex = this.selectedVisitColumns.length - 1;
- if (lastIndex === index) {
- this.selectedVisitColumns[index] = {column: ''};
- } else {
- this.selectedVisitColumns.splice(index, 1);
- }
- }
- };
-
- this.onActionColumnChange = function () {
- var hasAll = true;
- angular.forEach(this.selectedActionColumns, function (actionColumn) {
- if (!actionColumn || !actionColumn.column) {
- hasAll = false;
- }
- });
- if (hasAll) {
- this.addActionColumn();
- }
- };
-
- this.addActionColumn = function () {
- this.selectedActionColumns.push({column: ''});
- };
-
- this.removeActionColumn = function (index) {
- if (index > -1) {
- var lastIndex = this.selectedActionColumns.length - 1;
- if (lastIndex === index) {
- this.selectedActionColumns[index] = {column: ''};
- } else {
- this.selectedActionColumns.splice(index, 1);
- }
- }
- };
-
- this.scheduleAnonymization = function () {
- var date = this.start_date + ',' + this.end_date;
- if (this.start_date === this.end_date) {
- date = this.start_date;
- }
-
- var params = {date: date};
- params.idSites = this.site.id;
- params.anonymizeIp = this.anonymizeIp ? '1' : '0';
- params.anonymizeLocation = this.anonymizeLocation ? '1' : '0';
- params.anonymizeUserId = this.anonymizeUserId ? '1' : '0';
- params.unsetVisitColumns = [];
- params.unsetLinkVisitActionColumns = [];
- angular.forEach(this.selectedVisitColumns, function (column) {
- if (column.column) {
- params.unsetVisitColumns.push(column.column);
- }
- });
- angular.forEach(this.selectedActionColumns, function (column) {
- if (column.column) {
- params.unsetLinkVisitActionColumns.push(column.column);
- }
- });
-
- piwik.helper.modalConfirm('#confirmAnonymizeLogData', {yes: function () {
- piwikApi.post({method: 'PrivacyManager.anonymizeSomeRawData'}, params).then(function () {
- location.reload(true);
- });
- }});
- };
-
- $timeout(function () {
- var options1 = piwik.getBaseDatePickerOptions(null);
- var options2 = piwik.getBaseDatePickerOptions(null);
-
- $(".anonymizeStartDate").datepicker(options1);
- $(".anonymizeEndDate").datepicker(options2);
- });
-
- }
-})();
diff --git a/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.html b/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.html
deleted file mode 100644
index 00b699fd85..0000000000
--- a/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.html
+++ /dev/null
@@ -1,136 +0,0 @@
-<div class="anonymizeLogData">
-
- <div class="form-group row">
- <div class="col s12 input-field">
- <div>
- <label for="anonymizeSite" class="siteSelectorLabel">{{ 'PrivacyManager_AnonymizeSites'|translate }}</label>
- <div piwik-siteselector
- class="sites_autocomplete"
- ng-model="anonymizeLogData.site"
- id="anonymizeSite"
- show-all-sites-item="true"
- switch-site-on-select="false"
- show-selected-site="true"></div>
- </div>
- </div>
- </div>
-
- <div class="form-group row">
- <div class="col s6 input-field">
- <div>
- <label for="anonymizeStartDate" class="active">{{ 'PrivacyManager_AnonymizeRowDataFrom'|translate }}</label>
- <input type="text" ng-model="anonymizeLogData.start_date"
- class="anonymizeStartDate"
- name="anonymizeStartDate">
- </div>
- </div>
- <div class="col s6 input-field">
- <div>
- <label for="anonymizeEndDate" class="active">{{ 'PrivacyManager_AnonymizeRowDataTo'|translate }}</label>
- <input type="text" ng-model="anonymizeLogData.end_date"
- class="anonymizeEndDate"
- name="anonymizeEndDate">
- </div>
- </div>
- </div>
-
- <div piwik-field uicontrol="checkbox" name="anonymizeIp"
- data-title="{{ 'PrivacyManager_AnonymizeIp'|translate }}"
- ng-model="anonymizeLogData.anonymizeIp"
- introduction="{{ 'General_Visit'|translate }}"
- inline-help="{{ 'PrivacyManager_AnonymizeIpHelp'|translate }}">
- </div>
-
- <div piwik-field uicontrol="checkbox" name="anonymizeLocation"
- data-title="{{ 'PrivacyManager_AnonymizeLocation'|translate }}"
- ng-model="anonymizeLogData.anonymizeLocation"
- inline-help="{{ 'PrivacyManager_AnonymizeLocationHelp'|translate }}">
- </div>
-
- <div piwik-field uicontrol="checkbox" name="anonymizeTheUserId"
- data-title="{{ 'PrivacyManager_AnonymizeUserId'|translate }}"
- ng-model="anonymizeLogData.anonymizeUserId"
- inline-help="{{ 'PrivacyManager_AnonymizeUserIdHelp'|translate }}">
- </div>
-
- <div class="form-group row">
- <div class="col s12 m6">
- <div>
- <label for="visit_columns">{{ 'PrivacyManager_UnsetVisitColumns'|translate }}</label>
-
- <div ng-repeat="(index, visitColumn) in anonymizeLogData.selectedVisitColumns"
- class="selectedVisitColumns selectedVisitColumns{{ index }} multiple valign-wrapper">
-
- <div piwik-field uicontrol="select" name="visit_columns"
- class="innerFormField"
- full-width="true"
- ng-model="anonymizeLogData.selectedVisitColumns[index].column"
- ng-change="anonymizeLogData.onVisitColumnChange();"
- options="anonymizeLogData.availableVisitColumns">
- </div>
-
- <span ng-click="anonymizeLogData.removeVisitColumn(index)"
- title="{{ 'General_Remove'|translate }}"
- ng-hide="(index + 1) == (anonymizeLogData.selectedVisitColumns|length)"
- class="icon-minus valign"></span>
- </div>
- </div>
- </div>
-
- <div class="col s12 m6">
- <div class="form-help">
- <span class="inline-help">{{ 'PrivacyManager_UnsetVisitColumnsHelp'|translate }}</span>
- </div>
- </div>
- </div>
-
- <div class="form-group row">
- <div class="col s12"><h3>{{ 'General_Action'|translate }}</h3></div>
- </div>
-
- <div class="form-group row">
- <div class="col s12 m6">
- <div>
- <label for="action_columns">{{ 'PrivacyManager_UnsetActionColumns'|translate }}</label>
-
- <div ng-repeat="(index, actionColumn) in anonymizeLogData.selectedActionColumns"
- class="selectedActionColumns selectedActionColumns{{ index }} multiple valign-wrapper">
-
- <div piwik-field uicontrol="select" name="action_columns"
- class="innerFormField"
- full-width="true"
- ng-model="anonymizeLogData.selectedActionColumns[index].column"
- ng-change="anonymizeLogData.onActionColumnChange();"
- options="anonymizeLogData.availableActionColumns">
- </div>
-
- <span ng-click="anonymizeLogData.removeActionColumn(index)"
- title="{{ 'General_Remove'|translate }}"
- ng-hide="(index + 1) == (anonymizeLogData.selectedActionColumns|length)"
- class="icon-minus valign"></span>
- </div>
- </div>
- </div>
-
- <div class="col s12 m6">
- <div class="form-help">
- <span class="inline-help">{{ 'PrivacyManager_UnsetActionColumnsHelp'|translate }}</span>
- </div>
- </div>
- </div>
-
- <p><span class="icon-info"></span> {{ 'PrivacyManager_AnonymizeProcessInfo'|translate }}</p>
-
- <div piwik-save-button
- class="anonymizePastData"
- onconfirm="anonymizeLogData.scheduleAnonymization()"
- data-disabled="!anonymizeLogData.anonymizeIp && !anonymizeLogData.anonymizeLocation && !anonymizeLogData.selectedVisitColumns && !anonymizeLogData.selectedActionColumns"
- value="{{ 'PrivacyManager_AnonymizeDataNow'|translate }}">
- </div>
-
- <div class="ui-confirm" id="confirmAnonymizeLogData">
- <h2>{{ 'PrivacyManager_AnonymizeDataConfirm'|translate }}</h2>
- <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
- <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
- </div>
-</div>
diff --git a/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.js b/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.js
deleted file mode 100644
index ae990dc7a3..0000000000
--- a/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div matomo-anonymize-log-data>
- */
-(function () {
- angular.module('piwikApp').directive('matomoAnonymizeLogData', anonymizeLogData);
-
- anonymizeLogData.$inject = ['piwik'];
-
- function anonymizeLogData(piwik){
- return {
- restrict: 'A',
- scope: {},
- templateUrl: 'plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.html?cb=' + piwik.cacheBuster,
- controller: 'AnonymizeLogDataController',
- controllerAs: 'anonymizeLogData',
- compile: function (element, attrs) {
-
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/PrivacyManager/angularjs/delete-old-logs/delete-old-logs.controller.js b/plugins/PrivacyManager/angularjs/delete-old-logs/delete-old-logs.controller.js
deleted file mode 100644
index 08cda646b8..0000000000
--- a/plugins/PrivacyManager/angularjs/delete-old-logs/delete-old-logs.controller.js
+++ /dev/null
@@ -1,54 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('DeleteOldLogsController', DeleteOldLogsController);
-
- DeleteOldLogsController.$inject = ['reportDeletionModel', 'piwikApi', '$timeout'];
-
- function DeleteOldLogsController(reportDeletionModel, piwikApi, $timeout) {
-
- var self = this;
-
- this.isLoading = false;
-
- function saveSettings()
- {
- var method = 'PrivacyManager.setDeleteLogsSettings';
- reportDeletionModel.savePurageDataSettings(self, method, self.getSettings());
- }
-
- this.getSettings = function () {
- return {
- enableDeleteLogs: this.enabled ? '1' : '0',
- deleteLogsOlderThan: this.deleteOlderThan
- };
- }
-
- this.reloadDbStats = function () {
- reportDeletionModel.updateSettings(this.getSettings());
- }
-
- $timeout(function () {
- reportDeletionModel.initSettings(self.getSettings());
- });
-
- this.save = function () {
-
- if (this.enabled) {
- var confirmId = 'deleteLogsConfirm';
- if (reportDeletionModel.settings && '1' === reportDeletionModel.settings.enableDeleteReports) {
- confirmId = 'deleteBothConfirm';
- }
- $('#confirmDeleteSettings').find('>h2').hide();
- $("#" + confirmId).show();
- piwikHelper.modalConfirm('#confirmDeleteSettings', {yes: saveSettings});
- } else {
- saveSettings();
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/PrivacyManager/angularjs/delete-old-reports/delete-old-reports.controller.js b/plugins/PrivacyManager/angularjs/delete-old-reports/delete-old-reports.controller.js
deleted file mode 100644
index 1839dc7bfa..0000000000
--- a/plugins/PrivacyManager/angularjs/delete-old-reports/delete-old-reports.controller.js
+++ /dev/null
@@ -1,66 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('DeleteOldReportsController', DeleteOldReportsController);
-
- DeleteOldReportsController.$inject = ['reportDeletionModel', 'piwikApi', '$timeout'];
-
- function DeleteOldReportsController(reportDeletionModel, piwikApi, $timeout) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
-
- var self = this;
- this.isLoading = false;
-
- function getInt(value)
- {
- return value ? '1' : '0';
- }
-
- function saveSettings()
- {
- var method = 'PrivacyManager.setDeleteReportsSettings';
- reportDeletionModel.savePurageDataSettings(self, method, self.getSettings());
- }
-
- this.getSettings = function () {
- return {
- enableDeleteReports: this.enabled ? '1' : '0',
- deleteReportsOlderThan: this.deleteOlderThan,
- keepBasic: getInt(this.keepBasic),
- keepDay: getInt(this.keepDataForDay),
- keepWeek: getInt(this.keepDataForWeek),
- keepMonth: getInt(this.keepDataForMonth),
- keepYear: getInt(this.keepDataForYear),
- keepRange: getInt(this.keepDataForRange),
- keepSegments: getInt(this.keepDataForSegments),
- };
- }
-
- this.reloadDbStats = function () {
- reportDeletionModel.updateSettings(this.getSettings());
- }
-
- $timeout(function () {
- reportDeletionModel.initSettings(self.getSettings());
- });
-
- this.save = function () {
-
- if (this.enabled) {
- var confirmId = 'deleteReportsConfirm';
- if (reportDeletionModel.settings && '1' === reportDeletionModel.settings.enableDeleteLogs) {
- confirmId = 'deleteBothConfirm';
- }
- $('#confirmDeleteSettings').find('>h2').hide();
- $("#" + confirmId).show();
- piwikHelper.modalConfirm('#confirmDeleteSettings', {yes: saveSettings});
- } else {
- saveSettings();
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/PrivacyManager/angularjs/do-not-track-preference/do-not-track-preference.controller.js b/plugins/PrivacyManager/angularjs/do-not-track-preference/do-not-track-preference.controller.js
deleted file mode 100644
index 27c74cb624..0000000000
--- a/plugins/PrivacyManager/angularjs/do-not-track-preference/do-not-track-preference.controller.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('DoNotTrackPreferenceController', DoNotTrackPreferenceController);
-
- DoNotTrackPreferenceController.$inject = ['piwikApi'];
-
- function DoNotTrackPreferenceController(piwikApi) {
- // remember to keep controller very simple. Create a service/factory (model) if needed
-
- var self = this;
- this.isLoading = false;
-
- this.save = function () {
- this.isLoading = true;
-
- var action = 'deactivateDoNotTrack';
- if (this.enabled === '1') {
- action = 'activateDoNotTrack';
- }
-
- piwikApi.post({module: 'API', method: 'PrivacyManager.' + action}).then(function (success) {
-
- self.isLoading = false;
-
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(_pk_translate('CoreAdminHome_SettingsSaveSuccess'), {context: 'success', id:'privacyManagerSettings'});
- notification.scrollToNotification();
-
- }, function () {
- self.isLoading = false;
- });
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.controller.js b/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.controller.js
deleted file mode 100644
index 1b4b95acef..0000000000
--- a/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.controller.js
+++ /dev/null
@@ -1,156 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('ManageGdprController', ManageGdprController);
-
- ManageGdprController.$inject = ["$scope", "piwikApi", "piwik", "$timeout"];
-
- function ManageGdprController($scope, piwikApi, piwik, $timeout) {
-
- var self = this;
- this.isLoading = false;
- this.isDeleting = false;
- this.site = {id: 'all', name: 'All Websites'};
- this.segment_filter = 'userId==';
- this.dataSubjects = [];
- this.toggleAll = true;
- this.hasSearched = false;
- this.profileEnabled = piwik.visitorProfileEnabled;
-
- var sitesPromise = piwikApi.fetch({method: 'SitesManager.getSitesIdWithAdminAccess', filter_limit: '-1'});
-
- this.linkTo = function (action){
- var currentUrl = window.location.pathname + window.location.search;
- var newUrl = piwik.broadcast.updateParamValue('module=PrivacyManager', currentUrl);
- newUrl = piwik.broadcast.updateParamValue('action=' + action, newUrl);
- return newUrl;
- }
-
- function showSuccessNotification(message)
- {
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(message, {context: 'success', id: 'manageGdpr'});
-
- $timeout(function () {
- notification.scrollToNotification();
- }, 200);
- }
-
- this.toggleActivateAll = function () {
- var toggleAll = this.toggleAll;
- angular.forEach(this.dataSubjects, function (dataSubject) {
- dataSubject.dataSubjectActive = toggleAll;
- });
- };
-
- this.hasActiveDataSubjects = function()
- {
- return !!this.getActivatedDataSubjects().length;
- };
-
- this.getActivatedDataSubjects = function () {
- var visitsToDelete = [];
-
- angular.forEach(this.dataSubjects, function (visit) {
- if (visit.dataSubjectActive) {
- visitsToDelete.push({idsite: visit.idSite, idvisit: visit.idVisit});
- }
- });
- return visitsToDelete;
- }
-
- this.showProfile = function (visitorId, idSite) {
- require('piwik/UI').VisitorProfileControl.showPopover(visitorId, idSite);
- };
-
- this.exportDataSubject = function () {
- var visitsToDelete = this.getActivatedDataSubjects();
- piwikApi.post({
- module: 'API',
- method: 'PrivacyManager.exportDataSubjects',
- format: 'json',
- filter_limit: -1,
- }, {visits: visitsToDelete}).then(function (visits) {
- showSuccessNotification('Visits were successfully exported');
- piwik.helper.sendContentAsDownload('exported_data_subjects.json', JSON.stringify(visits));
- });
- };
-
- this.deleteDataSubject = function () {
- piwik.helper.modalConfirm('#confirmDeleteDataSubject', {yes: function () {
- self.isDeleting = true;
- var visitsToDelete = self.getActivatedDataSubjects();
-
- piwikApi.post({
- module: 'API',
- method: 'PrivacyManager.deleteDataSubjects',
- filter_limit: -1,
- }, {visits: visitsToDelete}).then(function (visits) {
- self.dataSubjects = [];
- self.isDeleting = false;
- showSuccessNotification('Visits were successfully deleted');
- self.findDataSubjects();
- }, function () {
- self.isDeleting = false;
- });
- }});
- };
-
- this.addFilter = function (segment, value) {
- this.segment_filter += ',' + segment + '==' + value;
- this.findDataSubjects();
- };
-
- this.findDataSubjects = function () {
- this.dataSubjects = [];
- this.isLoading = true;
- this.toggleAll = true;
-
- function addDatePadding(number)
- {
- if (number < 10) {
- return '0' + number;
- }
- return number;
- }
-
- var now = new Date();
- var dateString = (now.getFullYear() + 2) + '-' + addDatePadding(now.getMonth() + 1) + '-' + addDatePadding(now.getDay());
- // we are adding two years to make sure to also capture some requests in the future as we fetch data across
- // different sites and different timezone and want to avoid missing any possible requests
-
- sitesPromise.then(function (idsites) {
-
- var siteIds = self.site.id;
- if (siteIds === 'all' && !piwik.hasSuperUserAccess) {
- // when superuser, we speed the request up a little and simply use 'all'
- siteIds = idsites;
- if (angular.isArray(idsites)) {
- siteIds = idsites.join(',');
- }
- }
-
- piwikApi.fetch({
- idSite: siteIds,
- module: 'API',
- method: 'PrivacyManager.findDataSubjects',
- segment: self.segment_filter,
- }).then(function (visits) {
- self.hasSearched = true;
- angular.forEach(visits, function (visit) {
- visit.dataSubjectActive = true;
- });
- self.dataSubjects = visits;
- self.isLoading = false;
- }, function () {
- self.isLoading = false;
- });
- });
- };
- }
-})();
diff --git a/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.html b/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.html
deleted file mode 100644
index 79c4ba7fec..0000000000
--- a/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.html
+++ /dev/null
@@ -1,134 +0,0 @@
-<div class="manageGdpr">
- <div piwik-content-block content-title="{{ 'PrivacyManager_GdprTools'|translate }}">
- <div class="intro">
- <p>
- {{ 'PrivacyManager_GdprToolsPageIntro1'|translate }}
- <br /><br />
- {{ 'PrivacyManager_GdprToolsPageIntro2'|translate }}
- <br />
- </p>
- <ol>
- <li>{{ 'PrivacyManager_GdprToolsPageIntroAccessRight'|translate }}</li>
- <li>{{ 'PrivacyManager_GdprToolsPageIntroEraseRight'|translate }}</li>
- </ol>
- <p><br /><span ng-bind-html="'PrivacyManager_GdprToolsOverviewHint'|translate:('<a href=\'' + manageGdpr.linkTo('gdprOverview') + '\'>'):('</a>')"></span></p>
- </div>
- <h3>{{ 'PrivacyManager_SearchForDataSubject'|translate }}</h3>
-
- <div class="form-group row">
- <div class="col s12 input-field">
- <div>
- <label for="gdprsite" class="siteSelectorLabel">{{ 'PrivacyManager_SelectWebsite'|translate }}</label>
- <div piwik-siteselector
- class="sites_autocomplete"
- ng-model="manageGdpr.site"
- id="gdprsite"
- show-all-sites-item="true"
- switch-site-on-select="false"
- show-selected-site="true"></div>
- </div>
- </div>
- </div>
-
- <div class="form-group row segmentFilterGroup">
- <div class="col s12">
- <div>
- <label style="margin: 8px 0;display: inline-block;">{{ 'PrivacyManager_FindDataSubjectsBy'|translate }}</label>
- <div piwik-segment-generator
- visit-segments-only="1"
- idsite="manageGdpr.site.id"
- ng-model="manageGdpr.segment_filter"></div>
- </div>
- </div>
- </div>
-
- <div piwik-save-button
- class="findDataSubjects"
- onconfirm="manageGdpr.findDataSubjects()"
- data-disabled="!manageGdpr.segment_filter"
- value="Find matching data subjects"
- saving="manageGdpr.isLoading">
- </div>
- </div>
-
- <div ng-show="!manageGdpr.dataSubjects.length && manageGdpr.hasSearched">
- <h2>{{ 'PrivacyManager_NoDataSubjectsFound'|translate }}</h2>
- </div>
- <div ng-show="manageGdpr.dataSubjects.length">
-
- <h2>{{ 'PrivacyManager_MatchingDataSubjects'|translate }}</h2>
- <p>{{ 'PrivacyManager_VisitsMatchedCriteria'|translate }}
- {{ 'PrivacyManager_ExportingNote'|translate }}
- <br /> <br />
- {{ 'PrivacyManager_DeletionFromMatomoOnly'|translate }}
- <br /><br />
- {{ 'PrivacyManager_ResultIncludesAllVisits'|translate }}
- </p>
- <table piwik-content-table>
- <thead>
- <tr>
- <th class="checkInclude">
- <div piwik-field uicontrol="checkbox" name="activateAll"
- ng-model="manageGdpr.toggleAll"
- ng-change="manageGdpr.toggleActivateAll()"
- full-width="true">
- </div>
- </th>
- <th>{{ 'General_Website'|translate }}</th>
- <th>{{ 'General_VisitId'|translate }}</th>
- <th>{{ 'General_VisitorID'|translate }}</th>
- <th>{{ 'General_VisitorIP'|translate }}</th>
- <th>{{ 'General_UserId'|translate }}</th>
- <th>{{ 'General_Details'|translate }}</th>
- <th ng-show="manageGdpr.profileEnabled">{{ 'General_Action'|translate }}</th>
- </tr>
- </thead>
- <tbody>
- <tr ng-show="(manageGdpr.dataSubjects|length) > 400">
- <td colspan="8">{{ 'PrivacyManager_ResultTruncated'|translate:('400') }}</td>
- </tr>
- <tr ng-repeat="(index, dataSubject) in manageGdpr.dataSubjects" title="Last action: {{ dataSubject.lastActionDateTime }}">
- <td class="checkInclude">
- <div piwik-field uicontrol="checkbox" name="subject{{dataSubject.idVisit}}"
- ng-model="manageGdpr.dataSubjects[index].dataSubjectActive"
- full-width="true">
- </div>
- </td>
- <td class="site" title="(ID {{dataSubject.idSite}})">{{ dataSubject.siteName }}</td>
- <td class="visitId">{{ dataSubject.idVisit }}</td>
- <td class="visitorId"><a ng-click="manageGdpr.addFilter('visitorId', dataSubject.visitorId)" title="{{ 'PrivacyManager_AddVisitorIdToSearch'|translate }}">{{ dataSubject.visitorId }}</a></td>
- <td class="visitorIp"><a ng-click="manageGdpr.addFilter('visitIp', dataSubject.visitIp)" title="{{ 'PrivacyManager_AddVisitorIPToSearch'|translate }}">{{ dataSubject.visitIp }}</a></td>
- <td class="userId"><a ng-click="manageGdpr.addFilter('userId', dataSubject.userId)" title="{{ 'PrivacyManager_AddUserIdToSearch'|translate }}">{{ dataSubject.userId }}</a></td>
- <td>
- <span title="{{ dataSubject.deviceType }} {{ dataSubject.deviceModel }}"><img height="16" ng-src="{{ dataSubject.deviceTypeIcon }}"></span>
- <span title="{{ dataSubject.operatingSystem }}"><img height="16" ng-src="{{ dataSubject.operatingSystemIcon }}"></span>
- <span title="{{ dataSubject.browser }} {{ dataSubject.browserFamilyDescription }}"><img height="16" ng-src="{{ dataSubject.browserIcon }}"></span>
- <span title="{{ dataSubject.country }} {{ dataSubject.region }}"><img height="16" ng-src="{{ dataSubject.countryFlag }}"></span>
- </td>
- <td ng-show="manageGdpr.profileEnabled"><a class="visitorLogTooltip" title="View visitor profile" ng-click="manageGdpr.showProfile(dataSubject.visitorId, dataSubject.idSite)">
- <img src="plugins/Live/images/visitorProfileLaunch.png"> <span>{{ 'Live_ViewVisitorProfile'|translate }}</span>
- </a></td>
- </tr>
- </tbody>
- </table>
-
- <div piwik-save-button
- class="exportDataSubjects"
- onconfirm="manageGdpr.exportDataSubject()"
- data-disabled="!manageGdpr.hasActiveDataSubjects()"
- value="{{ 'PrivacyManager_ExportSelectedVisits'|translate }}">
- </div>
- <div piwik-save-button
- class="deleteDataSubjects"
- onconfirm="manageGdpr.deleteDataSubject()"
- data-disabled="!manageGdpr.hasActiveDataSubjects() || manageGdpr.isDeleting"
- value="{{ 'PrivacyManager_DeleteSelectedVisits'|translate }}">
- </div>
- </div>
-
- <div class="ui-confirm" id="confirmDeleteDataSubject">
- <h2>{{ 'PrivacyManager_DeleteVisitsConfirm'|translate }}</h2>
- <input role="yes" type="button" value="{{ 'General_Yes'|translate }}"/>
- <input role="no" type="button" value="{{ 'General_No'|translate }}"/>
- </div>
-</div>
diff --git a/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.js b/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.js
deleted file mode 100644
index 612c2fa08c..0000000000
--- a/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div matomo-manage-gdpr>
- */
-(function () {
- angular.module('piwikApp').directive('matomoManageGdpr', matomoManageGdpr);
-
- matomoManageGdpr.$inject = ['piwik'];
-
- function matomoManageGdpr(piwik){
- return {
- restrict: 'A',
- scope: {},
- templateUrl: 'plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.html?cb=' + piwik.cacheBuster,
- controller: 'ManageGdprController',
- controllerAs: 'manageGdpr',
- compile: function (element, attrs) {
-
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/PrivacyManager/angularjs/report-deletion.model.js b/plugins/PrivacyManager/angularjs/report-deletion.model.js
deleted file mode 100644
index 412ab4a7bb..0000000000
--- a/plugins/PrivacyManager/angularjs/report-deletion.model.js
+++ /dev/null
@@ -1,111 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp.service').factory('reportDeletionModel', reportDeletionModel);
-
- reportDeletionModel.$inject = ['piwik', 'piwikApi'];
-
- function reportDeletionModel (piwik, piwikApi) {
-
- var currentRequest;
- var isFirstLoad = true;
-
- var model = {
- settings: {},
- showEstimate: false,
- loadingEstimation: false,
- estimation: '',
- isModified: false,
- isEitherDeleteSectionEnabled: isEitherDeleteSectionEnabled,
- reloadDbStats: reloadDbStats,
- savePurageDataSettings: savePurageDataSettings,
- updateSettings: updateSettings,
- initSettings: initSettings
- };
-
- return model;
-
- function updateSettings(settings)
- {
- initSettings(settings);
- model.isModified = true;
- }
-
- function initSettings(settings)
- {
- model.settings = angular.merge({}, model.settings, settings);
- model.reloadDbStats();
- }
-
- function savePurageDataSettings(controller, apiMethod, settings)
- {
- controller.isLoading = true;
- model.isModified = false;
-
- return piwikApi.post({
- module: 'API', method: apiMethod
- }, settings).then(function () {
- controller.isLoading = false;
-
- var UI = require('piwik/UI');
- var notification = new UI.Notification();
- notification.show(_pk_translate('CoreAdminHome_SettingsSaveSuccess'), {context: 'success', id:'privacyManagerSettings'});
- notification.scrollToNotification();
- }, function () {
- controller.isLoading = false;
- });
- }
-
- function isEitherDeleteSectionEnabled() {
- return ('1' === model.settings.enableDeleteLogs || '1' === model.settings.enableDeleteReports);
- }
-
- function isManualEstimationLinkShowing()
- {
- return $('#getPurgeEstimateLink').length > 0;
- }
-
- /**
- * @param {boolean} [forceEstimate] (defaults to false)
- */
- function reloadDbStats(forceEstimate) {
- if (currentRequest) {
- currentRequest.abort();
- }
-
- // if the manual estimate link is showing, abort unless forcing
- if (forceEstimate !== true
- && (!isEitherDeleteSectionEnabled() || isManualEstimationLinkShowing())) {
- return;
- }
-
- model.loadingEstimation = true;
- model.estimation = '';
- model.showEstimate = false;
-
- var formData = model.settings;
-
- if (forceEstimate === true) {
- formData['forceEstimate'] = 1;
- }
-
- currentRequest = piwikApi.post({
- module: 'PrivacyManager',
- action: 'getDatabaseSize',
- format: 'html'
- }, formData).then(function (data) {
- currentRequest = undefined;
- model.estimation = data;
- model.showEstimate = true;
- model.loadingEstimation = false;
- }, function () {
- model.loadingEstimation = true;
- });
- }
-
- }
-})(); \ No newline at end of file
diff --git a/plugins/PrivacyManager/angularjs/schedule-report-deletion/schedule-report-deletion.controller.js b/plugins/PrivacyManager/angularjs/schedule-report-deletion/schedule-report-deletion.controller.js
deleted file mode 100644
index 0f940bf78a..0000000000
--- a/plugins/PrivacyManager/angularjs/schedule-report-deletion/schedule-report-deletion.controller.js
+++ /dev/null
@@ -1,65 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('ScheduleReportDeletionController', ScheduleReportDeletionController);
-
- ScheduleReportDeletionController.$inject = ['reportDeletionModel', 'piwikApi', '$timeout'];
-
- function ScheduleReportDeletionController(reportDeletionModel, piwikApi, $timeout) {
-
- var self = this;
- this.isLoading = false;
- this.dataWasPurged = false;
- this.showPurgeNowLink = true;
- this.model = reportDeletionModel;
-
- this.save = function () {
- var method = 'PrivacyManager.setScheduleReportDeletionSettings';
- self.model.savePurageDataSettings(this, method, {
- deleteLowestInterval: this.deleteLowestInterval
- });
- };
-
- this.executeDataPurgeNow = function () {
-
- if (reportDeletionModel.isModified) {
- piwikHelper.modalConfirm('#saveSettingsBeforePurge', {yes: function () {}});
- return;
- }
-
- // ask user if they really want to delete their old data
- piwikHelper.modalConfirm('#confirmPurgeNow', {
- yes: function () {
- self.loadingDataPurge = true;
- self.showPurgeNowLink = false;
-
- // execute a data purge
- piwikApi.withTokenInUrl();
- var ajaxRequest = piwikApi.fetch({
- module: 'PrivacyManager',
- action: 'executeDataPurge',
- format: 'html'
- }).then(function () {
- self.loadingDataPurge = false;
- // force reload
- reportDeletionModel.reloadDbStats();
-
- self.dataWasPurged = true;
-
- $timeout(function () {
- self.dataWasPurged = false;
- self.showPurgeNowLink = true;
- }, 2000);
- }, function () {
- self.loadingDataPurge = false;
- });
- }
- });
- };
-
- }
-})();
diff --git a/plugins/PrivacyManager/lang/de.json b/plugins/PrivacyManager/lang/de.json
index cc844d20df..8a1c346822 100644
--- a/plugins/PrivacyManager/lang/de.json
+++ b/plugins/PrivacyManager/lang/de.json
@@ -28,7 +28,7 @@
"AnonymizeRowDataTo": "Alle Rohdaten anonymisieren bis zu:",
"AnonymizeSites": "Die Daten für diese Seite(n) anonymisieren",
"AnonymizeUserId": "Benutzer ID mit Pseudonym austauschen",
- "AnonymizeUserIdHelp": "Wenn Sie diese Option aktivieren, wird die Benutzer-ID durch ein Pseudonym ersetzt, um ein direktes Speichern und Anzeigen von Daten zu vermeiden, die eine persönliche Identifizierung ermöglichen, wie eine E-Mail-Adresse. In technischen Worten: Matomo wird die Benutzer-ID mithilfe einer \"salted Hashfunktion\" pseudonymisieren. <br><br>&lt;i&gt;Hinweis: Mit einem Pseudonym ersetzen ist nicht dasselbe wie Anonymisierung. In DSGVO Terminologie: Das Benutzer-ID-Pseudonym gilt weiterhin als persönlicher Datenwert. Die Original Benutzer-ID kann immer noch identifiziert werden, wenn zusätzliche Informationen verfügbar sind (auf welche nur Matomo und Ihr Datenprozessor Zugriff haben).&lt;/i&gt;",
+ "AnonymizeUserIdHelp": "Wenn Sie diese Option aktivieren, wird die Benutzer-ID durch ein Pseudonym ersetzt, um ein direktes Speichern und Anzeigen von Daten zu vermeiden, die eine persönliche Identifizierung ermöglichen, wie eine E-Mail-Adresse. In technischen Worten: Matomo wird die Benutzer-ID mithilfe einer \"salted Hashfunktion\" pseudonymisieren. <br><br><em>Hinweis: Mit einem Pseudonym ersetzen ist nicht dasselbe wie Anonymisierung. In DSGVO Terminologie: Das Benutzer-ID-Pseudonym gilt weiterhin als persönlicher Datenwert. Die Original Benutzer-ID kann immer noch identifiziert werden, wenn zusätzliche Informationen verfügbar sind (auf welche nur Matomo und Ihr Datenprozessor Zugriff haben).</em>",
"AskingForConsent": "Um Erlaubnis bitten",
"AwarenessDocumentation": "Erkenntnisse und Dokumentation",
"AwarenessDocumentationDesc1": "Informieren Sie Ihre Besucher mithilfe einer deutlichen Datenschutzerklärung immer darüber, dass Sie persönliche Daten sammeln.",
diff --git a/plugins/PrivacyManager/lang/en.json b/plugins/PrivacyManager/lang/en.json
index ca1e49598e..7271aad3f1 100644
--- a/plugins/PrivacyManager/lang/en.json
+++ b/plugins/PrivacyManager/lang/en.json
@@ -184,6 +184,10 @@
"ShowInEmbeddedWidgetsDescription": "If checked, a link to your Privacy Policy and your Terms & Conditions will be displayed at the bottom of embedded widgets.",
"Imprint": "Imprint",
"PrivacyPolicy": "Privacy Policy",
- "TermsAndConditions": "Terms & Conditions"
+ "TermsAndConditions": "Terms & Conditions",
+ "VisitsSuccessfullyExported": "Visits were successfully exported",
+ "VisitsSuccessfullyDeleted": "Visits were successfully deleted",
+ "LastAction": "Last action",
+ "FindMatchingDataSubjects": "Find matching data subjects"
}
} \ No newline at end of file
diff --git a/plugins/PrivacyManager/lang/ga.json b/plugins/PrivacyManager/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/PrivacyManager/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/PrivacyManager/lang/id.json b/plugins/PrivacyManager/lang/id.json
index 6fefbabc70..7feb3a0cc5 100644
--- a/plugins/PrivacyManager/lang/id.json
+++ b/plugins/PrivacyManager/lang/id.json
@@ -15,19 +15,23 @@
"DeleteMaxRowsNoLimit": "tak terbatas",
"DeleteReportsConfirm": "Anda berkeinginan mengaktifkan penghapusan data laporan. Bila laporan lama dihapus, Anda harus memroses ulang laporan tersebut sebelum dapat ditampilkan. Apakah Anda yakin melakukan ini?",
"DeleteReportsOlderThan": "Hapus laporan yang berumur lebih dari",
+ "DeletionFromMatomoOnly": "Harap perhatikan juga bahwa data apa pun hanya akan dihapus dari basis data Matomo tetapi tidak dari log server web Anda. Perhatikan juga bahwa jika Anda mengimpor ulang data historis apa pun, misalnya dari log, data yang sebelumnya dihapus dapat diimpor lagi.",
"DoNotTrack_Description": "Jangan-Lacak adalah teknologi dan usulan kebijakan yang memungkinkan pengguna untuk memilih tidak dilacak oleh situs yang tidak dikunjungi, termasuk situs layanan analisis, jaringan iklan, dan platform sosial.",
"DoNotTrack_Disable": "Matikan dukungan Jangan-Lacak",
- "DoNotTrack_Enable": "Aktifkan dukungan Jangan-Lacak",
+ "DoNotTrack_Enable": "Aktifkan dukungan Jangan Lacak",
"DoNotTrack_Enabled": "Anda sekarang menghargai Privasi pengguna, Selamat!",
- "DoNotTrack_SupportDNTPreference": "Dukungan pengaturan Jangan-Lacak",
+ "DoNotTrack_SupportDNTPreference": "Dukungan pengaturan Jangan Lacak",
"EstimatedDBSizeAfterPurge": "Perkiraan ukuran database setelah pembersihan",
"EstimatedSpaceSaved": "Perkiraan penghematan kapasitas",
+ "ExportSelectedVisits": "Ekspor kunjungan yang dipilih",
+ "ExportingNote": "Jika Anda mengekspor data untuk menggunakan hak akses, pastikan kunjungan yang dipilih benar-benar dilakukan oleh subjek data yang datanya ingin Anda ekspor.",
"GDPR": "GDPR",
"GdprManager": "Manajer GDPR",
+ "GdprToolsPageIntroAccessRight": "hak akses ke semua data mereka (dan hak untuk portabilitas data),",
"GeolocationAnonymizeIpNote": "Catatan: Lokasi-geo akan memperkirakan hasil sama dengan 1 bita anonimasi. Dengan 2 bita atau lebih, Lokasi-geo akan tidak teliti.",
"GetPurgeEstimate": "Dapatkan perkiraan perbersihan",
"ImprintUrl": "URL Cetak",
- "KeepBasicMetrics": "Biarkan metrik dasar (kunjungan, tampilan halaman, tinkat pentalan, konversi tujuan, konversi niaga-e, dll.)",
+ "KeepBasicMetrics": "Pertahankan metrik dasar (kunjungan, tampilan halaman, tingkat pantulan, konversi tujuan, konversi niaga-el, dll.)",
"KeepReportSegments": "Untuk membiarkan data di atas, juga biarkan laporan terpecah",
"LastDelete": "Penghapusan terakhir di",
"LeastDaysInput": "Silakan tentukan jumlah hari lebih besar dari %s.",
@@ -37,13 +41,13 @@
"PurgeNow": "Membersihkan Basisdata Sekarang",
"PurgeNowConfirm": "Anda berkeinginan menghapus permanen data dari basisdata Anda. Apakah Anda yakin melanjutkannya?",
"PurgingData": "Membersihkan data...",
- "ReportsDataSavedEstimate": "Ukuran basisdata",
+ "ReportsDataSavedEstimate": "Ukuran basis data",
"SaveSettingsBeforePurge": "Anda melakukan perubahan pengaturan penghapusan. Harap menyimpan perubahan tersebut sebelum melakukan pembersihan.",
"TeaserHeadline": "Pengaturan Privasi",
"UseAnonymizeIp": "Anonimasi alamat IP Pengunjung",
"UseAnonymizeOrderId": "Anonimkan ID Pesanan",
"UseDeleteLog": "Secara teratur menghapus data mentah lama dari database",
- "UseDeleteReports": "Hapus laporan lama dari basisdata",
+ "UseDeleteReports": "Hapus laporan lama dari basis data secara teratur",
"UsersOptOut": "Pengguna memilih keluar"
}
}
diff --git a/plugins/PrivacyManager/lang/nb.json b/plugins/PrivacyManager/lang/nb.json
index 4e6840c04c..e84ad77299 100644
--- a/plugins/PrivacyManager/lang/nb.json
+++ b/plugins/PrivacyManager/lang/nb.json
@@ -27,6 +27,7 @@
"AnonymizeRowDataTo": "Anonymiser all rådata opp til:",
"AnonymizeSites": "Anonymiser data for denne/disse siden(e)",
"AnonymizeUserId": "Erstatt bruker-ID med et pseudonym",
+ "AnonymizeUserIdHelp": "Når du skrur på denne innstillingen, vil bruker-ID-en erstattes av et pseudonym for å unngå å lagre og vise personlig identifiserbar info direkte, som f-eks. en e-postadresse. I teknisk forstand: Gitt din bruker-ID vil Matomo behandle bruker-ID-pseudonym ved bruk av en saltet sjekksumsfunksjon.<br><br><em>Merk: Å erstatning med et pseudonym er ikke det samme som anonymisering. I GDPR-forstand teller bruker-ID-pseudonymisering fremdeles som personvernsdata. Den opprinnelige bruker-ID-en kan fremdeles identifiseres hvis gitt ytterligere info er tilgjengelig (som kun Matomo og din databehandler har tilgang til).</em>",
"AskingForConsent": "Forespørsel om samtykke",
"AwarenessDocumentation": "Oppmerksomhet og dokumentasjon",
"AwarenessDocumentationDesc1": "Informer dine besøkende gjennom en klar personvernsmerknad når du samler inn personvernsdata.",
@@ -41,28 +42,44 @@
"DBPurged": "Database tømt.",
"DataRetention": "Datalagring",
"DataRetentionInMatomo": "Bevaring av data lagret i Matomo:",
+ "DeleteAggregateReportsDetailedInfo": "Når du skrur på denne innstillingen vil alle aggregerte rapporter slettes. Aggregerte rapporter genereres rådataen og representerer aggregert data fra flere individuelle besøk. For eksempel er «Land»-listene aggregerte nummer for å finne ut hvor mange besøk du har fått fra hvert land.",
+ "DeleteBothConfirm": "Skru på sletting av både rådata og rapportdata og fjern muligheten til å vise gammel analysedata for godt?",
+ "DeleteDataDescription": "Du kan sette opp Matomo til å slette gammel rådata og/eller aggregerte rapporter regelmessig for å hode databasen liten eller for å samsvare med reguleringer som f-eks. GDPR.",
"DeleteDataInterval": "Slett gammel data hver",
"DeleteDataSettings": "Slett gamle besøkslogger og -rapporter",
+ "DeleteLogDescription2": "Når du skrur på automatisk sletting av loggføring må du sørge for at alle tidligere daglige rapporter har blitt behandlet, slik at ingen data går tapt.",
+ "DeleteLogsConfirm": "Skru på sletting av rådata, og godta at hvis den gamle rådataen fjernes, og rapportene ikke allerede har blitt opprettet, vil du ikke kunne utforske tidligere historiske analysedata?",
"DeleteLogsOlderThan": "Slett logger eldre enn",
"DeleteMaxRows": "Maksimalt antall rader å slette i én kjøring:",
"DeleteMaxRowsNoLimit": "ingen grense",
+ "DeleteOldAggregatedReports": "Slett gammel aggregert rapportdata",
"DeleteOldRawData": "Slett gammel rådata regelmessig",
"DeleteOldVisitorLogs": "Slett gamle besøkslogger",
+ "DeleteRawDataInfo": "Rådataen inneholder alle detaljer om hvert individuelle besøk og hver handling dine besøkende foretok seg. Når du sletter rådata, vil slettet info ikke være tilgjengelig lenger i besøksloggen. Hvis du senere bestemmer deg for å opprette et segment, vil den segmenterte rapporten ikke være tilgjengelig i tidsrommet som har blitt slettet siden alle aggregerte rapporter ble generert fra denne rådataen.",
+ "DeleteReportsConfirm": "Skru på sletting av rapportdata, og godta at hvis gamle rapporter fjernes, vil de måtte re-behandles for å kunne vises?",
"DeleteReportsOlderThan": "Slett rapporter eldre enn",
+ "DeleteSchedulingSettings": "Planlegg sletting av gammel data",
"DeleteSelectedVisits": "Slett valgte besøk",
"DeleteVisitsConfirm": "Slett valgte besøk for godt?",
+ "DoNotTrack_Description": "«Ikke spor meg« er en teknologi og praksisforslag som lar brukere å reservere seg mot sporing på nettsider de besøker, inkludert analysetjenester, reklamenettverk, og sosiale plattform.",
"DoNotTrack_Disable": "Deaktiver Do Not Track-støtte",
+ "DoNotTrack_Disabled": "Matomo sporer for øyeblikket alle besøkende, selv når de har angitt «Ikke spor meg» i nettleserne sine.",
+ "DoNotTrack_DisabledMoreInfo": "Matomo anbefaler «Ikke spor meg»-støtte for å respektere besøkendes personvern",
"DoNotTrack_Enable": "Aktiver Do Not Track-støtte",
"DoNotTrack_Enabled": "Du respekterer nå dine brukeres personvern. Bravo.",
+ "DoNotTrack_EnabledMoreInfo": "Når brukere har satt nettleserne sine til «Jeg vil ikke bli sporet» («Ikke spor meg» påslått) vil ikke Matomo spore disse besøkene.",
"DoNotTrack_SupportDNTPreference": "Støtt «ikke spor meg»-innstilling",
"EstimatedDBSizeAfterPurge": "Anslått databasestørrelse etter rensing",
"EstimatedSpaceSaved": "Estimert plassbesparelse",
"ExportSelectedVisits": "Eksporter valgte besøk",
+ "FindDataSubjectsBy": "Finn dataemner etter",
"FontColor": "Skriftfarge",
"FontFamily": "Skriftfamilie",
"FontSize": "Skriftstørrelse",
"ForceCookielessTracking": "Påtving sporing uten kaker",
+ "ForceCookielessTrackingDescription2": "Kaker vil bli skrudd av selv når du bruker samtykkemetodene i Matomo-sporeren og påkalling av for eksempel kake-samtykkemetodene vil ikke skru på kaker.",
"GDPR": "GDPR",
+ "GdprChecklistDesc1": "Hvis du behandler personvernsdata om europeiske borgere gjennom Matomo, må du oppfylle kravene selv om bedriften din befinner seg utenfor Europa. Denne veiledningen hjelper deg.",
"GdprChecklists": "GDPR-sjekklister",
"GdprManager": "GDPR-håndterer",
"GdprOverview": "GDPR-oversikt",
@@ -85,19 +102,26 @@
"MenuPrivacySettings": "Personvern",
"NextDelete": "Neste planlagte sletting om",
"NoDataSubjectsFound": "Fant ingen dataemner",
+ "OptOutCustomize": "Tilpass rammen for reservasjon",
"OptOutHtmlCode": "HTML-kode til innebygging på nettsiden din",
+ "OptOutPreview": "Forhåndsvisning av reservasjon som den vil vises på nettsiden din",
"PrivacyPolicy": "Personvernspraksis",
"PrivacyPolicyUrl": "Nettadresse til personvernspraksis",
"PrivacyPolicyUrlDescription": "En lenke til din personvernspraksisside.",
"PrivacyPolicyUrlDescriptionSuffix": "Vil vises på bunnen av innloggingssiden og på sidene «%1$s»-brukeren har tilgang til.",
"PseudonymizeUserId": "Erstatt bruker-ID med et pseudonym",
"PurgeNow": "Rydd database nå",
+ "PurgeNowConfirm": "Slett data fra databasen din for godt?",
"PurgingData": "Tømmer data …",
"RawDataNeverRemoved": "besøk og handlingers rådata slettes <strong>aldri</strong>.",
"RawDataRemovedAfter": "alle besøk og interkasjoners rådata slettes etter %1$s.",
"RecommendedForPrivacy": "Anbefalt for personvern",
"ReportsDataSavedEstimate": "Databasestørrelse",
+ "ResultIncludesAllVisits": "Resultatene som ble funnet inkluderer alle besøk uten tidsbegrensning og inkluderer dagen i dag.",
+ "SearchForDataSubject": "Søk etter et dataemne",
"SecurityProcedures": "Sikkerhetsprosedyrer",
+ "SecurityProceduresDesc1": "Bruk vår %1$ssikkerhetsanbefaling%2$s for å trygge din Matomo-data.",
+ "SecurityProceduresDesc3": "Inkluder Matomo i din %1$sdatainntrengningsprosedyre%2$s.",
"SeeAlsoOurOfficialGuidePrivacy": "Sjekk også den offisielle veiledningen: %1$svev-analysepersonvern%2$s",
"SelectWebsite": "Velg en nettside",
"ShowInEmbeddedWidgets": "Vis i innebygde miniprogrammer",
@@ -111,6 +135,7 @@
"UnsetActionColumnsHelp": "Denne handlingen kan ikke angres. En liste over databasekolonnen i omfanget handlingen du ønsker å avmarkere. Hver verdi for den kolonnen vil bli satt til sin forvalgte verdi.",
"UnsetVisitColumns": "Fjern innstilling av besøkskolonner",
"UnsetVisitColumnsHelp": "Denne handlingen kan ikke angres. En liste over databasekolonner i omfanget visningen du ønsker å avmerkere. Hver verdi for den kolonnen vil bli satt til forvalgt verdi. Merk at hvis samme kolonne finnes i omfanget «konvertering» vil også denne kolonnen slettes.",
+ "UseAnonymizeIp": "Anonymiser besøkendes IP-adresser",
"UseAnonymizeOrderId": "Anonymiser ordre-ID",
"UseAnonymizeTrackingData": "Anonymiser sporingsdata",
"UseAnonymizeUserId": "Anonymiser bruker-ID",
diff --git a/plugins/PrivacyManager/templates/gdprTools.twig b/plugins/PrivacyManager/templates/gdprTools.twig
index 228c1cb240..685156c254 100644
--- a/plugins/PrivacyManager/templates/gdprTools.twig
+++ b/plugins/PrivacyManager/templates/gdprTools.twig
@@ -3,5 +3,5 @@
{% set title %}{{ 'PrivacyManager_GDPR'|translate }}{% endset %}
{% block content %}
- <div matomo-manage-gdpr></div>
+ <div vue-entry="PrivacyManager.ManageGdpr"></div>
{% endblock %}
diff --git a/plugins/PrivacyManager/templates/privacySettings.twig b/plugins/PrivacyManager/templates/privacySettings.twig
index d3fe58b04c..c2731d95ec 100644
--- a/plugins/PrivacyManager/templates/privacySettings.twig
+++ b/plugins/PrivacyManager/templates/privacySettings.twig
@@ -15,67 +15,21 @@
<div piwik-content-block
id="anonymizeIPAnchor"
content-title="{{ 'PrivacyManager_UseAnonymizeTrackingData'|translate|e('html_attr') }}">
- <div piwik-form ng-controller="AnonymizeIpController as anonymizeIp">
-
- <div piwik-field uicontrol="checkbox" name="anonymizeIpSettings"
- ng-model="anonymizeIp.enabled"
- data-title="{{ 'PrivacyManager_UseAnonymizeIp'|translate|e('html_attr') }}"
- value="{{ anonymizeIP.enabled }}"
- inline-help="{{ 'PrivacyManager_AnonymizeIpInlineHelp'|translate|e('html_attr') }} {{ 'PrivacyManager_AnonymizeIpDescription'|translate|e('html_attr') }}">
- </div>
-
- <div ng-show="anonymizeIp.enabled">
- <div piwik-field uicontrol="radio" name="maskLength"
- ng-model="anonymizeIp.maskLength"
- data-title="{{ 'PrivacyManager_AnonymizeIpMaskLengtDescription'|translate|e('html_attr') }}"
- value="{{ anonymizeIP.maskLength }}"
- options="{{ maskLengthOptions|json_encode }}"
- inline-help="{{ 'PrivacyManager_GeolocationAnonymizeIpNote'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-field uicontrol="radio" name="useAnonymizedIpForVisitEnrichment"
- ng-model="anonymizeIp.useAnonymizedIpForVisitEnrichment"
- data-title="{{ 'PrivacyManager_UseAnonymizedIpForVisitEnrichment'|translate|e('html_attr') }}"
- value="{% if anonymizeIP.useAnonymizedIpForVisitEnrichment %}1{% else %}0{% endif %}"
- options="{{ useAnonymizedIpForVisitEnrichmentOptions|json_encode }}"
- inline-help="{{ 'PrivacyManager_UseAnonymizedIpForVisitEnrichmentNote'|translate|e('html_attr') }}">
- </div>
- </div>
-
- <div piwik-field uicontrol="checkbox" name="anonymizeUserId"
- ng-model="anonymizeIp.anonymizeUserId"
- data-title="{{ 'PrivacyManager_PseudonymizeUserId'|translate|e('html_attr') }}"
- value="{{ anonymizeIP.anonymizeUserId }}"
- inline-help="{{ 'PrivacyManager_PseudonymizeUserIdNote'|translate|e('html_attr') }}<br/><br/><em>{{ 'PrivacyManager_PseudonymizeUserIdNote2'|translate|e('html_attr') }}</em>">
- </div>
-
- <div piwik-field uicontrol="checkbox" name="anonymizeOrderId"
- ng-model="anonymizeIp.anonymizeOrderId"
- data-title="{{ 'PrivacyManager_UseAnonymizeOrderId'|translate|e('html_attr') }}"
- value="{{ anonymizeIP.anonymizeOrderId }}"
- inline-help="{{ 'PrivacyManager_AnonymizeOrderIdNote'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-field uicontrol="checkbox" name="forceCookielessTracking"
- ng-model="anonymizeIp.forceCookielessTracking"
- data-title="{{ 'PrivacyManager_ForceCookielessTracking'|translate|e('html_attr') }}"
- value="{{ anonymizeIP.forceCookielessTracking }}"
- inline-help="{{ 'PrivacyManager_ForceCookielessTrackingDescription'|translate(trackerFileName)|e('html_attr') }}<br/><br/><em>{{ 'PrivacyManager_ForceCookielessTrackingDescription2'|translate|e('html_attr') }}</em>
- {%- if not trackerWritable %}
- <br /><br /><p class='alert-warning alert'>{{ 'PrivacyManager_ForceCookielessTrackingDescriptionNotWritable'|translate(trackerFileName)|e('html_attr') }}</p>
- {% endif -%}">
- </div>
-
- <div piwik-field uicontrol="select" name="anonymizeReferrer"
- ng-model="anonymizeIp.anonymizeReferrer"
- options='{{ referrerAnonymizationOptions|json_encode|e('html_attr') }}'
- data-title="{{ 'PrivacyManager_AnonymizeReferrer'|translate|e('html_attr') }}"
- value="{{ anonymizeIP.anonymizeReferrer }}"
- inline-help="{{ 'PrivacyManager_AnonymizeReferrerNote'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-save-button onconfirm="anonymizeIp.save()" saving="anonymizeIp.isLoading"></div>
- </div>
+ <div
+ vue-entry="PrivacyManager.AnonymizeIp"
+ anonymize-ip-enabled="{{ anonymizeIP.enabled|default(null)|json_encode|e('html_attr') }}"
+ anonymize-user-id="{{ anonymizeIP.anonymizeUserId|default(null)|json_encode|e('html_attr') }}"
+ mask-length="{{ anonymizeIP.maskLength|default(null)|json_encode|e('html_attr') }}"
+ use-anonymized-ip-for-visit-enrichment="{{ anonymizeIP.useAnonymizedIpForVisitEnrichment|default(null)|json_encode|e('html_attr') }}"
+ anonymize-order-id="{{ anonymizeIP.anonymizeOrderId|default(null)|json_encode|e('html_attr') }}"
+ force-cookieless-tracking="{{ anonymizeIP.forceCookielessTracking|default(null)|json_encode|e('html_attr') }}"
+ anonymize-referrer="{{ anonymizeIP.anonymizeReferrer|default(null)|json_encode|e('html_attr') }}"
+ mask-length-options="{{ maskLengthOptions|default(null)|json_encode|e('html_attr') }}"
+ use-anonymized-ip-for-visit-enrichment-options="{{ useAnonymizedIpForVisitEnrichmentOptions|default(null)|json_encode|e('html_attr') }}"
+ tracker-file-name="{{ trackerFileName|default(null)|json_encode|e('html_attr') }}"
+ tracker-writable="{{ trackerWritable|default(null)|json_encode|e('html_attr') }}"
+ referrer-anonymization-options="{{ referrerAnonymizationOptions|default(null)|json_encode|e('html_attr') }}"
+ ></div>
</div>
{% if isDataPurgeSettingsEnabled %}
@@ -102,202 +56,35 @@
<p>{{ 'PrivacyManager_DeleteDataDescription'|translate }}</p>
- <div piwik-form
- ng-controller="DeleteOldLogsController as deleteOldLogs"
- id="formDeleteSettings">
- <div id="deleteLogSettingEnabled">
-
- <div piwik-field uicontrol="checkbox" name="deleteEnable"
- ng-model="deleteOldLogs.enabled"
- ng-change="deleteOldLogs.reloadDbStats()"
- data-title="{{ 'PrivacyManager_UseDeleteLog'|translate|e('html_attr') }}"
- value="{{ deleteData.config.delete_logs_enable }}"
- inline-help="{{ 'PrivacyManager_DeleteRawDataInfo'|translate|e('html_attr') }}">
- </div>
-
- <div class="alert alert-warning deleteOldLogsWarning" style="width: 50%;" ng-show="deleteOldLogs.enabled">
- <a href="https://matomo.org/faq/general/#faq_125" rel="noreferrer noopener" target="_blank">
- {{ 'General_ClickHere'|translate }}
- </a>
- </div>
- </div>
-
- <div id="deleteLogSettings" ng-show="deleteOldLogs.enabled">
- <div piwik-field uicontrol="text" name="deleteOlderThan"
- ng-model="deleteOldLogs.deleteOlderThan"
- ng-change="deleteOldLogs.reloadDbStats()"
- data-title="{{ 'PrivacyManager_DeleteLogsOlderThan'|translate|e('html_attr') }} ({{ 'Intl_PeriodDays'|translate }})"
- value="{{ deleteData.config.delete_logs_older_than }}"
- inline-help="{{ 'PrivacyManager_LeastDaysInput'|translate("1")|e('html_attr') }}">
- </div>
- </div>
-
- <div piwik-save-button onconfirm="deleteOldLogs.save()" saving="deleteOldLogs.isLoading"></div>
- </div>
+ <div
+ vue-entry="PrivacyManager.DeleteOldLogs"
+ is-data-purge-settings-enabled="{{ isDataPurgeSettingsEnabled|default(null)|json_encode|e('html_attr') }}"
+ delete-data="{{ deleteData|default(null)|json_encode|e('html_attr') }}"
+ schedule-deletion-options="{{ scheduleDeletionOptions|default(null)|json_encode|e('html_attr') }}"
+ ></div>
</div>
<div piwik-content-block id="deleteReportsAnchor"
content-title="{{ 'PrivacyManager_DeleteOldAggregatedReports'|translate|e('html_attr') }}">
- <div piwik-form
- ng-controller="DeleteOldReportsController as deleteReports"
- id="formDeleteSettings">
+ <div
+ vue-entry="PrivacyManager.DeleteOldReports"
+ is-data-purge-settings-enabled="{{ isDataPurgeSettingsEnabled|default(null)|json_encode|e('html_attr') }}"
+ delete-data="{{ deleteData|default(null)|json_encode|e('html_attr') }}"
+ delete-old-logs="{{ deleteOldLogs|default(null)|json_encode|e('html_attr') }}"
+ schedule-deletion-options="{{ scheduleDeletionOptions|default(null)|json_encode|e('html_attr') }}"
+ ></div>
- <div id="deleteReportsSettingEnabled">
-
- <div piwik-field uicontrol="checkbox" name="deleteReportsEnable"
- ng-model="deleteReports.enabled"
- ng-change="deleteReports.reloadDbStats()"
- data-title="{{ 'PrivacyManager_UseDeleteReports'|translate|e('html_attr') }}"
- value="{{ deleteData.config.delete_reports_enable }}"
- inline-help="{{ 'PrivacyManager_DeleteAggregateReportsDetailedInfo'|translate|e('html_attr') }}">
- </div>
-
- <div class="alert alert-warning" style="width: 50%;" ng-show="deleteReports.enabled">
- {% set deleteOldLogs %}{{ 'PrivacyManager_UseDeleteLog'|translate }}{% endset %}
- <span>
- {{ 'PrivacyManager_DeleteReportsInfo2'|translate(deleteOldLogs) }}<br/><br/>
- {{ 'PrivacyManager_DeleteReportsInfo3'|translate(deleteOldLogs) }}
- </span>
- </div>
-
- </div>
-
- <div id="deleteReportsSettings" ng-show="deleteReports.enabled">
-
- <div piwik-field uicontrol="text" name="deleteReportsOlderThan"
- ng-model="deleteReports.deleteOlderThan"
- ng-change="deleteReports.reloadDbStats()"
- data-title="{{ 'PrivacyManager_DeleteReportsOlderThan'|translate|e('html_attr') }} ({{ 'Intl_PeriodMonths'|translate }})"
- value="{{ deleteData.config.delete_reports_older_than }}"
- inline-help="{{ 'PrivacyManager_LeastMonthsInput'|translate("1")|e('html_attr') }}">
- </div>
-
- <div piwik-field uicontrol="checkbox" name="deleteReportsKeepBasic"
- ng-model="deleteReports.keepBasic"
- ng-change="deleteReports.reloadDbStats()"
- data-title="{{ 'PrivacyManager_KeepBasicMetrics'|translate|e('html_attr') }} ({{ 'General_Recommended'|translate|e('html_attr') }})"
- value="{{ deleteData.config.delete_reports_keep_basic_metrics }}"
- inline-help="{{ 'PrivacyManager_KeepBasicMetricsReportsDetailedInfo'|translate|e('html_attr') }}">
- </div>
-
- <h3>
- {{ 'PrivacyManager_KeepDataFor'|translate }}
- </h3>
- <div>
-
- <div piwik-field uicontrol="checkbox" name="deleteReportsKeepDay"
- ng-model="deleteReports.keepDataForDay"
- ng-change="deleteReports.reloadDbStats()"
- data-title="{{ 'General_DailyReports'|translate|e('html_attr') }}"
- value="{{ deleteData.config.delete_reports_keep_day_reports }}">
- </div>
- <div piwik-field uicontrol="checkbox" name="deleteReportsKeepWeek"
- ng-model="deleteReports.keepDataForWeek"
- ng-change="deleteReports.reloadDbStats()"
- data-title="{{ 'General_WeeklyReports'|translate|e('html_attr') }}"
- value="{{ deleteData.config.delete_reports_keep_week_reports }}">
- </div>
- <div piwik-field uicontrol="checkbox" name="deleteReportsKeepMonth"
- ng-model="deleteReports.keepDataForMonth"
- ng-change="deleteReports.reloadDbStats()"
- data-title="{{ 'General_MonthlyReports'|translate|e('html_attr') }} ({{ 'General_Recommended'|translate|e('html_attr') }})"
- value="{{ deleteData.config.delete_reports_keep_month_reports }}">
- </div>
- <div piwik-field uicontrol="checkbox" name="deleteReportsKeepYear"
- ng-model="deleteReports.keepDataForYear"
- ng-change="deleteReports.reloadDbStats()"
- data-title="{{ 'General_YearlyReports'|translate|e('html_attr') }} ({{ 'General_Recommended'|translate|e('html_attr') }})"
- value="{{ deleteData.config.delete_reports_keep_year_reports }}">
- </div>
- <div piwik-field uicontrol="checkbox" name="deleteReportsKeepRange"
- ng-model="deleteReports.keepDataForRange"
- ng-change="deleteReports.reloadDbStats()"
- data-title="{{ 'General_RangeReports'|translate|e('html_attr') }}"
- value="{{ deleteData.config.delete_reports_keep_range_reports }}">
- </div>
- <div piwik-field uicontrol="checkbox" name="deleteReportsKeepSegments"
- ng-model="deleteReports.keepDataForSegments"
- ng-change="deleteReports.reloadDbStats()"
- title="{{ 'PrivacyManager_KeepReportSegments'|translate|e('html_attr') }}"
- value="{{ deleteData.config.delete_reports_keep_segment_reports }}">
- </div>
- </div>
- </div>
-
- <div piwik-save-button onconfirm="deleteReports.save()" saving="deleteReports.isLoading"></div>
- </div>
</div>
- <div piwik-form
- ng-controller="ScheduleReportDeletionController as reportDeletionSchedule"
- id="formDeleteSettings">
-
- <div piwik-content-block id="scheduleSettingsHeadline"
- ng-show="reportDeletionSchedule.model.isEitherDeleteSectionEnabled()"
- content-title="{{ 'PrivacyManager_DeleteSchedulingSettings'|translate|e('html_attr') }}">
-
- <div id="deleteSchedulingSettings">
- <div id="deleteSchedulingSettingsInlineHelp" class="inline-help-node">
- {% if deleteData.lastRun %}<strong>{{ 'PrivacyManager_LastDelete'|translate }}:</strong>
- {{ deleteData.lastRunPretty }}
- <br/>
- <br/>
- {% endif %}
- <strong>{{ 'PrivacyManager_NextDelete'|translate }}:</strong>
- {{ deleteData.nextRunPretty|rawSafeDecoded }}
- <br/>
- <br/>
- <a id="purgeDataNowLink" href="#"
- ng-show="reportDeletionSchedule.showPurgeNowLink"
- ng-click="reportDeletionSchedule.executeDataPurgeNow()">{{ 'PrivacyManager_PurgeNow'|translate }}</a>
-
- <div piwik-activity-indicator
- loading-message="'{{ 'PrivacyManager_PurgingData'|translate|e('html_attr') }}'"
- loading="reportDeletionSchedule.loadingDataPurge"></div>
- <span id="db-purged-message"
- ng-show="reportDeletionSchedule.dataWasPurged"
- >{{ 'PrivacyManager_DBPurged'|translate }}</span>
- </div>
-
- <div piwik-field uicontrol="select" name="deleteLowestInterval"
- ng-model="reportDeletionSchedule.deleteLowestInterval"
- options="{{ scheduleDeletionOptions|json_encode }}"
- data-title="{{ 'PrivacyManager_DeleteDataInterval'|translate|e('html_attr') }}"
- value="{{ deleteData.config.delete_logs_schedule_lowest_interval }}"
- inline-help="#deleteSchedulingSettingsInlineHelp">
- </div>
- </div>
-
- {% if deleteData.config.enable_database_size_estimate == '1' %}
- <div id="deleteDataEstimateSect" class="form-group row">
-
- <h3 class="col s12" id="databaseSizeHeadline">
- {{ 'PrivacyManager_ReportsDataSavedEstimate'|translate }}
- </h3>
- <div class="col s12 m6">
- <div id="deleteDataEstimate" ng-show="reportDeletionSchedule.model.showEstimate"
- ng-bind-html="reportDeletionSchedule.model.estimation"></div>
- &nbsp;
- <div piwik-activity-indicator loading="reportDeletionSchedule.model.loadingEstimation"></div>
- </div>
- <div class="col s12 m6">
- {% if deleteData.config.enable_auto_database_size_estimate == '0' %}
- <div class="form-help">
- <a id="getPurgeEstimateLink"
- ng-click="reportDeletionSchedule.model.reloadDbStats(true)"
- href="#">{{ 'PrivacyManager_GetPurgeEstimate'|translate }}</a>
- </div>
- {% endif %}
- </div>
- </div>
- {% endif %}
-
- <div piwik-save-button onconfirm="reportDeletionSchedule.save()" saving="reportDeletionSchedule.isLoading"></div>
-
- </div>
- {% endif %}
-</div>
+ <div
+ vue-entry="PrivacyManager.ScheduleReportDeletion"
+ is-data-purge-settings-enabled="{{ isDataPurgeSettingsEnabled|default(null)|json_encode|e('html_attr') }}"
+ delete-data="{{ deleteData|default(null)|json_encode|e('html_attr') }}"
+ delete-old-logs="{{ deleteOldLogs|default(null)|json_encode|e('html_attr') }}"
+ schedule-deletion-options="{{ scheduleDeletionOptions|default(null)|json_encode|e('html_attr') }}"
+ ></div>
+{% endif %}
<a name="anonymizeHistoricalData" id="anonymizeHistoricalData"></a>
@@ -308,7 +95,7 @@
</p>
{% if isSuperUser %}
- <div matomo-anonymize-log-data></div>
+ <div vue-entry="PrivacyManager.AnonymizeLogData"></div>
{% else %}
<p>Only a user with Super User access can anonymize previously tracked raw data.</p>
{% endif %}
diff --git a/plugins/PrivacyManager/templates/usersOptOut.twig b/plugins/PrivacyManager/templates/usersOptOut.twig
index 51fc9050a1..c9def239b9 100644
--- a/plugins/PrivacyManager/templates/usersOptOut.twig
+++ b/plugins/PrivacyManager/templates/usersOptOut.twig
@@ -23,19 +23,11 @@
{% endif %}
</p>
- <div piwik-form ng-controller="DoNotTrackPreferenceController as doNotTrack">
-
- {# {{ {'module':'PrivacyManager','nonce':nonce,'action':action} | urlRewriteWithParameters }}#DNT #}
- <div piwik-field uicontrol="radio" name="doNotTrack"
- ng-model="doNotTrack.enabled"
- options="{{ doNotTrackOptions|json_encode }}"
- value="{% if dntSupport %}1{% else %}0{% endif %}"
- inline-help="{{ 'PrivacyManager_DoNotTrack_Description'|translate|e('html_attr') }}">
- </div>
-
- <div piwik-save-button onconfirm="doNotTrack.save()" saving="doNotTrack.isLoading"></div>
-
- </div>
+ <div
+ vue-entry="PrivacyManager.DoNotTrackPreference"
+ dnt-support="{{ dntSupport|default(null)|json_encode|e('html_attr') }}"
+ do-not-track-options="{{ doNotTrackOptions|default(null)|json_encode|e('html_attr') }}"
+ ></div>
</div>
{% endif %}
diff --git a/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php b/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
index b81364cdb5..922b87c620 100644
--- a/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
+++ b/plugins/PrivacyManager/tests/Integration/Model/DataSubjectsTest.php
@@ -24,6 +24,7 @@ use Piwik\Plugins\SitesManager\API as SitesManagerAPI;
/**
* Class DataSubjectsTest
*
+ * @group DataSubjectsTest
* @group Plugins
*/
class DataSubjectsTest extends IntegrationTestCase
diff --git a/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_allSitesAllDates.json b/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_allSitesAllDates.json
index b2fb4685b8..b2fb4685b8 100755..100644
--- a/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_allSitesAllDates.json
+++ b/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_allSitesAllDates.json
diff --git a/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_anonymizeUserId.json b/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_anonymizeUserId.json
index 56cd43eca9..56cd43eca9 100755..100644
--- a/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_anonymizeUserId.json
+++ b/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_anonymizeUserId.json
diff --git a/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictDate.json b/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictDate.json
index 7bfd99da00..7bfd99da00 100755..100644
--- a/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictDate.json
+++ b/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictDate.json
diff --git a/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictSites.json b/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictSites.json
index 5bd57a980d..5bd57a980d 100755..100644
--- a/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictSites.json
+++ b/plugins/PrivacyManager/tests/System/expected/anonymizeVisitInformation_restrictSites.json
diff --git a/plugins/PrivacyManager/tests/System/expected/exportDataSubject_allVisits.json b/plugins/PrivacyManager/tests/System/expected/exportDataSubject_allVisits.json
index 17aeb7df75..17aeb7df75 100755..100644
--- a/plugins/PrivacyManager/tests/System/expected/exportDataSubject_allVisits.json
+++ b/plugins/PrivacyManager/tests/System/expected/exportDataSubject_allVisits.json
diff --git a/plugins/PrivacyManager/tests/System/expected/exportDataSubject_oneVisitGiven.json b/plugins/PrivacyManager/tests/System/expected/exportDataSubject_oneVisitGiven.json
index 58402e67d0..58402e67d0 100755..100644
--- a/plugins/PrivacyManager/tests/System/expected/exportDataSubject_oneVisitGiven.json
+++ b/plugins/PrivacyManager/tests/System/expected/exportDataSubject_oneVisitGiven.json
diff --git a/plugins/PrivacyManager/tests/System/expected/test___PrivacyManager.getAvailableVisitColumnsToAnonymize.xml b/plugins/PrivacyManager/tests/System/expected/test___PrivacyManager.getAvailableVisitColumnsToAnonymize.xml
index 7f0c1453ad..7f0c1453ad 100755..100644
--- a/plugins/PrivacyManager/tests/System/expected/test___PrivacyManager.getAvailableVisitColumnsToAnonymize.xml
+++ b/plugins/PrivacyManager/tests/System/expected/test___PrivacyManager.getAvailableVisitColumnsToAnonymize.xml
diff --git a/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js b/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js
index 75a7fb496a..2f43775a4c 100644
--- a/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js
+++ b/plugins/PrivacyManager/tests/UI/PrivacyManager_spec.js
@@ -24,14 +24,21 @@ describe("PrivacyManager", function () {
{
// make sure tests do not fail every day
await page.waitForSelector('input.anonymizeStartDate');
+ await page.waitForSelector('input.anonymizeEndDate');
+ await page.waitForTimeout(100);
await page.evaluate(function () {
$('input.anonymizeStartDate').val('2018-03-02').change();
+ });
+ await page.waitForTimeout(100);
+ await page.evaluate(function () {
$('input.anonymizeEndDate').val('2018-03-02').change();
});
+ await page.waitForTimeout(100);
}
async function loadActionPage(action)
{
+ await page.goto('about:blank');
await page.goto(urlBase + action);
await page.waitForNetworkIdle();
@@ -73,23 +80,25 @@ describe("PrivacyManager", function () {
$(this).val(theVal).change();
});
}, value);
- await page.waitForTimeout(100);
+ await page.waitForTimeout(200);
}
async function selectVisitColumn(title)
{
+ await page.waitForTimeout(100);
await page.evaluate(function () {
$('.selectedVisitColumns:last input.select-dropdown').click();
});
- var selector = '.selectedVisitColumns:last .dropdown-content li:contains(' + title + ')';
- await page.waitForFunction('$("'+selector+'").length > 0');
- var elem = await page.jQuery(selector);
- await elem.click();
+ await page.waitForTimeout(100);
+ await page.evaluate(title => {
+ $('.selectedVisitColumns:last .dropdown-content li:contains(' + title + ')').click();
+ }, title);
await page.waitForTimeout(100);
}
async function selectActionColumn(title)
{
+ await page.waitForTimeout(100);
await page.evaluate(function () {
$('.selectedActionColumns:last input.select-dropdown').click();
});
@@ -206,9 +215,13 @@ describe("PrivacyManager", function () {
await page.waitForTimeout(1000);
await page.click(".form-group #anonymizeSite [title='Site 1']");
await page.click('[name="anonymizeIp"] label');
+ await page.waitForTimeout(100);
await page.evaluate(function () {
$('input.anonymizeStartDate').val('2017-01-01').change();
- $('input.anonymizeEndDate').val('2017-02-14').change();
+ });
+ await page.waitForTimeout(100);
+ await page.evaluate(function () {
+ $('input.anonymizeEndDate').val('2017-02-14').change();
});
await page.waitForTimeout(100);
diff --git a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled.png b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled.png
index f6a39dbcc5..504c5771b3 100644
--- a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled.png
+++ b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:07a76fb9866d651f60e31d63ea895998b979aaaf056f5e0ede7c514b25047d36
-size 567690
+oid sha256:065c3d1e57c9985951c5a66bf501afd6605d0c948a997f68372e8dab89c1afdb
+size 594214
diff --git a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled_verified_no_data_deleted.png b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled_verified_no_data_deleted.png
index 14a5a586a4..fe363255f5 100644
--- a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled_verified_no_data_deleted.png
+++ b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_cancelled_verified_no_data_deleted.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:cfe8b1b683e3224ac35605f8a361739fcfbd5cb26f421d9b0379dcf5574917aa
-size 561799
+oid sha256:fcbbfec31566fa6048f08b63c40da8f55d215c8bd75ba8e7a5e658b53197bfad
+size 588221
diff --git a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_confirmed.png b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_confirmed.png
index 76f216c834..0edd7ec7e1 100644
--- a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_confirmed.png
+++ b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_delete_visit_confirmed.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:3e6feadc906e37a898a3c34cdc52044ead63b8f764936c97608910a39791c652
-size 129067
+oid sha256:2409a554213bf7acd1311740b477d76967b7e9efa7493950207c345b86e9ccf7
+size 129560
diff --git a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_enrich_segment_by_ip.png b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_enrich_segment_by_ip.png
index 544d34a2f7..3f3934271f 100644
--- a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_enrich_segment_by_ip.png
+++ b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_enrich_segment_by_ip.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:35e77c2e181a2ee9ac15c831bc9a0056349eec979bf28241b47536ff8f4efdbc
-size 568102
+oid sha256:1ec9e11cbb270e570d5e81cf00d6c7775c1208dc13cac9ac618ac9fec88b6aa3
+size 594549
diff --git a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_uncheck_one_visit.png b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_uncheck_one_visit.png
index f6a39dbcc5..504c5771b3 100644
--- a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_uncheck_one_visit.png
+++ b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_uncheck_one_visit.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:07a76fb9866d651f60e31d63ea895998b979aaaf056f5e0ede7c514b25047d36
-size 567690
+oid sha256:065c3d1e57c9985951c5a66bf501afd6605d0c948a997f68372e8dab89c1afdb
+size 594214
diff --git a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_found.png b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_found.png
index 303ed6b760..e50cd2d26f 100644
--- a/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_found.png
+++ b/plugins/PrivacyManager/tests/UI/expected-screenshots/PrivacyManager_gdpr_tools_visits_found.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:64cf3ce7e91cd89e76433ebdc326bc0dbed47656b60da00a27e1a5a6a4d8ad42
-size 562142
+oid sha256:454dd0684d28a9a03b43767b170f3da57a23507dd2b0f540f03ad809c6249f6b
+size 588621
diff --git a/plugins/PrivacyManager/vue/dist/PrivacyManager.umd.js b/plugins/PrivacyManager/vue/dist/PrivacyManager.umd.js
new file mode 100644
index 0000000000..5335e3a519
--- /dev/null
+++ b/plugins/PrivacyManager/vue/dist/PrivacyManager.umd.js
@@ -0,0 +1,2135 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"), require("SegmentEditor"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", , "CorePluginsAdmin", "SegmentEditor"], factory);
+ else if(typeof exports === 'object')
+ exports["PrivacyManager"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"), require("SegmentEditor"));
+ else
+ root["PrivacyManager"] = factory(root["CoreHome"], root["Vue"], root["CorePluginsAdmin"], root["SegmentEditor"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a5a2__, __WEBPACK_EXTERNAL_MODULE_f06f__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/PrivacyManager/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "a5a2":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
+
+/***/ }),
+
+/***/ "f06f":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_f06f__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "ManageGdpr", function() { return /* reexport */ ManageGdpr; });
+__webpack_require__.d(__webpack_exports__, "AnonymizeIp", function() { return /* reexport */ AnonymizeIp; });
+__webpack_require__.d(__webpack_exports__, "AnonymizeLogData", function() { return /* reexport */ AnonymizeLogData; });
+__webpack_require__.d(__webpack_exports__, "DoNotTrackPreference", function() { return /* reexport */ DoNotTrackPreference; });
+__webpack_require__.d(__webpack_exports__, "ReportDeletionSettings", function() { return /* reexport */ ReportDeletionSettings_store; });
+__webpack_require__.d(__webpack_exports__, "DeleteOldLogs", function() { return /* reexport */ DeleteOldLogs; });
+__webpack_require__.d(__webpack_exports__, "DeleteOldReports", function() { return /* reexport */ DeleteOldReports; });
+__webpack_require__.d(__webpack_exports__, "ScheduleReportDeletion", function() { return /* reexport */ ScheduleReportDeletion; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.vue?vue&type=template&id=eef82860
+
+var _hoisted_1 = {
+ class: "manageGdpr"
+};
+var _hoisted_2 = {
+ class: "intro"
+};
+
+var _hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_7 = ["innerHTML"];
+var _hoisted_8 = {
+ class: "form-group row"
+};
+var _hoisted_9 = {
+ class: "col s12 input-field"
+};
+var _hoisted_10 = {
+ for: "gdprsite",
+ class: "siteSelectorLabel"
+};
+var _hoisted_11 = {
+ class: "sites_autocomplete"
+};
+var _hoisted_12 = {
+ class: "form-group row segmentFilterGroup"
+};
+var _hoisted_13 = {
+ class: "col s12"
+};
+var _hoisted_14 = {
+ style: {
+ "margin": "8px 0",
+ "display": "inline-block"
+ }
+};
+
+var _hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])();
+
+var _hoisted_17 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_18 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_19 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var _hoisted_20 = {
+ class: "checkInclude"
+};
+var _hoisted_21 = {
+ colspan: "8"
+};
+var _hoisted_22 = ["title"];
+var _hoisted_23 = {
+ class: "checkInclude"
+};
+var _hoisted_24 = ["title"];
+var _hoisted_25 = {
+ class: "visitId"
+};
+var _hoisted_26 = {
+ class: "visitorId"
+};
+var _hoisted_27 = ["title", "onClick"];
+var _hoisted_28 = {
+ class: "visitorIp"
+};
+var _hoisted_29 = ["title", "onClick"];
+var _hoisted_30 = {
+ class: "userId"
+};
+var _hoisted_31 = ["title", "onClick"];
+var _hoisted_32 = ["title"];
+var _hoisted_33 = ["src"];
+var _hoisted_34 = ["title"];
+var _hoisted_35 = ["src"];
+var _hoisted_36 = ["title"];
+var _hoisted_37 = ["src"];
+var _hoisted_38 = ["title"];
+var _hoisted_39 = ["src"];
+var _hoisted_40 = ["onClick"];
+
+var _hoisted_41 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ src: "plugins/Live/images/visitorProfileLaunch.png",
+ style: {
+ "margin-right": "3.5px"
+ }
+}, null, -1);
+
+var _hoisted_42 = {
+ class: "ui-confirm",
+ id: "confirmDeleteDataSubject",
+ ref: "confirmDeleteDataSubject"
+};
+var _hoisted_43 = ["value"];
+var _hoisted_44 = ["value"];
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_SiteSelector = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SiteSelector");
+
+ var _component_SegmentGenerator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SegmentGenerator");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
+
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _directive_content_table = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("content-table");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ "content-title": _ctx.translate('PrivacyManager_GdprTools')
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_GdprToolsPageIntro1')) + " ", 1), _hoisted_3, _hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_GdprToolsPageIntro2')) + " ", 1), _hoisted_5]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ol", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_GdprToolsPageIntroAccessRight')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_GdprToolsPageIntroEraseRight')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.overviewHintText)
+ }, null, 8, _hoisted_7)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_SearchForDataSubject')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_SelectWebsite')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SiteSelector, {
+ id: "gdprsite",
+ modelValue: _ctx.site,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.site = $event;
+ }),
+ "show-all-sites-item": true,
+ "switch-site-on-select": false,
+ "show-selected-site": true
+ }, null, 8, ["modelValue"])])])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", _hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_FindDataSubjectsBy')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SegmentGenerator, {
+ modelValue: _ctx.segment_filter,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.segment_filter = $event;
+ }),
+ "visit-segments-only": true,
+ idsite: _ctx.site.id
+ }, null, 8, ["modelValue", "idsite"])])])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ class: "findDataSubjects",
+ value: _ctx.translate('PrivacyManager_FindMatchingDataSubjects'),
+ onConfirm: _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.findDataSubjects();
+ }),
+ disabled: !_ctx.segment_filter,
+ saving: _ctx.isLoading
+ }, null, 8, ["value", "disabled", "saving"])];
+ }),
+ _: 1
+ }, 8, ["content-title"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_NoDataSubjectsFound')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.dataSubjects.length && _ctx.hasSearched]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_MatchingDataSubjects')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_VisitsMatchedCriteria')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_ExportingNote')) + " ", 1), _hoisted_15, _hoisted_16, _hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_DeletionFromMatomoOnly')) + " ", 1), _hoisted_18, _hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_ResultIncludesAllVisits')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("table", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", _hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "activateAll",
+ "model-value": _ctx.toggleAll,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ _ctx.toggleAll = $event;
+
+ _ctx.toggleActivateAll();
+ }),
+ "full-width": true
+ }, null, 8, ["model-value"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Website')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_VisitId')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_VisitorID')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_VisitorIP')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_UserId')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Details')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Action')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.profileEnabled]])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tbody", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_21, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_ResultTruncated', '400')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.dataSubjects.length > 400]]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.dataSubjects, function (dataSubject, index) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", {
+ title: "".concat(_ctx.translate('PrivacyManager_LastAction'), ": ").concat(dataSubject.lastActionDateTime),
+ key: index
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "subject".concat(dataSubject.idVisit),
+ modelValue: _ctx.dataSubjectsActive[index],
+ "onUpdate:modelValue": function onUpdateModelValue($event) {
+ return _ctx.dataSubjectsActive[index] = $event;
+ },
+ "full-width": true
+ }, null, 8, ["name", "modelValue", "onUpdate:modelValue"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", {
+ class: "site",
+ title: "(".concat(_ctx.translate('General_Id'), " ").concat(dataSubject.idSite, ")")
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(dataSubject.siteName), 9, _hoisted_24), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_25, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(dataSubject.idVisit), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_26, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ title: _ctx.translate('PrivacyManager_AddVisitorIdToSearch'),
+ onClick: function onClick($event) {
+ return _ctx.addFilter('visitorId', dataSubject.visitorId);
+ }
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(dataSubject.visitorId), 9, _hoisted_27)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_28, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ title: _ctx.translate('PrivacyManager_AddVisitorIPToSearch'),
+ onClick: function onClick($event) {
+ return _ctx.addFilter('visitIp', dataSubject.visitIp);
+ }
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(dataSubject.visitIp), 9, _hoisted_29)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", _hoisted_30, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ title: _ctx.translate('PrivacyManager_AddUserIdToSearch'),
+ onClick: function onClick($event) {
+ return _ctx.addFilter('userId', dataSubject.userId);
+ }
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(dataSubject.userId), 9, _hoisted_31)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ title: "".concat(dataSubject.deviceType, " ").concat(dataSubject.deviceModel),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ height: "16",
+ src: dataSubject.deviceTypeIcon
+ }, null, 8, _hoisted_33)], 8, _hoisted_32), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ title: dataSubject.operatingSystem,
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ height: "16",
+ src: dataSubject.operatingSystemIcon
+ }, null, 8, _hoisted_35)], 8, _hoisted_34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ title: "".concat(dataSubject.browser, " ").concat(dataSubject.browserFamilyDescription),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ height: "16",
+ src: dataSubject.browserIcon
+ }, null, 8, _hoisted_37)], 8, _hoisted_36), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ title: "".concat(dataSubject.country, " ").concat(dataSubject.region)
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ height: "16",
+ src: dataSubject.countryFlag
+ }, null, 8, _hoisted_39)], 8, _hoisted_38)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ class: "visitorLogTooltip",
+ title: "View visitor profile",
+ onClick: function onClick($event) {
+ return _ctx.showProfile(dataSubject.visitorId, dataSubject.idSite);
+ }
+ }, [_hoisted_41, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Live_ViewVisitorProfile')), 1)], 8, _hoisted_40)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.profileEnabled]])], 8, _hoisted_22);
+ }), 128))])], 512), [[_directive_content_table]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ class: "exportDataSubjects",
+ style: {
+ "margin-right": "3.5px"
+ },
+ onConfirm: _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.exportDataSubject();
+ }),
+ disabled: !_ctx.hasActiveDataSubjects,
+ value: _ctx.translate('PrivacyManager_ExportSelectedVisits')
+ }, null, 8, ["disabled", "value"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ class: "deleteDataSubjects",
+ onConfirm: _cache[5] || (_cache[5] = function ($event) {
+ return _ctx.deleteDataSubject();
+ }),
+ disabled: !_ctx.hasActiveDataSubjects || _ctx.isDeleting,
+ value: _ctx.translate('PrivacyManager_DeleteSelectedVisits')
+ }, null, 8, ["disabled", "value"])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.dataSubjects.length]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_42, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_DeleteVisitsConfirm')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "yes",
+ type: "button",
+ value: _ctx.translate('General_Yes')
+ }, null, 8, _hoisted_43), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "no",
+ type: "button",
+ value: _ctx.translate('General_No')
+ }, null, 8, _hoisted_44)], 512)]);
+}
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.vue?vue&type=template&id=eef82860
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// EXTERNAL MODULE: external "SegmentEditor"
+var external_SegmentEditor_ = __webpack_require__("f06f");
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.vue?vue&type=script&lang=ts
+
+
+
+
+/* harmony default export */ var ManageGdprvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ components: {
+ ContentBlock: external_CoreHome_["ContentBlock"],
+ SiteSelector: external_CoreHome_["SiteSelector"],
+ SegmentGenerator: external_SegmentEditor_["SegmentGenerator"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"],
+ Field: external_CorePluginsAdmin_["Field"]
+ },
+ directives: {
+ ContentTable: external_CoreHome_["ContentTable"]
+ },
+ data: function data() {
+ return {
+ isLoading: false,
+ isDeleting: false,
+ site: {
+ id: 'all',
+ name: Object(external_CoreHome_["translate"])('UsersManager_AllWebsites')
+ },
+ segment_filter: 'userId==',
+ dataSubjects: [],
+ toggleAll: true,
+ hasSearched: false,
+ profileEnabled: external_CoreHome_["Matomo"].visitorProfileEnabled,
+ dataSubjectsActive: []
+ };
+ },
+ setup: function setup() {
+ var sitesPromise = external_CoreHome_["AjaxHelper"].fetch({
+ method: 'SitesManager.getSitesIdWithAdminAccess',
+ filter_limit: '-1'
+ });
+ return {
+ getSites: function getSites() {
+ return sitesPromise;
+ }
+ };
+ },
+ methods: {
+ showSuccessNotification: function showSuccessNotification(message) {
+ var notificationInstanceId = external_CoreHome_["NotificationsStore"].show({
+ message: message,
+ context: 'success',
+ id: 'manageGdpr',
+ type: 'transient'
+ });
+ setTimeout(function () {
+ external_CoreHome_["NotificationsStore"].scrollToNotification(notificationInstanceId);
+ }, 200);
+ },
+ linkTo: function linkTo(action) {
+ return "?".concat(external_CoreHome_["MatomoUrl"].stringify(Object.assign(Object.assign({}, external_CoreHome_["MatomoUrl"].urlParsed.value), {}, {
+ module: 'PrivacyManager',
+ action: action
+ })));
+ },
+ toggleActivateAll: function toggleActivateAll() {
+ this.dataSubjectsActive.fill(this.toggleAll);
+ },
+ showProfile: function showProfile(visitorId, idSite) {
+ external_CoreHome_["Matomo"].helper.showVisitorProfilePopup(visitorId, idSite);
+ },
+ exportDataSubject: function exportDataSubject() {
+ var _this = this;
+
+ var visitsToDelete = this.activatedDataSubjects;
+ external_CoreHome_["AjaxHelper"].post({
+ module: 'API',
+ method: 'PrivacyManager.exportDataSubjects',
+ format: 'json',
+ filter_limit: -1
+ }, {
+ visits: visitsToDelete
+ }).then(function (visits) {
+ _this.showSuccessNotification(Object(external_CoreHome_["translate"])('PrivacyManager_VisitsSuccessfullyExported'));
+
+ external_CoreHome_["Matomo"].helper.sendContentAsDownload('exported_data_subjects.json', JSON.stringify(visits));
+ });
+ },
+ deleteDataSubject: function deleteDataSubject() {
+ var _this2 = this;
+
+ external_CoreHome_["Matomo"].helper.modalConfirm(this.$refs.confirmDeleteDataSubject, {
+ yes: function yes() {
+ _this2.isDeleting = true;
+ var visitsToDelete = _this2.activatedDataSubjects;
+ external_CoreHome_["AjaxHelper"].post({
+ module: 'API',
+ method: 'PrivacyManager.deleteDataSubjects',
+ filter_limit: -1
+ }, {
+ visits: visitsToDelete
+ }).then(function () {
+ _this2.dataSubjects = [];
+
+ _this2.showSuccessNotification(Object(external_CoreHome_["translate"])('PrivacyManager_VisitsSuccessfullyDeleted'));
+
+ _this2.findDataSubjects();
+ }).finally(function () {
+ _this2.isDeleting = false;
+ });
+ }
+ });
+ },
+ addFilter: function addFilter(segment, value) {
+ this.segment_filter += ",".concat(segment, "==").concat(value);
+ this.findDataSubjects();
+ },
+ findDataSubjects: function findDataSubjects() {
+ var _this3 = this;
+
+ this.dataSubjects = [];
+ this.dataSubjectsActive = [];
+ this.isLoading = true;
+ this.toggleAll = true;
+ this.hasSearched = false;
+ this.getSites().then(function (idsites) {
+ var siteIds = _this3.site.id;
+
+ if (siteIds === 'all' && !external_CoreHome_["Matomo"].hasSuperUserAccess) {
+ // when superuser, we speed the request up a little and simply use 'all'
+ siteIds = idsites;
+
+ if (Array.isArray(idsites)) {
+ siteIds = idsites.join(',');
+ }
+ }
+
+ external_CoreHome_["AjaxHelper"].fetch({
+ idSite: siteIds,
+ module: 'API',
+ method: 'PrivacyManager.findDataSubjects',
+ segment: _this3.segment_filter
+ }).then(function (visits) {
+ _this3.hasSearched = true;
+ _this3.dataSubjectsActive = visits.map(function () {
+ return true;
+ });
+ _this3.dataSubjects = visits;
+ }).finally(function () {
+ _this3.isLoading = false;
+ });
+ });
+ }
+ },
+ computed: {
+ hasActiveDataSubjects: function hasActiveDataSubjects() {
+ return !!this.activatedDataSubjects.length;
+ },
+ activatedDataSubjects: function activatedDataSubjects() {
+ var _this4 = this;
+
+ return this.dataSubjects.filter(function (v, i) {
+ return _this4.dataSubjectsActive[i];
+ }).map(function (v) {
+ return {
+ idsite: v.idSite,
+ idvisit: v.idVisit
+ };
+ });
+ },
+ overviewHintText: function overviewHintText() {
+ return Object(external_CoreHome_["translate"])('PrivacyManager_GdprToolsOverviewHint', "<a href=\"".concat(this.linkTo('gdprOverview'), "\">"), '</a>');
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.vue
+
+
+
+ManageGdprvue_type_script_lang_ts.render = render
+
+/* harmony default export */ var ManageGdpr = (ManageGdprvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/AnonymizeIp/AnonymizeIp.vue?vue&type=template&id=536c794c
+
+
+var AnonymizeIpvue_type_template_id_536c794c_hoisted_1 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var AnonymizeIpvue_type_template_id_536c794c_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var AnonymizeIpvue_type_template_id_536c794c_hoisted_3 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var AnonymizeIpvue_type_template_id_536c794c_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var AnonymizeIpvue_type_template_id_536c794c_hoisted_5 = {
+ key: 0
+};
+
+var AnonymizeIpvue_type_template_id_536c794c_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var AnonymizeIpvue_type_template_id_536c794c_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var AnonymizeIpvue_type_template_id_536c794c_hoisted_8 = {
+ class: "alert-warning alert"
+};
+function AnonymizeIpvue_type_template_id_536c794c_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _directive_form = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("form");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "anonymizeIpSettings",
+ title: _ctx.translate('PrivacyManager_UseAnonymizeIp'),
+ modelValue: _ctx.actualEnabled,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.actualEnabled = $event;
+ }),
+ "inline-help": _ctx.anonymizeIpEnabledHelp
+ }, null, 8, ["title", "modelValue", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "radio",
+ name: "maskLength",
+ title: _ctx.translate('PrivacyManager_AnonymizeIpMaskLengtDescription'),
+ modelValue: _ctx.actualMaskLength,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.actualMaskLength = $event;
+ }),
+ options: _ctx.maskLengthOptions,
+ "inline-help": _ctx.translate('PrivacyManager_GeolocationAnonymizeIpNote')
+ }, null, 8, ["title", "modelValue", "options", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "radio",
+ name: "useAnonymizedIpForVisitEnrichment",
+ title: _ctx.translate('PrivacyManager_UseAnonymizedIpForVisitEnrichment'),
+ modelValue: _ctx.actualUseAnonymizedIpForVisitEnrichment,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.actualUseAnonymizedIpForVisitEnrichment = $event;
+ }),
+ options: _ctx.useAnonymizedIpForVisitEnrichmentOptions,
+ "inline-help": _ctx.translate('PrivacyManager_UseAnonymizedIpForVisitEnrichmentNote')
+ }, null, 8, ["title", "modelValue", "options", "inline-help"])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.actualEnabled]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "anonymizeUserId",
+ title: _ctx.translate('PrivacyManager_PseudonymizeUserId'),
+ modelValue: _ctx.actualAnonymizeUserId,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.actualAnonymizeUserId = $event;
+ })
+ }, {
+ "inline-help": Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_PseudonymizeUserIdNote')) + " ", 1), AnonymizeIpvue_type_template_id_536c794c_hoisted_1, AnonymizeIpvue_type_template_id_536c794c_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("em", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_PseudonymizeUserIdNote2')), 1)];
+ }),
+ _: 1
+ }, 8, ["title", "modelValue"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "anonymizeOrderId",
+ title: _ctx.translate('PrivacyManager_UseAnonymizeOrderId'),
+ modelValue: _ctx.actualAnonymizeOrderId,
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.actualAnonymizeOrderId = $event;
+ }),
+ "inline-help": _ctx.translate('PrivacyManager_AnonymizeOrderIdNote')
+ }, null, 8, ["title", "modelValue", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "forceCookielessTracking",
+ title: _ctx.translate('PrivacyManager_ForceCookielessTracking'),
+ modelValue: _ctx.actualForceCookielessTracking,
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ return _ctx.actualForceCookielessTracking = $event;
+ })
+ }, {
+ "inline-help": Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_ForceCookielessTrackingDescription', _ctx.trackerFileName)) + " ", 1), AnonymizeIpvue_type_template_id_536c794c_hoisted_3, AnonymizeIpvue_type_template_id_536c794c_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("em", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_ForceCookielessTrackingDescription2')), 1), !_ctx.trackerWritable ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", AnonymizeIpvue_type_template_id_536c794c_hoisted_5, [AnonymizeIpvue_type_template_id_536c794c_hoisted_6, AnonymizeIpvue_type_template_id_536c794c_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", AnonymizeIpvue_type_template_id_536c794c_hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_ForceCookielessTrackingDescriptionNotWritable', _ctx.trackerFileName)), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)];
+ }),
+ _: 1
+ }, 8, ["title", "modelValue"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "anonymizeReferrer",
+ title: _ctx.translate('PrivacyManager_AnonymizeReferrer'),
+ modelValue: _ctx.actualAnonymizeReferrer,
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ return _ctx.actualAnonymizeReferrer = $event;
+ }),
+ options: _ctx.referrerAnonymizationOptions,
+ "inline-help": _ctx.translate('PrivacyManager_AnonymizeReferrerNote')
+ }, null, 8, ["title", "modelValue", "options", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ onConfirm: _cache[7] || (_cache[7] = function ($event) {
+ return _ctx.save();
+ }),
+ saving: _ctx.isLoading
+ }, null, 8, ["saving"])], 512)), [[_directive_form]]);
+}
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/AnonymizeIp/AnonymizeIp.vue?vue&type=template&id=536c794c
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/AnonymizeIp/AnonymizeIp.vue?vue&type=script&lang=ts
+
+
+
+/* harmony default export */ var AnonymizeIpvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ anonymizeIpEnabled: Boolean,
+ anonymizeUserId: Boolean,
+ maskLength: {
+ type: Number,
+ required: true
+ },
+ useAnonymizedIpForVisitEnrichment: Boolean,
+ anonymizeOrderId: Boolean,
+ forceCookielessTracking: Boolean,
+ anonymizeReferrer: String,
+ maskLengthOptions: {
+ type: Array,
+ required: true
+ },
+ useAnonymizedIpForVisitEnrichmentOptions: {
+ type: Array,
+ required: true
+ },
+ trackerFileName: {
+ type: String,
+ required: true
+ },
+ trackerWritable: {
+ type: Boolean,
+ required: true
+ },
+ referrerAnonymizationOptions: {
+ type: Object,
+ required: true
+ }
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"]
+ },
+ directives: {
+ Form: external_CorePluginsAdmin_["Form"]
+ },
+ data: function data() {
+ return {
+ isLoading: false,
+ actualEnabled: !!this.anonymizeIpEnabled,
+ actualMaskLength: this.maskLength,
+ actualUseAnonymizedIpForVisitEnrichment: this.useAnonymizedIpForVisitEnrichment ? '1' : '0',
+ actualAnonymizeUserId: !!this.anonymizeUserId,
+ actualAnonymizeOrderId: !!this.anonymizeOrderId,
+ actualForceCookielessTracking: !!this.forceCookielessTracking,
+ actualAnonymizeReferrer: this.anonymizeReferrer
+ };
+ },
+ methods: {
+ save: function save() {
+ var _this = this;
+
+ this.isLoading = true;
+ external_CoreHome_["AjaxHelper"].post({
+ module: 'API',
+ method: 'PrivacyManager.setAnonymizeIpSettings'
+ }, {
+ anonymizeIPEnable: this.actualEnabled ? '1' : '0',
+ anonymizeUserId: this.actualAnonymizeUserId ? '1' : '0',
+ anonymizeOrderId: this.actualAnonymizeOrderId ? '1' : '0',
+ forceCookielessTracking: this.actualForceCookielessTracking ? '1' : '0',
+ anonymizeReferrer: this.actualAnonymizeReferrer ? this.actualAnonymizeReferrer : '',
+ maskLength: this.actualMaskLength,
+ useAnonymizedIpForVisitEnrichment: this.actualUseAnonymizedIpForVisitEnrichment ? '1' : '0'
+ }).then(function () {
+ var notificationInstanceId = external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('CoreAdminHome_SettingsSaveSuccess'),
+ context: 'success',
+ id: 'privacyManagerSettings',
+ type: 'toast'
+ });
+ external_CoreHome_["NotificationsStore"].scrollToNotification(notificationInstanceId);
+ }).finally(function () {
+ _this.isLoading = false;
+ });
+ }
+ },
+ computed: {
+ anonymizeIpEnabledHelp: function anonymizeIpEnabledHelp() {
+ var inlineHelp1 = Object(external_CoreHome_["translate"])('PrivacyManager_AnonymizeIpInlineHelp');
+ var inlineHelp2 = Object(external_CoreHome_["translate"])('PrivacyManager_AnonymizeIpDescription');
+ return "".concat(inlineHelp1, " ").concat(inlineHelp2);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/AnonymizeIp/AnonymizeIp.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/AnonymizeIp/AnonymizeIp.vue
+
+
+
+AnonymizeIpvue_type_script_lang_ts.render = AnonymizeIpvue_type_template_id_536c794c_render
+
+/* harmony default export */ var AnonymizeIp = (AnonymizeIpvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.vue?vue&type=template&id=bdf32a0e
+
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_1 = {
+ class: "anonymizeLogData"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_2 = {
+ class: "form-group row"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_3 = {
+ class: "col s12 input-field"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_4 = {
+ for: "anonymizeSite",
+ class: "siteSelectorLabel"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_5 = {
+ class: "sites_autocomplete"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_6 = {
+ class: "form-group row"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_7 = {
+ class: "col s6 input-field"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_8 = {
+ for: "anonymizeStartDate",
+ class: "active"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_9 = ["value"];
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_10 = {
+ class: "col s6 input-field"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_11 = {
+ for: "anonymizeEndDate",
+ class: "active"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_12 = ["value"];
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_13 = {
+ name: "anonymizeIp"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_14 = {
+ name: "anonymizeLocation"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_15 = {
+ name: "anonymizeTheUserId"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_16 = {
+ class: "form-group row"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_17 = {
+ class: "col s12 m6"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_18 = {
+ for: "visit_columns"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_19 = {
+ class: "innerFormField",
+ name: "visit_columns"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_20 = ["onClick", "title"];
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_21 = {
+ class: "col s12 m6"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_22 = {
+ class: "form-help"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_23 = {
+ class: "inline-help"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_24 = {
+ class: "form-group row"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_25 = {
+ class: "col s12"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_26 = {
+ class: "form-group row"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_27 = {
+ class: "col s12 m6"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_28 = {
+ for: "action_columns"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_29 = {
+ class: "innerFormField",
+ name: "action_columns"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_30 = ["onClick", "title"];
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_31 = {
+ class: "col s12 m6"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_32 = {
+ class: "form-help"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_33 = {
+ class: "inline-help"
+};
+
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_34 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-info"
+}, null, -1);
+
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_35 = {
+ class: "ui-confirm",
+ id: "confirmAnonymizeLogData",
+ ref: "confirmAnonymizeLogData"
+};
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_36 = ["value"];
+var AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_37 = ["value"];
+function AnonymizeLogDatavue_type_template_id_bdf32a0e_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_SiteSelector = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SiteSelector");
+
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_AnonymizeSites')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SiteSelector, {
+ id: "anonymizeSite",
+ modelValue: _ctx.site,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.site = $event;
+ }),
+ "show-all-sites-item": true,
+ "switch-site-on-select": false,
+ "show-selected-site": true
+ }, null, 8, ["modelValue"])])])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_AnonymizeRowDataFrom')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "text",
+ id: "anonymizeStartDate",
+ class: "anonymizeStartDate",
+ ref: "anonymizeStartDate",
+ name: "anonymizeStartDate",
+ value: _ctx.startDate,
+ onKeydown: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.onKeydownStartDate($event);
+ }),
+ onChange: _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.onKeydownStartDate($event);
+ })
+ }, null, 40, AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_9)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_11, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_AnonymizeRowDataTo')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ type: "text",
+ class: "anonymizeEndDate",
+ id: "anonymizeEndDate",
+ ref: "anonymizeEndDate",
+ name: "anonymizeEndDate",
+ value: _ctx.endDate,
+ onKeydown: _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.onKeydownEndDate($event);
+ }),
+ onChange: _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.onKeydownEndDate($event);
+ })
+ }, null, 40, AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_12)])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "anonymizeIp",
+ title: _ctx.translate('PrivacyManager_AnonymizeIp'),
+ modelValue: _ctx.anonymizeIp,
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ return _ctx.anonymizeIp = $event;
+ }),
+ introduction: _ctx.translate('General_Visit'),
+ "inline-help": _ctx.translate('PrivacyManager_AnonymizeIpHelp')
+ }, null, 8, ["title", "modelValue", "introduction", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "anonymizeLocation",
+ title: _ctx.translate('PrivacyManager_AnonymizeLocation'),
+ modelValue: _ctx.anonymizeLocation,
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ return _ctx.anonymizeLocation = $event;
+ }),
+ "inline-help": _ctx.translate('PrivacyManager_AnonymizeLocationHelp')
+ }, null, 8, ["title", "modelValue", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "anonymizeTheUserId",
+ title: _ctx.translate('PrivacyManager_AnonymizeUserId'),
+ modelValue: _ctx.anonymizeUserId,
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
+ return _ctx.anonymizeUserId = $event;
+ }),
+ "inline-help": _ctx.translate('PrivacyManager_AnonymizeUserIdHelp')
+ }, null, 8, ["title", "modelValue", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_16, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_18, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_UnsetVisitColumns')), 1), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.selectedVisitColumns, function (visitColumn, index) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])("selectedVisitColumns selectedVisitColumns".concat(index, " multiple valign-wrapper")),
+ key: index
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "visit_columns",
+ "model-value": visitColumn.column,
+ "onUpdate:modelValue": function onUpdateModelValue($event) {
+ visitColumn.column = $event;
+
+ _ctx.onVisitColumnChange();
+ },
+ "full-width": true,
+ options: _ctx.availableVisitColumns
+ }, null, 8, ["model-value", "onUpdate:modelValue", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-minus valign",
+ onClick: function onClick($event) {
+ return _ctx.removeVisitColumn(index);
+ },
+ title: _ctx.translate('General_Remove')
+ }, null, 8, AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_20), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], index + 1 !== _ctx.selectedVisitColumns.length]])], 2);
+ }), 128))])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_21, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_22, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_23, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_UnsetVisitColumnsHelp')), 1)])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_24, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_25, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Action')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_26, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_28, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_UnsetActionColumns')), 1), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.selectedActionColumns, function (actionColumn, index) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])("selectedActionColumns selectedActionColumns".concat(index, " multiple valign-wrapper")),
+ key: index
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_29, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "action_columns",
+ "model-value": actionColumn.column,
+ "onUpdate:modelValue": function onUpdateModelValue($event) {
+ actionColumn.column = $event;
+
+ _ctx.onActionColumnChange();
+ },
+ "full-width": true,
+ options: _ctx.availableActionColumns
+ }, null, 8, ["model-value", "onUpdate:modelValue", "options"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-minus valign",
+ onClick: function onClick($event) {
+ return _ctx.removeActionColumn(index);
+ },
+ title: _ctx.translate('General_Remove')
+ }, null, 8, AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_30), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], index + 1 !== _ctx.selectedActionColumns.length]])], 2);
+ }), 128))])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_32, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_33, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_UnsetActionColumnsHelp')), 1)])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_34, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_AnonymizeProcessInfo')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ class: "anonymizePastData",
+ onConfirm: _cache[8] || (_cache[8] = function ($event) {
+ return _ctx.scheduleAnonymization();
+ }),
+ disabled: _ctx.isAnonymizePastDataDisabled,
+ value: _ctx.translate('PrivacyManager_AnonymizeDataNow')
+ }, null, 8, ["disabled", "value"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_35, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_AnonymizeDataConfirm')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "yes",
+ type: "button",
+ value: _ctx.translate('General_Yes')
+ }, null, 8, AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_36), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ role: "no",
+ type: "button",
+ value: _ctx.translate('General_No')
+ }, null, 8, AnonymizeLogDatavue_type_template_id_bdf32a0e_hoisted_37)], 512)]);
+}
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.vue?vue&type=template&id=bdf32a0e
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.vue?vue&type=script&lang=ts
+
+
+
+
+function sub(value) {
+ if (value < 10) {
+ return "0".concat(value);
+ }
+
+ return value;
+}
+
+/* harmony default export */ var AnonymizeLogDatavue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ components: {
+ SiteSelector: external_CoreHome_["SiteSelector"],
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"]
+ },
+ data: function data() {
+ var now = new Date();
+ var startDate = "".concat(now.getFullYear(), "-").concat(sub(now.getMonth() + 1), "-").concat(sub(now.getDay() + 1));
+ return {
+ isLoading: false,
+ isDeleting: false,
+ anonymizeIp: false,
+ anonymizeLocation: false,
+ anonymizeUserId: false,
+ site: {
+ id: 'all',
+ name: 'All Websites'
+ },
+ availableVisitColumns: [],
+ availableActionColumns: [],
+ selectedVisitColumns: [{
+ column: ''
+ }],
+ selectedActionColumns: [{
+ column: ''
+ }],
+ startDate: startDate,
+ endDate: startDate
+ };
+ },
+ created: function created() {
+ var _this = this;
+
+ this.onKeydownStartDate = Object(external_CoreHome_["debounce"])(this.onKeydownStartDate, 50);
+ this.onKeydownEndDate = Object(external_CoreHome_["debounce"])(this.onKeydownEndDate, 50);
+ external_CoreHome_["AjaxHelper"].fetch({
+ method: 'PrivacyManager.getAvailableVisitColumnsToAnonymize'
+ }).then(function (columns) {
+ _this.availableVisitColumns = [];
+ columns.forEach(function (column) {
+ _this.availableVisitColumns.push({
+ key: column.column_name,
+ value: column.column_name
+ });
+ });
+ });
+ external_CoreHome_["AjaxHelper"].fetch({
+ method: 'PrivacyManager.getAvailableLinkVisitActionColumnsToAnonymize'
+ }).then(function (columns) {
+ _this.availableActionColumns = [];
+ columns.forEach(function (column) {
+ _this.availableActionColumns.push({
+ key: column.column_name,
+ value: column.column_name
+ });
+ });
+ });
+ setTimeout(function () {
+ var options1 = external_CoreHome_["Matomo"].getBaseDatePickerOptions(null);
+ var options2 = external_CoreHome_["Matomo"].getBaseDatePickerOptions(null);
+ $(_this.$refs.anonymizeStartDate).datepicker(options1);
+ $(_this.$refs.anonymizeEndDate).datepicker(options2);
+ });
+ },
+ methods: {
+ onVisitColumnChange: function onVisitColumnChange() {
+ var hasAll = this.selectedVisitColumns.every(function (col) {
+ return !!(col !== null && col !== void 0 && col.column);
+ });
+
+ if (hasAll) {
+ this.addVisitColumn();
+ }
+ },
+ addVisitColumn: function addVisitColumn() {
+ this.selectedVisitColumns.push({
+ column: ''
+ });
+ },
+ removeVisitColumn: function removeVisitColumn(index) {
+ if (index > -1) {
+ var lastIndex = this.selectedVisitColumns.length - 1;
+
+ if (lastIndex === index) {
+ this.selectedVisitColumns[index] = {
+ column: ''
+ };
+ } else {
+ this.selectedVisitColumns.splice(index, 1);
+ }
+ }
+ },
+ onActionColumnChange: function onActionColumnChange() {
+ var hasAll = this.selectedActionColumns.every(function (col) {
+ return !!(col !== null && col !== void 0 && col.column);
+ });
+
+ if (hasAll) {
+ this.addActionColumn();
+ }
+ },
+ addActionColumn: function addActionColumn() {
+ this.selectedActionColumns.push({
+ column: ''
+ });
+ },
+ removeActionColumn: function removeActionColumn(index) {
+ if (index > -1) {
+ var lastIndex = this.selectedActionColumns.length - 1;
+
+ if (lastIndex === index) {
+ this.selectedActionColumns[index] = {
+ column: ''
+ };
+ } else {
+ this.selectedActionColumns.splice(index, 1);
+ }
+ }
+ },
+ scheduleAnonymization: function scheduleAnonymization() {
+ var date = "".concat(this.startDate, ",").concat(this.endDate);
+
+ if (this.startDate === this.endDate) {
+ date = this.startDate;
+ }
+
+ var params = {
+ date: date
+ };
+ params.idSites = this.site.id;
+ params.anonymizeIp = this.anonymizeIp ? '1' : '0';
+ params.anonymizeLocation = this.anonymizeLocation ? '1' : '0';
+ params.anonymizeUserId = this.anonymizeUserId ? '1' : '0';
+ params.unsetVisitColumns = this.selectedVisitColumns.filter(function (c) {
+ return !!(c !== null && c !== void 0 && c.column);
+ }).map(function (c) {
+ return c.column;
+ });
+ params.unsetLinkVisitActionColumns = this.selectedActionColumns.filter(function (c) {
+ return !!(c !== null && c !== void 0 && c.column);
+ }).map(function (c) {
+ return c.column;
+ });
+ external_CoreHome_["Matomo"].helper.modalConfirm(this.$refs.confirmAnonymizeLogData, {
+ yes: function yes() {
+ external_CoreHome_["AjaxHelper"].post({
+ method: 'PrivacyManager.anonymizeSomeRawData'
+ }, params).then(function () {
+ window.location.reload(true);
+ });
+ }
+ });
+ },
+ onKeydownStartDate: function onKeydownStartDate(event) {
+ this.startDate = event.target.value;
+ },
+ onKeydownEndDate: function onKeydownEndDate(event) {
+ this.endDate = event.target.value;
+ }
+ },
+ computed: {
+ isAnonymizePastDataDisabled: function isAnonymizePastDataDisabled() {
+ return !this.anonymizeIp && !this.anonymizeLocation && !this.selectedVisitColumns && !this.selectedActionColumns;
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.vue
+
+
+
+AnonymizeLogDatavue_type_script_lang_ts.render = AnonymizeLogDatavue_type_template_id_bdf32a0e_render
+
+/* harmony default export */ var AnonymizeLogData = (AnonymizeLogDatavue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.vue?vue&type=template&id=0506d6be
+
+function DoNotTrackPreferencevue_type_template_id_0506d6be_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _directive_form = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("form");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "radio",
+ name: "doNotTrack",
+ modelValue: _ctx.enabled,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.enabled = $event;
+ }),
+ options: _ctx.doNotTrackOptions,
+ "inline-help": _ctx.translate('PrivacyManager_DoNotTrack_Description')
+ }, null, 8, ["modelValue", "options", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ onConfirm: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.save();
+ }),
+ saving: _ctx.isLoading
+ }, null, 8, ["saving"])], 512)), [[_directive_form]]);
+}
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.vue?vue&type=template&id=0506d6be
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.vue?vue&type=script&lang=ts
+
+
+
+/* harmony default export */ var DoNotTrackPreferencevue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ dntSupport: Boolean,
+ doNotTrackOptions: {
+ type: Array,
+ required: true
+ }
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"]
+ },
+ directives: {
+ Form: external_CorePluginsAdmin_["Form"]
+ },
+ data: function data() {
+ return {
+ isLoading: false,
+ enabled: this.dntSupport ? 1 : 0
+ };
+ },
+ methods: {
+ save: function save() {
+ var _this = this;
+
+ this.isLoading = true;
+ var action = 'deactivateDoNotTrack';
+
+ if (this.enabled && this.enabled !== '0') {
+ action = 'activateDoNotTrack';
+ }
+
+ external_CoreHome_["AjaxHelper"].post({
+ module: 'API',
+ method: "PrivacyManager.".concat(action)
+ }).then(function () {
+ var notificationInstanceId = external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('CoreAdminHome_SettingsSaveSuccess'),
+ context: 'success',
+ id: 'privacyManagerSettings',
+ type: 'transient'
+ });
+ external_CoreHome_["NotificationsStore"].scrollToNotification(notificationInstanceId);
+ }).finally(function () {
+ _this.isLoading = false;
+ });
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.vue
+
+
+
+DoNotTrackPreferencevue_type_script_lang_ts.render = DoNotTrackPreferencevue_type_template_id_0506d6be_render
+
+/* harmony default export */ var DoNotTrackPreference = (DoNotTrackPreferencevue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/ReportDeletionSettings/ReportDeletionSettings.store.ts
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+var ReportDeletionSettings_store_ReportDeletionSettingsStore = /*#__PURE__*/function () {
+ function ReportDeletionSettingsStore() {
+ var _this = this;
+
+ _classCallCheck(this, ReportDeletionSettingsStore);
+
+ _defineProperty(this, "privateState", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["reactive"])({
+ settings: {},
+ showEstimate: false,
+ loadingEstimation: false,
+ estimation: '',
+ isModified: false
+ }));
+
+ _defineProperty(this, "state", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.privateState);
+ }));
+
+ _defineProperty(this, "enableDeleteReports", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.state.value.settings.enableDeleteReports;
+ }));
+
+ _defineProperty(this, "enableDeleteLogs", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return _this.state.value.settings.enableDeleteLogs;
+ }));
+
+ _defineProperty(this, "currentRequest", void 0);
+ }
+
+ _createClass(ReportDeletionSettingsStore, [{
+ key: "updateSettings",
+ value: function updateSettings(settings) {
+ this.initSettings(settings);
+ this.privateState.isModified = true;
+ }
+ }, {
+ key: "initSettings",
+ value: function initSettings(settings) {
+ this.privateState.settings = Object.assign(Object.assign({}, this.privateState.settings), settings);
+ this.reloadDbStats();
+ }
+ }, {
+ key: "savePurgeDataSettings",
+ value: function savePurgeDataSettings(apiMethod, settings) {
+ this.privateState.isModified = false;
+ return external_CoreHome_["AjaxHelper"].post({
+ module: 'API',
+ method: apiMethod
+ }, Object.assign(Object.assign({}, settings), {}, {
+ enableDeleteLogs: settings.enableDeleteLogs ? '1' : '0',
+ enableDeleteReports: settings.enableDeleteReports ? '1' : '0'
+ })).then(function () {
+ var notificationInstanceId = external_CoreHome_["NotificationsStore"].show({
+ message: Object(external_CoreHome_["translate"])('CoreAdminHome_SettingsSaveSuccess'),
+ context: 'success',
+ id: 'privacyManagerSettings',
+ type: 'toast'
+ });
+ external_CoreHome_["NotificationsStore"].scrollToNotification(notificationInstanceId);
+ });
+ }
+ }, {
+ key: "isEitherDeleteSectionEnabled",
+ value: function isEitherDeleteSectionEnabled() {
+ return this.state.value.settings.enableDeleteLogs || this.state.value.settings.enableDeleteReports;
+ }
+ }, {
+ key: "isManualEstimationLinkShowing",
+ value: function isManualEstimationLinkShowing() {
+ return window.$('#getPurgeEstimateLink').length > 0;
+ }
+ }, {
+ key: "reloadDbStats",
+ value: function reloadDbStats(forceEstimate) {
+ var _this2 = this;
+
+ if (this.currentRequest) {
+ // if the manual estimate link is showing, abort unless forcing
+ this.currentRequest.abort();
+ this.currentRequest = undefined;
+ }
+
+ if (!forceEstimate && (!this.isEitherDeleteSectionEnabled() || this.isManualEstimationLinkShowing())) {
+ return;
+ }
+
+ this.privateState.loadingEstimation = true;
+ this.privateState.estimation = '';
+ this.privateState.showEstimate = false;
+ var settings = this.privateState.settings;
+ var formData = Object.assign(Object.assign({}, settings), {}, {
+ enableDeleteLogs: settings.enableDeleteLogs ? '1' : '0',
+ enableDeleteReports: settings.enableDeleteReports ? '1' : '0'
+ });
+
+ if (forceEstimate === true) {
+ formData.forceEstimate = 1;
+ }
+
+ this.currentRequest = new AbortController();
+ external_CoreHome_["AjaxHelper"].post({
+ module: 'PrivacyManager',
+ action: 'getDatabaseSize',
+ format: 'html'
+ }, formData, {
+ abortController: this.currentRequest,
+ format: 'html'
+ }).then(function (data) {
+ _this2.privateState.estimation = data;
+ _this2.privateState.showEstimate = true;
+ _this2.privateState.loadingEstimation = false;
+ }).finally(function () {
+ _this2.currentRequest = undefined;
+ _this2.privateState.loadingEstimation = false;
+ });
+ }
+ }]);
+
+ return ReportDeletionSettingsStore;
+}();
+
+/* harmony default export */ var ReportDeletionSettings_store = (new ReportDeletionSettings_store_ReportDeletionSettingsStore());
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/DeleteOldLogs/DeleteOldLogs.vue?vue&type=template&id=2d91a21d
+
+var DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_1 = {
+ id: "formDeleteSettings"
+};
+var DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_2 = {
+ id: "deleteLogSettingEnabled"
+};
+var DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_3 = {
+ class: "alert alert-warning deleteOldLogsWarning",
+ style: {
+ "width": "50%"
+ }
+};
+var DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_4 = {
+ href: "https://matomo.org/faq/general/#faq_125",
+ rel: "noreferrer noopener",
+ target: "_blank"
+};
+var DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_5 = {
+ id: "deleteLogSettings"
+};
+function DeleteOldLogsvue_type_template_id_2d91a21d_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _directive_form = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("form");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "deleteEnable",
+ "model-value": _ctx.enabled,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ _ctx.enabled = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: _ctx.translate('PrivacyManager_UseDeleteLog'),
+ "inline-help": _ctx.translate('PrivacyManager_DeleteRawDataInfo')
+ }, null, 8, ["model-value", "title", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_ClickHere')), 1)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.enabled]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DeleteOldLogsvue_type_template_id_2d91a21d_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "deleteOlderThan",
+ "model-value": _ctx.deleteOlderThan,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ _ctx.deleteOlderThan = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: _ctx.deleteOlderThanTitle,
+ "inline-help": _ctx.translate('PrivacyManager_LeastDaysInput', '1')
+ }, null, 8, ["model-value", "title", "inline-help"])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.enabled]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ onConfirm: _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.save();
+ }),
+ saving: _ctx.isLoading
+ }, null, 8, ["saving"])], 512)), [[_directive_form]]);
+}
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/DeleteOldLogs/DeleteOldLogs.vue?vue&type=template&id=2d91a21d
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/DeleteOldLogs/DeleteOldLogs.vue?vue&type=script&lang=ts
+
+
+
+
+var _window = window,
+ DeleteOldLogsvue_type_script_lang_ts_$ = _window.$;
+/* harmony default export */ var DeleteOldLogsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ isDataPurgeSettingsEnabled: Boolean,
+ deleteData: {
+ type: Object,
+ required: true
+ },
+ scheduleDeletionOptions: {
+ type: Object,
+ required: true
+ }
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"]
+ },
+ directives: {
+ Form: external_CorePluginsAdmin_["Form"]
+ },
+ data: function data() {
+ return {
+ isLoading: false,
+ enabled: this.deleteData.config.delete_logs_enable === '1',
+ deleteOlderThan: this.deleteData.config.delete_logs_older_than
+ };
+ },
+ created: function created() {
+ var _this = this;
+
+ setTimeout(function () {
+ ReportDeletionSettings_store.initSettings(_this.settings);
+ });
+ },
+ methods: {
+ saveSettings: function saveSettings() {
+ var _this2 = this;
+
+ var method = 'PrivacyManager.setDeleteLogsSettings';
+ this.isLoading = true;
+ ReportDeletionSettings_store.savePurgeDataSettings(method, this.settings).finally(function () {
+ _this2.isLoading = false;
+ });
+ },
+ reloadDbStats: function reloadDbStats() {
+ ReportDeletionSettings_store.updateSettings(this.settings);
+ },
+ save: function save() {
+ var _this3 = this;
+
+ if (this.enabled) {
+ var confirmId = 'deleteLogsConfirm';
+
+ if (ReportDeletionSettings_store.enableDeleteReports.value) {
+ confirmId = 'deleteBothConfirm';
+ }
+
+ DeleteOldLogsvue_type_script_lang_ts_$('#confirmDeleteSettings').find('>h2').hide();
+ DeleteOldLogsvue_type_script_lang_ts_$("#".concat(confirmId)).show();
+ external_CoreHome_["Matomo"].helper.modalConfirm('#confirmDeleteSettings', {
+ yes: function yes() {
+ _this3.saveSettings();
+ }
+ });
+ } else {
+ this.saveSettings();
+ }
+ }
+ },
+ computed: {
+ settings: function settings() {
+ return {
+ enableDeleteLogs: !!this.enabled,
+ deleteLogsOlderThan: this.deleteOlderThan
+ };
+ },
+ deleteOlderThanTitle: function deleteOlderThanTitle() {
+ return "".concat(Object(external_CoreHome_["translate"])('PrivacyManager_DeleteLogsOlderThan'), " (").concat(Object(external_CoreHome_["translate"])('Intl_PeriodDays'), ")");
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/DeleteOldLogs/DeleteOldLogs.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/DeleteOldLogs/DeleteOldLogs.vue
+
+
+
+DeleteOldLogsvue_type_script_lang_ts.render = DeleteOldLogsvue_type_template_id_2d91a21d_render
+
+/* harmony default export */ var DeleteOldLogs = (DeleteOldLogsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/DeleteOldReports/DeleteOldReports.vue?vue&type=template&id=0a48298a
+
+var DeleteOldReportsvue_type_template_id_0a48298a_hoisted_1 = {
+ id: "formDeleteSettings"
+};
+var DeleteOldReportsvue_type_template_id_0a48298a_hoisted_2 = {
+ id: "deleteReportsSettingEnabled"
+};
+var DeleteOldReportsvue_type_template_id_0a48298a_hoisted_3 = {
+ class: "alert alert-warning",
+ style: {
+ "width": "50%"
+ }
+};
+
+var DeleteOldReportsvue_type_template_id_0a48298a_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var DeleteOldReportsvue_type_template_id_0a48298a_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var DeleteOldReportsvue_type_template_id_0a48298a_hoisted_6 = {
+ id: "deleteReportsSettings"
+};
+function DeleteOldReportsvue_type_template_id_0a48298a_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _directive_form = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("form");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", DeleteOldReportsvue_type_template_id_0a48298a_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DeleteOldReportsvue_type_template_id_0a48298a_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "deleteReportsEnable",
+ "model-value": _ctx.enabled,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ _ctx.enabled = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: _ctx.translate('PrivacyManager_UseDeleteReports'),
+ "inline-help": _ctx.translate('PrivacyManager_DeleteAggregateReportsDetailedInfo')
+ }, null, 8, ["model-value", "title", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DeleteOldReportsvue_type_template_id_0a48298a_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_DeleteReportsInfo2', _ctx.deleteOldLogsText)), 1), DeleteOldReportsvue_type_template_id_0a48298a_hoisted_4, DeleteOldReportsvue_type_template_id_0a48298a_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_DeleteReportsInfo3', _ctx.deleteOldLogsText)), 1)])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.enabled]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", DeleteOldReportsvue_type_template_id_0a48298a_hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "deleteReportsOlderThan",
+ "model-value": _ctx.deleteOlderThan,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ _ctx.deleteOlderThan = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: _ctx.deleteReportsOlderThanTitle,
+ "inline-help": _ctx.translate('PrivacyManager_LeastMonthsInput', '1')
+ }, null, 8, ["model-value", "title", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "deleteReportsKeepBasic",
+ "model-value": _ctx.keepBasic,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ _ctx.keepBasic = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: _ctx.deleteReportsKeepBasicTitle,
+ "inline-help": _ctx.translate('PrivacyManager_KeepBasicMetricsReportsDetailedInfo')
+ }, null, 8, ["model-value", "title", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_KeepDataFor')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "deleteReportsKeepDay",
+ "model-value": _ctx.keepDataForDay,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ _ctx.keepDataForDay = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: _ctx.translate('General_DailyReports')
+ }, null, 8, ["model-value", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "deleteReportsKeepWeek",
+ "model-value": _ctx.keepDataForWeek,
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ _ctx.keepDataForWeek = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: _ctx.translate('General_WeeklyReports')
+ }, null, 8, ["model-value", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "deleteReportsKeepMonth",
+ "model-value": _ctx.keepDataForMonth,
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ _ctx.keepDataForMonth = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: "".concat(_ctx.translate('General_MonthlyReports'), " (").concat(_ctx.translate('General_Recommended'), ")")
+ }, null, 8, ["model-value", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "deleteReportsKeepYear",
+ "model-value": _ctx.keepDataForYear,
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ _ctx.keepDataForYear = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: "".concat(_ctx.translate('General_YearlyReports'), " (").concat(_ctx.translate('General_Recommended'), ")")
+ }, null, 8, ["model-value", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "deleteReportsKeepRange",
+ "model-value": _ctx.keepDataForRange,
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
+ _ctx.keepDataForRange = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: _ctx.translate('General_RangeReports')
+ }, null, 8, ["model-value", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "checkbox",
+ name: "deleteReportsKeepSegments",
+ "model-value": _ctx.keepDataForSegments,
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) {
+ _ctx.keepDataForSegments = $event;
+
+ _ctx.reloadDbStats();
+ }),
+ title: _ctx.translate('PrivacyManager_KeepReportSegments')
+ }, null, 8, ["model-value", "title"])])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.enabled]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ onConfirm: _cache[9] || (_cache[9] = function ($event) {
+ return _ctx.save();
+ }),
+ saving: _ctx.isLoading
+ }, null, 8, ["saving"])], 512)), [[_directive_form]]);
+}
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/DeleteOldReports/DeleteOldReports.vue?vue&type=template&id=0a48298a
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/DeleteOldReports/DeleteOldReports.vue?vue&type=script&lang=ts
+
+
+
+
+
+function getInt(value) {
+ return value ? '1' : '0';
+}
+
+var DeleteOldReportsvue_type_script_lang_ts_window = window,
+ DeleteOldReportsvue_type_script_lang_ts_$ = DeleteOldReportsvue_type_script_lang_ts_window.$;
+/* harmony default export */ var DeleteOldReportsvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ isDataPurgeSettingsEnabled: Boolean,
+ deleteData: {
+ type: Object,
+ required: true
+ },
+ scheduleDeletionOptions: {
+ type: Object,
+ required: true
+ }
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"]
+ },
+ directives: {
+ Form: external_CorePluginsAdmin_["Form"]
+ },
+ data: function data() {
+ return {
+ isLoading: false,
+ enabled: parseInt(this.deleteData.config.delete_reports_enable, 10) === 1,
+ deleteOlderThan: this.deleteData.config.delete_reports_older_than,
+ keepBasic: parseInt(this.deleteData.config.delete_reports_keep_basic_metrics, 10) === 1,
+ keepDataForDay: parseInt(this.deleteData.config.delete_reports_keep_day_reports, 10) === 1,
+ keepDataForWeek: parseInt(this.deleteData.config.delete_reports_keep_week_reports, 10) === 1,
+ keepDataForMonth: parseInt(this.deleteData.config.delete_reports_keep_month_reports, 10) === 1,
+ keepDataForYear: parseInt(this.deleteData.config.delete_reports_keep_year_reports, 10) === 1,
+ keepDataForRange: parseInt(this.deleteData.config.delete_reports_keep_range_reports, 10) === 1,
+ keepDataForSegments: parseInt(this.deleteData.config.delete_reports_keep_segment_reports, 10) === 1
+ };
+ },
+ created: function created() {
+ var _this = this;
+
+ setTimeout(function () {
+ ReportDeletionSettings_store.initSettings(_this.settings);
+ });
+ },
+ methods: {
+ saveSettings: function saveSettings() {
+ var _this2 = this;
+
+ var method = 'PrivacyManager.setDeleteReportsSettings';
+ this.isLoading = true;
+ ReportDeletionSettings_store.savePurgeDataSettings(method, this.settings).finally(function () {
+ _this2.isLoading = false;
+ });
+ },
+ reloadDbStats: function reloadDbStats() {
+ ReportDeletionSettings_store.updateSettings(this.settings);
+ },
+ save: function save() {
+ var _this3 = this;
+
+ if (this.enabled) {
+ var confirmId = 'deleteReportsConfirm';
+
+ if (ReportDeletionSettings_store.enableDeleteLogs.value) {
+ confirmId = 'deleteBothConfirm';
+ }
+
+ DeleteOldReportsvue_type_script_lang_ts_$('#confirmDeleteSettings').find('>h2').hide();
+ DeleteOldReportsvue_type_script_lang_ts_$("#".concat(confirmId)).show();
+ external_CoreHome_["Matomo"].helper.modalConfirm('#confirmDeleteSettings', {
+ yes: function yes() {
+ _this3.saveSettings();
+ }
+ });
+ } else {
+ this.saveSettings();
+ }
+ }
+ },
+ computed: {
+ settings: function settings() {
+ return {
+ enableDeleteReports: this.enabled,
+ deleteReportsOlderThan: this.deleteOlderThan,
+ keepBasic: getInt(this.keepBasic),
+ keepDay: getInt(this.keepDataForDay),
+ keepWeek: getInt(this.keepDataForWeek),
+ keepMonth: getInt(this.keepDataForMonth),
+ keepYear: getInt(this.keepDataForYear),
+ keepRange: getInt(this.keepDataForRange),
+ keepSegments: getInt(this.keepDataForSegments)
+ };
+ },
+ deleteOldLogsText: function deleteOldLogsText() {
+ return Object(external_CoreHome_["translate"])('PrivacyManager_UseDeleteLog');
+ },
+ deleteReportsOlderThanTitle: function deleteReportsOlderThanTitle() {
+ var first = Object(external_CoreHome_["translate"])('PrivacyManager_DeleteReportsOlderThan');
+ return "".concat(first, " (").concat(Object(external_CoreHome_["translate"])('Intl_PeriodMonths'), ")");
+ },
+ deleteReportsKeepBasicTitle: function deleteReportsKeepBasicTitle() {
+ var first = Object(external_CoreHome_["translate"])('PrivacyManager_KeepBasicMetrics');
+ return "".concat(first, " (").concat(Object(external_CoreHome_["translate"])('General_Recommended'), ")");
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/DeleteOldReports/DeleteOldReports.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/DeleteOldReports/DeleteOldReports.vue
+
+
+
+DeleteOldReportsvue_type_script_lang_ts.render = DeleteOldReportsvue_type_template_id_0a48298a_render
+
+/* harmony default export */ var DeleteOldReports = (DeleteOldReportsvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/ScheduleReportDeletion/ScheduleReportDeletion.vue?vue&type=template&id=22bfc8d0
+
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_1 = {
+ id: "formDeleteSettings"
+};
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_2 = {
+ id: "deleteSchedulingSettings"
+};
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_3 = {
+ id: "deleteSchedulingSettingsInlineHelp",
+ class: "inline-help-node"
+};
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_4 = {
+ key: 0
+};
+
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_6 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_9 = {
+ key: 0,
+ id: "deleteDataEstimateSect",
+ class: "form-group row"
+};
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_10 = {
+ class: "col s12",
+ id: "databaseSizeHeadline"
+};
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_11 = {
+ class: "col s12 m6"
+};
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_12 = ["innerHTML"];
+
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_13 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" ");
+
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_14 = {
+ class: "col s12 m6"
+};
+var ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_15 = {
+ key: 0,
+ class: "form-help"
+};
+function ScheduleReportDeletionvue_type_template_id_22bfc8d0_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
+
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
+
+ var _directive_form = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("form");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ id: "scheduleSettingsHeadline",
+ "content-title": _ctx.translate('PrivacyManager_DeleteSchedulingSettings')
+ }, {
+ default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "deleteLowestInterval",
+ title: _ctx.translate('PrivacyManager_DeleteDataInterval'),
+ modelValue: _ctx.deleteLowestInterval,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.deleteLowestInterval = $event;
+ }),
+ options: _ctx.scheduleDeletionOptions
+ }, {
+ "inline-help": Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_3, [_ctx.deleteData.lastRun ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_LastDelete')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.deleteData.lastRunPretty) + " ", 1), ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_5, ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_6])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_NextDelete')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.deleteData.nextRunPretty) + " ", 1), ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_7, ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_8, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ id: "purgeDataNowLink",
+ href: "#",
+ onClick: _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.executeDataPurgeNow();
+ })
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_PurgeNow')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showPurgeNowLink]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ "loading-message": _ctx.translate('PrivacyManager_PurgingData'),
+ loading: _ctx.loadingDataPurge
+ }, null, 8, ["loading-message", "loading"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ id: "db-purged-message"
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_DBPurged')), 513), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.dataWasPurged]])])];
+ }),
+ _: 1
+ }, 8, ["title", "modelValue", "options"])])]), _ctx.deleteData.config.enable_database_size_estimate === '1' || _ctx.deleteData.config.enable_database_size_estimate === 1 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_10, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_ReportsDataSavedEstimate')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ id: "deleteDataEstimate",
+ innerHTML: _ctx.$sanitize(_ctx.estimation)
+ }, null, 8, ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_12), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.showEstimate]]), ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_13, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ loading: _ctx.loadingEstimation
+ }, null, 8, ["loading"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_14, [_ctx.deleteData.config.enable_auto_database_size_estimate !== '1' && _ctx.deleteData.config.enable_auto_database_size_estimate !== 1 ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ScheduleReportDeletionvue_type_template_id_22bfc8d0_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ id: "getPurgeEstimateLink",
+ href: "#",
+ onClick: _cache[2] || (_cache[2] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
+ return _ctx.getPurgeEstimate();
+ }, ["prevent"]))
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('PrivacyManager_GetPurgeEstimate')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ onConfirm: _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.save();
+ }),
+ saving: _ctx.isLoading
+ }, null, 8, ["saving"])];
+ }),
+ _: 1
+ }, 8, ["content-title"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.isEitherDeleteSectionEnabled]])], 512)), [[_directive_form]]);
+}
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/ScheduleReportDeletion/ScheduleReportDeletion.vue?vue&type=template&id=22bfc8d0
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/PrivacyManager/vue/src/ScheduleReportDeletion/ScheduleReportDeletion.vue?vue&type=script&lang=ts
+
+
+
+
+/* harmony default export */ var ScheduleReportDeletionvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ isDataPurgeSettingsEnabled: Boolean,
+ deleteData: {
+ type: Object,
+ required: true
+ },
+ scheduleDeletionOptions: {
+ type: Object,
+ required: true
+ }
+ },
+ components: {
+ ContentBlock: external_CoreHome_["ContentBlock"],
+ ActivityIndicator: external_CoreHome_["ActivityIndicator"],
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"]
+ },
+ directives: {
+ Form: external_CorePluginsAdmin_["Form"]
+ },
+ data: function data() {
+ return {
+ isLoading: false,
+ loadingDataPurge: false,
+ dataWasPurged: false,
+ showPurgeNowLink: true,
+ deleteLowestInterval: this.deleteData.config.delete_logs_schedule_lowest_interval
+ };
+ },
+ methods: {
+ save: function save() {
+ var method = 'PrivacyManager.setScheduleReportDeletionSettings';
+ ReportDeletionSettings_store.savePurgeDataSettings(method, {
+ deleteLowestInterval: this.deleteLowestInterval
+ });
+ },
+ executeDataPurgeNow: function executeDataPurgeNow() {
+ var _this = this;
+
+ if (ReportDeletionSettings_store.state.value.isModified) {
+ // ask user if they really want to delete their old data
+ external_CoreHome_["Matomo"].helper.modalConfirm('#saveSettingsBeforePurge', {
+ yes: function yes() {
+ return null;
+ }
+ });
+ return;
+ }
+
+ external_CoreHome_["Matomo"].helper.modalConfirm('#confirmPurgeNow', {
+ yes: function yes() {
+ _this.loadingDataPurge = true;
+ _this.showPurgeNowLink = false; // execute a data purge
+
+ external_CoreHome_["AjaxHelper"].fetch({
+ module: 'PrivacyManager',
+ action: 'executeDataPurge',
+ format: 'html'
+ }, {
+ withTokenInUrl: true
+ }).then(function () {
+ // force reload
+ ReportDeletionSettings_store.reloadDbStats();
+ _this.dataWasPurged = true;
+ setTimeout(function () {
+ _this.dataWasPurged = false;
+ _this.showPurgeNowLink = true;
+ }, 2000);
+ }).finally(function () {
+ _this.loadingDataPurge = false;
+ });
+ }
+ });
+ },
+ getPurgeEstimate: function getPurgeEstimate() {
+ return ReportDeletionSettings_store.reloadDbStats(true);
+ }
+ },
+ computed: {
+ showEstimate: function showEstimate() {
+ return ReportDeletionSettings_store.state.value.showEstimate;
+ },
+ isEitherDeleteSectionEnabled: function isEitherDeleteSectionEnabled() {
+ return ReportDeletionSettings_store.isEitherDeleteSectionEnabled();
+ },
+ estimation: function estimation() {
+ return ReportDeletionSettings_store.state.value.estimation;
+ },
+ loadingEstimation: function loadingEstimation() {
+ return ReportDeletionSettings_store.state.value.loadingEstimation;
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/ScheduleReportDeletion/ScheduleReportDeletion.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/ScheduleReportDeletion/ScheduleReportDeletion.vue
+
+
+
+ScheduleReportDeletionvue_type_script_lang_ts.render = ScheduleReportDeletionvue_type_template_id_22bfc8d0_render
+
+/* harmony default export */ var ScheduleReportDeletion = (ScheduleReportDeletionvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/PrivacyManager/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+
+
+
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=PrivacyManager.umd.js.map \ No newline at end of file
diff --git a/plugins/PrivacyManager/vue/dist/PrivacyManager.umd.min.js b/plugins/PrivacyManager/vue/dist/PrivacyManager.umd.min.js
new file mode 100644
index 0000000000..9349aa9da0
--- /dev/null
+++ b/plugins/PrivacyManager/vue/dist/PrivacyManager.umd.min.js
@@ -0,0 +1,14 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin"),require("SegmentEditor")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin","SegmentEditor"],t):"object"===typeof exports?exports["PrivacyManager"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin"),require("SegmentEditor")):e["PrivacyManager"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"],e["SegmentEditor"])})("undefined"!==typeof self?self:this,(function(e,t,n,a){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var i=t[a]={i:a,l:!1,exports:{}};return e[a].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(a,i,function(t){return e[t]}.bind(null,i));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/PrivacyManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},f06f:function(e,t){e.exports=a},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"ManageGdpr",(function(){return ne})),n.d(t,"AnonymizeIp",(function(){return be})),n.d(t,"AnonymizeLogData",(function(){return et})),n.d(t,"DoNotTrackPreference",(function(){return at})),n.d(t,"ReportDeletionSettings",(function(){return st})),n.d(t,"DeleteOldLogs",(function(){return Ot})),n.d(t,"DeleteOldReports",(function(){return Mt})),n.d(t,"ScheduleReportDeletion",(function(){return Yt})),"undefined"!==typeof window){var a=window.document.currentScript,i=a&&a.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var o=n("8bbf"),l={class:"manageGdpr"},r={class:"intro"},c=Object(o["createElementVNode"])("br",null,null,-1),s=Object(o["createElementVNode"])("br",null,null,-1),d=Object(o["createElementVNode"])("br",null,null,-1),u=Object(o["createElementVNode"])("br",null,null,-1),m=["innerHTML"],b={class:"form-group row"},p={class:"col s12 input-field"},v={for:"gdprsite",class:"siteSelectorLabel"},g={class:"sites_autocomplete"},j={class:"form-group row segmentFilterGroup"},h={class:"col s12"},O={style:{margin:"8px 0",display:"inline-block"}},f=Object(o["createElementVNode"])("br",null,null,-1),y=Object(o["createTextVNode"])(),V=Object(o["createElementVNode"])("br",null,null,-1),D=Object(o["createElementVNode"])("br",null,null,-1),S=Object(o["createElementVNode"])("br",null,null,-1),N={class:"checkInclude"},E={colspan:"8"},_=["title"],k={class:"checkInclude"},P=["title"],C={class:"visitId"},M={class:"visitorId"},w=["title","onClick"],A={class:"visitorIp"},I=["title","onClick"],z={class:"userId"},L=["title","onClick"],T=["title"],F=["src"],x=["title"],B=["src"],R=["title"],U=["src"],G=["title"],H=["src"],q=["onClick"],K=Object(o["createElementVNode"])("img",{src:"plugins/Live/images/visitorProfileLaunch.png",style:{"margin-right":"3.5px"}},null,-1),W={class:"ui-confirm",id:"confirmDeleteDataSubject",ref:"confirmDeleteDataSubject"},Y=["value"],J=["value"];function Q(e,t,n,a,i,$){var Q=Object(o["resolveComponent"])("SiteSelector"),X=Object(o["resolveComponent"])("SegmentGenerator"),Z=Object(o["resolveComponent"])("SaveButton"),ee=Object(o["resolveComponent"])("ContentBlock"),te=Object(o["resolveComponent"])("Field"),ne=Object(o["resolveDirective"])("content-table");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",l,[Object(o["createVNode"])(ee,{"content-title":e.translate("PrivacyManager_GdprTools")},{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("div",r,[Object(o["createElementVNode"])("p",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("PrivacyManager_GdprToolsPageIntro1"))+" ",1),c,s,Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("PrivacyManager_GdprToolsPageIntro2"))+" ",1),d]),Object(o["createElementVNode"])("ol",null,[Object(o["createElementVNode"])("li",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_GdprToolsPageIntroAccessRight")),1),Object(o["createElementVNode"])("li",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_GdprToolsPageIntroEraseRight")),1)]),Object(o["createElementVNode"])("p",null,[u,Object(o["createElementVNode"])("span",{innerHTML:e.$sanitize(e.overviewHintText)},null,8,m)])]),Object(o["createElementVNode"])("h3",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_SearchForDataSubject")),1),Object(o["createElementVNode"])("div",b,[Object(o["createElementVNode"])("div",p,[Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("label",v,Object(o["toDisplayString"])(e.translate("PrivacyManager_SelectWebsite")),1),Object(o["createElementVNode"])("div",g,[Object(o["createVNode"])(Q,{id:"gdprsite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),"show-all-sites-item":!0,"switch-site-on-select":!1,"show-selected-site":!0},null,8,["modelValue"])])])])]),Object(o["createElementVNode"])("div",j,[Object(o["createElementVNode"])("div",h,[Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("label",O,Object(o["toDisplayString"])(e.translate("PrivacyManager_FindDataSubjectsBy")),1),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(X,{modelValue:e.segment_filter,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.segment_filter=t}),"visit-segments-only":!0,idsite:e.site.id},null,8,["modelValue","idsite"])])])])]),Object(o["createVNode"])(Z,{class:"findDataSubjects",value:e.translate("PrivacyManager_FindMatchingDataSubjects"),onConfirm:t[2]||(t[2]=function(t){return e.findDataSubjects()}),disabled:!e.segment_filter,saving:e.isLoading},null,8,["value","disabled","saving"])]})),_:1},8,["content-title"]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("h2",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_NoDataSubjectsFound")),1)],512),[[o["vShow"],!e.dataSubjects.length&&e.hasSearched]]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("h2",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_MatchingDataSubjects")),1),Object(o["createElementVNode"])("p",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("PrivacyManager_VisitsMatchedCriteria"))+" "+Object(o["toDisplayString"])(e.translate("PrivacyManager_ExportingNote"))+" ",1),f,y,V,Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("PrivacyManager_DeletionFromMatomoOnly"))+" ",1),D,S,Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("PrivacyManager_ResultIncludesAllVisits")),1)]),Object(o["withDirectives"])(Object(o["createElementVNode"])("table",null,[Object(o["createElementVNode"])("thead",null,[Object(o["createElementVNode"])("tr",null,[Object(o["createElementVNode"])("th",N,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(te,{uicontrol:"checkbox",name:"activateAll","model-value":e.toggleAll,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.toggleAll=t,e.toggleActivateAll()}),"full-width":!0},null,8,["model-value"])])]),Object(o["createElementVNode"])("th",null,Object(o["toDisplayString"])(e.translate("General_Website")),1),Object(o["createElementVNode"])("th",null,Object(o["toDisplayString"])(e.translate("General_VisitId")),1),Object(o["createElementVNode"])("th",null,Object(o["toDisplayString"])(e.translate("General_VisitorID")),1),Object(o["createElementVNode"])("th",null,Object(o["toDisplayString"])(e.translate("General_VisitorIP")),1),Object(o["createElementVNode"])("th",null,Object(o["toDisplayString"])(e.translate("General_UserId")),1),Object(o["createElementVNode"])("th",null,Object(o["toDisplayString"])(e.translate("General_Details")),1),Object(o["withDirectives"])(Object(o["createElementVNode"])("th",null,Object(o["toDisplayString"])(e.translate("General_Action")),513),[[o["vShow"],e.profileEnabled]])])]),Object(o["createElementVNode"])("tbody",null,[Object(o["withDirectives"])(Object(o["createElementVNode"])("tr",null,[Object(o["createElementVNode"])("td",E,Object(o["toDisplayString"])(e.translate("PrivacyManager_ResultTruncated","400")),1)],512),[[o["vShow"],e.dataSubjects.length>400]]),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.dataSubjects,(function(t,n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("tr",{title:"".concat(e.translate("PrivacyManager_LastAction"),": ").concat(t.lastActionDateTime),key:n},[Object(o["createElementVNode"])("td",k,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(te,{uicontrol:"checkbox",name:"subject".concat(t.idVisit),modelValue:e.dataSubjectsActive[n],"onUpdate:modelValue":function(t){return e.dataSubjectsActive[n]=t},"full-width":!0},null,8,["name","modelValue","onUpdate:modelValue"])])]),Object(o["createElementVNode"])("td",{class:"site",title:"(".concat(e.translate("General_Id")," ").concat(t.idSite,")")},Object(o["toDisplayString"])(t.siteName),9,P),Object(o["createElementVNode"])("td",C,Object(o["toDisplayString"])(t.idVisit),1),Object(o["createElementVNode"])("td",M,[Object(o["createElementVNode"])("a",{title:e.translate("PrivacyManager_AddVisitorIdToSearch"),onClick:function(n){return e.addFilter("visitorId",t.visitorId)}},Object(o["toDisplayString"])(t.visitorId),9,w)]),Object(o["createElementVNode"])("td",A,[Object(o["createElementVNode"])("a",{title:e.translate("PrivacyManager_AddVisitorIPToSearch"),onClick:function(n){return e.addFilter("visitIp",t.visitIp)}},Object(o["toDisplayString"])(t.visitIp),9,I)]),Object(o["createElementVNode"])("td",z,[Object(o["createElementVNode"])("a",{title:e.translate("PrivacyManager_AddUserIdToSearch"),onClick:function(n){return e.addFilter("userId",t.userId)}},Object(o["toDisplayString"])(t.userId),9,L)]),Object(o["createElementVNode"])("td",null,[Object(o["createElementVNode"])("span",{title:"".concat(t.deviceType," ").concat(t.deviceModel),style:{"margin-right":"3.5px"}},[Object(o["createElementVNode"])("img",{height:"16",src:t.deviceTypeIcon},null,8,F)],8,T),Object(o["createElementVNode"])("span",{title:t.operatingSystem,style:{"margin-right":"3.5px"}},[Object(o["createElementVNode"])("img",{height:"16",src:t.operatingSystemIcon},null,8,B)],8,x),Object(o["createElementVNode"])("span",{title:"".concat(t.browser," ").concat(t.browserFamilyDescription),style:{"margin-right":"3.5px"}},[Object(o["createElementVNode"])("img",{height:"16",src:t.browserIcon},null,8,U)],8,R),Object(o["createElementVNode"])("span",{title:"".concat(t.country," ").concat(t.region)},[Object(o["createElementVNode"])("img",{height:"16",src:t.countryFlag},null,8,H)],8,G)]),Object(o["withDirectives"])(Object(o["createElementVNode"])("td",null,[Object(o["createElementVNode"])("a",{class:"visitorLogTooltip",title:"View visitor profile",onClick:function(n){return e.showProfile(t.visitorId,t.idSite)}},[K,Object(o["createElementVNode"])("span",null,Object(o["toDisplayString"])(e.translate("Live_ViewVisitorProfile")),1)],8,q)],512),[[o["vShow"],e.profileEnabled]])],8,_)})),128))])],512),[[ne]]),Object(o["createVNode"])(Z,{class:"exportDataSubjects",style:{"margin-right":"3.5px"},onConfirm:t[4]||(t[4]=function(t){return e.exportDataSubject()}),disabled:!e.hasActiveDataSubjects,value:e.translate("PrivacyManager_ExportSelectedVisits")},null,8,["disabled","value"]),Object(o["createVNode"])(Z,{class:"deleteDataSubjects",onConfirm:t[5]||(t[5]=function(t){return e.deleteDataSubject()}),disabled:!e.hasActiveDataSubjects||e.isDeleting,value:e.translate("PrivacyManager_DeleteSelectedVisits")},null,8,["disabled","value"])],512),[[o["vShow"],e.dataSubjects.length]]),Object(o["createElementVNode"])("div",W,[Object(o["createElementVNode"])("h2",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_DeleteVisitsConfirm")),1),Object(o["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,Y),Object(o["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,J)],512)])}var X=n("19dc"),Z=n("f06f"),ee=n("a5a2"),te=Object(o["defineComponent"])({components:{ContentBlock:X["ContentBlock"],SiteSelector:X["SiteSelector"],SegmentGenerator:Z["SegmentGenerator"],SaveButton:ee["SaveButton"],Field:ee["Field"]},directives:{ContentTable:X["ContentTable"]},data:function(){return{isLoading:!1,isDeleting:!1,site:{id:"all",name:Object(X["translate"])("UsersManager_AllWebsites")},segment_filter:"userId==",dataSubjects:[],toggleAll:!0,hasSearched:!1,profileEnabled:X["Matomo"].visitorProfileEnabled,dataSubjectsActive:[]}},setup:function(){var e=X["AjaxHelper"].fetch({method:"SitesManager.getSitesIdWithAdminAccess",filter_limit:"-1"});return{getSites:function(){return e}}},methods:{showSuccessNotification:function(e){var t=X["NotificationsStore"].show({message:e,context:"success",id:"manageGdpr",type:"transient"});setTimeout((function(){X["NotificationsStore"].scrollToNotification(t)}),200)},linkTo:function(e){return"?".concat(X["MatomoUrl"].stringify(Object.assign(Object.assign({},X["MatomoUrl"].urlParsed.value),{},{module:"PrivacyManager",action:e})))},toggleActivateAll:function(){this.dataSubjectsActive.fill(this.toggleAll)},showProfile:function(e,t){X["Matomo"].helper.showVisitorProfilePopup(e,t)},exportDataSubject:function(){var e=this,t=this.activatedDataSubjects;X["AjaxHelper"].post({module:"API",method:"PrivacyManager.exportDataSubjects",format:"json",filter_limit:-1},{visits:t}).then((function(t){e.showSuccessNotification(Object(X["translate"])("PrivacyManager_VisitsSuccessfullyExported")),X["Matomo"].helper.sendContentAsDownload("exported_data_subjects.json",JSON.stringify(t))}))},deleteDataSubject:function(){var e=this;X["Matomo"].helper.modalConfirm(this.$refs.confirmDeleteDataSubject,{yes:function(){e.isDeleting=!0;var t=e.activatedDataSubjects;X["AjaxHelper"].post({module:"API",method:"PrivacyManager.deleteDataSubjects",filter_limit:-1},{visits:t}).then((function(){e.dataSubjects=[],e.showSuccessNotification(Object(X["translate"])("PrivacyManager_VisitsSuccessfullyDeleted")),e.findDataSubjects()})).finally((function(){e.isDeleting=!1}))}})},addFilter:function(e,t){this.segment_filter+=",".concat(e,"==").concat(t),this.findDataSubjects()},findDataSubjects:function(){var e=this;this.dataSubjects=[],this.dataSubjectsActive=[],this.isLoading=!0,this.toggleAll=!0,this.hasSearched=!1,this.getSites().then((function(t){var n=e.site.id;"all"!==n||X["Matomo"].hasSuperUserAccess||(n=t,Array.isArray(t)&&(n=t.join(","))),X["AjaxHelper"].fetch({idSite:n,module:"API",method:"PrivacyManager.findDataSubjects",segment:e.segment_filter}).then((function(t){e.hasSearched=!0,e.dataSubjectsActive=t.map((function(){return!0})),e.dataSubjects=t})).finally((function(){e.isLoading=!1}))}))}},computed:{hasActiveDataSubjects:function(){return!!this.activatedDataSubjects.length},activatedDataSubjects:function(){var e=this;return this.dataSubjects.filter((function(t,n){return e.dataSubjectsActive[n]})).map((function(e){return{idsite:e.idSite,idvisit:e.idVisit}}))},overviewHintText:function(){return Object(X["translate"])("PrivacyManager_GdprToolsOverviewHint",'<a href="'.concat(this.linkTo("gdprOverview"),'">'),"</a>")}}});te.render=Q;var ne=te,ae=Object(o["createElementVNode"])("br",null,null,-1),ie=Object(o["createElementVNode"])("br",null,null,-1),oe=Object(o["createElementVNode"])("br",null,null,-1),le=Object(o["createElementVNode"])("br",null,null,-1),re={key:0},ce=Object(o["createElementVNode"])("br",null,null,-1),se=Object(o["createElementVNode"])("br",null,null,-1),de={class:"alert-warning alert"};function ue(e,t,n,a,i,l){var r=Object(o["resolveComponent"])("Field"),c=Object(o["resolveComponent"])("SaveButton"),s=Object(o["resolveDirective"])("form");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",null,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"anonymizeIpSettings",title:e.translate("PrivacyManager_UseAnonymizeIp"),modelValue:e.actualEnabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.actualEnabled=t}),"inline-help":e.anonymizeIpEnabledHelp},null,8,["title","modelValue","inline-help"])]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"radio",name:"maskLength",title:e.translate("PrivacyManager_AnonymizeIpMaskLengtDescription"),modelValue:e.actualMaskLength,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.actualMaskLength=t}),options:e.maskLengthOptions,"inline-help":e.translate("PrivacyManager_GeolocationAnonymizeIpNote")},null,8,["title","modelValue","options","inline-help"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"radio",name:"useAnonymizedIpForVisitEnrichment",title:e.translate("PrivacyManager_UseAnonymizedIpForVisitEnrichment"),modelValue:e.actualUseAnonymizedIpForVisitEnrichment,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.actualUseAnonymizedIpForVisitEnrichment=t}),options:e.useAnonymizedIpForVisitEnrichmentOptions,"inline-help":e.translate("PrivacyManager_UseAnonymizedIpForVisitEnrichmentNote")},null,8,["title","modelValue","options","inline-help"])])],512),[[o["vShow"],e.actualEnabled]]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"anonymizeUserId",title:e.translate("PrivacyManager_PseudonymizeUserId"),modelValue:e.actualAnonymizeUserId,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.actualAnonymizeUserId=t})},{"inline-help":Object(o["withCtx"])((function(){return[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("PrivacyManager_PseudonymizeUserIdNote"))+" ",1),ae,ie,Object(o["createElementVNode"])("em",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_PseudonymizeUserIdNote2")),1)]})),_:1},8,["title","modelValue"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"anonymizeOrderId",title:e.translate("PrivacyManager_UseAnonymizeOrderId"),modelValue:e.actualAnonymizeOrderId,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.actualAnonymizeOrderId=t}),"inline-help":e.translate("PrivacyManager_AnonymizeOrderIdNote")},null,8,["title","modelValue","inline-help"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"forceCookielessTracking",title:e.translate("PrivacyManager_ForceCookielessTracking"),modelValue:e.actualForceCookielessTracking,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.actualForceCookielessTracking=t})},{"inline-help":Object(o["withCtx"])((function(){return[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("PrivacyManager_ForceCookielessTrackingDescription",e.trackerFileName))+" ",1),oe,le,Object(o["createElementVNode"])("em",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_ForceCookielessTrackingDescription2")),1),e.trackerWritable?Object(o["createCommentVNode"])("",!0):(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",re,[ce,se,Object(o["createElementVNode"])("p",de,Object(o["toDisplayString"])(e.translate("PrivacyManager_ForceCookielessTrackingDescriptionNotWritable",e.trackerFileName)),1)]))]})),_:1},8,["title","modelValue"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"select",name:"anonymizeReferrer",title:e.translate("PrivacyManager_AnonymizeReferrer"),modelValue:e.actualAnonymizeReferrer,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.actualAnonymizeReferrer=t}),options:e.referrerAnonymizationOptions,"inline-help":e.translate("PrivacyManager_AnonymizeReferrerNote")},null,8,["title","modelValue","options","inline-help"])]),Object(o["createVNode"])(c,{onConfirm:t[7]||(t[7]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512)),[[s]])}var me=Object(o["defineComponent"])({props:{anonymizeIpEnabled:Boolean,anonymizeUserId:Boolean,maskLength:{type:Number,required:!0},useAnonymizedIpForVisitEnrichment:Boolean,anonymizeOrderId:Boolean,forceCookielessTracking:Boolean,anonymizeReferrer:String,maskLengthOptions:{type:Array,required:!0},useAnonymizedIpForVisitEnrichmentOptions:{type:Array,required:!0},trackerFileName:{type:String,required:!0},trackerWritable:{type:Boolean,required:!0},referrerAnonymizationOptions:{type:Object,required:!0}},components:{Field:ee["Field"],SaveButton:ee["SaveButton"]},directives:{Form:ee["Form"]},data:function(){return{isLoading:!1,actualEnabled:!!this.anonymizeIpEnabled,actualMaskLength:this.maskLength,actualUseAnonymizedIpForVisitEnrichment:this.useAnonymizedIpForVisitEnrichment?"1":"0",actualAnonymizeUserId:!!this.anonymizeUserId,actualAnonymizeOrderId:!!this.anonymizeOrderId,actualForceCookielessTracking:!!this.forceCookielessTracking,actualAnonymizeReferrer:this.anonymizeReferrer}},methods:{save:function(){var e=this;this.isLoading=!0,X["AjaxHelper"].post({module:"API",method:"PrivacyManager.setAnonymizeIpSettings"},{anonymizeIPEnable:this.actualEnabled?"1":"0",anonymizeUserId:this.actualAnonymizeUserId?"1":"0",anonymizeOrderId:this.actualAnonymizeOrderId?"1":"0",forceCookielessTracking:this.actualForceCookielessTracking?"1":"0",anonymizeReferrer:this.actualAnonymizeReferrer?this.actualAnonymizeReferrer:"",maskLength:this.actualMaskLength,useAnonymizedIpForVisitEnrichment:this.actualUseAnonymizedIpForVisitEnrichment?"1":"0"}).then((function(){var e=X["NotificationsStore"].show({message:Object(X["translate"])("CoreAdminHome_SettingsSaveSuccess"),context:"success",id:"privacyManagerSettings",type:"toast"});X["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}},computed:{anonymizeIpEnabledHelp:function(){var e=Object(X["translate"])("PrivacyManager_AnonymizeIpInlineHelp"),t=Object(X["translate"])("PrivacyManager_AnonymizeIpDescription");return"".concat(e," ").concat(t)}}});me.render=ue;var be=me,pe={class:"anonymizeLogData"},ve={class:"form-group row"},ge={class:"col s12 input-field"},je={for:"anonymizeSite",class:"siteSelectorLabel"},he={class:"sites_autocomplete"},Oe={class:"form-group row"},fe={class:"col s6 input-field"},ye={for:"anonymizeStartDate",class:"active"},Ve=["value"],De={class:"col s6 input-field"},Se={for:"anonymizeEndDate",class:"active"},Ne=["value"],Ee={name:"anonymizeIp"},_e={name:"anonymizeLocation"},ke={name:"anonymizeTheUserId"},Pe={class:"form-group row"},Ce={class:"col s12 m6"},Me={for:"visit_columns"},we={class:"innerFormField",name:"visit_columns"},Ae=["onClick","title"],Ie={class:"col s12 m6"},ze={class:"form-help"},Le={class:"inline-help"},Te={class:"form-group row"},Fe={class:"col s12"},xe={class:"form-group row"},Be={class:"col s12 m6"},Re={for:"action_columns"},Ue={class:"innerFormField",name:"action_columns"},Ge=["onClick","title"],He={class:"col s12 m6"},qe={class:"form-help"},Ke={class:"inline-help"},We=Object(o["createElementVNode"])("span",{class:"icon-info"},null,-1),$e={class:"ui-confirm",id:"confirmAnonymizeLogData",ref:"confirmAnonymizeLogData"},Ye=["value"],Je=["value"];function Qe(e,t,n,a,i,l){var r=Object(o["resolveComponent"])("SiteSelector"),c=Object(o["resolveComponent"])("Field"),s=Object(o["resolveComponent"])("SaveButton");return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",pe,[Object(o["createElementVNode"])("div",ve,[Object(o["createElementVNode"])("div",ge,[Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("label",je,Object(o["toDisplayString"])(e.translate("PrivacyManager_AnonymizeSites")),1),Object(o["createElementVNode"])("div",he,[Object(o["createVNode"])(r,{id:"anonymizeSite",modelValue:e.site,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.site=t}),"show-all-sites-item":!0,"switch-site-on-select":!1,"show-selected-site":!0},null,8,["modelValue"])])])])]),Object(o["createElementVNode"])("div",Oe,[Object(o["createElementVNode"])("div",fe,[Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("label",ye,Object(o["toDisplayString"])(e.translate("PrivacyManager_AnonymizeRowDataFrom")),1),Object(o["createElementVNode"])("input",{type:"text",id:"anonymizeStartDate",class:"anonymizeStartDate",ref:"anonymizeStartDate",name:"anonymizeStartDate",value:e.startDate,onKeydown:t[1]||(t[1]=function(t){return e.onKeydownStartDate(t)}),onChange:t[2]||(t[2]=function(t){return e.onKeydownStartDate(t)})},null,40,Ve)])]),Object(o["createElementVNode"])("div",De,[Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("label",Se,Object(o["toDisplayString"])(e.translate("PrivacyManager_AnonymizeRowDataTo")),1),Object(o["createElementVNode"])("input",{type:"text",class:"anonymizeEndDate",id:"anonymizeEndDate",ref:"anonymizeEndDate",name:"anonymizeEndDate",value:e.endDate,onKeydown:t[3]||(t[3]=function(t){return e.onKeydownEndDate(t)}),onChange:t[4]||(t[4]=function(t){return e.onKeydownEndDate(t)})},null,40,Ne)])])]),Object(o["createElementVNode"])("div",Ee,[Object(o["createVNode"])(c,{uicontrol:"checkbox",name:"anonymizeIp",title:e.translate("PrivacyManager_AnonymizeIp"),modelValue:e.anonymizeIp,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.anonymizeIp=t}),introduction:e.translate("General_Visit"),"inline-help":e.translate("PrivacyManager_AnonymizeIpHelp")},null,8,["title","modelValue","introduction","inline-help"])]),Object(o["createElementVNode"])("div",_e,[Object(o["createVNode"])(c,{uicontrol:"checkbox",name:"anonymizeLocation",title:e.translate("PrivacyManager_AnonymizeLocation"),modelValue:e.anonymizeLocation,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.anonymizeLocation=t}),"inline-help":e.translate("PrivacyManager_AnonymizeLocationHelp")},null,8,["title","modelValue","inline-help"])]),Object(o["createElementVNode"])("div",ke,[Object(o["createVNode"])(c,{uicontrol:"checkbox",name:"anonymizeTheUserId",title:e.translate("PrivacyManager_AnonymizeUserId"),modelValue:e.anonymizeUserId,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.anonymizeUserId=t}),"inline-help":e.translate("PrivacyManager_AnonymizeUserIdHelp")},null,8,["title","modelValue","inline-help"])]),Object(o["createElementVNode"])("div",Pe,[Object(o["createElementVNode"])("div",Ce,[Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("label",Me,Object(o["toDisplayString"])(e.translate("PrivacyManager_UnsetVisitColumns")),1),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.selectedVisitColumns,(function(t,n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])("selectedVisitColumns selectedVisitColumns".concat(n," multiple valign-wrapper")),key:n},[Object(o["createElementVNode"])("div",we,[Object(o["createVNode"])(c,{uicontrol:"select",name:"visit_columns","model-value":t.column,"onUpdate:modelValue":function(n){t.column=n,e.onVisitColumnChange()},"full-width":!0,options:e.availableVisitColumns},null,8,["model-value","onUpdate:modelValue","options"])]),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",{class:"icon-minus valign",onClick:function(t){return e.removeVisitColumn(n)},title:e.translate("General_Remove")},null,8,Ae),[[o["vShow"],n+1!==e.selectedVisitColumns.length]])],2)})),128))])]),Object(o["createElementVNode"])("div",Ie,[Object(o["createElementVNode"])("div",ze,[Object(o["createElementVNode"])("span",Le,Object(o["toDisplayString"])(e.translate("PrivacyManager_UnsetVisitColumnsHelp")),1)])])]),Object(o["createElementVNode"])("div",Te,[Object(o["createElementVNode"])("div",Fe,[Object(o["createElementVNode"])("h3",null,Object(o["toDisplayString"])(e.translate("General_Action")),1)])]),Object(o["createElementVNode"])("div",xe,[Object(o["createElementVNode"])("div",Be,[Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("label",Re,Object(o["toDisplayString"])(e.translate("PrivacyManager_UnsetActionColumns")),1),(Object(o["openBlock"])(!0),Object(o["createElementBlock"])(o["Fragment"],null,Object(o["renderList"])(e.selectedActionColumns,(function(t,n){return Object(o["openBlock"])(),Object(o["createElementBlock"])("div",{class:Object(o["normalizeClass"])("selectedActionColumns selectedActionColumns".concat(n," multiple valign-wrapper")),key:n},[Object(o["createElementVNode"])("div",Ue,[Object(o["createVNode"])(c,{uicontrol:"select",name:"action_columns","model-value":t.column,"onUpdate:modelValue":function(n){t.column=n,e.onActionColumnChange()},"full-width":!0,options:e.availableActionColumns},null,8,["model-value","onUpdate:modelValue","options"])]),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",{class:"icon-minus valign",onClick:function(t){return e.removeActionColumn(n)},title:e.translate("General_Remove")},null,8,Ge),[[o["vShow"],n+1!==e.selectedActionColumns.length]])],2)})),128))])]),Object(o["createElementVNode"])("div",He,[Object(o["createElementVNode"])("div",qe,[Object(o["createElementVNode"])("span",Ke,Object(o["toDisplayString"])(e.translate("PrivacyManager_UnsetActionColumnsHelp")),1)])])]),Object(o["createElementVNode"])("p",null,[We,Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("PrivacyManager_AnonymizeProcessInfo")),1)]),Object(o["createVNode"])(s,{class:"anonymizePastData",onConfirm:t[8]||(t[8]=function(t){return e.scheduleAnonymization()}),disabled:e.isAnonymizePastDataDisabled,value:e.translate("PrivacyManager_AnonymizeDataNow")},null,8,["disabled","value"]),Object(o["createElementVNode"])("div",$e,[Object(o["createElementVNode"])("h2",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_AnonymizeDataConfirm")),1),Object(o["createElementVNode"])("input",{role:"yes",type:"button",value:e.translate("General_Yes")},null,8,Ye),Object(o["createElementVNode"])("input",{role:"no",type:"button",value:e.translate("General_No")},null,8,Je)],512)])}function Xe(e){return e<10?"0".concat(e):e}var Ze=Object(o["defineComponent"])({components:{SiteSelector:X["SiteSelector"],Field:ee["Field"],SaveButton:ee["SaveButton"]},data:function(){var e=new Date,t="".concat(e.getFullYear(),"-").concat(Xe(e.getMonth()+1),"-").concat(Xe(e.getDay()+1));return{isLoading:!1,isDeleting:!1,anonymizeIp:!1,anonymizeLocation:!1,anonymizeUserId:!1,site:{id:"all",name:"All Websites"},availableVisitColumns:[],availableActionColumns:[],selectedVisitColumns:[{column:""}],selectedActionColumns:[{column:""}],startDate:t,endDate:t}},created:function(){var e=this;this.onKeydownStartDate=Object(X["debounce"])(this.onKeydownStartDate,50),this.onKeydownEndDate=Object(X["debounce"])(this.onKeydownEndDate,50),X["AjaxHelper"].fetch({method:"PrivacyManager.getAvailableVisitColumnsToAnonymize"}).then((function(t){e.availableVisitColumns=[],t.forEach((function(t){e.availableVisitColumns.push({key:t.column_name,value:t.column_name})}))})),X["AjaxHelper"].fetch({method:"PrivacyManager.getAvailableLinkVisitActionColumnsToAnonymize"}).then((function(t){e.availableActionColumns=[],t.forEach((function(t){e.availableActionColumns.push({key:t.column_name,value:t.column_name})}))})),setTimeout((function(){var t=X["Matomo"].getBaseDatePickerOptions(null),n=X["Matomo"].getBaseDatePickerOptions(null);$(e.$refs.anonymizeStartDate).datepicker(t),$(e.$refs.anonymizeEndDate).datepicker(n)}))},methods:{onVisitColumnChange:function(){var e=this.selectedVisitColumns.every((function(e){return!(null===e||void 0===e||!e.column)}));e&&this.addVisitColumn()},addVisitColumn:function(){this.selectedVisitColumns.push({column:""})},removeVisitColumn:function(e){if(e>-1){var t=this.selectedVisitColumns.length-1;t===e?this.selectedVisitColumns[e]={column:""}:this.selectedVisitColumns.splice(e,1)}},onActionColumnChange:function(){var e=this.selectedActionColumns.every((function(e){return!(null===e||void 0===e||!e.column)}));e&&this.addActionColumn()},addActionColumn:function(){this.selectedActionColumns.push({column:""})},removeActionColumn:function(e){if(e>-1){var t=this.selectedActionColumns.length-1;t===e?this.selectedActionColumns[e]={column:""}:this.selectedActionColumns.splice(e,1)}},scheduleAnonymization:function(){var e="".concat(this.startDate,",").concat(this.endDate);this.startDate===this.endDate&&(e=this.startDate);var t={date:e};t.idSites=this.site.id,t.anonymizeIp=this.anonymizeIp?"1":"0",t.anonymizeLocation=this.anonymizeLocation?"1":"0",t.anonymizeUserId=this.anonymizeUserId?"1":"0",t.unsetVisitColumns=this.selectedVisitColumns.filter((function(e){return!(null===e||void 0===e||!e.column)})).map((function(e){return e.column})),t.unsetLinkVisitActionColumns=this.selectedActionColumns.filter((function(e){return!(null===e||void 0===e||!e.column)})).map((function(e){return e.column})),X["Matomo"].helper.modalConfirm(this.$refs.confirmAnonymizeLogData,{yes:function(){X["AjaxHelper"].post({method:"PrivacyManager.anonymizeSomeRawData"},t).then((function(){window.location.reload(!0)}))}})},onKeydownStartDate:function(e){this.startDate=e.target.value},onKeydownEndDate:function(e){this.endDate=e.target.value}},computed:{isAnonymizePastDataDisabled:function(){return!this.anonymizeIp&&!this.anonymizeLocation&&!this.selectedVisitColumns&&!this.selectedActionColumns}}});Ze.render=Qe;var et=Ze;function tt(e,t,n,a,i,l){var r=Object(o["resolveComponent"])("Field"),c=Object(o["resolveComponent"])("SaveButton"),s=Object(o["resolveDirective"])("form");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",null,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"radio",name:"doNotTrack",modelValue:e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.enabled=t}),options:e.doNotTrackOptions,"inline-help":e.translate("PrivacyManager_DoNotTrack_Description")},null,8,["modelValue","options","inline-help"])]),Object(o["createVNode"])(c,{onConfirm:t[1]||(t[1]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512)),[[s]])}var nt=Object(o["defineComponent"])({props:{dntSupport:Boolean,doNotTrackOptions:{type:Array,required:!0}},components:{Field:ee["Field"],SaveButton:ee["SaveButton"]},directives:{Form:ee["Form"]},data:function(){return{isLoading:!1,enabled:this.dntSupport?1:0}},methods:{save:function(){var e=this;this.isLoading=!0;var t="deactivateDoNotTrack";this.enabled&&"0"!==this.enabled&&(t="activateDoNotTrack"),X["AjaxHelper"].post({module:"API",method:"PrivacyManager.".concat(t)}).then((function(){var e=X["NotificationsStore"].show({message:Object(X["translate"])("CoreAdminHome_SettingsSaveSuccess"),context:"success",id:"privacyManagerSettings",type:"transient"});X["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.isLoading=!1}))}}});nt.render=tt;var at=nt;function it(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function ot(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function lt(e,t,n){return t&&ot(e.prototype,t),n&&ot(e,n),e}function rt(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */var ct=function(){function e(){var t=this;it(this,e),rt(this,"privateState",Object(o["reactive"])({settings:{},showEstimate:!1,loadingEstimation:!1,estimation:"",isModified:!1})),rt(this,"state",Object(o["computed"])((function(){return Object(o["readonly"])(t.privateState)}))),rt(this,"enableDeleteReports",Object(o["computed"])((function(){return t.state.value.settings.enableDeleteReports}))),rt(this,"enableDeleteLogs",Object(o["computed"])((function(){return t.state.value.settings.enableDeleteLogs}))),rt(this,"currentRequest",void 0)}return lt(e,[{key:"updateSettings",value:function(e){this.initSettings(e),this.privateState.isModified=!0}},{key:"initSettings",value:function(e){this.privateState.settings=Object.assign(Object.assign({},this.privateState.settings),e),this.reloadDbStats()}},{key:"savePurgeDataSettings",value:function(e,t){return this.privateState.isModified=!1,X["AjaxHelper"].post({module:"API",method:e},Object.assign(Object.assign({},t),{},{enableDeleteLogs:t.enableDeleteLogs?"1":"0",enableDeleteReports:t.enableDeleteReports?"1":"0"})).then((function(){var e=X["NotificationsStore"].show({message:Object(X["translate"])("CoreAdminHome_SettingsSaveSuccess"),context:"success",id:"privacyManagerSettings",type:"toast"});X["NotificationsStore"].scrollToNotification(e)}))}},{key:"isEitherDeleteSectionEnabled",value:function(){return this.state.value.settings.enableDeleteLogs||this.state.value.settings.enableDeleteReports}},{key:"isManualEstimationLinkShowing",value:function(){return window.$("#getPurgeEstimateLink").length>0}},{key:"reloadDbStats",value:function(e){var t=this;if(this.currentRequest&&(this.currentRequest.abort(),this.currentRequest=void 0),e||this.isEitherDeleteSectionEnabled()&&!this.isManualEstimationLinkShowing()){this.privateState.loadingEstimation=!0,this.privateState.estimation="",this.privateState.showEstimate=!1;var n=this.privateState.settings,a=Object.assign(Object.assign({},n),{},{enableDeleteLogs:n.enableDeleteLogs?"1":"0",enableDeleteReports:n.enableDeleteReports?"1":"0"});!0===e&&(a.forceEstimate=1),this.currentRequest=new AbortController,X["AjaxHelper"].post({module:"PrivacyManager",action:"getDatabaseSize",format:"html"},a,{abortController:this.currentRequest,format:"html"}).then((function(e){t.privateState.estimation=e,t.privateState.showEstimate=!0,t.privateState.loadingEstimation=!1})).finally((function(){t.currentRequest=void 0,t.privateState.loadingEstimation=!1}))}}}]),e}(),st=new ct,dt={id:"formDeleteSettings"},ut={id:"deleteLogSettingEnabled"},mt={class:"alert alert-warning deleteOldLogsWarning",style:{width:"50%"}},bt={href:"https://matomo.org/faq/general/#faq_125",rel:"noreferrer noopener",target:"_blank"},pt={id:"deleteLogSettings"};function vt(e,t,n,a,i,l){var r=Object(o["resolveComponent"])("Field"),c=Object(o["resolveComponent"])("SaveButton"),s=Object(o["resolveDirective"])("form");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",dt,[Object(o["createElementVNode"])("div",ut,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"deleteEnable","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.enabled=t,e.reloadDbStats()}),title:e.translate("PrivacyManager_UseDeleteLog"),"inline-help":e.translate("PrivacyManager_DeleteRawDataInfo")},null,8,["model-value","title","inline-help"])]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",mt,[Object(o["createElementVNode"])("a",bt,Object(o["toDisplayString"])(e.translate("General_ClickHere")),1)],512),[[o["vShow"],e.enabled]])]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",pt,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"text",name:"deleteOlderThan","model-value":e.deleteOlderThan,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.deleteOlderThan=t,e.reloadDbStats()}),title:e.deleteOlderThanTitle,"inline-help":e.translate("PrivacyManager_LeastDaysInput","1")},null,8,["model-value","title","inline-help"])])],512),[[o["vShow"],e.enabled]]),Object(o["createVNode"])(c,{onConfirm:t[2]||(t[2]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512)),[[s]])}var gt=window,jt=gt.$,ht=Object(o["defineComponent"])({props:{isDataPurgeSettingsEnabled:Boolean,deleteData:{type:Object,required:!0},scheduleDeletionOptions:{type:Object,required:!0}},components:{Field:ee["Field"],SaveButton:ee["SaveButton"]},directives:{Form:ee["Form"]},data:function(){return{isLoading:!1,enabled:"1"===this.deleteData.config.delete_logs_enable,deleteOlderThan:this.deleteData.config.delete_logs_older_than}},created:function(){var e=this;setTimeout((function(){st.initSettings(e.settings)}))},methods:{saveSettings:function(){var e=this,t="PrivacyManager.setDeleteLogsSettings";this.isLoading=!0,st.savePurgeDataSettings(t,this.settings).finally((function(){e.isLoading=!1}))},reloadDbStats:function(){st.updateSettings(this.settings)},save:function(){var e=this;if(this.enabled){var t="deleteLogsConfirm";st.enableDeleteReports.value&&(t="deleteBothConfirm"),jt("#confirmDeleteSettings").find(">h2").hide(),jt("#".concat(t)).show(),X["Matomo"].helper.modalConfirm("#confirmDeleteSettings",{yes:function(){e.saveSettings()}})}else this.saveSettings()}},computed:{settings:function(){return{enableDeleteLogs:!!this.enabled,deleteLogsOlderThan:this.deleteOlderThan}},deleteOlderThanTitle:function(){return"".concat(Object(X["translate"])("PrivacyManager_DeleteLogsOlderThan")," (").concat(Object(X["translate"])("Intl_PeriodDays"),")")}}});ht.render=vt;var Ot=ht,ft={id:"formDeleteSettings"},yt={id:"deleteReportsSettingEnabled"},Vt={class:"alert alert-warning",style:{width:"50%"}},Dt=Object(o["createElementVNode"])("br",null,null,-1),St=Object(o["createElementVNode"])("br",null,null,-1),Nt={id:"deleteReportsSettings"};function Et(e,t,n,a,i,l){var r=Object(o["resolveComponent"])("Field"),c=Object(o["resolveComponent"])("SaveButton"),s=Object(o["resolveDirective"])("form");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",ft,[Object(o["createElementVNode"])("div",yt,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"deleteReportsEnable","model-value":e.enabled,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.enabled=t,e.reloadDbStats()}),title:e.translate("PrivacyManager_UseDeleteReports"),"inline-help":e.translate("PrivacyManager_DeleteAggregateReportsDetailedInfo")},null,8,["model-value","title","inline-help"])]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",Vt,[Object(o["createElementVNode"])("span",null,[Object(o["createTextVNode"])(Object(o["toDisplayString"])(e.translate("PrivacyManager_DeleteReportsInfo2",e.deleteOldLogsText)),1),Dt,St,Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.translate("PrivacyManager_DeleteReportsInfo3",e.deleteOldLogsText)),1)])],512),[[o["vShow"],e.enabled]])]),Object(o["withDirectives"])(Object(o["createElementVNode"])("div",Nt,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"text",name:"deleteReportsOlderThan","model-value":e.deleteOlderThan,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.deleteOlderThan=t,e.reloadDbStats()}),title:e.deleteReportsOlderThanTitle,"inline-help":e.translate("PrivacyManager_LeastMonthsInput","1")},null,8,["model-value","title","inline-help"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"deleteReportsKeepBasic","model-value":e.keepBasic,"onUpdate:modelValue":t[2]||(t[2]=function(t){e.keepBasic=t,e.reloadDbStats()}),title:e.deleteReportsKeepBasicTitle,"inline-help":e.translate("PrivacyManager_KeepBasicMetricsReportsDetailedInfo")},null,8,["model-value","title","inline-help"])]),Object(o["createElementVNode"])("h3",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_KeepDataFor")),1),Object(o["createElementVNode"])("div",null,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"deleteReportsKeepDay","model-value":e.keepDataForDay,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.keepDataForDay=t,e.reloadDbStats()}),title:e.translate("General_DailyReports")},null,8,["model-value","title"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"deleteReportsKeepWeek","model-value":e.keepDataForWeek,"onUpdate:modelValue":t[4]||(t[4]=function(t){e.keepDataForWeek=t,e.reloadDbStats()}),title:e.translate("General_WeeklyReports")},null,8,["model-value","title"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"deleteReportsKeepMonth","model-value":e.keepDataForMonth,"onUpdate:modelValue":t[5]||(t[5]=function(t){e.keepDataForMonth=t,e.reloadDbStats()}),title:"".concat(e.translate("General_MonthlyReports")," (").concat(e.translate("General_Recommended"),")")},null,8,["model-value","title"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"deleteReportsKeepYear","model-value":e.keepDataForYear,"onUpdate:modelValue":t[6]||(t[6]=function(t){e.keepDataForYear=t,e.reloadDbStats()}),title:"".concat(e.translate("General_YearlyReports")," (").concat(e.translate("General_Recommended"),")")},null,8,["model-value","title"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"deleteReportsKeepRange","model-value":e.keepDataForRange,"onUpdate:modelValue":t[7]||(t[7]=function(t){e.keepDataForRange=t,e.reloadDbStats()}),title:e.translate("General_RangeReports")},null,8,["model-value","title"])]),Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(r,{uicontrol:"checkbox",name:"deleteReportsKeepSegments","model-value":e.keepDataForSegments,"onUpdate:modelValue":t[8]||(t[8]=function(t){e.keepDataForSegments=t,e.reloadDbStats()}),title:e.translate("PrivacyManager_KeepReportSegments")},null,8,["model-value","title"])])])],512),[[o["vShow"],e.enabled]]),Object(o["createVNode"])(c,{onConfirm:t[9]||(t[9]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])],512)),[[s]])}function _t(e){return e?"1":"0"}var kt=window,Pt=kt.$,Ct=Object(o["defineComponent"])({props:{isDataPurgeSettingsEnabled:Boolean,deleteData:{type:Object,required:!0},scheduleDeletionOptions:{type:Object,required:!0}},components:{Field:ee["Field"],SaveButton:ee["SaveButton"]},directives:{Form:ee["Form"]},data:function(){return{isLoading:!1,enabled:1===parseInt(this.deleteData.config.delete_reports_enable,10),deleteOlderThan:this.deleteData.config.delete_reports_older_than,keepBasic:1===parseInt(this.deleteData.config.delete_reports_keep_basic_metrics,10),keepDataForDay:1===parseInt(this.deleteData.config.delete_reports_keep_day_reports,10),keepDataForWeek:1===parseInt(this.deleteData.config.delete_reports_keep_week_reports,10),keepDataForMonth:1===parseInt(this.deleteData.config.delete_reports_keep_month_reports,10),keepDataForYear:1===parseInt(this.deleteData.config.delete_reports_keep_year_reports,10),keepDataForRange:1===parseInt(this.deleteData.config.delete_reports_keep_range_reports,10),keepDataForSegments:1===parseInt(this.deleteData.config.delete_reports_keep_segment_reports,10)}},created:function(){var e=this;setTimeout((function(){st.initSettings(e.settings)}))},methods:{saveSettings:function(){var e=this,t="PrivacyManager.setDeleteReportsSettings";this.isLoading=!0,st.savePurgeDataSettings(t,this.settings).finally((function(){e.isLoading=!1}))},reloadDbStats:function(){st.updateSettings(this.settings)},save:function(){var e=this;if(this.enabled){var t="deleteReportsConfirm";st.enableDeleteLogs.value&&(t="deleteBothConfirm"),Pt("#confirmDeleteSettings").find(">h2").hide(),Pt("#".concat(t)).show(),X["Matomo"].helper.modalConfirm("#confirmDeleteSettings",{yes:function(){e.saveSettings()}})}else this.saveSettings()}},computed:{settings:function(){return{enableDeleteReports:this.enabled,deleteReportsOlderThan:this.deleteOlderThan,keepBasic:_t(this.keepBasic),keepDay:_t(this.keepDataForDay),keepWeek:_t(this.keepDataForWeek),keepMonth:_t(this.keepDataForMonth),keepYear:_t(this.keepDataForYear),keepRange:_t(this.keepDataForRange),keepSegments:_t(this.keepDataForSegments)}},deleteOldLogsText:function(){return Object(X["translate"])("PrivacyManager_UseDeleteLog")},deleteReportsOlderThanTitle:function(){var e=Object(X["translate"])("PrivacyManager_DeleteReportsOlderThan");return"".concat(e," (").concat(Object(X["translate"])("Intl_PeriodMonths"),")")},deleteReportsKeepBasicTitle:function(){var e=Object(X["translate"])("PrivacyManager_KeepBasicMetrics");return"".concat(e," (").concat(Object(X["translate"])("General_Recommended"),")")}}});Ct.render=Et;var Mt=Ct,wt={id:"formDeleteSettings"},At={id:"deleteSchedulingSettings"},It={id:"deleteSchedulingSettingsInlineHelp",class:"inline-help-node"},zt={key:0},Lt=Object(o["createElementVNode"])("br",null,null,-1),Tt=Object(o["createElementVNode"])("br",null,null,-1),Ft=Object(o["createElementVNode"])("br",null,null,-1),xt=Object(o["createElementVNode"])("br",null,null,-1),Bt={key:0,id:"deleteDataEstimateSect",class:"form-group row"},Rt={class:"col s12",id:"databaseSizeHeadline"},Ut={class:"col s12 m6"},Gt=["innerHTML"],Ht=Object(o["createTextVNode"])(" "),qt={class:"col s12 m6"},Kt={key:0,class:"form-help"};function Wt(e,t,n,a,i,l){var r=Object(o["resolveComponent"])("ActivityIndicator"),c=Object(o["resolveComponent"])("Field"),s=Object(o["resolveComponent"])("SaveButton"),d=Object(o["resolveComponent"])("ContentBlock"),u=Object(o["resolveDirective"])("form");return Object(o["withDirectives"])((Object(o["openBlock"])(),Object(o["createElementBlock"])("div",wt,[Object(o["withDirectives"])(Object(o["createVNode"])(d,{id:"scheduleSettingsHeadline","content-title":e.translate("PrivacyManager_DeleteSchedulingSettings")},{default:Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("div",At,[Object(o["createElementVNode"])("div",null,[Object(o["createVNode"])(c,{uicontrol:"select",name:"deleteLowestInterval",title:e.translate("PrivacyManager_DeleteDataInterval"),modelValue:e.deleteLowestInterval,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.deleteLowestInterval=t}),options:e.scheduleDeletionOptions},{"inline-help":Object(o["withCtx"])((function(){return[Object(o["createElementVNode"])("div",It,[e.deleteData.lastRun?(Object(o["openBlock"])(),Object(o["createElementBlock"])("span",zt,[Object(o["createElementVNode"])("strong",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_LastDelete"))+":",1),Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.deleteData.lastRunPretty)+" ",1),Lt,Tt])):Object(o["createCommentVNode"])("",!0),Object(o["createElementVNode"])("strong",null,Object(o["toDisplayString"])(e.translate("PrivacyManager_NextDelete"))+":",1),Object(o["createTextVNode"])(" "+Object(o["toDisplayString"])(e.deleteData.nextRunPretty)+" ",1),Ft,xt,Object(o["withDirectives"])(Object(o["createElementVNode"])("a",{id:"purgeDataNowLink",href:"#",onClick:t[0]||(t[0]=function(t){return e.executeDataPurgeNow()})},Object(o["toDisplayString"])(e.translate("PrivacyManager_PurgeNow")),513),[[o["vShow"],e.showPurgeNowLink]]),Object(o["createVNode"])(r,{"loading-message":e.translate("PrivacyManager_PurgingData"),loading:e.loadingDataPurge},null,8,["loading-message","loading"]),Object(o["withDirectives"])(Object(o["createElementVNode"])("span",{id:"db-purged-message"},Object(o["toDisplayString"])(e.translate("PrivacyManager_DBPurged")),513),[[o["vShow"],e.dataWasPurged]])])]})),_:1},8,["title","modelValue","options"])])]),"1"===e.deleteData.config.enable_database_size_estimate||1===e.deleteData.config.enable_database_size_estimate?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Bt,[Object(o["createElementVNode"])("h3",Rt,Object(o["toDisplayString"])(e.translate("PrivacyManager_ReportsDataSavedEstimate")),1),Object(o["createElementVNode"])("div",Ut,[Object(o["withDirectives"])(Object(o["createElementVNode"])("div",{id:"deleteDataEstimate",innerHTML:e.$sanitize(e.estimation)},null,8,Gt),[[o["vShow"],e.showEstimate]]),Ht,Object(o["createVNode"])(r,{loading:e.loadingEstimation},null,8,["loading"])]),Object(o["createElementVNode"])("div",qt,["1"!==e.deleteData.config.enable_auto_database_size_estimate&&1!==e.deleteData.config.enable_auto_database_size_estimate?(Object(o["openBlock"])(),Object(o["createElementBlock"])("div",Kt,[Object(o["createElementVNode"])("a",{id:"getPurgeEstimateLink",href:"#",onClick:t[2]||(t[2]=Object(o["withModifiers"])((function(t){return e.getPurgeEstimate()}),["prevent"]))},Object(o["toDisplayString"])(e.translate("PrivacyManager_GetPurgeEstimate")),1)])):Object(o["createCommentVNode"])("",!0)])])):Object(o["createCommentVNode"])("",!0),Object(o["createVNode"])(s,{onConfirm:t[3]||(t[3]=function(t){return e.save()}),saving:e.isLoading},null,8,["saving"])]})),_:1},8,["content-title"]),[[o["vShow"],e.isEitherDeleteSectionEnabled]])],512)),[[u]])}var $t=Object(o["defineComponent"])({props:{isDataPurgeSettingsEnabled:Boolean,deleteData:{type:Object,required:!0},scheduleDeletionOptions:{type:Object,required:!0}},components:{ContentBlock:X["ContentBlock"],ActivityIndicator:X["ActivityIndicator"],Field:ee["Field"],SaveButton:ee["SaveButton"]},directives:{Form:ee["Form"]},data:function(){return{isLoading:!1,loadingDataPurge:!1,dataWasPurged:!1,showPurgeNowLink:!0,deleteLowestInterval:this.deleteData.config.delete_logs_schedule_lowest_interval}},methods:{save:function(){var e="PrivacyManager.setScheduleReportDeletionSettings";st.savePurgeDataSettings(e,{deleteLowestInterval:this.deleteLowestInterval})},executeDataPurgeNow:function(){var e=this;st.state.value.isModified?X["Matomo"].helper.modalConfirm("#saveSettingsBeforePurge",{yes:function(){return null}}):X["Matomo"].helper.modalConfirm("#confirmPurgeNow",{yes:function(){e.loadingDataPurge=!0,e.showPurgeNowLink=!1,X["AjaxHelper"].fetch({module:"PrivacyManager",action:"executeDataPurge",format:"html"},{withTokenInUrl:!0}).then((function(){st.reloadDbStats(),e.dataWasPurged=!0,setTimeout((function(){e.dataWasPurged=!1,e.showPurgeNowLink=!0}),2e3)})).finally((function(){e.loadingDataPurge=!1}))}})},getPurgeEstimate:function(){return st.reloadDbStats(!0)}},computed:{showEstimate:function(){return st.state.value.showEstimate},isEitherDeleteSectionEnabled:function(){return st.isEitherDeleteSectionEnabled()},estimation:function(){return st.state.value.estimation},loadingEstimation:function(){return st.state.value.loadingEstimation}}});$t.render=Wt;var Yt=$t;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */}})}));
+//# sourceMappingURL=PrivacyManager.umd.min.js.map \ No newline at end of file
diff --git a/plugins/PrivacyManager/vue/dist/umd.metadata.json b/plugins/PrivacyManager/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..3abfd129f0
--- /dev/null
+++ b/plugins/PrivacyManager/vue/dist/umd.metadata.json
@@ -0,0 +1,7 @@
+{
+ "dependsOn": [
+ "CoreHome",
+ "CorePluginsAdmin",
+ "SegmentEditor"
+ ]
+} \ No newline at end of file
diff --git a/plugins/PrivacyManager/vue/src/AnonymizeIp/AnonymizeIp.vue b/plugins/PrivacyManager/vue/src/AnonymizeIp/AnonymizeIp.vue
new file mode 100644
index 0000000000..c73ddb6546
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/AnonymizeIp/AnonymizeIp.vue
@@ -0,0 +1,213 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div v-form>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="anonymizeIpSettings"
+ :title="translate('PrivacyManager_UseAnonymizeIp')"
+ v-model="actualEnabled"
+ :inline-help="anonymizeIpEnabledHelp"
+ >
+ </Field>
+ </div>
+ <div v-show="actualEnabled">
+ <div>
+ <Field
+ uicontrol="radio"
+ name="maskLength"
+ :title="translate('PrivacyManager_AnonymizeIpMaskLengtDescription')"
+ v-model="actualMaskLength"
+ :options="maskLengthOptions"
+ :inline-help="translate('PrivacyManager_GeolocationAnonymizeIpNote')"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="radio"
+ name="useAnonymizedIpForVisitEnrichment"
+ :title="translate('PrivacyManager_UseAnonymizedIpForVisitEnrichment')"
+ v-model="actualUseAnonymizedIpForVisitEnrichment"
+ :options="useAnonymizedIpForVisitEnrichmentOptions"
+ :inline-help="translate('PrivacyManager_UseAnonymizedIpForVisitEnrichmentNote')"
+ >
+ </Field>
+ </div>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="anonymizeUserId"
+ :title="translate('PrivacyManager_PseudonymizeUserId')"
+ v-model="actualAnonymizeUserId"
+ >
+ <template v-slot:inline-help>
+ {{ translate('PrivacyManager_PseudonymizeUserIdNote') }}
+ <br/><br/>
+ <em>{{ translate('PrivacyManager_PseudonymizeUserIdNote2') }}</em>
+ </template>
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="anonymizeOrderId"
+ :title="translate('PrivacyManager_UseAnonymizeOrderId')"
+ v-model="actualAnonymizeOrderId"
+ :inline-help="translate('PrivacyManager_AnonymizeOrderIdNote')"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="forceCookielessTracking"
+ :title="translate('PrivacyManager_ForceCookielessTracking')"
+ v-model="actualForceCookielessTracking"
+ >
+ <template v-slot:inline-help>
+ {{ translate('PrivacyManager_ForceCookielessTrackingDescription', trackerFileName) }}
+ <br/><br/><em>{{ translate('PrivacyManager_ForceCookielessTrackingDescription2') }}</em>
+ <span v-if="!trackerWritable">
+ <br /><br />
+ <p class='alert-warning alert'>
+ {{ translate(
+ 'PrivacyManager_ForceCookielessTrackingDescriptionNotWritable',
+ trackerFileName,
+ ) }}
+ </p>
+ </span>
+ </template>
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="select"
+ name="anonymizeReferrer"
+ :title="translate('PrivacyManager_AnonymizeReferrer')"
+ v-model="actualAnonymizeReferrer"
+ :options="referrerAnonymizationOptions"
+ :inline-help="translate('PrivacyManager_AnonymizeReferrerNote')"
+ >
+ </Field>
+ </div>
+ <SaveButton
+ @confirm="save()"
+ :saving="isLoading"
+ />
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { translate, AjaxHelper, NotificationsStore } from 'CoreHome';
+import { Form, Field, SaveButton } from 'CorePluginsAdmin';
+
+interface AnonymizeIpState {
+ isLoading: boolean;
+ actualEnabled: boolean;
+ actualMaskLength: number;
+ actualUseAnonymizedIpForVisitEnrichment: string;
+ actualAnonymizeUserId: boolean;
+ actualAnonymizeOrderId: boolean;
+ actualForceCookielessTracking: boolean;
+ actualAnonymizeReferrer?: string;
+}
+
+export default defineComponent({
+ props: {
+ anonymizeIpEnabled: Boolean,
+ anonymizeUserId: Boolean,
+ maskLength: {
+ type: Number,
+ required: true,
+ },
+ useAnonymizedIpForVisitEnrichment: Boolean,
+ anonymizeOrderId: Boolean,
+ forceCookielessTracking: Boolean,
+ anonymizeReferrer: String,
+ maskLengthOptions: {
+ type: Array,
+ required: true,
+ },
+ useAnonymizedIpForVisitEnrichmentOptions: {
+ type: Array,
+ required: true,
+ },
+ trackerFileName: {
+ type: String,
+ required: true,
+ },
+ trackerWritable: {
+ type: Boolean,
+ required: true,
+ },
+ referrerAnonymizationOptions: {
+ type: Object,
+ required: true,
+ },
+ },
+ components: {
+ Field,
+ SaveButton,
+ },
+ directives: {
+ Form,
+ },
+ data(): AnonymizeIpState {
+ return {
+ isLoading: false,
+ actualEnabled: !!this.anonymizeIpEnabled,
+ actualMaskLength: this.maskLength,
+ actualUseAnonymizedIpForVisitEnrichment: this.useAnonymizedIpForVisitEnrichment ? '1' : '0',
+ actualAnonymizeUserId: !!this.anonymizeUserId,
+ actualAnonymizeOrderId: !!this.anonymizeOrderId,
+ actualForceCookielessTracking: !!this.forceCookielessTracking,
+ actualAnonymizeReferrer: this.anonymizeReferrer,
+ };
+ },
+ methods: {
+ save() {
+ this.isLoading = true;
+ AjaxHelper.post(
+ {
+ module: 'API',
+ method: 'PrivacyManager.setAnonymizeIpSettings',
+ },
+ {
+ anonymizeIPEnable: this.actualEnabled ? '1' : '0',
+ anonymizeUserId: this.actualAnonymizeUserId ? '1' : '0',
+ anonymizeOrderId: this.actualAnonymizeOrderId ? '1' : '0',
+ forceCookielessTracking: this.actualForceCookielessTracking ? '1' : '0',
+ anonymizeReferrer: this.actualAnonymizeReferrer ? this.actualAnonymizeReferrer : '',
+ maskLength: this.actualMaskLength,
+ useAnonymizedIpForVisitEnrichment: this.actualUseAnonymizedIpForVisitEnrichment ? '1' : '0',
+ },
+ ).then(() => {
+ const notificationInstanceId = NotificationsStore.show({
+ message: translate('CoreAdminHome_SettingsSaveSuccess'),
+ context: 'success',
+ id: 'privacyManagerSettings',
+ type: 'toast',
+ });
+ NotificationsStore.scrollToNotification(notificationInstanceId);
+ }).finally(() => {
+ this.isLoading = false;
+ });
+ },
+ },
+ computed: {
+ anonymizeIpEnabledHelp() {
+ const inlineHelp1 = translate('PrivacyManager_AnonymizeIpInlineHelp');
+ const inlineHelp2 = translate('PrivacyManager_AnonymizeIpDescription');
+ return `${inlineHelp1} ${inlineHelp2}`;
+ },
+ },
+});
+</script>
diff --git a/plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.adapter.ts b/plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.adapter.ts
new file mode 100644
index 0000000000..63402964f7
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.adapter.ts
@@ -0,0 +1,14 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter } from 'CoreHome';
+import AnonymizeLogData from './AnonymizeLogData.vue';
+
+export default createAngularJsAdapter({
+ component: AnonymizeLogData,
+ directiveName: 'matomoAnonymizeLogData',
+});
diff --git a/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.less b/plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.less
index 2bc7410a2c..2bc7410a2c 100644
--- a/plugins/PrivacyManager/angularjs/anonymize-log-data/anonymize-log-data.directive.less
+++ b/plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.less
diff --git a/plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.vue b/plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.vue
new file mode 100644
index 0000000000..f98122e9d2
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/AnonymizeLogData/AnonymizeLogData.vue
@@ -0,0 +1,389 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="anonymizeLogData">
+ <div class="form-group row">
+ <div class="col s12 input-field">
+ <div>
+ <label
+ for="anonymizeSite"
+ class="siteSelectorLabel"
+ >{{ translate('PrivacyManager_AnonymizeSites') }}</label>
+ <div class="sites_autocomplete">
+ <SiteSelector
+ id="anonymizeSite"
+ v-model="site"
+ :show-all-sites-item="true"
+ :switch-site-on-select="false"
+ :show-selected-site="true"
+ />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="form-group row">
+ <div class="col s6 input-field">
+ <div>
+ <label
+ for="anonymizeStartDate"
+ class="active"
+ >{{ translate('PrivacyManager_AnonymizeRowDataFrom') }}</label>
+ <input
+ type="text"
+ id="anonymizeStartDate"
+ class="anonymizeStartDate"
+ ref="anonymizeStartDate"
+ name="anonymizeStartDate"
+ :value="startDate"
+ @keydown="onKeydownStartDate($event)"
+ @change="onKeydownStartDate($event)"
+ />
+ </div>
+ </div>
+ <div class="col s6 input-field">
+ <div>
+ <label
+ for="anonymizeEndDate"
+ class="active"
+ >{{ translate('PrivacyManager_AnonymizeRowDataTo') }}</label>
+ <input
+ type="text"
+ class="anonymizeEndDate"
+ id="anonymizeEndDate"
+ ref="anonymizeEndDate"
+ name="anonymizeEndDate"
+ :value="endDate"
+ @keydown="onKeydownEndDate($event)"
+ @change="onKeydownEndDate($event)"
+ />
+ </div>
+ </div>
+ </div>
+ <div name="anonymizeIp">
+ <Field
+ uicontrol="checkbox"
+ name="anonymizeIp"
+ :title="translate('PrivacyManager_AnonymizeIp')"
+ v-model="anonymizeIp"
+ :introduction="translate('General_Visit')"
+ :inline-help="translate('PrivacyManager_AnonymizeIpHelp')"
+ >
+ </Field>
+ </div>
+ <div name="anonymizeLocation">
+ <Field
+ uicontrol="checkbox"
+ name="anonymizeLocation"
+ :title="translate('PrivacyManager_AnonymizeLocation')"
+ v-model="anonymizeLocation"
+ :inline-help="translate('PrivacyManager_AnonymizeLocationHelp')"
+ >
+ </Field>
+ </div>
+ <div name="anonymizeTheUserId">
+ <Field
+ uicontrol="checkbox"
+ name="anonymizeTheUserId"
+ :title="translate('PrivacyManager_AnonymizeUserId')"
+ v-model="anonymizeUserId"
+ :inline-help="translate('PrivacyManager_AnonymizeUserIdHelp')"
+ >
+ </Field>
+ </div>
+ <div class="form-group row">
+ <div class="col s12 m6">
+ <div>
+ <label for="visit_columns">{{ translate('PrivacyManager_UnsetVisitColumns') }}</label>
+ <div
+ :class="`selectedVisitColumns selectedVisitColumns${index} multiple valign-wrapper`"
+ v-for="(visitColumn, index) in selectedVisitColumns"
+ :key="index"
+ >
+ <div class="innerFormField" name="visit_columns">
+ <Field
+ uicontrol="select"
+ name="visit_columns"
+ :model-value="visitColumn.column"
+ @update:model-value="visitColumn.column = $event; onVisitColumnChange()"
+ :full-width="true"
+ :options="availableVisitColumns"
+ >
+ </Field>
+ </div>
+ <span
+ class="icon-minus valign"
+ @click="removeVisitColumn(index)"
+ v-show="index + 1 !== selectedVisitColumns.length"
+ :title="translate('General_Remove')"
+ />
+ </div>
+ </div>
+ </div>
+ <div class="col s12 m6">
+ <div class="form-help">
+ <span class="inline-help">{{ translate('PrivacyManager_UnsetVisitColumnsHelp') }}</span>
+ </div>
+ </div>
+ </div>
+ <div class="form-group row">
+ <div class="col s12">
+ <h3>{{ translate('General_Action') }}</h3>
+ </div>
+ </div>
+ <div class="form-group row">
+ <div class="col s12 m6">
+ <div>
+ <label for="action_columns">{{ translate('PrivacyManager_UnsetActionColumns') }}</label>
+ <div
+ :class="`selectedActionColumns selectedActionColumns${index} multiple valign-wrapper`"
+ v-for="(actionColumn, index) in selectedActionColumns"
+ :key="index"
+ >
+ <div class="innerFormField" name="action_columns">
+ <Field
+ uicontrol="select"
+ name="action_columns"
+ :model-value="actionColumn.column"
+ @update:model-value="actionColumn.column = $event; onActionColumnChange()"
+ :full-width="true"
+ :options="availableActionColumns"
+ >
+ </Field>
+ </div>
+ <span
+ class="icon-minus valign"
+ @click="removeActionColumn(index)"
+ v-show="index + 1 !== selectedActionColumns.length"
+ :title="translate('General_Remove')"
+ />
+ </div>
+ </div>
+ </div>
+ <div class="col s12 m6">
+ <div class="form-help">
+ <span class="inline-help">{{ translate('PrivacyManager_UnsetActionColumnsHelp') }}</span>
+ </div>
+ </div>
+ </div>
+ <p><span class="icon-info" /> {{ translate('PrivacyManager_AnonymizeProcessInfo') }}</p>
+ <SaveButton
+ class="anonymizePastData"
+ @confirm="scheduleAnonymization()"
+ :disabled="isAnonymizePastDataDisabled"
+ :value="translate('PrivacyManager_AnonymizeDataNow')"
+ >
+ </SaveButton>
+ <div
+ class="ui-confirm"
+ id="confirmAnonymizeLogData"
+ ref="confirmAnonymizeLogData"
+ >
+ <h2>{{ translate('PrivacyManager_AnonymizeDataConfirm') }}</h2>
+ <input
+ role="yes"
+ type="button"
+ :value="translate('General_Yes')"
+ />
+ <input
+ role="no"
+ type="button"
+ :value="translate('General_No')"
+ />
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ Matomo,
+ AjaxHelper,
+ SiteSelector,
+ debounce,
+} from 'CoreHome';
+import { Field, SaveButton } from 'CorePluginsAdmin';
+
+interface Option {
+ key: string;
+ value: string;
+}
+
+interface AnonymizeLogDataState {
+ isLoading: boolean;
+ isDeleting: boolean;
+ anonymizeIp: boolean;
+ anonymizeLocation: boolean;
+ anonymizeUserId: boolean;
+ site: Record<string, string>;
+ availableVisitColumns: Option[];
+ availableActionColumns: Option[];
+ selectedVisitColumns: Record<string, string>[];
+ selectedActionColumns: Record<string, string>[];
+ startDate: string;
+ endDate: string;
+}
+
+function sub(value: number) {
+ if (value < 10) {
+ return `0${value}`;
+ }
+ return value;
+}
+
+export default defineComponent({
+ components: {
+ SiteSelector,
+ Field,
+ SaveButton,
+ },
+ data(): AnonymizeLogDataState {
+ const now = new Date();
+ const startDate = `${now.getFullYear()}-${sub(now.getMonth() + 1)}-${sub(now.getDay() + 1)}`;
+ return {
+ isLoading: false,
+ isDeleting: false,
+ anonymizeIp: false,
+ anonymizeLocation: false,
+ anonymizeUserId: false,
+ site: {
+ id: 'all',
+ name: 'All Websites',
+ },
+ availableVisitColumns: [],
+ availableActionColumns: [],
+ selectedVisitColumns: [{
+ column: '',
+ }],
+ selectedActionColumns: [{
+ column: '',
+ }],
+ startDate,
+ endDate: startDate,
+ };
+ },
+ created() {
+ this.onKeydownStartDate = debounce(this.onKeydownStartDate, 50);
+ this.onKeydownEndDate = debounce(this.onKeydownEndDate, 50);
+
+ AjaxHelper.fetch<{ column_name: string }[]>({
+ method: 'PrivacyManager.getAvailableVisitColumnsToAnonymize',
+ }).then((columns) => {
+ this.availableVisitColumns = [];
+ columns.forEach((column) => {
+ this.availableVisitColumns.push({
+ key: column.column_name,
+ value: column.column_name,
+ });
+ });
+ });
+
+ AjaxHelper.fetch<{ column_name: string }[]>({
+ method: 'PrivacyManager.getAvailableLinkVisitActionColumnsToAnonymize',
+ }).then((columns) => {
+ this.availableActionColumns = [];
+ columns.forEach((column) => {
+ this.availableActionColumns.push({
+ key: column.column_name,
+ value: column.column_name,
+ });
+ });
+ });
+
+ setTimeout(() => {
+ const options1 = Matomo.getBaseDatePickerOptions(null);
+ const options2 = Matomo.getBaseDatePickerOptions(null);
+ $(this.$refs.anonymizeStartDate as HTMLElement).datepicker(options1);
+ $(this.$refs.anonymizeEndDate as HTMLElement).datepicker(options2);
+ });
+ },
+ methods: {
+ onVisitColumnChange() {
+ const hasAll = this.selectedVisitColumns.every((col) => !!col?.column);
+ if (hasAll) {
+ this.addVisitColumn();
+ }
+ },
+ addVisitColumn() {
+ this.selectedVisitColumns.push({ column: '' });
+ },
+ removeVisitColumn(index: number) {
+ if (index > -1) {
+ const lastIndex = this.selectedVisitColumns.length - 1;
+
+ if (lastIndex === index) {
+ this.selectedVisitColumns[index] = { column: '' };
+ } else {
+ this.selectedVisitColumns.splice(index, 1);
+ }
+ }
+ },
+ onActionColumnChange() {
+ const hasAll = this.selectedActionColumns.every((col) => !!col?.column);
+ if (hasAll) {
+ this.addActionColumn();
+ }
+ },
+ addActionColumn() {
+ this.selectedActionColumns.push({ column: '' });
+ },
+ removeActionColumn(index: number) {
+ if (index > -1) {
+ const lastIndex = this.selectedActionColumns.length - 1;
+
+ if (lastIndex === index) {
+ this.selectedActionColumns[index] = {
+ column: '',
+ };
+ } else {
+ this.selectedActionColumns.splice(index, 1);
+ }
+ }
+ },
+ scheduleAnonymization() {
+ let date = `${this.startDate},${this.endDate}`;
+
+ if (this.startDate === this.endDate) {
+ date = this.startDate;
+ }
+
+ const params: QueryParameters = { date };
+ params.idSites = this.site.id;
+ params.anonymizeIp = this.anonymizeIp ? '1' : '0';
+ params.anonymizeLocation = this.anonymizeLocation ? '1' : '0';
+ params.anonymizeUserId = this.anonymizeUserId ? '1' : '0';
+ params.unsetVisitColumns = this.selectedVisitColumns.filter(
+ (c) => !!c?.column,
+ ).map((c) => c.column);
+ params.unsetLinkVisitActionColumns = this.selectedActionColumns.filter(
+ (c) => !!c?.column,
+ ).map((c) => c.column);
+
+ Matomo.helper.modalConfirm(this.$refs.confirmAnonymizeLogData as HTMLElement, {
+ yes: () => {
+ AjaxHelper.post({
+ method: 'PrivacyManager.anonymizeSomeRawData',
+ }, params).then(() => {
+ window.location.reload(true);
+ });
+ },
+ });
+ },
+ onKeydownStartDate(event: Event) {
+ this.startDate = (event.target as HTMLInputElement).value;
+ },
+ onKeydownEndDate(event: Event) {
+ this.endDate = (event.target as HTMLInputElement).value;
+ },
+ },
+ computed: {
+ isAnonymizePastDataDisabled(): boolean {
+ return !this.anonymizeIp && !this.anonymizeLocation && !this.selectedVisitColumns
+ && !this.selectedActionColumns;
+ },
+ },
+});
+</script>
diff --git a/plugins/PrivacyManager/vue/src/DeleteOldLogs/DeleteOldLogs.vue b/plugins/PrivacyManager/vue/src/DeleteOldLogs/DeleteOldLogs.vue
new file mode 100644
index 0000000000..a93ae8d7d9
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/DeleteOldLogs/DeleteOldLogs.vue
@@ -0,0 +1,151 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div
+ id="formDeleteSettings"
+ v-form
+ >
+ <div id="deleteLogSettingEnabled">
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="deleteEnable"
+ :model-value="enabled"
+ @update:model-value="enabled = $event; reloadDbStats()"
+ :title="translate('PrivacyManager_UseDeleteLog')"
+ :inline-help="translate('PrivacyManager_DeleteRawDataInfo')"
+ >
+ </Field>
+ </div>
+ <div
+ class="alert alert-warning deleteOldLogsWarning"
+ style="width: 50%;"
+ v-show="enabled"
+ >
+ <a
+ href="https://matomo.org/faq/general/#faq_125"
+ rel="noreferrer noopener"
+ target="_blank"
+ >
+ {{ translate('General_ClickHere') }}
+ </a>
+ </div>
+ </div>
+ <div
+ id="deleteLogSettings"
+ v-show="enabled"
+ >
+ <div>
+ <Field
+ uicontrol="text"
+ name="deleteOlderThan"
+ :model-value="deleteOlderThan"
+ @update:model-value="deleteOlderThan = $event; reloadDbStats()"
+ :title="deleteOlderThanTitle"
+ :inline-help="translate('PrivacyManager_LeastDaysInput', '1')"
+ >
+ </Field>
+ </div>
+ </div>
+ <SaveButton
+ @confirm="save()"
+ :saving="isLoading"
+ />
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { Matomo, translate } from 'CoreHome';
+import { Form, Field, SaveButton } from 'CorePluginsAdmin';
+import ReportDeletionSettingsStore, {
+ ReportDeletionSettings,
+} from '../ReportDeletionSettings/ReportDeletionSettings.store';
+
+interface DeleteOldLogsState {
+ isLoading: boolean;
+ enabled: boolean;
+ deleteOlderThan: string;
+}
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ isDataPurgeSettingsEnabled: Boolean,
+ deleteData: {
+ type: Object,
+ required: true,
+ },
+ scheduleDeletionOptions: {
+ type: Object,
+ required: true,
+ },
+ },
+ components: {
+ Field,
+ SaveButton,
+ },
+ directives: {
+ Form,
+ },
+ data(): DeleteOldLogsState {
+ return {
+ isLoading: false,
+ enabled: this.deleteData.config.delete_logs_enable === '1',
+ deleteOlderThan: this.deleteData.config.delete_logs_older_than,
+ };
+ },
+ created() {
+ setTimeout(() => {
+ ReportDeletionSettingsStore.initSettings(this.settings);
+ });
+ },
+ methods: {
+ saveSettings() {
+ const method = 'PrivacyManager.setDeleteLogsSettings';
+ this.isLoading = true;
+ ReportDeletionSettingsStore.savePurgeDataSettings(method, this.settings).finally(() => {
+ this.isLoading = false;
+ });
+ },
+ reloadDbStats() {
+ ReportDeletionSettingsStore.updateSettings(this.settings);
+ },
+ save() {
+ if (this.enabled) {
+ let confirmId = 'deleteLogsConfirm';
+ if (ReportDeletionSettingsStore.enableDeleteReports.value) {
+ confirmId = 'deleteBothConfirm';
+ }
+
+ $('#confirmDeleteSettings').find('>h2').hide();
+ $(`#${confirmId}`).show();
+
+ Matomo.helper.modalConfirm('#confirmDeleteSettings', {
+ yes: () => {
+ this.saveSettings();
+ },
+ });
+ } else {
+ this.saveSettings();
+ }
+ },
+ },
+ computed: {
+ settings(): ReportDeletionSettings {
+ return {
+ enableDeleteLogs: !!this.enabled,
+ deleteLogsOlderThan: this.deleteOlderThan,
+ };
+ },
+ deleteOlderThanTitle(): string {
+ return `${translate('PrivacyManager_DeleteLogsOlderThan')} (${translate('Intl_PeriodDays')})`;
+ },
+ },
+});
+</script>
diff --git a/plugins/PrivacyManager/vue/src/DeleteOldReports/DeleteOldReports.vue b/plugins/PrivacyManager/vue/src/DeleteOldReports/DeleteOldReports.vue
new file mode 100644
index 0000000000..737e04ae81
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/DeleteOldReports/DeleteOldReports.vue
@@ -0,0 +1,267 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div
+ id="formDeleteSettings"
+ v-form
+ >
+ <div id="deleteReportsSettingEnabled">
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="deleteReportsEnable"
+ :model-value="enabled"
+ @update:model-value="enabled = $event; reloadDbStats()"
+ :title="translate('PrivacyManager_UseDeleteReports')"
+ :inline-help="translate('PrivacyManager_DeleteAggregateReportsDetailedInfo')"
+ >
+ </Field>
+ </div>
+ <div
+ class="alert alert-warning"
+ style="width: 50%;"
+ v-show="enabled"
+ >
+ <span>
+ {{ translate('PrivacyManager_DeleteReportsInfo2', deleteOldLogsText) }}<br /><br />
+ {{ translate('PrivacyManager_DeleteReportsInfo3', deleteOldLogsText) }}
+ </span>
+ </div>
+ </div>
+ <div
+ id="deleteReportsSettings"
+ v-show="enabled"
+ >
+ <div>
+ <Field
+ uicontrol="text"
+ name="deleteReportsOlderThan"
+ :model-value="deleteOlderThan"
+ @update:model-value="deleteOlderThan = $event; reloadDbStats()"
+ :title="deleteReportsOlderThanTitle"
+ :inline-help="translate('PrivacyManager_LeastMonthsInput', '1')"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="deleteReportsKeepBasic"
+ :model-value="keepBasic"
+ @update:model-value="keepBasic = $event; reloadDbStats()"
+ :title="deleteReportsKeepBasicTitle"
+ :inline-help="translate('PrivacyManager_KeepBasicMetricsReportsDetailedInfo')"
+ >
+ </Field>
+ </div>
+ <h3>
+ {{ translate('PrivacyManager_KeepDataFor') }}
+ </h3>
+ <div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="deleteReportsKeepDay"
+ :model-value="keepDataForDay"
+ @update:model-value="keepDataForDay = $event; reloadDbStats()"
+ :title="translate('General_DailyReports')"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="deleteReportsKeepWeek"
+ :model-value="keepDataForWeek"
+ @update:model-value="keepDataForWeek = $event; reloadDbStats()"
+ :title="translate('General_WeeklyReports')"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="deleteReportsKeepMonth"
+ :model-value="keepDataForMonth"
+ @update:model-value="keepDataForMonth = $event; reloadDbStats()"
+ :title="`${translate('General_MonthlyReports')} (${translate('General_Recommended')})`"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="deleteReportsKeepYear"
+ :model-value="keepDataForYear"
+ @update:model-value="keepDataForYear = $event; reloadDbStats()"
+ :title="`${translate('General_YearlyReports')} (${translate('General_Recommended')})`"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="deleteReportsKeepRange"
+ :model-value="keepDataForRange"
+ @update:model-value="keepDataForRange = $event; reloadDbStats()"
+ :title="translate('General_RangeReports')"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="deleteReportsKeepSegments"
+ :model-value="keepDataForSegments"
+ @update:model-value="keepDataForSegments = $event; reloadDbStats()"
+ :title="translate('PrivacyManager_KeepReportSegments')"
+ >
+ </Field>
+ </div>
+ </div>
+ </div>
+ <SaveButton
+ @confirm="save()"
+ :saving="isLoading"
+ />
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { translate, Matomo } from 'CoreHome';
+import { Form, Field, SaveButton } from 'CorePluginsAdmin';
+import ReportDeletionSettingsStore, {
+ ReportDeletionSettings,
+} from '../ReportDeletionSettings/ReportDeletionSettings.store';
+
+interface DeleteOldReportsState {
+ isLoading: boolean;
+ enabled: boolean;
+ deleteOlderThan: string;
+ keepBasic: boolean;
+ keepDataForDay: boolean;
+ keepDataForWeek: boolean;
+ keepDataForMonth: boolean;
+ keepDataForYear: boolean;
+ keepDataForRange: boolean;
+ keepDataForSegments: boolean;
+}
+
+function getInt(value: unknown) {
+ return value ? '1' : '0';
+}
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ isDataPurgeSettingsEnabled: Boolean,
+ deleteData: {
+ type: Object,
+ required: true,
+ },
+ scheduleDeletionOptions: {
+ type: Object,
+ required: true,
+ },
+ },
+ components: {
+ Field,
+ SaveButton,
+ },
+ directives: {
+ Form,
+ },
+ data(): DeleteOldReportsState {
+ return {
+ isLoading: false,
+ enabled: parseInt(this.deleteData.config.delete_reports_enable, 10) === 1,
+ deleteOlderThan: this.deleteData.config.delete_reports_older_than,
+ keepBasic: parseInt(this.deleteData.config.delete_reports_keep_basic_metrics, 10) === 1,
+ keepDataForDay: parseInt(this.deleteData.config.delete_reports_keep_day_reports, 10) === 1,
+ keepDataForWeek: parseInt(this.deleteData.config.delete_reports_keep_week_reports, 10) === 1,
+ keepDataForMonth: parseInt(
+ this.deleteData.config.delete_reports_keep_month_reports,
+ 10,
+ ) === 1,
+ keepDataForYear: parseInt(this.deleteData.config.delete_reports_keep_year_reports, 10) === 1,
+ keepDataForRange: parseInt(
+ this.deleteData.config.delete_reports_keep_range_reports,
+ 10,
+ ) === 1,
+ keepDataForSegments: parseInt(
+ this.deleteData.config.delete_reports_keep_segment_reports,
+ 10,
+ ) === 1,
+ };
+ },
+ created() {
+ setTimeout(() => {
+ ReportDeletionSettingsStore.initSettings(this.settings);
+ });
+ },
+ methods: {
+ saveSettings() {
+ const method = 'PrivacyManager.setDeleteReportsSettings';
+
+ this.isLoading = true;
+ ReportDeletionSettingsStore.savePurgeDataSettings(method, this.settings).finally(() => {
+ this.isLoading = false;
+ });
+ },
+ reloadDbStats() {
+ ReportDeletionSettingsStore.updateSettings(this.settings);
+ },
+ save() {
+ if (this.enabled) {
+ let confirmId = 'deleteReportsConfirm';
+ if (ReportDeletionSettingsStore.enableDeleteLogs.value) {
+ confirmId = 'deleteBothConfirm';
+ }
+
+ $('#confirmDeleteSettings').find('>h2').hide();
+ $(`#${confirmId}`).show();
+
+ Matomo.helper.modalConfirm('#confirmDeleteSettings', {
+ yes: () => {
+ this.saveSettings();
+ },
+ });
+ } else {
+ this.saveSettings();
+ }
+ },
+ },
+ computed: {
+ settings(): ReportDeletionSettings {
+ return {
+ enableDeleteReports: this.enabled,
+ deleteReportsOlderThan: this.deleteOlderThan,
+ keepBasic: getInt(this.keepBasic),
+ keepDay: getInt(this.keepDataForDay),
+ keepWeek: getInt(this.keepDataForWeek),
+ keepMonth: getInt(this.keepDataForMonth),
+ keepYear: getInt(this.keepDataForYear),
+ keepRange: getInt(this.keepDataForRange),
+ keepSegments: getInt(this.keepDataForSegments),
+ };
+ },
+ deleteOldLogsText(): string {
+ return translate('PrivacyManager_UseDeleteLog');
+ },
+ deleteReportsOlderThanTitle(): string {
+ const first = translate('PrivacyManager_DeleteReportsOlderThan');
+ return `${first} (${translate('Intl_PeriodMonths')})`;
+ },
+ deleteReportsKeepBasicTitle(): string {
+ const first = translate('PrivacyManager_KeepBasicMetrics');
+ return `${first} (${translate('General_Recommended')})`;
+ },
+ },
+});
+</script>
diff --git a/plugins/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.vue b/plugins/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.vue
new file mode 100644
index 0000000000..97d82bb83b
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/DoNotTrackPreference/DoNotTrackPreference.vue
@@ -0,0 +1,83 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div v-form>
+ <div>
+ <Field
+ uicontrol="radio"
+ name="doNotTrack"
+ v-model="enabled"
+ :options="doNotTrackOptions"
+ :inline-help="translate('PrivacyManager_DoNotTrack_Description')"
+ >
+ </Field>
+ </div>
+ <SaveButton
+ @confirm="save()"
+ :saving="isLoading"
+ />
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { translate, AjaxHelper, NotificationsStore } from 'CoreHome';
+import { Form, Field, SaveButton } from 'CorePluginsAdmin';
+
+interface DoNotTrackPreferenceState {
+ isLoading: boolean;
+ enabled: number|string|boolean;
+}
+
+export default defineComponent({
+ props: {
+ dntSupport: Boolean,
+ doNotTrackOptions: {
+ type: Array,
+ required: true,
+ },
+ },
+ components: {
+ Field,
+ SaveButton,
+ },
+ directives: {
+ Form,
+ },
+ data(): DoNotTrackPreferenceState {
+ return {
+ isLoading: false,
+ enabled: this.dntSupport ? 1 : 0,
+ };
+ },
+ methods: {
+ save() {
+ this.isLoading = true;
+
+ let action = 'deactivateDoNotTrack';
+ if (this.enabled && this.enabled !== '0') {
+ action = 'activateDoNotTrack';
+ }
+
+ AjaxHelper.post({
+ module: 'API',
+ method: `PrivacyManager.${action}`,
+ }).then(() => {
+ const notificationInstanceId = NotificationsStore.show({
+ message: translate('CoreAdminHome_SettingsSaveSuccess'),
+ context: 'success',
+ id: 'privacyManagerSettings',
+ type: 'transient',
+ });
+ NotificationsStore.scrollToNotification(notificationInstanceId);
+ }).finally(() => {
+ this.isLoading = false;
+ });
+ },
+ },
+});
+</script>
diff --git a/plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.adapter.ts b/plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.adapter.ts
new file mode 100644
index 0000000000..32887072d8
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.adapter.ts
@@ -0,0 +1,14 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter } from 'CoreHome';
+import ManageGdpr from './ManageGdpr.vue';
+
+export default createAngularJsAdapter({
+ component: ManageGdpr,
+ directiveName: 'matomoManageGdpr',
+});
diff --git a/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.less b/plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.less
index 4495f32c0f..4495f32c0f 100644
--- a/plugins/PrivacyManager/angularjs/manage-gdpr/managegdpr.directive.less
+++ b/plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.less
diff --git a/plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.vue b/plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.vue
new file mode 100644
index 0000000000..91fb1ded0a
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/ManageGdpr/ManageGdpr.vue
@@ -0,0 +1,449 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="manageGdpr">
+ <ContentBlock :content-title="translate('PrivacyManager_GdprTools')">
+ <div class="intro">
+ <p>
+ {{ translate('PrivacyManager_GdprToolsPageIntro1') }}
+ <br /><br />
+ {{ translate('PrivacyManager_GdprToolsPageIntro2') }}
+ <br />
+ </p>
+ <ol>
+ <li>{{ translate('PrivacyManager_GdprToolsPageIntroAccessRight') }}</li>
+ <li>{{ translate('PrivacyManager_GdprToolsPageIntroEraseRight') }}</li>
+ </ol>
+ <p>
+ <br />
+ <span
+ v-html="$sanitize(overviewHintText)"
+ />
+ </p>
+ </div>
+ <h3>{{ translate('PrivacyManager_SearchForDataSubject') }}</h3>
+ <div class="form-group row">
+ <div class="col s12 input-field">
+ <div>
+ <label
+ for="gdprsite"
+ class="siteSelectorLabel"
+ >
+ {{ translate('PrivacyManager_SelectWebsite') }}
+ </label>
+ <div class="sites_autocomplete">
+ <SiteSelector
+ id="gdprsite"
+ v-model="site"
+ :show-all-sites-item="true"
+ :switch-site-on-select="false"
+ :show-selected-site="true"
+ />
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="form-group row segmentFilterGroup">
+ <div class="col s12">
+ <div>
+ <label style="margin: 8px 0;display: inline-block;">
+ {{ translate('PrivacyManager_FindDataSubjectsBy') }}
+ </label>
+ <div>
+ <SegmentGenerator
+ v-model="segment_filter"
+ :visit-segments-only="true"
+ :idsite="site.id"
+ />
+ </div>
+ </div>
+ </div>
+ </div>
+ <SaveButton
+ class="findDataSubjects"
+ :value="translate('PrivacyManager_FindMatchingDataSubjects')"
+ @confirm="findDataSubjects()"
+ :disabled="!segment_filter"
+ :saving="isLoading"
+ >
+ </SaveButton>
+ </ContentBlock>
+ <div v-show="!dataSubjects.length && hasSearched">
+ <h2>{{ translate('PrivacyManager_NoDataSubjectsFound') }}</h2>
+ </div>
+ <div v-show="dataSubjects.length">
+ <h2>{{ translate('PrivacyManager_MatchingDataSubjects') }}</h2>
+ <p>{{ translate('PrivacyManager_VisitsMatchedCriteria') }}
+ {{ translate('PrivacyManager_ExportingNote') }}
+ <br /> <br />
+ {{ translate('PrivacyManager_DeletionFromMatomoOnly') }}
+ <br /><br />
+ {{ translate('PrivacyManager_ResultIncludesAllVisits') }}
+ </p>
+ <table v-content-table>
+ <thead>
+ <tr>
+ <th class="checkInclude">
+ <div>
+ <Field
+ uicontrol="checkbox"
+ name="activateAll"
+ :model-value="toggleAll"
+ @update:model-value="toggleAll = $event; toggleActivateAll()"
+ :full-width="true"
+ >
+ </Field>
+ </div>
+ </th>
+ <th>{{ translate('General_Website') }}</th>
+ <th>{{ translate('General_VisitId') }}</th>
+ <th>{{ translate('General_VisitorID') }}</th>
+ <th>{{ translate('General_VisitorIP') }}</th>
+ <th>{{ translate('General_UserId') }}</th>
+ <th>{{ translate('General_Details') }}</th>
+ <th v-show="profileEnabled">{{ translate('General_Action') }}</th>
+ </tr>
+ </thead>
+ <tbody>
+ <tr v-show="dataSubjects.length > 400">
+ <td colspan="8">{{ translate('PrivacyManager_ResultTruncated', '400') }}</td>
+ </tr>
+ <tr
+ :title="`${translate('PrivacyManager_LastAction')}: ${dataSubject.lastActionDateTime}`"
+ v-for="(dataSubject, index) in dataSubjects"
+ :key="index"
+ >
+ <td class="checkInclude">
+ <div>
+ <Field
+ uicontrol="checkbox"
+ :name="`subject${dataSubject.idVisit}`"
+ v-model="dataSubjectsActive[index]"
+ :full-width="true"
+ >
+ </Field>
+ </div>
+ </td>
+ <td
+ class="site"
+ :title="`(${translate('General_Id')} ${dataSubject.idSite})`"
+ >{{ dataSubject.siteName }}</td>
+ <td class="visitId">{{ dataSubject.idVisit }}</td>
+ <td class="visitorId">
+ <a
+ :title="translate('PrivacyManager_AddVisitorIdToSearch')"
+ @click="addFilter('visitorId', dataSubject.visitorId)"
+ >{{ dataSubject.visitorId }}</a>
+ </td>
+ <td class="visitorIp">
+ <a
+ :title="translate('PrivacyManager_AddVisitorIPToSearch')"
+ @click="addFilter('visitIp', dataSubject.visitIp)"
+ >{{ dataSubject.visitIp }}</a>
+ </td>
+ <td class="userId">
+ <a
+ :title="translate('PrivacyManager_AddUserIdToSearch')"
+ @click="addFilter('userId', dataSubject.userId)"
+ >{{ dataSubject.userId }}</a>
+ </td>
+ <td>
+ <span
+ :title="`${dataSubject.deviceType} ${dataSubject.deviceModel}`"
+ style="margin-right:3.5px"
+ >
+ <img
+ height="16"
+ :src="dataSubject.deviceTypeIcon"
+ />
+ </span>
+ <span
+ :title="dataSubject.operatingSystem"
+ style="margin-right:3.5px"
+ >
+ <img
+ height="16"
+ :src="dataSubject.operatingSystemIcon"
+ />
+ </span>
+ <span
+ :title="`${dataSubject.browser} ${dataSubject.browserFamilyDescription}`"
+ style="margin-right:3.5px"
+ >
+ <img
+ height="16"
+ :src="dataSubject.browserIcon"
+ />
+ </span>
+ <span
+ :title="`${dataSubject.country} ${dataSubject.region}`"
+ >
+ <img
+ height="16"
+ :src="dataSubject.countryFlag"
+ />
+ </span>
+ </td>
+ <td v-show="profileEnabled">
+ <a
+ class="visitorLogTooltip"
+ title="View visitor profile"
+ @click="showProfile(dataSubject.visitorId, dataSubject.idSite)"
+ >
+ <img src="plugins/Live/images/visitorProfileLaunch.png" style="margin-right:3.5px"/>
+ <span>{{ translate('Live_ViewVisitorProfile') }}</span>
+ </a>
+ </td>
+ </tr>
+ </tbody>
+ </table>
+ <SaveButton
+ class="exportDataSubjects"
+ style="margin-right:3.5px"
+ @confirm="exportDataSubject()"
+ :disabled="!hasActiveDataSubjects"
+ :value="translate('PrivacyManager_ExportSelectedVisits')"
+ >
+ </SaveButton>
+ <SaveButton
+ class="deleteDataSubjects"
+ @confirm="deleteDataSubject()"
+ :disabled="!hasActiveDataSubjects || isDeleting"
+ :value="translate('PrivacyManager_DeleteSelectedVisits')"
+ >
+ </SaveButton>
+ </div>
+ <div
+ class="ui-confirm"
+ id="confirmDeleteDataSubject"
+ ref="confirmDeleteDataSubject"
+ >
+ <h2>{{ translate('PrivacyManager_DeleteVisitsConfirm') }}</h2>
+ <input
+ role="yes"
+ type="button"
+ :value="translate('General_Yes')"
+ />
+ <input
+ role="no"
+ type="button"
+ :value="translate('General_No')"
+ />
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ translate,
+ Matomo,
+ AjaxHelper,
+ ContentBlock,
+ SiteSelector,
+ ContentTable,
+ NotificationsStore,
+ MatomoUrl,
+} from 'CoreHome';
+import { SegmentGenerator } from 'SegmentEditor';
+import { SaveButton, Field } from 'CorePluginsAdmin';
+
+interface DataSubject {
+ browser: string;
+ browserFamilyDescription: string;
+ browserIcon: string;
+ country: string;
+ countryFlag: string;
+ deviceModel: string;
+ deviceType: string;
+ deviceTypeIcon: string;
+ idSite: string|number;
+ idVisit: string;
+ lastActionDateTime: string;
+ operatingSystem: string;
+ operatingSystemIcon: string;
+ region: string;
+ siteName: string;
+ userId: string|null;
+ visitIp: string;
+ visitorId: string;
+}
+
+interface ManageGdprState {
+ isLoading: boolean;
+ isDeleting: boolean;
+ site: Record<string, string>;
+ segment_filter: string;
+ dataSubjects: DataSubject[];
+ toggleAll: boolean;
+ hasSearched: boolean;
+ profileEnabled: boolean;
+ dataSubjectsActive: boolean[];
+}
+
+export default defineComponent({
+ components: {
+ ContentBlock,
+ SiteSelector,
+ SegmentGenerator,
+ SaveButton,
+ Field,
+ },
+ directives: {
+ ContentTable,
+ },
+ data(): ManageGdprState {
+ return {
+ isLoading: false,
+ isDeleting: false,
+ site: {
+ id: 'all',
+ name: translate('UsersManager_AllWebsites'),
+ },
+ segment_filter: 'userId==',
+ dataSubjects: [],
+ toggleAll: true,
+ hasSearched: false,
+ profileEnabled: Matomo.visitorProfileEnabled,
+ dataSubjectsActive: [],
+ };
+ },
+ setup() {
+ const sitesPromise = AjaxHelper.fetch<(string|number)[]>({
+ method: 'SitesManager.getSitesIdWithAdminAccess',
+ filter_limit: '-1',
+ });
+
+ return {
+ getSites() {
+ return sitesPromise;
+ },
+ };
+ },
+ methods: {
+ showSuccessNotification(message: string) {
+ const notificationInstanceId = NotificationsStore.show({
+ message,
+ context: 'success',
+ id: 'manageGdpr',
+ type: 'transient',
+ });
+ setTimeout(() => {
+ NotificationsStore.scrollToNotification(notificationInstanceId);
+ }, 200);
+ },
+ linkTo(action: string) {
+ return `?${MatomoUrl.stringify({
+ ...MatomoUrl.urlParsed.value,
+ module: 'PrivacyManager',
+ action,
+ })}`;
+ },
+ toggleActivateAll() {
+ this.dataSubjectsActive.fill(this.toggleAll);
+ },
+ showProfile(visitorId: string, idSite: string|number) {
+ Matomo.helper.showVisitorProfilePopup(visitorId, idSite);
+ },
+ exportDataSubject() {
+ const visitsToDelete = this.activatedDataSubjects;
+ AjaxHelper.post<unknown[]>(
+ {
+ module: 'API',
+ method: 'PrivacyManager.exportDataSubjects',
+ format: 'json',
+ filter_limit: -1,
+ },
+ {
+ visits: visitsToDelete,
+ },
+ ).then((visits) => {
+ this.showSuccessNotification(translate('PrivacyManager_VisitsSuccessfullyExported'));
+ Matomo.helper.sendContentAsDownload('exported_data_subjects.json', JSON.stringify(visits));
+ });
+ },
+ deleteDataSubject() {
+ Matomo.helper.modalConfirm(this.$refs.confirmDeleteDataSubject as HTMLElement, {
+ yes: () => {
+ this.isDeleting = true;
+ const visitsToDelete = this.activatedDataSubjects;
+ AjaxHelper.post(
+ {
+ module: 'API',
+ method: 'PrivacyManager.deleteDataSubjects',
+ filter_limit: -1,
+ },
+ {
+ visits: visitsToDelete,
+ },
+ ).then(() => {
+ this.dataSubjects = [];
+ this.showSuccessNotification(translate('PrivacyManager_VisitsSuccessfullyDeleted'));
+ this.findDataSubjects();
+ }).finally(() => {
+ this.isDeleting = false;
+ });
+ },
+ });
+ },
+ addFilter(segment: string, value: string) {
+ this.segment_filter += `,${segment}==${value}`;
+ this.findDataSubjects();
+ },
+ findDataSubjects() {
+ this.dataSubjects = [];
+ this.dataSubjectsActive = [];
+ this.isLoading = true;
+ this.toggleAll = true;
+ this.hasSearched = false;
+
+ this.getSites().then((idsites) => {
+ let siteIds: QueryParameters[string] = this.site.id;
+
+ if (siteIds === 'all' && !Matomo.hasSuperUserAccess) {
+ // when superuser, we speed the request up a little and simply use 'all'
+ siteIds = idsites;
+ if (Array.isArray(idsites)) {
+ siteIds = idsites.join(',');
+ }
+ }
+
+ AjaxHelper.fetch<DataSubject[]>({
+ idSite: siteIds,
+ module: 'API',
+ method: 'PrivacyManager.findDataSubjects',
+ segment: this.segment_filter,
+ }).then((visits) => {
+ this.hasSearched = true;
+ this.dataSubjectsActive = visits.map(() => true);
+ this.dataSubjects = visits;
+ }).finally(() => {
+ this.isLoading = false;
+ });
+ });
+ },
+ },
+ computed: {
+ hasActiveDataSubjects(): boolean {
+ return !!this.activatedDataSubjects.length;
+ },
+ activatedDataSubjects(): { idsite: string|number, idvisit: string|number }[] {
+ return this.dataSubjects.filter((v, i) => this.dataSubjectsActive[i]).map((v) => ({
+ idsite: v.idSite,
+ idvisit: v.idVisit,
+ }));
+ },
+ overviewHintText(): string {
+ return translate(
+ 'PrivacyManager_GdprToolsOverviewHint',
+ `<a href="${this.linkTo('gdprOverview')}">`,
+ '</a>',
+ );
+ },
+ },
+});
+</script>
diff --git a/plugins/PrivacyManager/vue/src/ReportDeletionSettings/ReportDeletionSettings.store.ts b/plugins/PrivacyManager/vue/src/ReportDeletionSettings/ReportDeletionSettings.store.ts
new file mode 100644
index 0000000000..a7ab29eeeb
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/ReportDeletionSettings/ReportDeletionSettings.store.ts
@@ -0,0 +1,149 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import {
+ reactive,
+ computed,
+ readonly,
+} from 'vue';
+import {
+ AjaxHelper,
+ NotificationsStore,
+ translate,
+} from 'CoreHome';
+
+export interface ReportDeletionSettings {
+ enableDeleteLogs?: boolean;
+ enableDeleteReports?: boolean;
+ deleteLogsOlderThan?: string;
+ deleteReportsOlderThan?: string;
+ keepBasic?: string;
+ keepDay?: string;
+ keepWeek?: string;
+ keepMonth?: string;
+ keepYear?: string;
+ keepRange?: string;
+ keepSegments?: string;
+ deleteLowestInterval?: string;
+}
+
+interface ReportDeletionSettingsStoreState {
+ settings: ReportDeletionSettings;
+ showEstimate: boolean;
+ loadingEstimation: boolean;
+ estimation: string;
+ isModified: boolean;
+}
+
+class ReportDeletionSettingsStore {
+ private privateState = reactive<ReportDeletionSettingsStoreState>({
+ settings: {},
+ showEstimate: false,
+ loadingEstimation: false,
+ estimation: '',
+ isModified: false,
+ });
+
+ readonly state = computed(() => readonly(this.privateState));
+
+ readonly enableDeleteReports = computed(() => this.state.value.settings.enableDeleteReports);
+
+ readonly enableDeleteLogs = computed(() => this.state.value.settings.enableDeleteLogs);
+
+ private currentRequest?: AbortController;
+
+ updateSettings(settings: ReportDeletionSettings) {
+ this.initSettings(settings);
+ this.privateState.isModified = true;
+ }
+
+ initSettings(settings: ReportDeletionSettings) {
+ this.privateState.settings = { ...this.privateState.settings, ...settings };
+ this.reloadDbStats();
+ }
+
+ savePurgeDataSettings(apiMethod: string, settings: ReportDeletionSettings) {
+ this.privateState.isModified = false;
+ return AjaxHelper.post(
+ {
+ module: 'API',
+ method: apiMethod,
+ },
+ {
+ ...settings,
+ enableDeleteLogs: settings.enableDeleteLogs ? '1' : '0',
+ enableDeleteReports: settings.enableDeleteReports ? '1' : '0',
+ },
+ ).then(() => {
+ const notificationInstanceId = NotificationsStore.show({
+ message: translate('CoreAdminHome_SettingsSaveSuccess'),
+ context: 'success',
+ id: 'privacyManagerSettings',
+ type: 'toast',
+ });
+ NotificationsStore.scrollToNotification(notificationInstanceId);
+ });
+ }
+
+ isEitherDeleteSectionEnabled() {
+ return this.state.value.settings.enableDeleteLogs
+ || this.state.value.settings.enableDeleteReports;
+ }
+
+ isManualEstimationLinkShowing() {
+ return window.$('#getPurgeEstimateLink').length > 0;
+ }
+
+ reloadDbStats(forceEstimate?: boolean) {
+ if (this.currentRequest) { // if the manual estimate link is showing, abort unless forcing
+ this.currentRequest.abort();
+ this.currentRequest = undefined;
+ }
+
+ if (!forceEstimate
+ && (!this.isEitherDeleteSectionEnabled()
+ || this.isManualEstimationLinkShowing())
+ ) {
+ return;
+ }
+
+ this.privateState.loadingEstimation = true;
+ this.privateState.estimation = '';
+ this.privateState.showEstimate = false;
+
+ const { settings } = this.privateState;
+ const formData: QueryParameters = {
+ ...settings,
+ enableDeleteLogs: settings.enableDeleteLogs ? '1' : '0',
+ enableDeleteReports: settings.enableDeleteReports ? '1' : '0',
+ };
+
+ if (forceEstimate === true) {
+ formData.forceEstimate = 1;
+ }
+
+ this.currentRequest = new AbortController();
+ AjaxHelper.post(
+ {
+ module: 'PrivacyManager',
+ action: 'getDatabaseSize',
+ format: 'html',
+ },
+ formData,
+ { abortController: this.currentRequest, format: 'html' },
+ ).then((data) => {
+ this.privateState.estimation = data;
+ this.privateState.showEstimate = true;
+ this.privateState.loadingEstimation = false;
+ }).finally(() => {
+ this.currentRequest = undefined;
+ this.privateState.loadingEstimation = false;
+ });
+ }
+}
+
+export default new ReportDeletionSettingsStore();
diff --git a/plugins/PrivacyManager/vue/src/ScheduleReportDeletion/ScheduleReportDeletion.vue b/plugins/PrivacyManager/vue/src/ScheduleReportDeletion/ScheduleReportDeletion.vue
new file mode 100644
index 0000000000..6c5843a83b
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/ScheduleReportDeletion/ScheduleReportDeletion.vue
@@ -0,0 +1,213 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div
+ id="formDeleteSettings"
+ v-form
+ >
+ <ContentBlock
+ id="scheduleSettingsHeadline"
+ v-show="isEitherDeleteSectionEnabled"
+ :content-title="translate('PrivacyManager_DeleteSchedulingSettings')"
+ >
+ <div id="deleteSchedulingSettings">
+ <div>
+ <Field
+ uicontrol="select"
+ name="deleteLowestInterval"
+ :title="translate('PrivacyManager_DeleteDataInterval')"
+ v-model="deleteLowestInterval"
+ :options="scheduleDeletionOptions"
+ >
+ <template v-slot:inline-help>
+ <div
+ id="deleteSchedulingSettingsInlineHelp"
+ class="inline-help-node"
+ >
+ <span v-if="deleteData.lastRun">
+ <strong>{{ translate('PrivacyManager_LastDelete') }}:</strong>
+ {{ deleteData.lastRunPretty }}
+ <br />
+ <br />
+ </span>
+ <strong>{{ translate('PrivacyManager_NextDelete') }}:</strong>
+ {{ deleteData.nextRunPretty }}
+ <br />
+ <br />
+ <a
+ id="purgeDataNowLink"
+ href="#"
+ v-show="showPurgeNowLink"
+ @click="executeDataPurgeNow()"
+ >{{ translate('PrivacyManager_PurgeNow') }}</a>
+ <ActivityIndicator
+ :loading-message="translate('PrivacyManager_PurgingData')"
+ :loading="loadingDataPurge"
+ />
+ <span
+ id="db-purged-message"
+ v-show="dataWasPurged"
+ >{{ translate('PrivacyManager_DBPurged') }}</span>
+ </div>
+ </template>
+ </Field>
+ </div>
+ </div>
+ <div
+ id="deleteDataEstimateSect"
+ class="form-group row"
+ v-if="deleteData.config.enable_database_size_estimate === '1'
+ || deleteData.config.enable_database_size_estimate === 1"
+ >
+ <h3
+ class="col s12"
+ id="databaseSizeHeadline"
+ >
+ {{ translate('PrivacyManager_ReportsDataSavedEstimate') }}
+ </h3>
+ <div class="col s12 m6">
+ <div
+ id="deleteDataEstimate"
+ v-show="showEstimate"
+ v-html="$sanitize(estimation)"
+ />&nbsp;<ActivityIndicator :loading="loadingEstimation" />
+ </div>
+ <div class="col s12 m6">
+ <div
+ v-if="deleteData.config.enable_auto_database_size_estimate !== '1'
+ && deleteData.config.enable_auto_database_size_estimate !== 1"
+ class="form-help"
+ >
+ <a
+ id="getPurgeEstimateLink"
+ href="#"
+ @click.prevent="getPurgeEstimate()"
+ >{{ translate('PrivacyManager_GetPurgeEstimate') }}</a>
+ </div>
+ </div>
+ </div>
+ <SaveButton
+ @confirm="save()"
+ :saving="isLoading"
+ />
+ </ContentBlock>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import {
+ Matomo,
+ AjaxHelper,
+ ContentBlock,
+ ActivityIndicator,
+} from 'CoreHome';
+import { Form, Field, SaveButton } from 'CorePluginsAdmin';
+import ReportDeletionSettingsStore from '../ReportDeletionSettings/ReportDeletionSettings.store';
+
+interface ScheduleReportDeletionState {
+ isLoading: boolean;
+ loadingDataPurge: boolean;
+ dataWasPurged: boolean;
+ showPurgeNowLink: boolean;
+ deleteLowestInterval: string;
+}
+
+export default defineComponent({
+ props: {
+ isDataPurgeSettingsEnabled: Boolean,
+ deleteData: {
+ type: Object,
+ required: true,
+ },
+ scheduleDeletionOptions: {
+ type: Object,
+ required: true,
+ },
+ },
+ components: {
+ ContentBlock,
+ ActivityIndicator,
+ Field,
+ SaveButton,
+ },
+ directives: {
+ Form,
+ },
+ data(): ScheduleReportDeletionState {
+ return {
+ isLoading: false,
+ loadingDataPurge: false,
+ dataWasPurged: false,
+ showPurgeNowLink: true,
+ deleteLowestInterval: this.deleteData.config.delete_logs_schedule_lowest_interval,
+ };
+ },
+ methods: {
+ save() {
+ const method = 'PrivacyManager.setScheduleReportDeletionSettings';
+ ReportDeletionSettingsStore.savePurgeDataSettings(method, {
+ deleteLowestInterval: this.deleteLowestInterval,
+ });
+ },
+ executeDataPurgeNow() {
+ if (ReportDeletionSettingsStore.state.value.isModified) {
+ // ask user if they really want to delete their old data
+ Matomo.helper.modalConfirm('#saveSettingsBeforePurge', {
+ yes: () => null,
+ });
+
+ return;
+ }
+
+ Matomo.helper.modalConfirm('#confirmPurgeNow', {
+ yes: () => {
+ this.loadingDataPurge = true;
+ this.showPurgeNowLink = false; // execute a data purge
+
+ AjaxHelper.fetch(
+ {
+ module: 'PrivacyManager',
+ action: 'executeDataPurge',
+ format: 'html',
+ },
+ { withTokenInUrl: true },
+ ).then(() => {
+ // force reload
+ ReportDeletionSettingsStore.reloadDbStats();
+ this.dataWasPurged = true;
+
+ setTimeout(() => {
+ this.dataWasPurged = false;
+ this.showPurgeNowLink = true;
+ }, 2000);
+ }).finally(() => {
+ this.loadingDataPurge = false;
+ });
+ },
+ });
+ },
+ getPurgeEstimate() {
+ return ReportDeletionSettingsStore.reloadDbStats(true);
+ },
+ },
+ computed: {
+ showEstimate() {
+ return ReportDeletionSettingsStore.state.value.showEstimate;
+ },
+ isEitherDeleteSectionEnabled() {
+ return ReportDeletionSettingsStore.isEitherDeleteSectionEnabled();
+ },
+ estimation() {
+ return ReportDeletionSettingsStore.state.value.estimation;
+ },
+ loadingEstimation() {
+ return ReportDeletionSettingsStore.state.value.loadingEstimation;
+ },
+ },
+});
+</script>
diff --git a/plugins/PrivacyManager/vue/src/index.ts b/plugins/PrivacyManager/vue/src/index.ts
new file mode 100644
index 0000000000..a62cd90413
--- /dev/null
+++ b/plugins/PrivacyManager/vue/src/index.ts
@@ -0,0 +1,17 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+export { default as ManageGdpr } from './ManageGdpr/ManageGdpr.vue';
+export { default as AnonymizeIp } from './AnonymizeIp/AnonymizeIp.vue';
+export { default as AnonymizeLogData } from './AnonymizeLogData/AnonymizeLogData.vue';
+export { default as DoNotTrackPreference } from './DoNotTrackPreference/DoNotTrackPreference.vue';
+export {
+ default as ReportDeletionSettings,
+} from './ReportDeletionSettings/ReportDeletionSettings.store';
+export { default as DeleteOldLogs } from './DeleteOldLogs/DeleteOldLogs.vue';
+export { default as DeleteOldReports } from './DeleteOldReports/DeleteOldReports.vue';
+export { default as ScheduleReportDeletion } from './ScheduleReportDeletion/ScheduleReportDeletion.vue';
diff --git a/plugins/ProfessionalServices/lang/ga.json b/plugins/ProfessionalServices/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/ProfessionalServices/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/QueuedTracking b/plugins/QueuedTracking
-Subproject e4ffe835e76b4b84a30df0d6e858102bee86009
+Subproject b7ab9ad49c4808eaab9ac61143b6afd0b50b0c8
diff --git a/plugins/Referrers/Referrers.php b/plugins/Referrers/Referrers.php
index 68880c5266..4e43b44c52 100644
--- a/plugins/Referrers/Referrers.php
+++ b/plugins/Referrers/Referrers.php
@@ -69,7 +69,7 @@ class Referrers extends \Piwik\Plugin
public function getStylesheetFiles(&$stylesheets)
{
- $stylesheets[] = 'plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.less';
+ $stylesheets[] = 'plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.less';
}
public function getClientSideTranslationKeys(&$translationKeys)
@@ -101,8 +101,6 @@ class Referrers extends \Piwik\Plugin
public function getJsFiles(&$jsFiles)
{
- $jsFiles[] = 'plugins/Referrers/angularjs/campaign-builder/campaign-builder.controller.js';
- $jsFiles[] = 'plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.js';
}
public function setTrackerCacheGeneral(&$cacheContent)
diff --git a/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php b/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php
index 434f130c3d..4a978da15a 100644
--- a/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php
+++ b/plugins/Referrers/Widgets/GetCampaignUrlBuilder.php
@@ -40,7 +40,7 @@ class GetCampaignUrlBuilder extends \Piwik\Widget\Widget
$hasExtraPlugin = Plugin\Manager::getInstance()->isPluginActivated('MarketingCampaignsReporting');
return $this->renderTemplate('campaignBuilder', array(
- 'hasExtraPlugin' => (int)$hasExtraPlugin
+ 'hasExtraPlugin' => $hasExtraPlugin,
));
}
diff --git a/plugins/Referrers/angularjs/campaign-builder/campaign-builder.controller.js b/plugins/Referrers/angularjs/campaign-builder/campaign-builder.controller.js
deleted file mode 100644
index db2e514595..0000000000
--- a/plugins/Referrers/angularjs/campaign-builder/campaign-builder.controller.js
+++ /dev/null
@@ -1,91 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-(function () {
- angular.module('piwikApp').controller('CampaignBuilderController', CampaignBuilderController);
-
- CampaignBuilderController.$inject = ['$scope'];
-
- function CampaignBuilderController($scope) {
- this.hasExtraPlugin = $scope.hasExtraPlugin;
-
- this.reset = function () {
- this.websiteUrl = '';
- this.campaignName = '';
- this.campaignKeyword = '';
- this.campaignSource = '';
- this.campaignMedium = '';
- this.campaignId = '';
- this.campaignContent = '';
- this.campaignGroup = '';
- this.campaignPlacement = '';
- this.generatedUrl = '';
- };
-
- this.generateUrl = function () {
- this.generatedUrl = String(this.websiteUrl);
-
- if (this.generatedUrl.indexOf('http') !== 0) {
- this.generatedUrl = 'https://' + this.generatedUrl.trim();
- }
-
- var urlHashPos = this.generatedUrl.indexOf('#');
- var urlHash = '';
- if (urlHashPos >= 0) {
- urlHash = this.generatedUrl.substr(urlHashPos);
- this.generatedUrl = this.generatedUrl.substr(0, urlHashPos);
- }
-
- if (this.generatedUrl.indexOf('/', 10) < 0 && this.generatedUrl.indexOf("?") < 0) {
- this.generatedUrl += '/';
- }
-
- var campaignName = encodeURIComponent(this.campaignName.trim());
-
- if (this.generatedUrl.indexOf('?') > 0 || this.generatedUrl.indexOf('#') > 0) {
- this.generatedUrl += '&';
- } else {
- this.generatedUrl += '?';
- }
-
- this.generatedUrl += 'mtm_campaign='+campaignName;
-
- if (this.campaignKeyword) {
- this.generatedUrl += '&mtm_kwd='+encodeURIComponent(this.campaignKeyword.trim());
- }
-
- if (this.campaignSource) {
- this.generatedUrl += '&mtm_source='+encodeURIComponent(this.campaignSource.trim());
- }
-
- if (this.campaignMedium) {
- this.generatedUrl += '&mtm_medium='+encodeURIComponent(this.campaignMedium.trim());
- }
-
- if (this.campaignContent) {
- this.generatedUrl += '&mtm_content='+encodeURIComponent(this.campaignContent.trim());
- }
-
- if (this.campaignId) {
- this.generatedUrl += '&mtm_cid='+encodeURIComponent(this.campaignId.trim());
- }
-
- if (this.campaignGroup) {
- this.generatedUrl += '&mtm_group='+encodeURIComponent(this.campaignGroup.trim());
- }
-
- if (this.campaignPlacement) {
- this.generatedUrl += '&mtm_placement='+encodeURIComponent(this.campaignPlacement.trim());
- }
-
- this.generatedUrl += urlHash;
-
- $('#urlCampaignBuilderResult').effect("highlight", {}, 1500);
- };
-
- this.reset();
- }
-})();
diff --git a/plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.html b/plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.html
deleted file mode 100644
index 9dade113d6..0000000000
--- a/plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.html
+++ /dev/null
@@ -1,81 +0,0 @@
-<div class="campaignUrlBuilder">
-
- <form>
- <div piwik-field uicontrol="text" name="websiteurl"
- data-title="{{'Actions_ColumnPageURL'|translate}} ({{ 'General_Required2'|translate }})"
- ng-model="campaignBuilder.websiteUrl"
- inline-help="{{'Referrers_CampaignPageUrlHelp'|translate}}">
- </div>
-
- <div piwik-field uicontrol="text" name="campaignname"
- data-title="{{ 'CoreAdminHome_JSTracking_CampaignNameParam'|translate }} ({{ 'General_Required2'|translate }})"
- ng-model="campaignBuilder.campaignName"
- inline-help="{{'Referrers_CampaignNameHelp'|translate}}">
- </div>
-
- <div piwik-field uicontrol="text" name="campaignkeyword"
- data-title="{{ 'CoreAdminHome_JSTracking_CampaignKwdParam'|translate }}"
- ng-model="campaignBuilder.campaignKeyword"
- inline-help="{{'Goals_Optional'|translate}} {{'Referrers_CampaignKeywordHelp'|translate}}">
- </div>
-
- <div piwik-field uicontrol="text" name="campaignsource"
- data-title="{{ 'Referrers_CampaignSource'|translate }}"
- ng-model="campaignBuilder.campaignSource"
- ng-show="campaignBuilder.hasExtraPlugin"
- inline-help="{{'Goals_Optional'|translate}} {{'Referrers_CampaignSourceHelp'|translate}}">
- </div>
-
- <div piwik-field uicontrol="text" name="campaignmedium"
- data-title="{{ 'Referrers_CampaignMedium'|translate }}"
- ng-model="campaignBuilder.campaignMedium"
- ng-show="campaignBuilder.hasExtraPlugin"
- inline-help="{{'Goals_Optional'|translate}} {{'Referrers_CampaignMediumHelp'|translate}}">
- </div>
-
- <div piwik-field uicontrol="text" name="campaigncontent"
- data-title="{{ 'Referrers_CampaignContent'|translate }}"
- ng-model="campaignBuilder.campaignContent"
- ng-show="campaignBuilder.hasExtraPlugin"
- inline-help="{{'Goals_Optional'|translate}} {{'Referrers_CampaignContentHelp'|translate}}">
- </div>
-
- <div piwik-field uicontrol="text" name="campaignid"
- data-title="{{ 'Referrers_CampaignId'|translate }}"
- ng-model="campaignBuilder.campaignId"
- ng-show="campaignBuilder.hasExtraPlugin"
- inline-help="{{'Goals_Optional'|translate}} {{'Referrers_CampaignIdHelp'|translate}}">
- </div>
-
- <div piwik-field uicontrol="text" name="campaigngroup"
- data-title="{{ 'Referrers_CampaignGroup'|translate }}"
- ng-model="campaignBuilder.campaignGroup"
- ng-show="campaignBuilder.hasExtraPlugin"
- inline-help="{{'Goals_Optional'|translate}} {{'Referrers_CampaignGroupHelp'|translate}}">
- </div>
-
- <div piwik-field uicontrol="text" name="campaignplacement"
- data-title="{{ 'Referrers_CampaignPlacement'|translate }}"
- ng-model="campaignBuilder.campaignPlacement"
- ng-show="campaignBuilder.hasExtraPlugin"
- inline-help="{{'Goals_Optional'|translate}} {{'Referrers_CampaignPlacementHelp'|translate}}">
- </div>
-
- <div piwik-save-button
- class="generateCampaignUrl"
- onconfirm="campaignBuilder.generateUrl()"
- data-disabled="!campaignBuilder.websiteUrl || !campaignBuilder.campaignName"
- value="{{ 'Referrers_GenerateUrl'|translate }}">
- </div>
- <div piwik-save-button
- class="resetCampaignUrl"
- onconfirm="campaignBuilder.reset()"
- value="{{ 'General_Clear'|translate }}">
- </div>
-
- <div ng-show="campaignBuilder.generatedUrl">
- <h3>{{'Referrers_URLCampaignBuilderResult'|translate}}</h3>
- <pre piwik-select-on-focus id="urlCampaignBuilderResult"><code ng-bind="campaignBuilder.generatedUrl"></code></pre>
- </div>
- </form>
-</div> \ No newline at end of file
diff --git a/plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.js b/plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.js
deleted file mode 100644
index a14fbd33da..0000000000
--- a/plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.js
+++ /dev/null
@@ -1,44 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-/**
- * Usage:
- * <div matomo-campaign-builder>
- */
-(function () {
- angular.module('piwikApp').directive('matomoCampaignBuilder', matomoCampaignBuilder);
-
- matomoCampaignBuilder.$inject = ['piwik'];
-
- function matomoCampaignBuilder(piwik){
- var defaults = {
- hasExtraPlugin: true
- };
-
- return {
- restrict: 'A',
- scope: {
- hasExtraPlugin: '<'
- },
- templateUrl: 'plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.html?cb=' + piwik.cacheBuster,
- controller: 'CampaignBuilderController',
- controllerAs: 'campaignBuilder',
- compile: function (element, attrs) {
-
- for (var index in defaults) {
- if (defaults.hasOwnProperty(index) && attrs[index] === undefined) {
- attrs[index] = defaults[index];
- }
- }
-
- return function (scope, element, attrs) {
-
- };
- }
- };
- }
-})(); \ No newline at end of file
diff --git a/plugins/Referrers/lang/ga.json b/plugins/Referrers/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Referrers/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Referrers/lang/id.json b/plugins/Referrers/lang/id.json
index c8e7522e0f..fe80941c5b 100644
--- a/plugins/Referrers/lang/id.json
+++ b/plugins/Referrers/lang/id.json
@@ -1,52 +1,100 @@
{
"Referrers": {
"Acquisition": "Akusisi",
- "AllReferrersReportDocumentation": "Laporan ini menampilkan seluruh Pengarah Anda dalam laporan satu kompak, mendaftar seluruh Situs, dan kata kunci Pencarian serta Kampanye yang digunakan pengunjung Anda menemukan situs Anda.",
+ "AllReferrersReportDocumentation": "Laporan ini menunjukkan semua Perujuk Anda dalam satu laporan terpadu, mencantumkan semua Situs Web, Kata Kunci Penelusuran, dan Kampanye yang digunakan oleh pengunjung untuk menemukan situs web Anda.",
+ "AllReferrersSubcategory1": "Bagian ini menunjukkan jumlah kunjungan yang datang dari berbagai jenis saluran dan perujuk. Klik pada tombol plus atau minus untuk melihat perujuk dalam tiap tipe.",
+ "AllReferrersSubcategory2": "Anda juga dapat menganalisis jumlah tindakan yang dilakukan oleh setiap sumber lalu lintas Anda dengan mengaktifkan tabel dengan tampilan metrik keterlibatan Pengunjung.",
+ "CampaignContent": "Konten kampanye",
+ "CampaignContentHelp": "Parameter ini sering digunakan saat Anda menguji beberapa iklan dan akan menyertakan nama setiap iklan untuk melihat mana yang paling efektif dalam mengarahkan lalu lintas.",
+ "CampaignGroup": "Grup Kampanye",
+ "CampaignGroupHelp": "Parameter ini digunakan untuk melacak Grup Kampanye untuk mengenali grup atau audiens. Grup kampanye berguna untuk melacak keseluruhan kinerja dari beberapa kampanye dengan sasaran serupa.",
+ "CampaignId": "ID Kampanye",
+ "CampaignIdHelp": "Parameter ini digunakan untuk melacak ID Kampanye: pengidentifikasi unik untuk kampanye yang terdiri dari paling banyak 100 angka, huruf, atau simbol.",
+ "CampaignKeywordHelp": "Jika Anda memiliki beberapa kampanye dengan nama yang sama, Anda dapat membedakan kampanye tersebut dengan mengatur kata kunci atau subkategori.",
+ "CampaignMedium": "Media Kampanye",
+ "CampaignMediumHelp": "Digunakan untuk menggambarkan aktivitas pemasaran, misalnya 'PPC' untuk kampanye bayar per klik, atau 'SEM' untuk iklan penelusuran berbayar, atau 'ulasan' untuk melacak ulasan produk di situs afiliasi.",
+ "CampaignNameHelp": "Pilih nama yang dapat menjelaskan untuk apa kampanye dibuat dan apa yang membedakan kampanye Anda dari kampanye lainnya. Misalnya 'Email-SummerDeals' atau 'PaidAds-SummerDeals'.",
+ "CampaignPageUrlHelp": "URL laman tujuan kampanye ini, misalnya 'http://contoh.org/penawaran.html'.",
+ "CampaignPlacement": "Penempatan Kampanye",
+ "CampaignPlacementHelp": "Digunakan untuk menjelaskan penempatan atau posisi iklan, misalnya di seluruh situs web, laman tertentu dari situs web, unit iklan individual yang diposisikan pada satu laman, video, aplikasi ponsel, dan yang lainnya.",
+ "CampaignSource": "Sumber Kampanye",
+ "CampaignSourceHelp": "Digunakan untuk melacak sumber kampanye seperti 'buletin' untuk pemasaran surel Anda, 'afiliasi', atau nama situs web yang menampilkan iklan Anda.",
"Campaigns": "Kampanye",
- "CampaignsDocumentation": "Pengunjung yang datang ke situs Anda sebagai hasil dari kampanye. %1$s Lihat laporan %2$s untuk selengkapnya.",
+ "CampaignsDocumentation": "Pengunjung yang datang ke situs web Anda sebagai hasil dari kampanye. %1$s Lihat %2$s laporan untuk detail selengkapnya.",
+ "CampaignsReportDocumentation": "Laporan ini menunjukkan kampanye mana yang mengarahkan pengunjung ke situs web Anda.",
+ "CampaignsSubcategoryHelp": "Bagian Pelacakan Kampanye memungkinkan Anda untuk menganalisis kunjungan yang terkait dengan berbagai nilai pelacakan yang telah ditautkan ke kampanye digital Anda. Ini dapat mengungkapkan hal-hal seperti, berapa banyak lalu lintas yang dihasilkan kampanye Anda, materi iklan mana yang berkinerja paling baik, seberapa besar keterlibatan pengunjung, dan apakah kampanye menghasilkan penjualan atau tidak.",
"ColumnCampaign": "Kampanye",
"ColumnSearchEngine": "Mesin Pencari",
"ColumnSocial": "Jejaring Sosial",
- "ColumnWebsite": "Situs",
- "ColumnWebsitePage": "Halaman Situs",
- "DirectEntry": "Masukan Langsung",
- "DistinctCampaigns": "kampanye berbeda",
- "DistinctKeywords": "kata kunci berbeda",
- "DistinctSearchEngines": "mesin pencari berbeda",
- "DistinctSocialNetworks": "jejaring social berbeda",
- "DistinctWebsites": "situs berbeda",
- "EvolutionDocumentation": "Ini merupakan iktisar pengarah yang mengarahkan pengunjung ke situs Anda.",
+ "ColumnWebsite": "Situs Web",
+ "ColumnWebsitePage": "Halaman Situs Web",
+ "DirectEntry": "Entri Langsung",
+ "DirectEntryDocumentation": "Seorang pengunjung telah memasukkan URL di peramban mereka dan mulai menjelajahi situs web Anda - mereka langsung masuk ke situs web.",
+ "Distinct": "Perujuk yang Berbeda menurut Tipe Saluran",
+ "DistinctCampaigns": "kampanye yang berbeda",
+ "DistinctKeywords": "kata kunci yang berbeda",
+ "DistinctSearchEngines": "mesin pencari yang berbeda",
+ "DistinctSocialNetworks": "jejaring sosial yang berbeda",
+ "DistinctWebsiteUrls": "URL situs web yang berbeda",
+ "DistinctWebsites": "situs web yang berbeda",
+ "EcommerceLogSubcategoryHelp1": "Log Niaga-el menyediakan data tingkat sesi yang terperinci sehingga Anda dapat melihat sesi keseluruhan untuk setiap pengguna yang melakukan pembelian atau meninggalkan keranjang mereka. Ini dapat membantu Anda untuk memahami apa yang dilakukan oleh pengguna sebelum dan sesudah membeli untuk mengungkapkan peluang pengoptimalan.",
+ "EcommerceLogSubcategoryHelp2": "Data di halaman ini diperbarui secara waktu nyata.",
+ "EvolutionDocumentation": "Ini merupakan ikhtisar perujuk yang mengarahkan pengunjung ke situs Anda.",
+ "EvolutionDocumentationMoreInfo": "Untuk informasi lebih lanjut tentang jenis saluran yang berbeda, lihat dokumentasi tabel %s.",
+ "GenerateUrl": "Buat URL",
"Keywords": "Kata Kunci",
- "KeywordsReportDocumentation": "Laporan ini menampilkan kata kunci yang pengguna gunakan saat pencarian sebelum diarahkan ke situs Anda. %s Dengan mengeklik baris dalam tabel, Anda dapat mengetahui penyebaran permintaan mesin pencari atas kata kunci tersebut.",
- "Referrer": "Pengarah",
- "ReferrerName": "Nama Pengarah",
- "Referrers": "Pengarah",
- "ReferrersOverview": "Iktisar Pengarah",
+ "KeywordsReportDocumentation": "Laporan ini menunjukkan kata kunci mana yang ditelusuri oleh pengguna sebelum mereka dirujuk ke situs web Anda. %s Dengan mengeklik salah satu baris dalam tabel, Anda dapat melihat distribusi mesin pencari yang menanyakan kata kunci tersebut.",
+ "KeywordsReportDocumentationNote": "Catatan: Laporan ini mencantumkan sebagian besar kata kunci sebagai tidak ditentukan karena sebagian besar mesin pencari tidak mengirimkan kata kunci yang sama persis dengan yang digunakan di mesin pencari.",
+ "PercentOfX": "Persentase dari %s",
+ "PluginDescription": "Melaporkan data Perujuk: Mesin Pencari, Kata Kunci, Situs Web, Kampanye, Media sosial, Entri langsung.",
+ "ProductSubcategoryHelp": "Tampilan Produk dapat membantu Anda dalam mengidentifikasi produk dan kategori yang kinerjanya berlebihan atau buruk untuk mengungkapkan tren dan peluang yang terkait dengan pilihan produk dan halaman toko Anda.",
+ "Referrer": "Perujuk",
+ "ReferrerName": "Nama Perujuk",
+ "ReferrerNames": "Nama Perujuk",
+ "ReferrerTypes": "Jenis Saluran",
+ "ReferrerURLs": "URL Perujuk",
+ "Referrers": "Perujuk",
+ "ReferrersOverview": "Ikhtisar Rujukan",
+ "ReferrersOverviewDocumentation": "Laporan ini menunjukkan saluran akuisisi apa yang digunakan oleh pengunjung untuk mengakses situs web Anda dan jumlah kunjungan yang bertanggung jawab untuk setiap jenis saluran.",
+ "ReferrersOverviewSubcategoryHelp1": "Ikhtisar Akuisisi menunjukkan persentase lalu lintas Anda dari semua sumber selama rentang tanggal yang dipilih.",
+ "ReferrersOverviewSubcategoryHelp2": "Anda juga dapat mengeklik jenis saluran tertentu untuk menampilkannya dalam grafik evolusi. Ini dapat membantu Anda dalam menemukan saluran mana yang memberikan kontribusi lalu lintas paling banyak ke situs Anda serta pola potensial dari waktu ke waktu. Misalnya, saluran tertentu mungkin berkinerja lebih baik di akhir pekan.",
"SearchEngines": "Mesin Pencari",
- "SearchEnginesDocumentation": "Pengunjung telah diarahkan ke situs Anda oleh mesin pencari. %1$s Lihat laporan %2$s untuk selengkapnya.",
- "SearchEnginesReportDocumentation": "Laporan ini menampilakan mesin pencari yang mengarahkan pengguna ke situs Anda. %s Dengan mengeklik baris dalam tabel, Anda dapat mengetahui pengguna mana yang menggunakan mesin pencari tertentu.",
+ "SearchEnginesDocumentation": "Pengunjung telah diarahkan ke situs web Anda oleh mesin pencari. %1$s Lihat %2$s laporan untuk selengkapnya.",
+ "SearchEnginesReportDocumentation": "Laporan ini menampilakan mesin pencari yang mengarahkan pengguna ke situs web Anda. %s Dengan mengeklik baris dalam tabel, Anda dapat mengetahui pengguna mana yang menggunakan mesin pencari tertentu.",
+ "SearchEnginesSubcategoryHelp1": "Bagian ini membantu Anda dalam menganalisis pengoptimalan dan kinerja mesin pencari. Anda dapat menganalisis kata kunci paling populer dengan laporan kata kunci gabungan atau melihat kata kunci mana yang berkinerja baik di mesin pencari tertentu untuk analisis dan pengoptimalan yang lebih bertarget.",
+ "SearchEnginesSubcategoryHelp2": "Pengguna plugin %1$sMatomo Cloud%2$s dan %3$sPerforma Kata Kunci Mesin Pencari%4$s akan menerima hasil terbaik dari laporan ini.",
"Socials": "Jejaring Sosial",
- "SocialsReportDocumentation": "Laporan ini menampilkan jejaring sosial yang mengarahkan pengunjung ke situs Anda.<br />Dengan mengeklik sebuah baris di tabel, Anda dapat melihat dari halaman jejaring sosial mana pengunjung mendatangi situs Anda.",
- "SubmenuSearchEngines": "Mesin Pencari & Kata Kunci",
- "SubmenuWebsitesOnly": "Situs",
+ "SocialsReportDocumentation": "Laporan ini menunjukkan jejaring sosial mana yang mengarahkan pengunjung ke situs web Anda.<br>Dengan mengeklik baris dalam tabel, Anda dapat melihat dari laman jejaring sosial mana pengunjung datang ke situs web Anda.",
+ "SocialsSubcategoryHelp": "Dalam tabel ini, Anda dapat melihat situs web mana yang merujuk pengunjung ke situs Anda.",
+ "SubmenuSearchEngines": "Mesin Pencari &amp; Kata Kunci",
+ "SubmenuWebsitesOnly": "Situs Web",
+ "Type": "Tipe Saluran",
"TypeCampaigns": "%s dari kampanye",
- "TypeDirectEntries": "%s masukkan langsung",
+ "TypeDirectEntries": "%s entri langsung",
+ "TypeReportDocumentation": "Tabel ini berisi informasi tentang distribusi jenis saluran.",
"TypeSearchEngines": "%s dari mesin pencari",
- "TypeWebsites": "%s dari situs",
- "UsingNDistinctUrls": "(menggunakan %s url berbeda)",
- "ViewAllReferrers": "Lihat seluruh pengarah",
- "ViewReferrersBy": "Lihat Pengarah berdasar %s",
+ "TypeSocialNetworks": "%s dari jejaring sosial",
+ "TypeWebsites": "%s dari situs web",
+ "URLCampaignBuilder": "Pembuat URL Kampanye",
+ "URLCampaignBuilderIntro": "%1$sAlat Pembuat URL%2$s memungkinkan Anda untuk membuat URL yang siap digunakan untuk Kampanye Pelacakan di Matomo. Lihat dokumentasi tentang %3$sPelacakan Kampanye%4$s untuk informasi selengkapnya.",
+ "URLCampaignBuilderResult": "URL yang dibuat dapat Anda salin dan tempel di Kampanye, buletin Surel, Facebook Ads, atau tweet Anda:",
+ "UsingNDistinctUrls": "(menggunakan %s url yang berbeda)",
+ "ViewAllReferrers": "Lihat semua Perujuk",
+ "ViewReferrersBy": "Lihat Perujuk menurut %s",
"VisitorsFromCampaigns": "Pengunjung dari Kampanye",
- "VisitorsFromDirectEntry": "Pengunjung dari Masukan Langsung",
+ "VisitorsFromDirectEntry": "Pengunjung dari Entri Langsung",
"VisitorsFromSearchEngines": "Pengunjung dari Mesin Pencari",
"VisitorsFromSocialNetworks": "Pengunjung dari Jejaring Sosial",
- "VisitorsFromWebsites": "Pengunjung dari Situs",
- "Websites": "Situs",
- "WebsitesDocumentation": "Pengunjung mengikuti tautan di situs lain yang mengarahkan ke situs Anda. %1$s Lihat laporan %2$s untuk selengkapnya.",
- "WebsitesReportDocumentation": "Dalam tabel ini, Anda dapat melihat situs mana yang mengarahkan pengunjung menuju situs Anda. %s Dengan mengeklik baris dalam tabel, Anda dapat mengetahui URL mana yang memiliki tautan ke situs Anda.",
- "WidgetExternalWebsites": "Daftar Situs luar",
+ "VisitorsFromWebsites": "Pengunjung dari Situs Web",
+ "Websites": "Situs Web",
+ "WebsitesDocumentation": "Pengunjung mengikuti tautan di situs lain yang mengarahkan ke situs Anda. %1$s Lihat %2$s laporan untuk selengkapnya.",
+ "WebsitesReportDocumentation": "Dalam tabel ini, Anda dapat melihat situs web mana yang mengarahkan pengunjung menuju situs web Anda. %s Dengan mengeklik baris dalam tabel, Anda dapat mengetahui URL mana yang memiliki tautan ke situs web Anda.",
+ "WebsitesSubcategoryHelp1": "Dalam tabel ini, Anda dapat melihat situs web mana yang merujuk pengunjung ke situs Anda.",
+ "WebsitesSubcategoryHelp2": "Dengan mengeklik baris dalam tabel, Anda dapat melihat URL tempat tautan ke situs web Anda berada.",
+ "WidgetExternalWebsites": "Situs Web Perujuk",
"WidgetGetAll": "Semua Saluran",
"WidgetSocials": "Daftar jejaring sosial",
- "WidgetTopKeywordsForPages": "Kata kunci atas untulk URL halaman"
+ "WidgetTopKeywordsForPages": "Kata Kunci Teratas untuk URL Halaman",
+ "XPercentOfVisits": "%s kunjungan"
}
}
diff --git a/plugins/Referrers/lang/pt-br.json b/plugins/Referrers/lang/pt-br.json
index b49aebfc48..20ab81d044 100644
--- a/plugins/Referrers/lang/pt-br.json
+++ b/plugins/Referrers/lang/pt-br.json
@@ -1,20 +1,28 @@
{
"Referrers": {
"Acquisition": "Aquisição",
- "AllReferrersReportDocumentation": "Este relatório mostra todos os seus Referenciadores em um relatório unificado, listando todos os Websites, Palavras-Chave de Pesquisa e Campanhas utilizadas ​​por seus visitantes para encontrar seu website.",
+ "AllReferrersReportDocumentation": "Este relatório mostra todos os seus Referenciadores em um relatório unificado, listando todos os Websites, Palavras-Chave de Pesquisa e Campanhas utilizadas por seus visitantes para encontrar seu website.",
"AllReferrersSubcategory1": "Esta seção mostra o número de visitas que chegam de diferentes tipos de canal e referenciadores. Clique nos botões mais ou menos para ver os referenciadores dentro de cada tipo.",
+ "AllReferrersSubcategory2": "Você também pode analisar o número de ações realizadas por cada uma de suas origens de tráfego ativando a tabela com a visualização de métricas de engajamento do visitante.",
"CampaignContent": "Conteúdo da campanha",
"CampaignContentHelp": "Este parâmetro é usado frequentemente quando você está testando diversos anúncios, e inclui o nome de cada anúncio para ver qual foi mais efetivo para direcionar tráfego.",
+ "CampaignGroup": "Grupo de campanhas",
+ "CampaignGroupHelp": "Esse parâmetro é usado para rastrear um grupo de campanhas para identificar um grupo ou público. Os grupos de campanhas são úteis para acompanhar o desempenho geral de várias campanhas com metas semelhantes.",
+ "CampaignId": "ID da campanha",
+ "CampaignIdHelp": "Este parâmetro é usado para rastrear um ID de campanha: um identificador exclusivo para a campanha que consiste em no máximo 100 números, letras ou símbolos.",
"CampaignKeywordHelp": "Se você tem diversas campanhas com o mesmo nome, você pode distinguir essas campanhas especificando uma palavra-chave ou uma subcategoria.",
"CampaignMedium": "Ambiente da campanha",
"CampaignMediumHelp": "Usado para descrever a atividade de marketing, por exemplo 'PPC' para uma campanha pay-per-click, ou 'SEM' para anúncios de busca pagos, ou 'avaliação' para rastrear uma avaliação de produto em um site associado.",
"CampaignNameHelp": "Escolha um nome que descreva para que a campanha será criada e que distingua essa campanha de outras campanhas suas. Por exemplo 'Email-OfertasVerao' ou 'AdsPagos-OfertasVerao'.",
"CampaignPageUrlHelp": "A URL da página para a qual essa campanha direciona, por exemplo 'http://exemplo.org.br/oferta.html'.",
+ "CampaignPlacement": "Posicionamento da campanha",
+ "CampaignPlacementHelp": "Usado para descrever o posicionamento ou a posição da publicidade, por exemplo, um site inteiro, páginas específicas de um site, um bloco de anúncios individual posicionado em uma única página, um vídeo, um aplicativo para celular e muito mais.",
"CampaignSource": "Origem da campanha",
"CampaignSourceHelp": "Usada para rastrear a origem da campanha, como 'boletim informativo' para seu marketing de e-mail, 'subsidiária', ou o nome do site exibindo seus anúncios.",
"Campaigns": "Campanhas",
"CampaignsDocumentation": "Visitantes que vieram para o seu site como resultado de uma campanha. %1$s Veja o relatório %2$s para mais detalhes.",
"CampaignsReportDocumentation": "Este relatório mostra quais campanhas trouxeram visitantes para o seu site.",
+ "CampaignsSubcategoryHelp": "A seção Acompanhamento de Campanhas permite analisar as visitas associadas aos vários valores de acompanhamento vinculados às suas campanhas digitais. Ele pode revelar coisas como quanto tráfego suas campanhas estão gerando, quais criativos têm melhor desempenho, quão engajados estão os visitantes da campanha e se a campanha está resultando em vendas ou não.",
"ColumnCampaign": "Campanha",
"ColumnSearchEngine": "Motor de busca",
"ColumnSocial": "Rede social",
@@ -29,6 +37,8 @@
"DistinctSocialNetworks": "redes sociais distintas",
"DistinctWebsiteUrls": "URLs distintas de sites",
"DistinctWebsites": "sites distintos",
+ "EcommerceLogSubcategoryHelp1": "O registro de comércio eletrônico fornece dados granulares no nível da sessão para que você possa ver a sessão completa de cada usuário que fez uma compra ou abandonou o carrinho. Isso pode ajudar você a entender o que os usuários fazem antes e depois da compra para revelar oportunidades de otimização.",
+ "EcommerceLogSubcategoryHelp2": "Os dados desta página são atualizados em tempo real.",
"EvolutionDocumentation": "Esta é uma visão geral dos referenciadores que levaram visitantes ao seu site.",
"EvolutionDocumentationMoreInfo": "Para mais informações sobre os diferentes tipos de canal, veja a documentação da tabela %s.",
"GenerateUrl": "Gerar URL",
@@ -37,6 +47,7 @@
"KeywordsReportDocumentationNote": "Obs: Este relatório lista a maioria das palavras-chave como não definidas pois a maioria dos motores de busca não enviam a palavra-chave exata usada no motor de busca.",
"PercentOfX": "Percentual de %s",
"PluginDescription": "Relatórios de Dados de Referenciadores: Motores de Busca, Palavras-Chave, Websites, Campanhas, Mídias Sociais e Entrada Direta.",
+ "ProductSubcategoryHelp": "A visualização produtos pode ajudá-lo a identificar produtos e categorias com desempenho superior ou inferior para revelar tendências e oportunidades relacionadas à sua seleção de produtos e páginas da loja.",
"Referrer": "Referenciador",
"ReferrerName": "Nome do referenciador",
"ReferrerNames": "Nomes dos referenciadores",
@@ -44,12 +55,18 @@
"ReferrerURLs": "URLs de referenciadores",
"Referrers": "Referenciadores",
"ReferrersOverview": "Visão geral dos referenciadores",
+ "ReferrersOverviewDocumentation": "Esse relatório mostra quais canais de aquisição seus visitantes usaram para acessar seu site e o número de visitas pelas quais cada tipo de canal é responsável.",
+ "ReferrersOverviewSubcategoryHelp1": "A Visão geral da aquisição mostra a porcentagem de seu tráfego de todas as origens em um período selecionado.",
+ "ReferrersOverviewSubcategoryHelp2": "Você também pode clicar em um tipo de canal específico para exibi-lo no gráfico de evolução. Isso pode ajudá-lo a descobrir quais canais contribuem com mais tráfego para seu site, bem como quaisquer padrões potenciais ao longo do tempo. Por exemplo, um determinado canal pode ter um desempenho melhor nos finais de semana.",
"SearchEngines": "Motores de busca",
"SearchEnginesDocumentation": "Um visitante foi encaminhado para o seu site por um motor de busca. %1$s Ver o relatório %2$s para mais detalhes.",
"SearchEnginesReportDocumentation": "Este relatório mostra quais motores de busca encaminhou usuários ao seu site. %s Ao clicar em uma linha na tabela, você pode ver o que os usuários estavam procurando utilizando um motor de busca específico.",
+ "SearchEnginesSubcategoryHelp1": "Esta seção ajuda você a analisar a otimização e o desempenho do seu mecanismo de pesquisa. Você pode analisar suas palavras-chave mais populares com os relatórios de palavras-chave combinados ou ver quais palavras-chave têm bom desempenho em mecanismos de pesquisa específicos para uma análise e otimização mais direcionadas.",
+ "SearchEnginesSubcategoryHelp2": "Os usuários dos plugins %1$sMatomo Cloud%2$s e %3$sDesempenho de palavras-chave do mecanismo de pesquisa%4$s receberão os melhores resultados deste relatório.",
"Socials": "Redes sociais",
- "SocialsReportDocumentation": "Este relatório mostra quais as redes sociais levaram visitantes ao seu site. <br /> Ao clicar em uma linha na tabela, você pode ver de quais páginas os visitantes de redes sociais vieram para o seu site.",
- "SubmenuSearchEngines": "Motores de Busca & Palavras-Chave",
+ "SocialsReportDocumentation": "Este relatório mostra quais as redes sociais levaram visitantes ao seu site. <br> Ao clicar em uma linha na tabela, você pode ver de quais páginas os visitantes de redes sociais vieram para o seu site.",
+ "SocialsSubcategoryHelp": "Nesta tabela, você pode ver quais sites encaminharam os visitantes ao seu site.",
+ "SubmenuSearchEngines": "Motores de Busca e Palavras-Chave",
"SubmenuWebsitesOnly": "Sites",
"Type": "Tipo de canal",
"TypeCampaigns": "%s de campanhas",
@@ -72,6 +89,8 @@
"Websites": "Sites",
"WebsitesDocumentation": "O visitante seguiu um link em outro site que o levou para o seu site. %1$s Ver relatório %2$s para mais detalhes.",
"WebsitesReportDocumentation": "Nesta tabela, você pode ver quais sites encaminharam visitantes para o seu site. %s Ao clicar em uma linha na tabela, você pode ver quais os links de URLs que seu site estava.",
+ "WebsitesSubcategoryHelp1": "Nesta tabela, você pode ver quais sites encaminharam os visitantes ao seu site.",
+ "WebsitesSubcategoryHelp2": "Ao clicar em uma linha da tabela, você pode ver em quais URLs os links para seu site estavam.",
"WidgetExternalWebsites": "Sites referenciadores",
"WidgetGetAll": "Todos os canais",
"WidgetSocials": "Lista de redes sociais",
diff --git a/plugins/Referrers/templates/campaignBuilder.twig b/plugins/Referrers/templates/campaignBuilder.twig
index 0978d67226..5de62c96a1 100644
--- a/plugins/Referrers/templates/campaignBuilder.twig
+++ b/plugins/Referrers/templates/campaignBuilder.twig
@@ -1,4 +1,4 @@
<div class="widgetBody">
<p>{{ 'Referrers_URLCampaignBuilderIntro'|translate('<a href="https://matomo.org/docs/tracking-campaigns-url-builder/" rel="noreferrer noopener">', '</a>', '<a href="https://matomo.org/docs/tracking-campaigns/" rel="noreferrer noopener">', '</a>')|raw }}</p>
- <div matomo-campaign-builder has-extra-plugin="{{ hasExtraPlugin|e('html_attr') }}"></div>
+ <div vue-entry="Referrers.CampaignBuilder" has-extra-plugin="{{ hasExtraPlugin|json_encode|e('html_attr') }}"></div>
</div> \ No newline at end of file
diff --git a/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_nokeyword.png b/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_nokeyword.png
index 62c59dcf04..062cb27331 100644
--- a/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_nokeyword.png
+++ b/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_nokeyword.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:b0664444e8bde22e8277a0b6af1ee94074153501e64bd646c61cbd031fd84e29
-size 81375
+oid sha256:e4ee955746e9fc0a1a8d72a318e5d9f4576d03cac6f8dd6d0bb495b0eddf4654
+size 81420
diff --git a/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_reset.png b/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_reset.png
index 38b18b46aa..53cb29012d 100644
--- a/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_reset.png
+++ b/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_reset.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:dd27a0ea1baaac6119da8ddb37a49eee8383f2c4228d427adf810fafa8f55adf
-size 55076
+oid sha256:416be7ce3fa8e51a9eb390afd4fc9f54e5e7c4027c45114c7dab5fbbecb416bb
+size 55071
diff --git a/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_withkeyword.png b/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_withkeyword.png
index 3c97c6c65e..931379fd6c 100644
--- a/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_withkeyword.png
+++ b/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_generate_url_withkeyword.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:aacf7ee6d657454d0793cde5ae3a3bd9e300eb876f20167be25f7b699b3556fe
-size 82686
+oid sha256:1f5a1c0d3494711b43aea7fbd096364eb9e5480792d509bed99d0221b7ef5d1a
+size 82722
diff --git a/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_loaded.png b/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_loaded.png
index 46b075250d..d76f10fac4 100644
--- a/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_loaded.png
+++ b/plugins/Referrers/tests/UI/expected-screenshots/CampaignBuilder_loaded.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:2a594900bd42d3f57192001b48eb4614a41c11dccc3f1c85bcb212456cd6b9e1
-size 70782
+oid sha256:e6474751e5d8d0aaa6ae58fd87faa76a22d186f7e76be203475deeecd82405da
+size 70771
diff --git a/plugins/Referrers/vue/dist/Referrers.umd.js b/plugins/Referrers/vue/dist/Referrers.umd.js
new file mode 100644
index 0000000000..22570b2064
--- /dev/null
+++ b/plugins/Referrers/vue/dist/Referrers.umd.js
@@ -0,0 +1,433 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", , "CorePluginsAdmin"], factory);
+ else if(typeof exports === 'object')
+ exports["Referrers"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else
+ root["Referrers"] = factory(root["CoreHome"], root["Vue"], root["CorePluginsAdmin"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a5a2__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/Referrers/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "a5a2":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "CampaignBuilder", function() { return /* reexport */ CampaignBuilder; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.vue?vue&type=template&id=1eeeaa44
+
+var _hoisted_1 = {
+ class: "campaignUrlBuilder"
+};
+var _hoisted_2 = {
+ id: "urlCampaignBuilderResult"
+};
+var _hoisted_3 = ["textContent"];
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
+
+ var _directive_select_on_focus = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("select-on-focus");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("form", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "websiteurl",
+ title: "".concat(_ctx.translate('Actions_ColumnPageURL'), " (").concat(_ctx.translate('General_Required2'), ")"),
+ modelValue: _ctx.websiteUrl,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.websiteUrl = $event;
+ }),
+ "inline-help": _ctx.translate('Referrers_CampaignPageUrlHelp')
+ }, null, 8, ["title", "modelValue", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "campaignname",
+ title: "".concat(_ctx.translate('CoreAdminHome_JSTracking_CampaignNameParam'), " (").concat(_ctx.translate('General_Required2'), ")"),
+ modelValue: _ctx.campaignName,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.campaignName = $event;
+ }),
+ "inline-help": _ctx.translate('Referrers_CampaignNameHelp')
+ }, null, 8, ["title", "modelValue", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "campaignkeyword",
+ title: _ctx.translate('CoreAdminHome_JSTracking_CampaignKwdParam'),
+ modelValue: _ctx.campaignKeyword,
+ "onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
+ return _ctx.campaignKeyword = $event;
+ }),
+ "inline-help": "".concat(_ctx.translate('Goals_Optional'), " ").concat(_ctx.translate('Referrers_CampaignKeywordHelp'))
+ }, null, 8, ["title", "modelValue", "inline-help"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "campaignsource",
+ title: _ctx.translate('Referrers_CampaignSource'),
+ modelValue: _ctx.campaignSource,
+ "onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
+ return _ctx.campaignSource = $event;
+ }),
+ "inline-help": "".concat(_ctx.translate('Goals_Optional'), " ").concat(_ctx.translate('Referrers_CampaignSourceHelp'))
+ }, null, 8, ["title", "modelValue", "inline-help"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasExtraPlugin]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "campaignmedium",
+ title: _ctx.translate('Referrers_CampaignMedium'),
+ modelValue: _ctx.campaignMedium,
+ "onUpdate:modelValue": _cache[4] || (_cache[4] = function ($event) {
+ return _ctx.campaignMedium = $event;
+ }),
+ "inline-help": "".concat(_ctx.translate('Goals_Optional'), " ").concat(_ctx.translate('Referrers_CampaignMediumHelp'))
+ }, null, 8, ["title", "modelValue", "inline-help"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasExtraPlugin]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "campaigncontent",
+ title: _ctx.translate('Referrers_CampaignContent'),
+ modelValue: _ctx.campaignContent,
+ "onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
+ return _ctx.campaignContent = $event;
+ }),
+ "inline-help": "".concat(_ctx.translate('Goals_Optional'), " ").concat(_ctx.translate('Referrers_CampaignContentHelp'))
+ }, null, 8, ["title", "modelValue", "inline-help"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasExtraPlugin]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "campaignid",
+ title: _ctx.translate('Referrers_CampaignId'),
+ modelValue: _ctx.campaignId,
+ "onUpdate:modelValue": _cache[6] || (_cache[6] = function ($event) {
+ return _ctx.campaignId = $event;
+ }),
+ "inline-help": "".concat(_ctx.translate('Goals_Optional'), " ").concat(_ctx.translate('Referrers_CampaignIdHelp'))
+ }, null, 8, ["title", "modelValue", "inline-help"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasExtraPlugin]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "campaigngroup",
+ title: _ctx.translate('Referrers_CampaignGroup'),
+ modelValue: _ctx.campaignGroup,
+ "onUpdate:modelValue": _cache[7] || (_cache[7] = function ($event) {
+ return _ctx.campaignGroup = $event;
+ }),
+ "inline-help": "".concat(_ctx.translate('Goals_Optional'), " ").concat(_ctx.translate('Referrers_CampaignGroupHelp'))
+ }, null, 8, ["title", "modelValue", "inline-help"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasExtraPlugin]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "text",
+ name: "campaignplacement",
+ title: _ctx.translate('Referrers_CampaignPlacement'),
+ modelValue: _ctx.campaignPlacement,
+ "onUpdate:modelValue": _cache[8] || (_cache[8] = function ($event) {
+ return _ctx.campaignPlacement = $event;
+ }),
+ "inline-help": "".concat(_ctx.translate('Goals_Optional'), " ").concat(_ctx.translate('Referrers_CampaignPlacementHelp'))
+ }, null, 8, ["title", "modelValue", "inline-help"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasExtraPlugin]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ class: "generateCampaignUrl",
+ onConfirm: _cache[9] || (_cache[9] = function ($event) {
+ return _ctx.generateUrl();
+ }),
+ disabled: !_ctx.websiteUrl || !_ctx.campaignName,
+ value: _ctx.translate('Referrers_GenerateUrl'),
+ style: {
+ "margin-right": "3.5px"
+ }
+ }, null, 8, ["disabled", "value"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ class: "resetCampaignUrl",
+ onConfirm: _cache[10] || (_cache[10] = function ($event) {
+ return _ctx.reset();
+ }),
+ value: _ctx.translate('General_Clear')
+ }, null, 8, ["value"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Referrers_URLCampaignBuilderResult')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("pre", _hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("code", {
+ textContent: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.generatedUrl)
+ }, null, 8, _hoisted_3)], 512), [[_directive_select_on_focus, {}]])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.generatedUrl]])])]);
+}
+// CONCATENATED MODULE: ./plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.vue?vue&type=template&id=1eeeaa44
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.vue?vue&type=script&lang=ts
+
+
+
+var _window = window,
+ $ = _window.$;
+/* harmony default export */ var CampaignBuildervue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ hasExtraPlugin: Boolean
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"],
+ SaveButton: external_CorePluginsAdmin_["SaveButton"]
+ },
+ directives: {
+ SelectOnFocus: external_CoreHome_["SelectOnFocus"]
+ },
+ data: function data() {
+ return {
+ websiteUrl: '',
+ campaignName: '',
+ campaignKeyword: '',
+ campaignSource: '',
+ campaignMedium: '',
+ campaignId: '',
+ campaignContent: '',
+ campaignGroup: '',
+ campaignPlacement: '',
+ generatedUrl: ''
+ };
+ },
+ created: function created() {
+ this.reset();
+ },
+ watch: {
+ generatedUrl: function generatedUrl() {
+ $('#urlCampaignBuilderResult').effect('highlight', {}, 1500);
+ }
+ },
+ methods: {
+ reset: function reset() {
+ this.websiteUrl = '';
+ this.campaignName = '';
+ this.campaignKeyword = '';
+ this.campaignSource = '';
+ this.campaignMedium = '';
+ this.campaignId = '';
+ this.campaignContent = '';
+ this.campaignGroup = '';
+ this.campaignPlacement = '';
+ this.generatedUrl = '';
+ },
+ generateUrl: function generateUrl() {
+ var generatedUrl = String(this.websiteUrl);
+
+ if (generatedUrl.indexOf('http') !== 0) {
+ generatedUrl = "https://".concat(generatedUrl.trim());
+ }
+
+ var urlHashPos = generatedUrl.indexOf('#');
+ var urlHash = '';
+
+ if (urlHashPos >= 0) {
+ urlHash = generatedUrl.substr(urlHashPos);
+ generatedUrl = generatedUrl.substr(0, urlHashPos);
+ }
+
+ if (generatedUrl.indexOf('/', 10) < 0 && generatedUrl.indexOf('?') < 0) {
+ generatedUrl += '/';
+ }
+
+ var campaignName = encodeURIComponent(this.campaignName.trim());
+
+ if (generatedUrl.indexOf('?') > 0 || generatedUrl.indexOf('#') > 0) {
+ generatedUrl += '&';
+ } else {
+ generatedUrl += '?';
+ }
+
+ generatedUrl += "mtm_campaign=".concat(campaignName);
+
+ if (this.campaignKeyword) {
+ generatedUrl += "&mtm_kwd=".concat(encodeURIComponent(this.campaignKeyword.trim()));
+ }
+
+ if (this.campaignSource) {
+ generatedUrl += "&mtm_source=".concat(encodeURIComponent(this.campaignSource.trim()));
+ }
+
+ if (this.campaignMedium) {
+ generatedUrl += "&mtm_medium=".concat(encodeURIComponent(this.campaignMedium.trim()));
+ }
+
+ if (this.campaignContent) {
+ generatedUrl += "&mtm_content=".concat(encodeURIComponent(this.campaignContent.trim()));
+ }
+
+ if (this.campaignId) {
+ generatedUrl += "&mtm_cid=".concat(encodeURIComponent(this.campaignId.trim()));
+ }
+
+ if (this.campaignGroup) {
+ generatedUrl += "&mtm_group=".concat(encodeURIComponent(this.campaignGroup.trim()));
+ }
+
+ if (this.campaignPlacement) {
+ generatedUrl += "&mtm_placement=".concat(encodeURIComponent(this.campaignPlacement.trim()));
+ }
+
+ generatedUrl += urlHash;
+ this.generatedUrl = generatedUrl;
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.vue
+
+
+
+CampaignBuildervue_type_script_lang_ts.render = render
+
+/* harmony default export */ var CampaignBuilder = (CampaignBuildervue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+/* harmony default export */ var CampaignBuilder_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: CampaignBuilder,
+ scope: {
+ hasExtraPlugin: {
+ angularJsBind: '<'
+ }
+ },
+ directiveName: 'matomoCampaignBuilder'
+}));
+// CONCATENATED MODULE: ./plugins/Referrers/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=Referrers.umd.js.map \ No newline at end of file
diff --git a/plugins/Referrers/vue/dist/Referrers.umd.min.js b/plugins/Referrers/vue/dist/Referrers.umd.min.js
new file mode 100644
index 0000000000..bd11a69129
--- /dev/null
+++ b/plugins/Referrers/vue/dist/Referrers.umd.min.js
@@ -0,0 +1,8 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["Referrers"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["Referrers"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(a){if(t[a])return t[a].exports;var r=t[a]={i:a,l:!1,exports:{}};return e[a].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,a){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:a})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var a=Object.create(null);if(n.r(a),Object.defineProperty(a,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(a,r,function(t){return e[t]}.bind(null,r));return a},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/Referrers/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"CampaignBuilder",(function(){return f})),"undefined"!==typeof window){var a=window.document.currentScript,r=a&&a.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var i=n("19dc"),l=n("8bbf"),o={class:"campaignUrlBuilder"},c={id:"urlCampaignBuilderResult"},m=["textContent"];function u(e,t,n,a,r,i){var u=Object(l["resolveComponent"])("Field"),p=Object(l["resolveComponent"])("SaveButton"),d=Object(l["resolveDirective"])("select-on-focus");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",o,[Object(l["createElementVNode"])("form",null,[Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(u,{uicontrol:"text",name:"websiteurl",title:"".concat(e.translate("Actions_ColumnPageURL")," (").concat(e.translate("General_Required2"),")"),modelValue:e.websiteUrl,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.websiteUrl=t}),"inline-help":e.translate("Referrers_CampaignPageUrlHelp")},null,8,["title","modelValue","inline-help"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(u,{uicontrol:"text",name:"campaignname",title:"".concat(e.translate("CoreAdminHome_JSTracking_CampaignNameParam")," (").concat(e.translate("General_Required2"),")"),modelValue:e.campaignName,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.campaignName=t}),"inline-help":e.translate("Referrers_CampaignNameHelp")},null,8,["title","modelValue","inline-help"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(u,{uicontrol:"text",name:"campaignkeyword",title:e.translate("CoreAdminHome_JSTracking_CampaignKwdParam"),modelValue:e.campaignKeyword,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.campaignKeyword=t}),"inline-help":"".concat(e.translate("Goals_Optional")," ").concat(e.translate("Referrers_CampaignKeywordHelp"))},null,8,["title","modelValue","inline-help"])]),Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createVNode"])(u,{uicontrol:"text",name:"campaignsource",title:e.translate("Referrers_CampaignSource"),modelValue:e.campaignSource,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.campaignSource=t}),"inline-help":"".concat(e.translate("Goals_Optional")," ").concat(e.translate("Referrers_CampaignSourceHelp"))},null,8,["title","modelValue","inline-help"]),[[l["vShow"],e.hasExtraPlugin]])]),Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createVNode"])(u,{uicontrol:"text",name:"campaignmedium",title:e.translate("Referrers_CampaignMedium"),modelValue:e.campaignMedium,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.campaignMedium=t}),"inline-help":"".concat(e.translate("Goals_Optional")," ").concat(e.translate("Referrers_CampaignMediumHelp"))},null,8,["title","modelValue","inline-help"]),[[l["vShow"],e.hasExtraPlugin]])]),Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createVNode"])(u,{uicontrol:"text",name:"campaigncontent",title:e.translate("Referrers_CampaignContent"),modelValue:e.campaignContent,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.campaignContent=t}),"inline-help":"".concat(e.translate("Goals_Optional")," ").concat(e.translate("Referrers_CampaignContentHelp"))},null,8,["title","modelValue","inline-help"]),[[l["vShow"],e.hasExtraPlugin]])]),Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createVNode"])(u,{uicontrol:"text",name:"campaignid",title:e.translate("Referrers_CampaignId"),modelValue:e.campaignId,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.campaignId=t}),"inline-help":"".concat(e.translate("Goals_Optional")," ").concat(e.translate("Referrers_CampaignIdHelp"))},null,8,["title","modelValue","inline-help"]),[[l["vShow"],e.hasExtraPlugin]])]),Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createVNode"])(u,{uicontrol:"text",name:"campaigngroup",title:e.translate("Referrers_CampaignGroup"),modelValue:e.campaignGroup,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.campaignGroup=t}),"inline-help":"".concat(e.translate("Goals_Optional")," ").concat(e.translate("Referrers_CampaignGroupHelp"))},null,8,["title","modelValue","inline-help"]),[[l["vShow"],e.hasExtraPlugin]])]),Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createVNode"])(u,{uicontrol:"text",name:"campaignplacement",title:e.translate("Referrers_CampaignPlacement"),modelValue:e.campaignPlacement,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.campaignPlacement=t}),"inline-help":"".concat(e.translate("Goals_Optional")," ").concat(e.translate("Referrers_CampaignPlacementHelp"))},null,8,["title","modelValue","inline-help"]),[[l["vShow"],e.hasExtraPlugin]])]),Object(l["createVNode"])(p,{class:"generateCampaignUrl",onConfirm:t[9]||(t[9]=function(t){return e.generateUrl()}),disabled:!e.websiteUrl||!e.campaignName,value:e.translate("Referrers_GenerateUrl"),style:{"margin-right":"3.5px"}},null,8,["disabled","value"]),Object(l["createVNode"])(p,{class:"resetCampaignUrl",onConfirm:t[10]||(t[10]=function(t){return e.reset()}),value:e.translate("General_Clear")},null,8,["value"]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("h3",null,Object(l["toDisplayString"])(e.translate("Referrers_URLCampaignBuilderResult")),1),Object(l["withDirectives"])(Object(l["createElementVNode"])("pre",c,[Object(l["createElementVNode"])("code",{textContent:Object(l["toDisplayString"])(e.generatedUrl)},null,8,m)],512),[[d,{}]])],512),[[l["vShow"],e.generatedUrl]])])])}var p=n("a5a2"),d=window,s=d.$,g=Object(l["defineComponent"])({props:{hasExtraPlugin:Boolean},components:{Field:p["Field"],SaveButton:p["SaveButton"]},directives:{SelectOnFocus:i["SelectOnFocus"]},data:function(){return{websiteUrl:"",campaignName:"",campaignKeyword:"",campaignSource:"",campaignMedium:"",campaignId:"",campaignContent:"",campaignGroup:"",campaignPlacement:"",generatedUrl:""}},created:function(){this.reset()},watch:{generatedUrl:function(){s("#urlCampaignBuilderResult").effect("highlight",{},1500)}},methods:{reset:function(){this.websiteUrl="",this.campaignName="",this.campaignKeyword="",this.campaignSource="",this.campaignMedium="",this.campaignId="",this.campaignContent="",this.campaignGroup="",this.campaignPlacement="",this.generatedUrl=""},generateUrl:function(){var e=String(this.websiteUrl);0!==e.indexOf("http")&&(e="https://".concat(e.trim()));var t=e.indexOf("#"),n="";t>=0&&(n=e.substr(t),e=e.substr(0,t)),e.indexOf("/",10)<0&&e.indexOf("?")<0&&(e+="/");var a=encodeURIComponent(this.campaignName.trim());e.indexOf("?")>0||e.indexOf("#")>0?e+="&":e+="?",e+="mtm_campaign=".concat(a),this.campaignKeyword&&(e+="&mtm_kwd=".concat(encodeURIComponent(this.campaignKeyword.trim()))),this.campaignSource&&(e+="&mtm_source=".concat(encodeURIComponent(this.campaignSource.trim()))),this.campaignMedium&&(e+="&mtm_medium=".concat(encodeURIComponent(this.campaignMedium.trim()))),this.campaignContent&&(e+="&mtm_content=".concat(encodeURIComponent(this.campaignContent.trim()))),this.campaignId&&(e+="&mtm_cid=".concat(encodeURIComponent(this.campaignId.trim()))),this.campaignGroup&&(e+="&mtm_group=".concat(encodeURIComponent(this.campaignGroup.trim()))),this.campaignPlacement&&(e+="&mtm_placement=".concat(encodeURIComponent(this.campaignPlacement.trim()))),e+=n,this.generatedUrl=e}}});g.render=u;var f=g;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */Object(i["createAngularJsAdapter"])({component:f,scope:{hasExtraPlugin:{angularJsBind:"<"}},directiveName:"matomoCampaignBuilder"})}})}));
+//# sourceMappingURL=Referrers.umd.min.js.map \ No newline at end of file
diff --git a/plugins/Referrers/vue/dist/umd.metadata.json b/plugins/Referrers/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..dce4477a3c
--- /dev/null
+++ b/plugins/Referrers/vue/dist/umd.metadata.json
@@ -0,0 +1,6 @@
+{
+ "dependsOn": [
+ "CoreHome",
+ "CorePluginsAdmin"
+ ]
+} \ No newline at end of file
diff --git a/plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.adapter.ts b/plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.adapter.ts
new file mode 100644
index 0000000000..1bdcc587e7
--- /dev/null
+++ b/plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.adapter.ts
@@ -0,0 +1,19 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createAngularJsAdapter } from 'CoreHome';
+import CampaignBuilder from './CampaignBuilder.vue';
+
+export default createAngularJsAdapter({
+ component: CampaignBuilder,
+ scope: {
+ hasExtraPlugin: {
+ angularJsBind: '<',
+ },
+ },
+ directiveName: 'matomoCampaignBuilder',
+});
diff --git a/plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.less b/plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.less
index 353b8f71a3..353b8f71a3 100644
--- a/plugins/Referrers/angularjs/campaign-builder/campaign-builder.directive.less
+++ b/plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.less
diff --git a/plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.vue b/plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.vue
new file mode 100644
index 0000000000..21dabe9ca8
--- /dev/null
+++ b/plugins/Referrers/vue/src/CampaignBuilder/CampaignBuilder.vue
@@ -0,0 +1,268 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="campaignUrlBuilder">
+ <form>
+ <div>
+ <Field
+ uicontrol="text"
+ name="websiteurl"
+ :title="`${translate('Actions_ColumnPageURL')} (${translate('General_Required2')})`"
+ v-model="websiteUrl"
+ :inline-help="translate('Referrers_CampaignPageUrlHelp')"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="text"
+ name="campaignname"
+ :title="`${translate('CoreAdminHome_JSTracking_CampaignNameParam')} (${
+ translate('General_Required2')})`"
+ v-model="campaignName"
+ :inline-help="translate('Referrers_CampaignNameHelp')"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="text"
+ name="campaignkeyword"
+ :title="translate('CoreAdminHome_JSTracking_CampaignKwdParam')"
+ v-model="campaignKeyword"
+ :inline-help="`${translate('Goals_Optional')} ${
+ translate('Referrers_CampaignKeywordHelp')}`"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="text"
+ name="campaignsource"
+ :title="translate('Referrers_CampaignSource')"
+ v-show="hasExtraPlugin"
+ v-model="campaignSource"
+ :inline-help="`${translate('Goals_Optional')} ${
+ translate('Referrers_CampaignSourceHelp')}`"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="text"
+ name="campaignmedium"
+ :title="translate('Referrers_CampaignMedium')"
+ v-show="hasExtraPlugin"
+ v-model="campaignMedium"
+ :inline-help="`${translate('Goals_Optional')} ${
+ translate('Referrers_CampaignMediumHelp')}`"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="text"
+ name="campaigncontent"
+ :title="translate('Referrers_CampaignContent')"
+ v-show="hasExtraPlugin"
+ v-model="campaignContent"
+ :inline-help="`${translate('Goals_Optional')} ${
+ translate('Referrers_CampaignContentHelp')}`"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="text"
+ name="campaignid"
+ :title="translate('Referrers_CampaignId')"
+ v-show="hasExtraPlugin"
+ v-model="campaignId"
+ :inline-help="`${translate('Goals_Optional')} ${
+ translate('Referrers_CampaignIdHelp')}`"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="text"
+ name="campaigngroup"
+ :title="translate('Referrers_CampaignGroup')"
+ v-show="hasExtraPlugin"
+ v-model="campaignGroup"
+ :inline-help="`${translate('Goals_Optional')} ${
+ translate('Referrers_CampaignGroupHelp')}`"
+ >
+ </Field>
+ </div>
+ <div>
+ <Field
+ uicontrol="text"
+ name="campaignplacement"
+ :title="translate('Referrers_CampaignPlacement')"
+ v-show="hasExtraPlugin"
+ v-model="campaignPlacement"
+ :inline-help="`${translate('Goals_Optional')} ${
+ translate('Referrers_CampaignPlacementHelp')}`"
+ >
+ </Field>
+ </div>
+ <SaveButton
+ class="generateCampaignUrl"
+ @confirm="generateUrl()"
+ :disabled="!websiteUrl || !campaignName"
+ :value="translate('Referrers_GenerateUrl')"
+ style="margin-right:3.5px"
+ >
+ </SaveButton>
+ <SaveButton
+ class="resetCampaignUrl"
+ @confirm="reset()"
+ :value="translate('General_Clear')"
+ >
+ </SaveButton>
+ <div v-show="generatedUrl">
+ <h3>{{ translate('Referrers_URLCampaignBuilderResult') }}</h3>
+ <pre
+ id="urlCampaignBuilderResult"
+ v-select-on-focus="{}"
+ ><code v-text="generatedUrl" /></pre>
+ </div>
+ </form>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { SelectOnFocus } from 'CoreHome';
+import { Field, SaveButton } from 'CorePluginsAdmin';
+
+interface CampaignBuilderState {
+ websiteUrl: string;
+ campaignName: string;
+ campaignKeyword: string;
+ campaignSource: string;
+ campaignMedium: string;
+ campaignId: string;
+ campaignContent: string;
+ campaignGroup: string;
+ campaignPlacement: string;
+ generatedUrl: string;
+}
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ hasExtraPlugin: Boolean,
+ },
+ components: {
+ Field,
+ SaveButton,
+ },
+ directives: {
+ SelectOnFocus,
+ },
+ data(): CampaignBuilderState {
+ return {
+ websiteUrl: '',
+ campaignName: '',
+ campaignKeyword: '',
+ campaignSource: '',
+ campaignMedium: '',
+ campaignId: '',
+ campaignContent: '',
+ campaignGroup: '',
+ campaignPlacement: '',
+ generatedUrl: '',
+ };
+ },
+ created() {
+ this.reset();
+ },
+ watch: {
+ generatedUrl() {
+ $('#urlCampaignBuilderResult').effect('highlight', {}, 1500);
+ },
+ },
+ methods: {
+ reset() {
+ this.websiteUrl = '';
+ this.campaignName = '';
+ this.campaignKeyword = '';
+ this.campaignSource = '';
+ this.campaignMedium = '';
+ this.campaignId = '';
+ this.campaignContent = '';
+ this.campaignGroup = '';
+ this.campaignPlacement = '';
+ this.generatedUrl = '';
+ },
+ generateUrl() {
+ let generatedUrl = String(this.websiteUrl);
+
+ if (generatedUrl.indexOf('http') !== 0) {
+ generatedUrl = `https://${generatedUrl.trim()}`;
+ }
+
+ const urlHashPos = generatedUrl.indexOf('#');
+
+ let urlHash = '';
+ if (urlHashPos >= 0) {
+ urlHash = generatedUrl.substr(urlHashPos);
+ generatedUrl = generatedUrl.substr(0, urlHashPos);
+ }
+
+ if (generatedUrl.indexOf('/', 10) < 0 && generatedUrl.indexOf('?') < 0) {
+ generatedUrl += '/';
+ }
+
+ const campaignName = encodeURIComponent(this.campaignName.trim());
+
+ if (generatedUrl.indexOf('?') > 0 || generatedUrl.indexOf('#') > 0) {
+ generatedUrl += '&';
+ } else {
+ generatedUrl += '?';
+ }
+
+ generatedUrl += `mtm_campaign=${campaignName}`;
+
+ if (this.campaignKeyword) {
+ generatedUrl += `&mtm_kwd=${encodeURIComponent(this.campaignKeyword.trim())}`;
+ }
+
+ if (this.campaignSource) {
+ generatedUrl += `&mtm_source=${encodeURIComponent(this.campaignSource.trim())}`;
+ }
+
+ if (this.campaignMedium) {
+ generatedUrl += `&mtm_medium=${encodeURIComponent(this.campaignMedium.trim())}`;
+ }
+
+ if (this.campaignContent) {
+ generatedUrl += `&mtm_content=${encodeURIComponent(this.campaignContent.trim())}`;
+ }
+
+ if (this.campaignId) {
+ generatedUrl += `&mtm_cid=${encodeURIComponent(this.campaignId.trim())}`;
+ }
+
+ if (this.campaignGroup) {
+ generatedUrl += `&mtm_group=${encodeURIComponent(this.campaignGroup.trim())}`;
+ }
+
+ if (this.campaignPlacement) {
+ generatedUrl += `&mtm_placement=${encodeURIComponent(this.campaignPlacement.trim())}`;
+ }
+
+ generatedUrl += urlHash;
+
+ this.generatedUrl = generatedUrl;
+ },
+ },
+});
+</script>
diff --git a/plugins/Referrers/vue/src/index.ts b/plugins/Referrers/vue/src/index.ts
new file mode 100644
index 0000000000..a0b0ec1413
--- /dev/null
+++ b/plugins/Referrers/vue/src/index.ts
@@ -0,0 +1,10 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import './CampaignBuilder/CampaignBuilder.adapter';
+
+export { default as CampaignBuilder } from './CampaignBuilder/CampaignBuilder.vue';
diff --git a/plugins/Resolution/lang/ga.json b/plugins/Resolution/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Resolution/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Resolution/lang/id.json b/plugins/Resolution/lang/id.json
index 6b6fed79a3..53f53b7275 100644
--- a/plugins/Resolution/lang/id.json
+++ b/plugins/Resolution/lang/id.json
@@ -5,7 +5,7 @@
"Configurations": "Pengaturan",
"PluginDescription": "Melaporkan resolusi layar dari pengunjung Anda.",
"Resolutions": "Resolusi",
- "WidgetGlobalVisitors": "Pengaturan pengunjung umum",
+ "WidgetGlobalVisitors": "Konfigurasi Pengunjung",
"WidgetGlobalVisitorsDocumentation": "Laporan ini menunjukkan pengaturan paling umum yang pengunjung miliki. Subuah pengaturan terdiri atas sistem operasi, jenis peramban, dan resolusi layar.",
"WidgetResolutions": "Resolusi layar",
"WidgetResolutionsDocumentation": "Laporan ini menunjukkan resolusi layar yang digunakan pengunjung Anda saat melihat situs web Anda."
diff --git a/plugins/SEO/lang/ga.json b/plugins/SEO/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/SEO/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/SEO/lang/id.json b/plugins/SEO/lang/id.json
index ffb6ffb348..0c0a6eb869 100644
--- a/plugins/SEO/lang/id.json
+++ b/plugins/SEO/lang/id.json
@@ -2,8 +2,8 @@
"SEO": {
"AlexaRank": "Peringkat Alexa",
"Bing_IndexedPages": "Halaman terindeks Bing",
- "DomainAge": "Umut Ranah",
- "Google_IndexedPages": "Halaman terindeks Google",
+ "DomainAge": "Usia Domain",
+ "Google_IndexedPages": "Halaman yang terindeks Google",
"PluginDescription": "Plugin ini mengekstrak dan menampilkan metrik SEO: peringkat web Alexa, Google Pagerank, jumlah halaman yang terindeks, dan tautan balik dari situs web yang saat ini dipilih.",
"Rank": "Peringkat",
"SEORankingsFor": "Peringkat SEO untuk %s",
diff --git a/plugins/ScheduledReports/lang/ga.json b/plugins/ScheduledReports/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/ScheduledReports/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/ScheduledReports/lang/id.json b/plugins/ScheduledReports/lang/id.json
index 14278b48a4..249e63cb36 100644
--- a/plugins/ScheduledReports/lang/id.json
+++ b/plugins/ScheduledReports/lang/id.json
@@ -9,36 +9,56 @@
"CancelAndReturnToReports": "Batalkan dan %1$skembali ke daftar laporan%2$s",
"CreateAndScheduleReport": "Buat dan Jadwalkan laporan",
"CreateReport": "Buat Laporan",
- "CustomVisitorSegment": "pecahan pengunjung kustom:",
+ "CustomVisitorSegment": "Segmen Pengunjung Khusus:",
"DescriptionOnFirstPage": "Penjelasan laporan akan ditampilkan dalam halaman pertama laporan.",
"DisplayFormat_TablesOnly": "Hanya tampilkan Tabel (tanpa grafik)",
- "EmailHello": "Apa kabar?",
+ "EmailHello": "Halo,",
"EmailReports": "Laporan Surel",
"EmailSchedule": "Jadwal Surel",
"EvolutionGraph": "Tampilkan Grapik Riwayat untuk nilai %s teratas",
+ "EvolutionGraphsShowForEachInPeriod": "Grafik evolusi menunjukkan evolusi untuk %1$ssetiap hari%2$s di %3$s hari terakhir",
+ "EvolutionGraphsShowForPreviousN": "Grafik evolusi menunjukkan evolusi dari N %s sebelumnya",
"FrontPage": "Halaman Depan",
"MonthlyScheduleHelp": "Laporan bulanan: laporan akan dikirim satiap hari pertama tiap bulan.",
- "MustBeLoggedIn": "Anda harus masuk-log untuk membuat dan mengatur jadwal laporan.",
+ "MustBeLoggedIn": "Anda harus masuk untuk membuat dan mengatur jadwal laporan.",
"NoRecipients": "Laporan ini tidak memiliki penerima",
+ "NoSubscriptionFound": "Tidak ada langganan yang ditemukan. Mungkin Anda sudah berhenti berlangganan laporan tersebut atau sudah dihapus.",
+ "NoTokenProvided": "Tidak ada token yang disediakan di URL",
"Pagination": "Halaman %1$s dari %2$s",
+ "PersonalEmailReports": "Laporan Surel Pribadi",
"PiwikReports": "Laporan Matomo",
+ "PleaseFindAttachedFile": "Silakan temukan laporan %1$s Anda untuk %2$s di berkas terlampir.",
"PleaseFindBelow": "Silakan temukan di bawah laporan %1$s Anda untuk %2$s.",
+ "PluginDescription": "Buat laporan khusus dan jadwalkan untuk dikirim melalui surel setiap hari, mingguan, atau bulanan ke satu atau beberapa orang. Beberapa format laporan didukung (html, pdf, csv, gambar).",
"ReportFormat": "Bentuk Laporan",
"ReportHour": "Kirim laporan pada jam %s",
- "ReportIncludeNWebsites": "Laporan akan dimasukkan dalam matriks utama untuk setiap situs dengan sekurangnya satu kunjungan (dari situs %s saat ini yang tersedia).",
+ "ReportHourWithUTC": "pukul %s UTC",
+ "ReportIncludeNWebsites": "Laporan akan menyertakan metrik utama untuk semua situs web yang memiliki setidaknya satu kunjungan (dari situs web %s yang saat ini tersedia).",
+ "ReportPeriod": "Periode Laporan",
+ "ReportPeriodHelp": "Periode data yang dicakup oleh laporan ini. Secara asali ini sama dengan jadwal surel, jadi jika laporan dikirim setiap minggu, itu akan berisi informasi tentang minggu lalu.",
+ "ReportPeriodHelp2": "Anda dapat mengubah ini, namun, jika Anda ingin melihat informasi yang berbeda dan tetap mempertahankan jadwal surel. Misalnya, jika jadwal surel mingguan dan periode laporan adalah 'harian', Anda akan mendapatkan informasi hari terakhir, setiap minggu.",
"ReportSent": "Laporan telah dikirim",
- "ReportsIncluded": "Sertakan Statistik",
"ReportType": "Kirim laporan melalui",
- "Segment_Help": "Anda dapat menyeleksi pecahan kustom untuk diterapkan pada laporan surel ini. Anda dapat membuat dan menyunting pecahan kustom dalam panel kendali Anda %1$s(klik di sini untuk membuka)%2$s, lalu klik di kotak \"%3$s\", kemudian \"%4$s\".",
- "SegmentAppliedToReports": "Pecahan '%s' telah diterapkan pada laporan.",
+ "ReportUnsubscribe": "Berhenti berlangganan laporan",
+ "ReportUpdated": "Laporan telah diperbarui",
+ "ReportsIncluded": "Sertakan Statistik",
+ "SegmentAppliedToReports": "Segmen '%s' diterapkan ke laporan.",
+ "SegmentDeleted": "Segmen dihapus",
+ "Segment_Deletion_Error": "Segmen ini tidak dapat dihapus atau dibuat tidak terlihat oleh pengguna lain karena digunakan untuk membuat laporan surel %s. Harap coba lagi setelah menghapus segmen ini dari laporan ini.",
+ "Segment_Help": "Anda dapat memilih segmen khusus yang ada untuk diterapkan ke data dalam laporan surel ini. Anda dapat membuat dan mengedit segmen khusus di dasbor %1$s(klik di sini untuk membuka)%2$s, lalu klik kotak \"%3$s\", lalu \"%4$s\".",
"SendReportNow": "Kirim Laporan sekarang",
"SendReportTo": "Kirim laporan ke",
+ "SentFromX": "Dikirim dari %s.",
"SentToMe": "Kirimi saya",
+ "SuccessfullyUnsubscribed": "Anda telah berhasil berhenti berlangganan laporan %1$s.",
"TableOfContent": "Daftar Laporan",
"ThereIsNoReportToManage": "Tidak ada laporan yang dapat diatur untuk situs %s",
"TopLinkTooltip": "Buat Laporan Surel agar statistik Matomo dikirim ke surel Anda atau alamat pelanggan Anda secara otomatis!",
"TopOfReport": "Kembali ke atas",
+ "Unsubscribe": "Berhenti berlangganan",
+ "UnsubscribeFooter": "Untuk berhenti berlangganan laporan ini, silakan ikuti tautan ini: %1$s",
+ "UnsubscribeReportConfirmation": "Yakin ingin berhenti berlangganan laporan %1$s?",
"UpdateReport": "Perbarui Laporan",
- "WeeklyScheduleHelp": "Laporan mingguan: laporan akan dikirim setiap hari Senin pertama tiap minggu."
+ "WeeklyScheduleHelp": "Laporan mingguan: laporan akan dikirim setiap hari Senin pada setiap minggu."
}
-} \ No newline at end of file
+}
diff --git a/plugins/SegmentEditor/SegmentEditor.php b/plugins/SegmentEditor/SegmentEditor.php
index c22ba33bda..e3c9e16ea9 100644
--- a/plugins/SegmentEditor/SegmentEditor.php
+++ b/plugins/SegmentEditor/SegmentEditor.php
@@ -294,15 +294,12 @@ class SegmentEditor extends \Piwik\Plugin
public function getJsFiles(&$jsFiles)
{
$jsFiles[] = "plugins/SegmentEditor/javascripts/Segmentation.js";
- $jsFiles[] = "plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator-model.js";
- $jsFiles[] = "plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.controller.js";
- $jsFiles[] = "plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.directive.js";
}
public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = "plugins/SegmentEditor/stylesheets/segmentation.less";
- $stylesheets[] = "plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.directive.less";
+ $stylesheets[] = "plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.less";
}
/**
diff --git a/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.controller.js b/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.controller.js
index b3bcca5e68..1726d44c38 100644
--- a/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.controller.js
+++ b/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.controller.js
@@ -9,71 +9,8 @@
SegmentGeneratorController.$inject = ['$scope', 'piwik', 'piwikApi', 'segmentGeneratorModel', '$filter', '$timeout'];
- var findAndExplodeByMatch = function(metric){
- var matches = ["==" , "!=" , "<=", ">=", "=@" , "!@","<",">", "=^", "=$"];
- var newMetric = {};
- var minPos = metric.length;
- var match, index;
- var singleChar = false;
-
- for (var key=0; key < matches.length; key++) {
- match = matches[key];
- index = metric.indexOf(match);
- if(index !== -1){
- if(index < minPos){
- minPos = index;
- if(match.length === 1){
- singleChar = true;
- }
- }
- }
- }
-
- if (minPos < metric.length) {
- // sth found - explode
- if(singleChar == true){
- newMetric.segment = metric.substr(0,minPos);
- newMetric.matches = metric.substr(minPos,1);
- newMetric.value = decodeURIComponent(metric.substr(minPos+1));
- } else {
- newMetric.segment = metric.substr(0,minPos);
- newMetric.matches = metric.substr(minPos,2);
- newMetric.value = decodeURIComponent(metric.substr(minPos+2));
- }
- // if value is only "" -> change to empty string
- if(newMetric.value === '""')
- {
- newMetric.value = "";
- }
- }
-
- try {
- // Decode again to deal with double-encoded segments in database
- newMetric.value = decodeURIComponent(newMetric.value);
- } catch (e) {
- // Expected if the segment was not double-encoded
- }
- return newMetric;
- };
- function generateUniqueId() {
- var id = '';
- var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
-
- for (var i = 1; i <= 10; i++) {
- id += chars.charAt(Math.floor(Math.random() * chars.length));
- }
-
- return id;
- }
-
- function stripTags(text) {
- if (text) {
- text = ('' + text).replace(/(<([^>]+)>)/ig,"");
- }
- return text;
- }
function SegmentGeneratorController($scope, piwik, piwikApi, segmentGeneratorModel, $filter, $timeout) {
var translate = $filter('translate');
@@ -149,13 +86,13 @@
orCondition.isLoading = true;
this.updateSegmentDefinition();
-
+
var inputElement = $('.orCondId' + orCondition.id + " .metricValueBlock input");
inputElement.autocomplete({
source: [],
minLength: 0
});
-
+
var resolved = false;
var promise = piwikApi.fetch({
@@ -230,51 +167,6 @@
};
this.getSegmentString = function () {
- var segmentStr = '';
-
- angular.forEach(this.conditions, function (conditions) {
- var subSegmentStr = '';
-
- angular.forEach(conditions.orConditions, function (orCondition){
- if (subSegmentStr !== ''){
- subSegmentStr += ","; // OR operator
- }
-
- // one encode for urldecode on value, one encode for urldecode on condition
- subSegmentStr += orCondition.segment + orCondition.matches + encodeURIComponent(encodeURIComponent(orCondition.value));
- });
-
- if (segmentStr !== '') {
- segmentStr += ";"; // add AND operator between segment blocks
- }
-
- segmentStr += subSegmentStr;
- });
-
- return segmentStr;
- };
-
- this.setSegmentString = function (segmentStr) {
- var orCondition, condition;
-
- this.conditions = [];
-
- if (!segmentStr) {
- return;
- }
-
- var blocks = segmentStr.split(';');
-
- for (var key = 0; key < blocks.length; key++) {
- condition = {orConditions: []};
- this.addAndCondition(condition);
-
- blocks[key] = blocks[key].split(',');
- for (var innerkey = 0; innerkey < blocks[key].length; innerkey++) {
- orCondition = findAndExplodeByMatch(blocks[key][innerkey]);
- this.addOrCondition(condition, orCondition);
- }
- }
};
this.updateSegmentDefinition = function () {
diff --git a/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator-model.js b/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.model.js
index 5db3eeab64..5db3eeab64 100644
--- a/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator-model.js
+++ b/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.model.js
diff --git a/plugins/SegmentEditor/lang/de.json b/plugins/SegmentEditor/lang/de.json
index 5a5d38f679..7773476fb0 100644
--- a/plugins/SegmentEditor/lang/de.json
+++ b/plugins/SegmentEditor/lang/de.json
@@ -28,7 +28,7 @@
"OperatorAND": "UND",
"OperatorOR": "ODER",
"PluginDescription": "Ein Segment ist eine Sammlung an Kriterien, um nur einen Teil einer grossen Menge von Besuchen herauszufiltern. In dem Sie Segmente verwenden, können Sie Ihren Berichten praktisch beliebig skalierbar Kontext hinzufügen.",
- "SaveAndApply": "\"Speichern &amp; Übernehmen\"",
+ "SaveAndApply": "Speichern &amp; Übernehmen",
"SegmentDisplayedAllWebsites": "alle Websites",
"SegmentDisplayedThisWebsiteOnly": "nur diese Website",
"SegmentIsDisplayedForWebsite": "und wird berechnet für",
diff --git a/plugins/SegmentEditor/lang/ga.json b/plugins/SegmentEditor/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/SegmentEditor/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/SegmentEditor/tests/UI/SegmentSelectorEditor_spec.js b/plugins/SegmentEditor/tests/UI/SegmentSelectorEditor_spec.js
index cb183b952c..e5a05fcf4a 100644
--- a/plugins/SegmentEditor/tests/UI/SegmentSelectorEditor_spec.js
+++ b/plugins/SegmentEditor/tests/UI/SegmentSelectorEditor_spec.js
@@ -114,14 +114,16 @@ describe("SegmentSelectorEditorTest", function () {
it("should save a new segment and add it to the segment list when the form is filled out and the save button is clicked", async function() {
await page.evaluate(function () {
- $('.metricValueBlock input').each(function (index) {
- $(this).val('value ' + index).change();
+ $('.metricValueBlock input').each(function (index, elem) {
+ $(elem).val('value ' + index).change();
});
});
await page.type('input.edit_segment_name', 'new segment');
await page.click('.segmentRow0 .segment-or'); // click somewhere else to save new name
+ await page.waitForTimeout(200);
+
await page.evaluate(function () {
$('button.saveAndApply').click();
});
@@ -164,8 +166,10 @@ describe("SegmentSelectorEditorTest", function () {
});
});
+ await page.waitFor(200);
+
await page.evaluate(function () {
- $('button.saveAndApply').click();
+ $('button.saveAndApply').click();
});
await page.waitForSelector('.modal.open');
await page.waitForTimeout(500); // animation to show confirm
@@ -289,6 +293,9 @@ describe("SegmentSelectorEditorTest", function () {
var complexValue = 's#2&#--_*+?# #5"\'&<>.22,3';
$('.segmentRow1 .metricValueBlock input').val(complexValue).change();
});
+
+ await page.waitFor(200);
+
await page.evaluate(function () {
$('button.saveAndApply').click();
});
@@ -331,6 +338,8 @@ describe("SegmentSelectorEditorTest", function () {
console.log(dialog.message());
});
+ await page.waitFor(200);
+
await page.evaluate(function () {
$('button.saveAndApply').click();
});
diff --git a/plugins/SegmentEditor/vue/dist/SegmentEditor.umd.js b/plugins/SegmentEditor/vue/dist/SegmentEditor.umd.js
new file mode 100644
index 0000000000..25b9c0f751
--- /dev/null
+++ b/plugins/SegmentEditor/vue/dist/SegmentEditor.umd.js
@@ -0,0 +1,957 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", , "CorePluginsAdmin"], factory);
+ else if(typeof exports === 'object')
+ exports["SegmentEditor"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else
+ root["SegmentEditor"] = factory(root["CoreHome"], root["Vue"], root["CorePluginsAdmin"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a5a2__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/SegmentEditor/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "a5a2":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "SegmentGeneratorStore", function() { return /* reexport */ SegmentGenerator_store; });
+__webpack_require__.d(__webpack_exports__, "SegmentGenerator", function() { return /* reexport */ SegmentGenerator; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue?vue&type=template&id=3e4a5f7a
+
+var _hoisted_1 = {
+ class: "segment-generator",
+ ref: "root"
+};
+var _hoisted_2 = {
+ class: "segment-rows"
+};
+var _hoisted_3 = {
+ class: "segment-row"
+};
+var _hoisted_4 = ["onClick"];
+var _hoisted_5 = {
+ href: "#",
+ class: "segment-loading"
+};
+var _hoisted_6 = {
+ class: "segment-row-inputs valign-wrapper"
+};
+var _hoisted_7 = {
+ class: "segment-input metricListBlock valign-wrapper"
+};
+var _hoisted_8 = {
+ style: {
+ "width": "100%"
+ }
+};
+var _hoisted_9 = {
+ class: "segment-input metricMatchBlock valign-wrapper"
+};
+var _hoisted_10 = {
+ style: {
+ "display": "inline-block"
+ }
+};
+var _hoisted_11 = {
+ class: "segment-input metricValueBlock valign-wrapper"
+};
+var _hoisted_12 = {
+ class: "form-group row",
+ style: {
+ "width": "100%"
+ }
+};
+var _hoisted_13 = {
+ class: "input-field col s12"
+};
+
+var _hoisted_14 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ role: "status",
+ "aria-live": "polite",
+ class: "ui-helper-hidden-accessible"
+}, null, -1);
+
+var _hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ class: "clear"
+}, null, -1);
+
+var _hoisted_16 = {
+ class: "segment-or"
+};
+var _hoisted_17 = ["onClick"];
+var _hoisted_18 = ["innerHTML"];
+var _hoisted_19 = {
+ class: "segment-and"
+};
+var _hoisted_20 = ["innerHTML"];
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _this = this;
+
+ var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
+
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_ValueInput = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ValueInput");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ loading: _ctx.isLoading
+ }, null, 8, ["loading"]), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.conditions, function (condition, conditionIndex) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])("segmentRow".concat(conditionIndex)),
+ key: conditionIndex
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(condition.orConditions, function (orCondition, orConditionIndex) {
+ var _ctx$segments$orCondi, _ctx$segments$orCondi2;
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])("orCondId".concat(orCondition.id)),
+ key: orConditionIndex
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ class: "segment-close",
+ onClick: function onClick($event) {
+ return _ctx.removeOrCondition(condition, orCondition);
+ }
+ }, null, 8, _hoisted_4), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_5, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.conditionValuesLoading[orCondition.id]]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_6, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "expandable-select",
+ name: "segments",
+ "model-value": orCondition.segment,
+ "onUpdate:modelValue": function onUpdateModelValue($event) {
+ orCondition.segment = $event;
+
+ _ctx.updateAutocomplete(orCondition);
+
+ _ctx.computeSegmentDefinition();
+ },
+ title: (_ctx$segments$orCondi = _ctx.segments[orCondition.segment]) === null || _ctx$segments$orCondi === void 0 ? void 0 : _ctx$segments$orCondi.name,
+ "full-width": true,
+ options: _ctx.segmentList
+ }, null, 8, ["model-value", "onUpdate:modelValue", "title", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "matchType",
+ "model-value": orCondition.matches,
+ "onUpdate:modelValue": function onUpdateModelValue($event) {
+ orCondition.matches = $event;
+
+ _ctx.computeSegmentDefinition();
+ },
+ "full-width": true,
+ options: _ctx.matches[(_ctx$segments$orCondi2 = _ctx.segments[orCondition.segment]) === null || _ctx$segments$orCondi2 === void 0 ? void 0 : _ctx$segments$orCondi2.type]
+ }, null, 8, ["model-value", "onUpdate:modelValue", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_13, [_hoisted_14, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ValueInput, {
+ or: orCondition,
+ onUpdate: function onUpdate($event) {
+ orCondition.value = $event; // deep watch doesn't catch this change
+
+ _this.computeSegmentDefinition();
+ }
+ }, null, 8, ["or", "onUpdate"])])])]), _hoisted_15])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SegmentEditor_OperatorOR')), 1)], 2);
+ }), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ class: "segment-add-or",
+ onClick: function onClick($event) {
+ return _ctx.addNewOrCondition(condition);
+ }
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ innerHTML: _ctx.$sanitize(_ctx.addNewOrConditionLinkText)
+ }, null, 8, _hoisted_18)])], 8, _hoisted_17)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SegmentEditor_OperatorAND')), 1)], 2);
+ }), 128)), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ class: "segment-add-row initial",
+ onClick: _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.addNewAndCondition();
+ })
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ innerHTML: _ctx.$sanitize(_ctx.addNewAndConditionLinkText)
+ }, null, 8, _hoisted_20)])])], 512);
+}
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue?vue&type=template&id=3e4a5f7a
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.store.ts
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+var SegmentGenerator_store_SegmentGeneratorStore = /*#__PURE__*/function () {
+ function SegmentGeneratorStore() {
+ var _this = this;
+
+ _classCallCheck(this, SegmentGeneratorStore);
+
+ _defineProperty(this, "privateState", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["reactive"])({
+ isLoading: false,
+ segments: []
+ }));
+
+ _defineProperty(this, "state", Object(external_commonjs_vue_commonjs2_vue_root_Vue_["computed"])(function () {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["readonly"])(_this.privateState);
+ }));
+
+ _defineProperty(this, "loadSegmentsAbort", void 0);
+
+ _defineProperty(this, "loadSegmentsPromise", void 0);
+
+ _defineProperty(this, "fetchedSiteId", void 0);
+ }
+
+ _createClass(SegmentGeneratorStore, [{
+ key: "loadSegments",
+ value: function loadSegments(siteId, visitSegmentsOnly) {
+ var _this2 = this;
+
+ if (this.loadSegmentsAbort) {
+ this.loadSegmentsAbort.abort();
+ this.loadSegmentsAbort = undefined;
+ }
+
+ this.privateState.isLoading = true;
+
+ if (this.fetchedSiteId !== siteId) {
+ this.loadSegmentsAbort = undefined;
+ this.fetchedSiteId = siteId;
+ }
+
+ if (!this.loadSegmentsPromise) {
+ var idSites = undefined;
+ var idSite = undefined;
+
+ if (siteId === 'all' || !siteId) {
+ idSites = 'all';
+ idSite = 'all';
+ } else if (siteId) {
+ idSites = siteId;
+ idSite = siteId;
+ }
+
+ this.loadSegmentsAbort = new AbortController();
+ this.loadSegmentsPromise = external_CoreHome_["AjaxHelper"].fetch({
+ method: 'API.getSegmentsMetadata',
+ filter_limit: '-1',
+ _hideImplementationData: 0,
+ idSites: idSites,
+ idSite: idSite
+ });
+ }
+
+ return this.loadSegmentsPromise.then(function (response) {
+ _this2.privateState.isLoading = false;
+
+ if (response) {
+ if (visitSegmentsOnly) {
+ _this2.privateState.segments = response.filter(function (s) {
+ return s.sqlSegment && s.sqlSegment.match(/log_visit\./);
+ });
+ } else {
+ _this2.privateState.segments = response;
+ }
+ }
+
+ return _this2.state.value.segments;
+ }).finally(function () {
+ _this2.privateState.isLoading = false;
+ });
+ }
+ }]);
+
+ return SegmentGeneratorStore;
+}();
+
+/* harmony default export */ var SegmentGenerator_store = (new SegmentGenerator_store_SegmentGeneratorStore());
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue?vue&type=template&id=17b64c0b
+
+var ValueInputvue_type_template_id_17b64c0b_hoisted_1 = ["placeholder", "title", "value"];
+function ValueInputvue_type_template_id_17b64c0b_render(_ctx, _cache, $props, $setup, $data, $options) {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("input", {
+ placeholder: _ctx.translate('General_Value'),
+ type: "text",
+ class: "autocomplete",
+ title: _ctx.translate('General_Value'),
+ autocomplete: "off",
+ value: _ctx.or.value,
+ onKeydown: _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.onKeydownOrConditionValue($event);
+ }),
+ onChange: _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.onKeydownOrConditionValue($event);
+ })
+ }, null, 40, ValueInputvue_type_template_id_17b64c0b_hoisted_1);
+}
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue?vue&type=template&id=17b64c0b
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue?vue&type=script&lang=ts
+
+
+/* harmony default export */ var ValueInputvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ or: Object
+ },
+ created: function created() {
+ this.onKeydownOrConditionValue = Object(external_CoreHome_["debounce"])(this.onKeydownOrConditionValue, 50);
+ },
+ emits: ['update'],
+ methods: {
+ onKeydownOrConditionValue: function onKeydownOrConditionValue(event) {
+ this.$emit('update', event.target.value);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue
+
+
+
+ValueInputvue_type_script_lang_ts.render = ValueInputvue_type_template_id_17b64c0b_render
+
+/* harmony default export */ var ValueInput = (ValueInputvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue?vue&type=script&lang=ts
+
+
+
+
+
+
+function initialMatches() {
+ return {
+ metric: [{
+ key: '==',
+ value: Object(external_CoreHome_["translate"])('General_OperationEquals')
+ }, {
+ key: '!=',
+ value: Object(external_CoreHome_["translate"])('General_OperationNotEquals')
+ }, {
+ key: '<=',
+ value: Object(external_CoreHome_["translate"])('General_OperationAtMost')
+ }, {
+ key: '>=',
+ value: Object(external_CoreHome_["translate"])('General_OperationAtLeast')
+ }, {
+ key: '<',
+ value: Object(external_CoreHome_["translate"])('General_OperationLessThan')
+ }, {
+ key: '>',
+ value: Object(external_CoreHome_["translate"])('General_OperationGreaterThan')
+ }],
+ dimension: [{
+ key: '==',
+ value: Object(external_CoreHome_["translate"])('General_OperationIs')
+ }, {
+ key: '!=',
+ value: Object(external_CoreHome_["translate"])('General_OperationIsNot')
+ }, {
+ key: '=@',
+ value: Object(external_CoreHome_["translate"])('General_OperationContains')
+ }, {
+ key: '!@',
+ value: Object(external_CoreHome_["translate"])('General_OperationDoesNotContain')
+ }, {
+ key: '=^',
+ value: Object(external_CoreHome_["translate"])('General_OperationStartsWith')
+ }, {
+ key: '=$',
+ value: Object(external_CoreHome_["translate"])('General_OperationEndsWith')
+ }]
+ };
+}
+
+function generateUniqueId() {
+ var id = '';
+ var chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
+
+ for (var i = 1; i <= 10; i += 1) {
+ id += chars.charAt(Math.floor(Math.random() * chars.length));
+ }
+
+ return id;
+}
+
+function findAndExplodeByMatch(metric) {
+ var matches = ['==', '!=', '<=', '>=', '=@', '!@', '<', '>', '=^', '=$'];
+ var newMetric = {};
+ var minPos = metric.length;
+ var match;
+ var index;
+ var singleChar = false;
+
+ for (var key = 0; key < matches.length; key += 1) {
+ match = matches[key];
+ index = metric.indexOf(match);
+
+ if (index !== -1) {
+ if (index < minPos) {
+ minPos = index;
+
+ if (match.length === 1) {
+ singleChar = true;
+ }
+ }
+ }
+ }
+
+ if (minPos < metric.length) {
+ // sth found - explode
+ if (singleChar === true) {
+ newMetric.segment = metric.substr(0, minPos);
+ newMetric.matches = metric.substr(minPos, 1);
+ newMetric.value = decodeURIComponent(metric.substr(minPos + 1));
+ } else {
+ newMetric.segment = metric.substr(0, minPos);
+ newMetric.matches = metric.substr(minPos, 2);
+ newMetric.value = decodeURIComponent(metric.substr(minPos + 2));
+ } // if value is only '' -> change to empty string
+
+
+ if (newMetric.value === '""') {
+ newMetric.value = '';
+ }
+ }
+
+ try {
+ // Decode again to deal with double-encoded segments in database
+ newMetric.value = decodeURIComponent(newMetric.value);
+ } catch (e) {// Expected if the segment was not double-encoded
+ }
+
+ return newMetric;
+}
+
+function stripTags(text) {
+ return text ? "".concat(text).replace(/(<([^>]+)>)/ig, '') : text;
+}
+
+var _window = window,
+ $ = _window.$;
+/* harmony default export */ var SegmentGeneratorvue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ addInitialCondition: Boolean,
+ visitSegmentsOnly: Boolean,
+ idsite: [String, Number],
+ modelValue: {
+ type: String,
+ default: ''
+ }
+ },
+ components: {
+ ActivityIndicator: external_CoreHome_["ActivityIndicator"],
+ Field: external_CorePluginsAdmin_["Field"],
+ ValueInput: ValueInput
+ },
+ data: function data() {
+ return {
+ conditions: [],
+ queriedSegments: [],
+ matches: initialMatches(),
+ conditionValuesLoading: {},
+ segmentDefinition: ''
+ };
+ },
+ emits: ['update:modelValue'],
+ watch: {
+ modelValue: function modelValue(newVal) {
+ if (newVal !== this.segmentDefinition) {
+ this.setSegmentString(newVal);
+ }
+ },
+ conditions: {
+ deep: true,
+ handler: function handler() {
+ this.computeSegmentDefinition();
+ }
+ },
+ segmentDefinition: function segmentDefinition(newVal) {
+ if (newVal !== this.modelValue) {
+ this.$emit('update:modelValue', newVal);
+ }
+ },
+ idsite: function idsite(newVal) {
+ this.reloadSegments(newVal, this.visitSegmentsOnly);
+ }
+ },
+ created: function created() {
+ this.matches[''] = this.matches.dimension;
+ this.setSegmentString(this.modelValue);
+ this.segmentDefinition = this.modelValue;
+ this.reloadSegments(this.idsite, this.visitSegmentsOnly);
+ },
+ methods: {
+ reloadSegments: function reloadSegments(idsite, visitSegmentsOnly) {
+ var _this = this;
+
+ SegmentGenerator_store.loadSegments(idsite, visitSegmentsOnly).then(function (segments) {
+ _this.queriedSegments = segments.map(function (s) {
+ return Object.assign(Object.assign({}, s), {}, {
+ category: s.category || 'Others'
+ });
+ });
+
+ if (_this.addInitialCondition && _this.conditions.length === 0) {
+ _this.addNewAndCondition();
+ }
+ });
+ },
+ addAndCondition: function addAndCondition(condition) {
+ this.conditions.push(condition);
+ },
+ addNewOrCondition: function addNewOrCondition(condition) {
+ var orCondition = {
+ segment: this.firstSegment,
+ matches: this.firstMatch,
+ value: ''
+ };
+ this.addOrCondition(condition, orCondition);
+ },
+ addOrCondition: function addOrCondition(condition, orCondition) {
+ var _this2 = this;
+
+ this.conditionValuesLoading[orCondition.id] = false;
+ orCondition.id = generateUniqueId();
+ condition.orConditions.push(orCondition);
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () {
+ _this2.updateAutocomplete(orCondition);
+ });
+ },
+ updateAutocomplete: function updateAutocomplete(orCondition) {
+ var _this3 = this;
+
+ this.conditionValuesLoading[orCondition.id] = true;
+ $(".orCondId".concat(orCondition.id, " .metricValueBlock input"), this.$refs.root).autocomplete({
+ source: [],
+ minLength: 0
+ });
+ var abortController = new AbortController();
+ var resolved = false;
+ external_CoreHome_["AjaxHelper"].fetch({
+ module: 'API',
+ format: 'json',
+ method: 'API.getSuggestedValuesForSegment',
+ segmentName: orCondition.segment
+ }).then(function (response) {
+ _this3.conditionValuesLoading[orCondition.id] = false;
+ resolved = true;
+ var inputElement = $(".orCondId".concat(orCondition.id, " .metricValueBlock input")).autocomplete({
+ source: response,
+ minLength: 0,
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ select: function select(event, ui) {
+ event.preventDefault();
+ orCondition.value = ui.item.value;
+
+ _this3.computeSegmentDefinition(); // deep watch doesn't catch this change
+
+
+ _this3.$forceUpdate();
+ }
+ }).off('click').click(function () {
+ $(inputElement).autocomplete('search', orCondition.value);
+ });
+ }).catch(function () {
+ resolved = true;
+ _this3.conditionValuesLoading[orCondition.id] = false;
+ $(".orCondId".concat(orCondition.id, " .metricValueBlock input")).autocomplete({
+ source: [],
+ minLength: 0
+ }).autocomplete('search', orCondition.value);
+ });
+ setTimeout(function () {
+ if (!resolved) {
+ abortController.abort();
+ }
+ }, 20000);
+ },
+ removeOrCondition: function removeOrCondition(condition, orCondition) {
+ var index = condition.orConditions.indexOf(orCondition);
+
+ if (index > -1) {
+ condition.orConditions.splice(index, 1);
+ }
+
+ if (condition.orConditions.length === 0) {
+ var andCondIndex = this.conditions.indexOf(condition);
+
+ if (index > -1) {
+ this.conditions.splice(andCondIndex, 1);
+ }
+ }
+ },
+ setSegmentString: function setSegmentString(segmentStr) {
+ var _this4 = this;
+
+ this.conditions = [];
+
+ if (!segmentStr) {
+ return;
+ }
+
+ var blocks = segmentStr.split(';').map(function (b) {
+ return b.split(',');
+ });
+ this.conditions = blocks.map(function (block) {
+ var condition = {
+ orConditions: []
+ };
+ block.forEach(function (innerBlock) {
+ var orCondition = findAndExplodeByMatch(innerBlock);
+
+ _this4.addOrCondition(condition, orCondition);
+ });
+ return condition;
+ });
+ },
+ addNewAndCondition: function addNewAndCondition() {
+ var condition = {
+ orConditions: []
+ };
+ this.addAndCondition(condition);
+ this.addNewOrCondition(condition);
+ return condition;
+ },
+ // NOTE: can't use a computed property since we need to recompute on changes inside the
+ // structure. don't have to if we don't do in-place changes, but with nested structures,
+ // that's complicated.
+ computeSegmentDefinition: function computeSegmentDefinition() {
+ var segmentStr = '';
+ this.conditions.forEach(function (condition) {
+ if (!condition.orConditions.length) {
+ return;
+ }
+
+ var subSegmentStr = '';
+ condition.orConditions.forEach(function (orCondition) {
+ if (!orCondition.value && !orCondition.segment && !orCondition.matches) {
+ return;
+ }
+
+ if (subSegmentStr !== '') {
+ subSegmentStr += ','; // OR operator
+ } // one encode for urldecode on value, one encode for urldecode on condition
+
+
+ var value = encodeURIComponent(encodeURIComponent(orCondition.value));
+ subSegmentStr += "".concat(orCondition.segment).concat(orCondition.matches).concat(value);
+ });
+
+ if (segmentStr !== '') {
+ segmentStr += ';'; // add AND operator between segment blocks
+ }
+
+ segmentStr += subSegmentStr;
+ });
+ this.segmentDefinition = segmentStr;
+ }
+ },
+ computed: {
+ firstSegment: function firstSegment() {
+ return this.queriedSegments[0].segment;
+ },
+ firstMatch: function firstMatch() {
+ var segment = this.queriedSegments[0];
+
+ if (!segment) {
+ return null;
+ }
+
+ if (segment.type && this.matches[segment.type]) {
+ return this.matches[segment.type][0].key;
+ }
+
+ return this.matches[''][0].key;
+ },
+ segments: function segments() {
+ var result = {};
+ this.queriedSegments.forEach(function (s) {
+ result[s.segment] = s;
+ });
+ return result;
+ },
+ segmentList: function segmentList() {
+ return this.queriedSegments.map(function (s) {
+ return {
+ group: s.category,
+ key: s.segment,
+ value: s.name,
+ tooltip: s.acceptedValues ? stripTags(s.acceptedValues) : undefined
+ };
+ });
+ },
+ addNewOrConditionLinkText: function addNewOrConditionLinkText() {
+ return "+".concat(Object(external_CoreHome_["translate"])('SegmentEditor_AddANDorORCondition', "<span>".concat(Object(external_CoreHome_["translate"])('SegmentEditor_OperatorOR'), "</span>")));
+ },
+ andConditionLabel: function andConditionLabel() {
+ return this.conditions.length ? Object(external_CoreHome_["translate"])('SegmentEditor_OperatorAND') : '';
+ },
+ addNewAndConditionLinkText: function addNewAndConditionLinkText() {
+ return "+".concat(Object(external_CoreHome_["translate"])('SegmentEditor_AddANDorORCondition', "<span>".concat(this.andConditionLabel, "</span>")));
+ },
+ isLoading: function isLoading() {
+ return SegmentGenerator_store.state.value.isLoading;
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue
+
+
+
+SegmentGeneratorvue_type_script_lang_ts.render = render
+
+/* harmony default export */ var SegmentGenerator = (SegmentGeneratorvue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+/* harmony default export */ var SegmentGenerator_adapter = (Object(external_CoreHome_["createAngularJsAdapter"])({
+ component: SegmentGenerator,
+ require: '?ngModel',
+ scope: {
+ segmentDefinition: {
+ angularJsBind: '@',
+ vue: 'modelValue'
+ },
+ addInitialCondition: {
+ angularJsBind: '=',
+ transform: external_CoreHome_["transformAngularJsBoolAttr"]
+ },
+ visitSegmentsOnly: {
+ angularJsBind: '=',
+ transform: external_CoreHome_["transformAngularJsBoolAttr"]
+ },
+ idsite: {
+ angularJsBind: '='
+ }
+ },
+ directiveName: 'piwikSegmentGenerator',
+ $inject: ['$timeout'],
+ events: {
+ 'update:modelValue': function updateModelValue(newValue, vm, scope, element, attrs, ngModel, $timeout) {
+ var currentValue = ngModel ? ngModel.$viewValue : scope.segmentDefinition;
+
+ if (newValue !== currentValue) {
+ $timeout(function () {
+ if (!ngModel) {
+ scope.segmentDefinition = newValue;
+ return;
+ } // ngModel being used
+
+
+ ngModel.$setViewValue(newValue);
+ ngModel.$render(); // not detected by the watch for some reason
+ });
+ }
+ }
+ },
+ postCreate: function postCreate(vm, scope, element, attrs, controller) {
+ // methods to forward for BC
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ element.scope().segmentGenerator = {
+ getSegmentString: function getSegmentString() {
+ return vm.modelValue;
+ }
+ };
+ var ngModel = controller;
+
+ if (!ngModel) {
+ scope.$watch('segmentDefinition', function (newVal) {
+ if (newVal !== vm.modelValue) {
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () {
+ vm.modelValue = newVal;
+ });
+ }
+ });
+ return;
+ } // ngModel being used
+
+
+ ngModel.$render = function () {
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["nextTick"])(function () {
+ vm.modelValue = Object(external_CoreHome_["removeAngularJsSpecificProperties"])(ngModel.$viewValue);
+ });
+ };
+
+ if (typeof scope.segmentDefinition !== 'undefined') {
+ ngModel.$setViewValue(scope.segmentDefinition);
+ } else {
+ ngModel.$setViewValue(vm.modelValue);
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/types.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+// CONCATENATED MODULE: ./plugins/SegmentEditor/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=SegmentEditor.umd.js.map \ No newline at end of file
diff --git a/plugins/SegmentEditor/vue/dist/SegmentEditor.umd.min.js b/plugins/SegmentEditor/vue/dist/SegmentEditor.umd.min.js
new file mode 100644
index 0000000000..38e66de7f3
--- /dev/null
+++ b/plugins/SegmentEditor/vue/dist/SegmentEditor.umd.min.js
@@ -0,0 +1,14 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["SegmentEditor"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["SegmentEditor"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/SegmentEditor/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"SegmentGeneratorStore",(function(){return B})),n.d(t,"SegmentGenerator",(function(){return F})),"undefined"!==typeof window){var o=window.document.currentScript,i=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var a=n("8bbf"),r=n("19dc"),c={class:"segment-generator",ref:"root"},l={class:"segment-rows"},s={class:"segment-row"},d=["onClick"],u={href:"#",class:"segment-loading"},m={class:"segment-row-inputs valign-wrapper"},f={class:"segment-input metricListBlock valign-wrapper"},p={style:{width:"100%"}},g={class:"segment-input metricMatchBlock valign-wrapper"},v={style:{display:"inline-block"}},h={class:"segment-input metricValueBlock valign-wrapper"},b={class:"form-group row",style:{width:"100%"}},O={class:"input-field col s12"},j=Object(a["createElementVNode"])("span",{role:"status","aria-live":"polite",class:"ui-helper-hidden-accessible"},null,-1),S=Object(a["createElementVNode"])("div",{class:"clear"},null,-1),V={class:"segment-or"},y=["onClick"],C=["innerHTML"],w={class:"segment-and"},k=["innerHTML"];function A(e,t,n,o,i,r){var A=this,N=Object(a["resolveComponent"])("ActivityIndicator"),E=Object(a["resolveComponent"])("Field"),L=Object(a["resolveComponent"])("ValueInput");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",c,[Object(a["createVNode"])(N,{loading:e.isLoading},null,8,["loading"]),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.conditions,(function(t,n){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])("segmentRow".concat(n)),key:n},[Object(a["createElementVNode"])("div",l,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(t.orConditions,(function(n,o){var i,r;return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])("orCondId".concat(n.id)),key:o},[Object(a["createElementVNode"])("div",s,[Object(a["createElementVNode"])("a",{class:"segment-close",onClick:function(o){return e.removeOrCondition(t,n)}},null,8,d),Object(a["withDirectives"])(Object(a["createElementVNode"])("a",u,null,512),[[a["vShow"],e.conditionValuesLoading[n.id]]]),Object(a["createElementVNode"])("div",m,[Object(a["createElementVNode"])("div",f,[Object(a["createElementVNode"])("div",p,[Object(a["createVNode"])(E,{uicontrol:"expandable-select",name:"segments","model-value":n.segment,"onUpdate:modelValue":function(t){n.segment=t,e.updateAutocomplete(n),e.computeSegmentDefinition()},title:null===(i=e.segments[n.segment])||void 0===i?void 0:i.name,"full-width":!0,options:e.segmentList},null,8,["model-value","onUpdate:modelValue","title","options"])])]),Object(a["createElementVNode"])("div",g,[Object(a["createElementVNode"])("div",v,[Object(a["createVNode"])(E,{uicontrol:"select",name:"matchType","model-value":n.matches,"onUpdate:modelValue":function(t){n.matches=t,e.computeSegmentDefinition()},"full-width":!0,options:e.matches[null===(r=e.segments[n.segment])||void 0===r?void 0:r.type]},null,8,["model-value","onUpdate:modelValue","options"])])]),Object(a["createElementVNode"])("div",h,[Object(a["createElementVNode"])("div",b,[Object(a["createElementVNode"])("div",O,[j,Object(a["createVNode"])(L,{or:n,onUpdate:function(e){n.value=e,A.computeSegmentDefinition()}},null,8,["or","onUpdate"])])])]),S])]),Object(a["createElementVNode"])("div",V,Object(a["toDisplayString"])(e.translate("SegmentEditor_OperatorOR")),1)],2)})),128)),Object(a["createElementVNode"])("div",{class:"segment-add-or",onClick:function(n){return e.addNewOrCondition(t)}},[Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("a",{innerHTML:e.$sanitize(e.addNewOrConditionLinkText)},null,8,C)])],8,y)]),Object(a["createElementVNode"])("div",w,Object(a["toDisplayString"])(e.translate("SegmentEditor_OperatorAND")),1)],2)})),128)),Object(a["createElementVNode"])("div",{class:"segment-add-row initial",onClick:t[0]||(t[0]=function(t){return e.addNewAndCondition()})},[Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("a",{innerHTML:e.$sanitize(e.addNewAndConditionLinkText)},null,8,k)])])],512)}var N=n("a5a2");function E(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function L(e,t){for(var n=0;n<t.length;n++){var o=t[n];o.enumerable=o.enumerable||!1,o.configurable=!0,"value"in o&&(o.writable=!0),Object.defineProperty(e,o.key,o)}}function _(e,t,n){return t&&L(e.prototype,t),n&&L(e,n),e}function D(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */var x=function(){function e(){var t=this;E(this,e),D(this,"privateState",Object(a["reactive"])({isLoading:!1,segments:[]})),D(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),D(this,"loadSegmentsAbort",void 0),D(this,"loadSegmentsPromise",void 0),D(this,"fetchedSiteId",void 0)}return _(e,[{key:"loadSegments",value:function(e,t){var n=this;if(this.loadSegmentsAbort&&(this.loadSegmentsAbort.abort(),this.loadSegmentsAbort=void 0),this.privateState.isLoading=!0,this.fetchedSiteId!==e&&(this.loadSegmentsAbort=void 0,this.fetchedSiteId=e),!this.loadSegmentsPromise){var o=void 0,i=void 0;"all"!==e&&e?e&&(o=e,i=e):(o="all",i="all"),this.loadSegmentsAbort=new AbortController,this.loadSegmentsPromise=r["AjaxHelper"].fetch({method:"API.getSegmentsMetadata",filter_limit:"-1",_hideImplementationData:0,idSites:o,idSite:i})}return this.loadSegmentsPromise.then((function(e){return n.privateState.isLoading=!1,e&&(n.privateState.segments=t?e.filter((function(e){return e.sqlSegment&&e.sqlSegment.match(/log_visit\./)})):e),n.state.value.segments})).finally((function(){n.privateState.isLoading=!1}))}}]),e}(),B=new x,I=["placeholder","title","value"];function G(e,t,n,o,i,r){return Object(a["openBlock"])(),Object(a["createElementBlock"])("input",{placeholder:e.translate("General_Value"),type:"text",class:"autocomplete",title:e.translate("General_Value"),autocomplete:"off",value:e.or.value,onKeydown:t[0]||(t[0]=function(t){return e.onKeydownOrConditionValue(t)}),onChange:t[1]||(t[1]=function(t){return e.onKeydownOrConditionValue(t)})},null,40,I)}var P=Object(a["defineComponent"])({props:{or:Object},created:function(){this.onKeydownOrConditionValue=Object(r["debounce"])(this.onKeydownOrConditionValue,50)},emits:["update"],methods:{onKeydownOrConditionValue:function(e){this.$emit("update",e.target.value)}}});P.render=G;var $=P;function T(){return{metric:[{key:"==",value:Object(r["translate"])("General_OperationEquals")},{key:"!=",value:Object(r["translate"])("General_OperationNotEquals")},{key:"<=",value:Object(r["translate"])("General_OperationAtMost")},{key:">=",value:Object(r["translate"])("General_OperationAtLeast")},{key:"<",value:Object(r["translate"])("General_OperationLessThan")},{key:">",value:Object(r["translate"])("General_OperationGreaterThan")}],dimension:[{key:"==",value:Object(r["translate"])("General_OperationIs")},{key:"!=",value:Object(r["translate"])("General_OperationIsNot")},{key:"=@",value:Object(r["translate"])("General_OperationContains")},{key:"!@",value:Object(r["translate"])("General_OperationDoesNotContain")},{key:"=^",value:Object(r["translate"])("General_OperationStartsWith")},{key:"=$",value:Object(r["translate"])("General_OperationEndsWith")}]}}function q(){for(var e="",t="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789",n=1;n<=10;n+=1)e+=t.charAt(Math.floor(Math.random()*t.length));return e}function M(e){for(var t,n,o=["==","!=","<=",">=","=@","!@","<",">","=^","=$"],i={},a=e.length,r=!1,c=0;c<o.length;c+=1)t=o[c],n=e.indexOf(t),-1!==n&&n<a&&(a=n,1===t.length&&(r=!0));a<e.length&&(!0===r?(i.segment=e.substr(0,a),i.matches=e.substr(a,1),i.value=decodeURIComponent(e.substr(a+1))):(i.segment=e.substr(0,a),i.matches=e.substr(a,2),i.value=decodeURIComponent(e.substr(a+2))),'""'===i.value&&(i.value=""));try{i.value=decodeURIComponent(i.value)}catch(l){}return i}function U(e){return e?"".concat(e).replace(/(<([^>]+)>)/gi,""):e}var H=window,R=H.$,J=Object(a["defineComponent"])({props:{addInitialCondition:Boolean,visitSegmentsOnly:Boolean,idsite:[String,Number],modelValue:{type:String,default:""}},components:{ActivityIndicator:r["ActivityIndicator"],Field:N["Field"],ValueInput:$},data:function(){return{conditions:[],queriedSegments:[],matches:T(),conditionValuesLoading:{},segmentDefinition:""}},emits:["update:modelValue"],watch:{modelValue:function(e){e!==this.segmentDefinition&&this.setSegmentString(e)},conditions:{deep:!0,handler:function(){this.computeSegmentDefinition()}},segmentDefinition:function(e){e!==this.modelValue&&this.$emit("update:modelValue",e)},idsite:function(e){this.reloadSegments(e,this.visitSegmentsOnly)}},created:function(){this.matches[""]=this.matches.dimension,this.setSegmentString(this.modelValue),this.segmentDefinition=this.modelValue,this.reloadSegments(this.idsite,this.visitSegmentsOnly)},methods:{reloadSegments:function(e,t){var n=this;B.loadSegments(e,t).then((function(e){n.queriedSegments=e.map((function(e){return Object.assign(Object.assign({},e),{},{category:e.category||"Others"})})),n.addInitialCondition&&0===n.conditions.length&&n.addNewAndCondition()}))},addAndCondition:function(e){this.conditions.push(e)},addNewOrCondition:function(e){var t={segment:this.firstSegment,matches:this.firstMatch,value:""};this.addOrCondition(e,t)},addOrCondition:function(e,t){var n=this;this.conditionValuesLoading[t.id]=!1,t.id=q(),e.orConditions.push(t),Object(a["nextTick"])((function(){n.updateAutocomplete(t)}))},updateAutocomplete:function(e){var t=this;this.conditionValuesLoading[e.id]=!0,R(".orCondId".concat(e.id," .metricValueBlock input"),this.$refs.root).autocomplete({source:[],minLength:0});var n=new AbortController,o=!1;r["AjaxHelper"].fetch({module:"API",format:"json",method:"API.getSuggestedValuesForSegment",segmentName:e.segment}).then((function(n){t.conditionValuesLoading[e.id]=!1,o=!0;var i=R(".orCondId".concat(e.id," .metricValueBlock input")).autocomplete({source:n,minLength:0,select:function(n,o){n.preventDefault(),e.value=o.item.value,t.computeSegmentDefinition(),t.$forceUpdate()}}).off("click").click((function(){R(i).autocomplete("search",e.value)}))})).catch((function(){o=!0,t.conditionValuesLoading[e.id]=!1,R(".orCondId".concat(e.id," .metricValueBlock input")).autocomplete({source:[],minLength:0}).autocomplete("search",e.value)})),setTimeout((function(){o||n.abort()}),2e4)},removeOrCondition:function(e,t){var n=e.orConditions.indexOf(t);if(n>-1&&e.orConditions.splice(n,1),0===e.orConditions.length){var o=this.conditions.indexOf(e);n>-1&&this.conditions.splice(o,1)}},setSegmentString:function(e){var t=this;if(this.conditions=[],e){var n=e.split(";").map((function(e){return e.split(",")}));this.conditions=n.map((function(e){var n={orConditions:[]};return e.forEach((function(e){var o=M(e);t.addOrCondition(n,o)})),n}))}},addNewAndCondition:function(){var e={orConditions:[]};return this.addAndCondition(e),this.addNewOrCondition(e),e},computeSegmentDefinition:function(){var e="";this.conditions.forEach((function(t){if(t.orConditions.length){var n="";t.orConditions.forEach((function(e){if(e.value||e.segment||e.matches){""!==n&&(n+=",");var t=encodeURIComponent(encodeURIComponent(e.value));n+="".concat(e.segment).concat(e.matches).concat(t)}})),""!==e&&(e+=";"),e+=n}})),this.segmentDefinition=e}},computed:{firstSegment:function(){return this.queriedSegments[0].segment},firstMatch:function(){var e=this.queriedSegments[0];return e?e.type&&this.matches[e.type]?this.matches[e.type][0].key:this.matches[""][0].key:null},segments:function(){var e={};return this.queriedSegments.forEach((function(t){e[t.segment]=t})),e},segmentList:function(){return this.queriedSegments.map((function(e){return{group:e.category,key:e.segment,value:e.name,tooltip:e.acceptedValues?U(e.acceptedValues):void 0}}))},addNewOrConditionLinkText:function(){return"+".concat(Object(r["translate"])("SegmentEditor_AddANDorORCondition","<span>".concat(Object(r["translate"])("SegmentEditor_OperatorOR"),"</span>")))},andConditionLabel:function(){return this.conditions.length?Object(r["translate"])("SegmentEditor_OperatorAND"):""},addNewAndConditionLinkText:function(){return"+".concat(Object(r["translate"])("SegmentEditor_AddANDorORCondition","<span>".concat(this.andConditionLabel,"</span>")))},isLoading:function(){return B.state.value.isLoading}}});J.render=A;var F=J;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */Object(r["createAngularJsAdapter"])({component:F,require:"?ngModel",scope:{segmentDefinition:{angularJsBind:"@",vue:"modelValue"},addInitialCondition:{angularJsBind:"=",transform:r["transformAngularJsBoolAttr"]},visitSegmentsOnly:{angularJsBind:"=",transform:r["transformAngularJsBoolAttr"]},idsite:{angularJsBind:"="}},directiveName:"piwikSegmentGenerator",$inject:["$timeout"],events:{"update:modelValue":function(e,t,n,o,i,a,r){var c=a?a.$viewValue:n.segmentDefinition;e!==c&&r((function(){a?(a.$setViewValue(e),a.$render()):n.segmentDefinition=e}))}},postCreate:function(e,t,n,o,i){n.scope().segmentGenerator={getSegmentString:function(){return e.modelValue}};var c=i;c?(c.$render=function(){Object(a["nextTick"])((function(){e.modelValue=Object(r["removeAngularJsSpecificProperties"])(c.$viewValue)}))},"undefined"!==typeof t.segmentDefinition?c.$setViewValue(t.segmentDefinition):c.$setViewValue(e.modelValue)):t.$watch("segmentDefinition",(function(t){t!==e.modelValue&&Object(a["nextTick"])((function(){e.modelValue=t}))}))}})}})}));
+//# sourceMappingURL=SegmentEditor.umd.min.js.map \ No newline at end of file
diff --git a/plugins/SegmentEditor/vue/dist/umd.metadata.json b/plugins/SegmentEditor/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..dce4477a3c
--- /dev/null
+++ b/plugins/SegmentEditor/vue/dist/umd.metadata.json
@@ -0,0 +1,6 @@
+{
+ "dependsOn": [
+ "CoreHome",
+ "CorePluginsAdmin"
+ ]
+} \ No newline at end of file
diff --git a/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.adapter.ts b/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.adapter.ts
new file mode 100644
index 0000000000..49642797f3
--- /dev/null
+++ b/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.adapter.ts
@@ -0,0 +1,91 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { INgModelController, ITimeoutService } from 'angular';
+import { nextTick } from 'vue';
+import {
+ createAngularJsAdapter,
+ removeAngularJsSpecificProperties,
+ transformAngularJsBoolAttr,
+} from 'CoreHome';
+import SegmentGenerator from './SegmentGenerator.vue';
+
+export default createAngularJsAdapter<[ITimeoutService]>({
+ component: SegmentGenerator,
+ require: '?ngModel',
+ scope: {
+ segmentDefinition: {
+ angularJsBind: '@',
+ vue: 'modelValue',
+ },
+ addInitialCondition: {
+ angularJsBind: '=',
+ transform: transformAngularJsBoolAttr,
+ },
+ visitSegmentsOnly: {
+ angularJsBind: '=',
+ transform: transformAngularJsBoolAttr,
+ },
+ idsite: {
+ angularJsBind: '=',
+ },
+ },
+ directiveName: 'piwikSegmentGenerator',
+ $inject: ['$timeout'],
+ events: {
+ 'update:modelValue': (newValue, vm, scope, element, attrs, ngModel, $timeout) => {
+ const currentValue = ngModel ? ngModel.$viewValue : scope.segmentDefinition;
+ if (newValue !== currentValue) {
+ $timeout(() => {
+ if (!ngModel) {
+ scope.segmentDefinition = newValue;
+ return;
+ }
+
+ // ngModel being used
+ (ngModel as INgModelController).$setViewValue(newValue);
+ (ngModel as INgModelController).$render(); // not detected by the watch for some reason
+ });
+ }
+ },
+ },
+ postCreate(vm, scope, element, attrs, controller) {
+ // methods to forward for BC
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ (element.scope() as any).segmentGenerator = {
+ getSegmentString(): string {
+ return vm.modelValue;
+ },
+ };
+
+ const ngModel = controller as INgModelController;
+ if (!ngModel) {
+ scope.$watch('segmentDefinition', (newVal: unknown) => {
+ if (newVal !== vm.modelValue) {
+ nextTick(() => {
+ vm.modelValue = newVal;
+ });
+ }
+ });
+
+ return;
+ }
+
+ // ngModel being used
+ ngModel.$render = () => {
+ nextTick(() => {
+ vm.modelValue = removeAngularJsSpecificProperties(ngModel.$viewValue);
+ });
+ };
+
+ if (typeof scope.segmentDefinition !== 'undefined') {
+ (ngModel as INgModelController).$setViewValue(scope.segmentDefinition);
+ } else {
+ ngModel.$setViewValue(vm.modelValue);
+ }
+ },
+});
diff --git a/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.directive.less b/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.less
index 778021f446..778021f446 100644
--- a/plugins/SegmentEditor/angularjs/segment-generator/segmentgenerator.directive.less
+++ b/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.less
diff --git a/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.store.ts b/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.store.ts
new file mode 100644
index 0000000000..46d68274d4
--- /dev/null
+++ b/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.store.ts
@@ -0,0 +1,94 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import {
+ reactive,
+ computed,
+ readonly,
+ DeepReadonly,
+} from 'vue';
+import { AjaxHelper } from 'CoreHome';
+import { SegmentMetadata } from '../types';
+
+interface SegmentGeneratorStoreState {
+ isLoading: boolean;
+ segments: SegmentMetadata[];
+}
+
+class SegmentGeneratorStore {
+ private privateState: SegmentGeneratorStoreState = reactive<SegmentGeneratorStoreState>({
+ isLoading: false,
+ segments: [],
+ });
+
+ readonly state = computed(() => readonly(this.privateState));
+
+ private loadSegmentsAbort?: AbortController;
+
+ private loadSegmentsPromise?: Promise<SegmentMetadata[]>;
+
+ private fetchedSiteId?: string|number;
+
+ loadSegments(
+ siteId?: string|number,
+ visitSegmentsOnly?: boolean,
+ ): Promise<DeepReadonly<SegmentMetadata[]>> {
+ if (this.loadSegmentsAbort) {
+ this.loadSegmentsAbort.abort();
+ this.loadSegmentsAbort = undefined;
+ }
+
+ this.privateState.isLoading = true;
+
+ if (this.fetchedSiteId !== siteId) {
+ this.loadSegmentsAbort = undefined;
+ this.fetchedSiteId = siteId;
+ }
+
+ if (!this.loadSegmentsPromise) {
+ let idSites: string|number|undefined = undefined;
+ let idSite: string|number|undefined = undefined;
+
+ if (siteId === 'all' || !siteId) {
+ idSites = 'all';
+ idSite = 'all';
+ } else if (siteId) {
+ idSites = siteId;
+ idSite = siteId;
+ }
+
+ this.loadSegmentsAbort = new AbortController();
+ this.loadSegmentsPromise = AjaxHelper.fetch<SegmentMetadata[]>({
+ method: 'API.getSegmentsMetadata',
+ filter_limit: '-1',
+ _hideImplementationData: 0,
+ idSites,
+ idSite,
+ });
+ }
+
+ return this.loadSegmentsPromise.then((response) => {
+ this.privateState.isLoading = false;
+
+ if (response) {
+ if (visitSegmentsOnly) {
+ this.privateState.segments = response.filter(
+ (s) => s.sqlSegment && s.sqlSegment.match(/log_visit\./),
+ );
+ } else {
+ this.privateState.segments = response;
+ }
+ }
+
+ return this.state.value.segments;
+ }).finally(() => {
+ this.privateState.isLoading = false;
+ });
+ }
+}
+
+export default new SegmentGeneratorStore();
diff --git a/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue b/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue
new file mode 100644
index 0000000000..7fd9b5db91
--- /dev/null
+++ b/plugins/SegmentEditor/vue/src/SegmentGenerator/SegmentGenerator.vue
@@ -0,0 +1,523 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="segment-generator" ref="root">
+ <ActivityIndicator :loading="isLoading" />
+ <div
+ :class="`segmentRow${conditionIndex}`"
+ v-for="(condition, conditionIndex) in conditions"
+ :key="conditionIndex"
+ >
+ <div class="segment-rows">
+ <div
+ :class="`orCondId${orCondition.id}`"
+ v-for="(orCondition, orConditionIndex) in condition.orConditions"
+ :key="orConditionIndex"
+ >
+ <div class="segment-row">
+ <a
+ class="segment-close"
+ @click="removeOrCondition(condition, orCondition)"
+ />
+ <a
+ href="#"
+ class="segment-loading"
+ v-show="conditionValuesLoading[orCondition.id]"
+ />
+ <div class="segment-row-inputs valign-wrapper">
+ <div class="segment-input metricListBlock valign-wrapper">
+ <div style="width: 100%;">
+ <Field
+ uicontrol="expandable-select"
+ name="segments"
+ :model-value="orCondition.segment"
+ @update:model-value="orCondition.segment = $event;
+ updateAutocomplete(orCondition); computeSegmentDefinition();"
+ :title="segments[orCondition.segment]?.name"
+ :full-width="true"
+ :options="segmentList"
+ >
+ </Field>
+ </div>
+ </div>
+ <div class="segment-input metricMatchBlock valign-wrapper">
+ <div style="display: inline-block">
+ <Field
+ uicontrol="select"
+ name="matchType"
+ :model-value="orCondition.matches"
+ @update:model-value="orCondition.matches = $event; computeSegmentDefinition();"
+ :full-width="true"
+ :options="matches[segments[orCondition.segment]?.type]"
+ >
+ </Field>
+ </div>
+ </div>
+ <div class="segment-input metricValueBlock valign-wrapper">
+ <div
+ class="form-group row"
+ style="width: 100%;"
+ >
+ <div class="input-field col s12">
+ <span
+ role="status"
+ aria-live="polite"
+ class="ui-helper-hidden-accessible"
+ />
+ <ValueInput
+ :or="orCondition"
+ @update="orCondition.value = $event;
+ // deep watch doesn't catch this change
+ this.computeSegmentDefinition();"
+ />
+ </div>
+ </div>
+ </div>
+ <div class="clear" />
+ </div>
+ </div>
+ <div class="segment-or">{{ translate('SegmentEditor_OperatorOR') }}</div>
+ </div>
+ <div
+ class="segment-add-or"
+ @click="addNewOrCondition(condition)"
+ >
+ <div>
+ <a v-html="$sanitize(addNewOrConditionLinkText)" />
+ </div>
+ </div>
+ </div>
+ <div class="segment-and">{{ translate('SegmentEditor_OperatorAND') }}</div>
+ </div>
+ <div
+ class="segment-add-row initial"
+ @click="addNewAndCondition()"
+ >
+ <div>
+ <a v-html="$sanitize(addNewAndConditionLinkText)" />
+ </div>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { DeepReadonly, defineComponent, nextTick } from 'vue';
+import {
+ translate,
+ AjaxHelper,
+ ActivityIndicator,
+} from 'CoreHome';
+import { Field } from 'CorePluginsAdmin';
+import SegmentGeneratorStore from './SegmentGenerator.store';
+import { SegmentAndCondition, SegmentMetadata, SegmentOrCondition } from '../types';
+import ValueInput from './ValueInput.vue';
+
+interface SegmentGeneratorState {
+ conditions: SegmentAndCondition[];
+ matches: Record<string, { key: string, value: string }[]>;
+ queriedSegments: DeepReadonly<SegmentMetadata[]>;
+ conditionValuesLoading: Record<string, boolean>;
+ segmentDefinition: string;
+}
+
+function initialMatches() {
+ return {
+ metric: [
+ {
+ key: '==',
+ value: translate('General_OperationEquals'),
+ },
+ {
+ key: '!=',
+ value: translate('General_OperationNotEquals'),
+ },
+ {
+ key: '<=',
+ value: translate('General_OperationAtMost'),
+ },
+ {
+ key: '>=',
+ value: translate('General_OperationAtLeast'),
+ },
+ {
+ key: '<',
+ value: translate('General_OperationLessThan'),
+ },
+ {
+ key: '>',
+ value: translate('General_OperationGreaterThan'),
+ },
+ ],
+ dimension: [
+ {
+ key: '==',
+ value: translate('General_OperationIs'),
+ },
+ {
+ key: '!=',
+ value: translate('General_OperationIsNot'),
+ },
+ {
+ key: '=@',
+ value: translate('General_OperationContains'),
+ },
+ {
+ key: '!@',
+ value: translate('General_OperationDoesNotContain'),
+ },
+ {
+ key: '=^',
+ value: translate('General_OperationStartsWith'),
+ },
+ {
+ key: '=$',
+ value: translate('General_OperationEndsWith'),
+ },
+ ],
+ };
+}
+
+function generateUniqueId() {
+ let id = '';
+ const chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789';
+
+ for (let i = 1; i <= 10; i += 1) {
+ id += chars.charAt(Math.floor(Math.random() * chars.length));
+ }
+
+ return id;
+}
+
+function findAndExplodeByMatch(metric: string) {
+ const matches = ['==', '!=', '<=', '>=', '=@', '!@', '<', '>', '=^', '=$'];
+ const newMetric: SegmentOrCondition = {} as unknown as SegmentOrCondition;
+ let minPos = metric.length;
+ let match;
+ let index: number;
+ let singleChar = false;
+
+ for (let key = 0; key < matches.length; key += 1) {
+ match = matches[key];
+ index = metric.indexOf(match);
+ if (index !== -1) {
+ if (index < minPos) {
+ minPos = index;
+ if (match.length === 1) {
+ singleChar = true;
+ }
+ }
+ }
+ }
+
+ if (minPos < metric.length) {
+ // sth found - explode
+ if (singleChar === true) {
+ newMetric.segment = metric.substr(0, minPos);
+ newMetric.matches = metric.substr(minPos, 1);
+ newMetric.value = decodeURIComponent(metric.substr(minPos + 1));
+ } else {
+ newMetric.segment = metric.substr(0, minPos);
+ newMetric.matches = metric.substr(minPos, 2);
+ newMetric.value = decodeURIComponent(metric.substr(minPos + 2));
+ }
+
+ // if value is only '' -> change to empty string
+ if (newMetric.value === '""') {
+ newMetric.value = '';
+ }
+ }
+
+ try {
+ // Decode again to deal with double-encoded segments in database
+ newMetric.value = decodeURIComponent(newMetric.value);
+ } catch (e) {
+ // Expected if the segment was not double-encoded
+ }
+
+ return newMetric;
+}
+
+function stripTags(text?: unknown) {
+ return text ? `${text}`.replace(/(<([^>]+)>)/ig, '') : text;
+}
+
+const { $ } = window;
+
+export default defineComponent({
+ props: {
+ addInitialCondition: Boolean,
+ visitSegmentsOnly: Boolean,
+ idsite: [String, Number],
+ modelValue: {
+ type: String,
+ default: '',
+ },
+ },
+ components: {
+ ActivityIndicator,
+ Field,
+ ValueInput,
+ },
+ data(): SegmentGeneratorState {
+ return {
+ conditions: [],
+ queriedSegments: [],
+ matches: initialMatches(),
+ conditionValuesLoading: {},
+ segmentDefinition: '',
+ };
+ },
+ emits: ['update:modelValue'],
+ watch: {
+ modelValue(newVal) {
+ if (newVal !== this.segmentDefinition) {
+ this.setSegmentString(newVal);
+ }
+ },
+ conditions: {
+ deep: true,
+ handler() {
+ this.computeSegmentDefinition();
+ },
+ },
+ segmentDefinition(newVal) {
+ if (newVal !== this.modelValue) {
+ this.$emit('update:modelValue', newVal);
+ }
+ },
+ idsite(newVal) {
+ this.reloadSegments(newVal, this.visitSegmentsOnly);
+ },
+ },
+ created() {
+ this.matches[''] = this.matches.dimension;
+ this.setSegmentString(this.modelValue);
+ this.segmentDefinition = this.modelValue;
+
+ this.reloadSegments(this.idsite, this.visitSegmentsOnly);
+ },
+ methods: {
+ reloadSegments(idsite?: string|number, visitSegmentsOnly?: boolean) {
+ SegmentGeneratorStore.loadSegments(idsite, visitSegmentsOnly).then((segments) => {
+ this.queriedSegments = segments.map((s) => ({
+ ...s,
+ category: s.category || 'Others',
+ }));
+
+ if (this.addInitialCondition && this.conditions.length === 0) {
+ this.addNewAndCondition();
+ }
+ });
+ },
+ addAndCondition(condition: SegmentAndCondition) {
+ this.conditions.push(condition);
+ },
+ addNewOrCondition(condition: SegmentAndCondition) {
+ const orCondition = {
+ segment: this.firstSegment,
+ matches: this.firstMatch!,
+ value: '',
+ };
+
+ this.addOrCondition(condition, orCondition);
+ },
+ addOrCondition(condition: SegmentAndCondition, orCondition: SegmentOrCondition) {
+ this.conditionValuesLoading[orCondition.id!] = false;
+ orCondition.id = generateUniqueId();
+
+ condition.orConditions.push(orCondition);
+
+ nextTick(() => {
+ this.updateAutocomplete(orCondition);
+ });
+ },
+ updateAutocomplete(orCondition: SegmentOrCondition) {
+ this.conditionValuesLoading[orCondition.id!] = true;
+
+ $(`.orCondId${orCondition.id} .metricValueBlock input`, this.$refs.root as HTMLElement)
+ .autocomplete({
+ source: [],
+ minLength: 0,
+ });
+
+ const abortController = new AbortController();
+
+ let resolved = false;
+ AjaxHelper.fetch<string[]>(
+ {
+ module: 'API',
+ format: 'json',
+ method: 'API.getSuggestedValuesForSegment',
+ segmentName: orCondition.segment,
+ },
+ ).then((response) => {
+ this.conditionValuesLoading[orCondition.id!] = false;
+ resolved = true;
+
+ const inputElement = $(`.orCondId${orCondition.id} .metricValueBlock input`)
+ .autocomplete({
+ source: response,
+ minLength: 0,
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
+ select: (event: Event, ui: any) => {
+ event.preventDefault();
+
+ orCondition.value = ui.item.value;
+ this.computeSegmentDefinition(); // deep watch doesn't catch this change
+ this.$forceUpdate();
+ },
+ })
+ .off('click')
+ .click(() => {
+ $(inputElement).autocomplete('search', orCondition.value);
+ });
+ }).catch(() => {
+ resolved = true;
+
+ this.conditionValuesLoading[orCondition.id!] = false;
+
+ $(`.orCondId${orCondition.id} .metricValueBlock input`)
+ .autocomplete({
+ source: [],
+ minLength: 0,
+ })
+ .autocomplete('search', orCondition.value);
+ });
+
+ setTimeout(() => {
+ if (!resolved) {
+ abortController.abort();
+ }
+ }, 20000);
+ },
+ removeOrCondition(condition: SegmentAndCondition, orCondition: SegmentOrCondition) {
+ const index = condition.orConditions.indexOf(orCondition);
+
+ if (index > -1) {
+ condition.orConditions.splice(index, 1);
+ }
+
+ if (condition.orConditions.length === 0) {
+ const andCondIndex = this.conditions.indexOf(condition);
+
+ if (index > -1) {
+ this.conditions.splice(andCondIndex, 1);
+ }
+ }
+ },
+ setSegmentString(segmentStr: string) {
+ this.conditions = [];
+
+ if (!segmentStr) {
+ return;
+ }
+
+ const blocks = segmentStr.split(';').map((b) => b.split(','));
+ this.conditions = blocks.map((block) => {
+ const condition: SegmentAndCondition = { orConditions: [] };
+
+ block.forEach((innerBlock) => {
+ const orCondition: SegmentOrCondition = findAndExplodeByMatch(innerBlock);
+ this.addOrCondition(condition, orCondition);
+ });
+
+ return condition;
+ });
+ },
+ addNewAndCondition() {
+ const condition = { orConditions: [] };
+
+ this.addAndCondition(condition);
+ this.addNewOrCondition(condition);
+
+ return condition;
+ },
+ // NOTE: can't use a computed property since we need to recompute on changes inside the
+ // structure. don't have to if we don't do in-place changes, but with nested structures,
+ // that's complicated.
+ computeSegmentDefinition() {
+ let segmentStr = '';
+
+ this.conditions.forEach((condition) => {
+ if (!condition.orConditions.length) {
+ return;
+ }
+
+ let subSegmentStr = '';
+ condition.orConditions.forEach((orCondition) => {
+ if (!orCondition.value && !orCondition.segment && !orCondition.matches) {
+ return;
+ }
+
+ if (subSegmentStr !== '') {
+ subSegmentStr += ','; // OR operator
+ }
+
+ // one encode for urldecode on value, one encode for urldecode on condition
+ const value = encodeURIComponent(encodeURIComponent(orCondition.value));
+ subSegmentStr += `${orCondition.segment}${orCondition.matches}${value}`;
+ });
+
+ if (segmentStr !== '') {
+ segmentStr += ';'; // add AND operator between segment blocks
+ }
+
+ segmentStr += subSegmentStr;
+ });
+
+ this.segmentDefinition = segmentStr;
+ },
+ },
+ computed: {
+ firstSegment() {
+ return this.queriedSegments[0].segment;
+ },
+ firstMatch() {
+ const segment = this.queriedSegments[0];
+ if (!segment) {
+ return null;
+ }
+
+ if (segment.type && this.matches[segment.type]) {
+ return this.matches[segment.type][0].key;
+ }
+
+ return this.matches[''][0].key;
+ },
+ segments() {
+ const result: Record<string, SegmentMetadata> = {};
+ this.queriedSegments.forEach((s) => {
+ result[s.segment] = s;
+ });
+ return result;
+ },
+ segmentList() {
+ return this.queriedSegments.map((s) => ({
+ group: s.category,
+ key: s.segment,
+ value: s.name,
+ tooltip: s.acceptedValues ? stripTags(s.acceptedValues) : undefined,
+ }));
+ },
+ addNewOrConditionLinkText() {
+ return `+${translate(
+ 'SegmentEditor_AddANDorORCondition',
+ `<span>${translate('SegmentEditor_OperatorOR')}</span>`,
+ )}`;
+ },
+ andConditionLabel() {
+ return this.conditions.length ? translate('SegmentEditor_OperatorAND') : '';
+ },
+ addNewAndConditionLinkText() {
+ return `+${translate('SegmentEditor_AddANDorORCondition', `<span>${this.andConditionLabel}</span>`)}`;
+ },
+ isLoading() {
+ return SegmentGeneratorStore.state.value.isLoading;
+ },
+ },
+});
+</script>
diff --git a/plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue b/plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue
new file mode 100644
index 0000000000..15880bb0db
--- /dev/null
+++ b/plugins/SegmentEditor/vue/src/SegmentGenerator/ValueInput.vue
@@ -0,0 +1,38 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <input
+ :placeholder="translate('General_Value')"
+ type="text"
+ class="autocomplete"
+ :title="translate('General_Value')"
+ autocomplete="off"
+ :value="or.value"
+ @keydown="onKeydownOrConditionValue($event)"
+ @change="onKeydownOrConditionValue($event)"
+ />
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { debounce } from 'CoreHome';
+
+export default defineComponent({
+ props: {
+ or: Object,
+ },
+ created() {
+ this.onKeydownOrConditionValue = debounce(this.onKeydownOrConditionValue, 50);
+ },
+ emits: ['update'],
+ methods: {
+ onKeydownOrConditionValue(event: Event) {
+ this.$emit('update', (event.target as HTMLInputElement).value);
+ },
+ },
+});
+</script>
diff --git a/plugins/SegmentEditor/vue/src/index.ts b/plugins/SegmentEditor/vue/src/index.ts
new file mode 100644
index 0000000000..5258822104
--- /dev/null
+++ b/plugins/SegmentEditor/vue/src/index.ts
@@ -0,0 +1,12 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import './SegmentGenerator/SegmentGenerator.adapter';
+
+export * from './types';
+export { default as SegmentGeneratorStore } from './SegmentGenerator/SegmentGenerator.store';
+export { default as SegmentGenerator } from './SegmentGenerator/SegmentGenerator.vue';
diff --git a/plugins/SegmentEditor/vue/src/types.ts b/plugins/SegmentEditor/vue/src/types.ts
new file mode 100644
index 0000000000..62aab9d1f5
--- /dev/null
+++ b/plugins/SegmentEditor/vue/src/types.ts
@@ -0,0 +1,30 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+export interface SegmentMetadata {
+ acceptedValues: string;
+ category: string;
+ name: string;
+ needsMostFrequentValues: boolean;
+ segment: string;
+ sqlFilterValue: unknown;
+ sqlSegment: string;
+ type: string;
+}
+
+export interface SegmentOrCondition {
+ segment: string;
+ matches: string;
+ value: string;
+
+ id?: string;
+ isLoading?: boolean;
+}
+
+export interface SegmentAndCondition {
+ orConditions: SegmentOrCondition[];
+}
diff --git a/plugins/SitesManager/lang/de.json b/plugins/SitesManager/lang/de.json
index 25709c27fa..1c8c2883fb 100644
--- a/plugins/SitesManager/lang/de.json
+++ b/plugins/SitesManager/lang/de.json
@@ -101,6 +101,8 @@
"SiteWithoutDataOtherIntegrations": "Andere Integrationen",
"SiteWithoutDataOtherWays": "Andere Wege",
"SiteWithoutDataSetupTracking": "Bitte fügen Sie den folgenden %1$sTracking Code%2$s auf ihrer Website ein, insofern Sie dies noch nicht haben.",
+ "SiteWithoutDataSinglePageApplication": "Single-Page-Anwendung oder Progressive Web App",
+ "SiteWithoutDataSinglePageApplicationDescription": "Für das Tracking von Single-Page-Anwendungen oder progressiven Web-Apps. Lesen Sie unseren %1$sLeitfaden%2$s.",
"SiteWithoutDataTitle": "Nur noch ein letzter Schritt, um ihren Datenverkehr mit Matomo zu tracken und wertvolle Einsichten zu erhalten",
"Sites": "Websites/Webseiten",
"SuperUserAccessCan": "Ein Nutzer mit Hauptadministrator-Berechtigung kann ebenfalls %1$sglobale Einstellungen%2$s für neue Websites vornehmen.",
diff --git a/plugins/SitesManager/lang/ga.json b/plugins/SitesManager/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/SitesManager/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/SitesManager/lang/id.json b/plugins/SitesManager/lang/id.json
index b64bfd7af9..a28e7bfa8f 100644
--- a/plugins/SitesManager/lang/id.json
+++ b/plugins/SitesManager/lang/id.json
@@ -1,74 +1,122 @@
{
"SitesManager": {
"AddMeasurable": "Tambah pengukuran baru",
- "AddSite": "Tambahkan situs baru",
- "AdvancedTimezoneSupportNotFound": "Dukungan wilayah waktu tingkat lanjut tidak ditemukan dalam PHP Anda (didukung di PHP>=5.2). Anda dapat memilih secara manual perbedaan UTC.",
- "AliasUrlHelp": "Disarankan, tetapi tak diharuskan, menentukan bermacam URL, satu tiap baris, yang pengunjung Anda gunakan untuk mengakses situs ini. Nama pengganti URL untuk situs tidak akan tampil di Pengarah > Laporan Situs. Harap diperhatikan bahwa tidak perlu menentukan URL dengan atau tanpa 'www' sebagai kedua pertimbangan otomatis Matomo.",
- "ChangingYourTimezoneWillOnlyAffectDataForward": "Mengubah wilayah waktu Anda hanya berpengaruh terhadap data berikutnya, bukan data sebelumnya.",
+ "AddSite": "Tambahkan situs web baru",
+ "AdvancedTimezoneSupportNotFound": "Dukungan zona waktu lanjutan tidak ditemukan di PHP Anda (didukung di PHP&gt;=5.2). Anda masih dapat memilih offset UTC manual.",
+ "AliasUrlHelp": "Disarankan, tetapi tidak diharuskan, untuk menentukan berbagai URL, satu per baris, yang digunakan pengunjung Anda untuk mengakses situs web ini. URL Alias untuk situs web tidak akan muncul di laporan Perujuk &gt; Situs web. Perhatikan bahwa tidak perlu menentukan URL dengan dan tanpa 'www' karena Matomo secara otomatis akan mempertimbangkan keduanya.",
+ "ChangingYourTimezoneWillOnlyAffectDataForward": "Mengubah zona waktu Anda hanya akan memengaruhi data di masa mendatang, dan tidak akan diterapkan secara retroaktif.",
+ "ChooseMeasurableTypeHeadline": "Apa yang ingin Anda ukur?",
"Currency": "Mata Uang",
- "CurrencySymbolWillBeUsedForGoals": "Simbol Mata Uang akan menampilkan pendapatan pada Tujuan berikutnya.",
- "DefaultCurrencyForNewWebsites": "Mata Uang asali untuk situs baru",
- "DefaultTimezoneForNewWebsites": "Wilayah Waktu asali untuk situs baru",
- "DeleteConfirm": "Apakah Anda yakin menghapus situs %s?",
- "DisableSiteSearch": "Jangan lacak Pencarian Situs",
- "EcommerceHelp": "Bila diaktifkan, laporan \"Tujuan\" memiliki bagian \"Niaga-E\" baru.",
- "EnableEcommerce": "Niaga-E teraktifkan",
- "EnableSiteSearch": "Pencarian Situs aktif",
- "ExceptionDeleteSite": "Tak mungkin menghapus situs yang tidak terdaftar. Tambahkan situs baru telebih dahulu, lalu hapus situs tersebut.",
- "ExceptionEmptyName": "Nama Situs tidak boleh kosong.",
- "ExceptionInvalidCurrency": "Mata uang \"%1$s\" tidak sahih. Silakan masukkan mata uang yang sesuai (misalnya %2$s)",
- "ExceptionInvalidIPFormat": "IP yang dikecualikan \"%1$s\" bukan merupakan bentuk IP yang sahih (misalnya %2$s).",
- "ExceptionInvalidTimezone": "Wilayah waktu \"%s\" tidak sahih. Silakan masukkkam wilayah waktu yang sesuai.",
- "ExceptionInvalidUrl": "URL '%s' merupakan URL tak sahih.",
- "ExceptionNoUrl": "Anda harus menentukan setidaknya satu URL untuk situs.",
- "ExcludedIps": "IP Terkecualikan",
- "ExcludedParameters": "Parameter Terkecualikan",
- "ExcludedUserAgents": "Kecualikan Agen Pengguna",
+ "CurrencySymbolWillBeUsedForGoals": "Simbol Mata Uang akan ditampilkan di samping pendapatan Sasaran.",
+ "CustomizeJavaScriptTracker": "Sesuaikan pelacakan JavaScript",
+ "DefaultCurrencyForNewWebsites": "Mata Uang asali untuk situs web baru",
+ "DefaultTimezoneForNewWebsites": "Zona waktu asali untuk situs web baru",
+ "DeleteConfirm": "Apakah Anda yakin ingin menghapus situs web %s?",
+ "DeleteSiteExplanation": "Menghapus situs web akan menghapus semua data log yang telah dikumpulkan untuk. Tindakan ini bersifat permanen dan tidak dapat dibatalkan.",
+ "DetectingYourSite": "Mendeteksi situs Anda",
+ "DisableSiteSearch": "Jangan Lacak Pencarian Situs",
+ "EcommerceHelp": "Bila diaktifkan, laporan \"Sasaran\" akan memiliki bagian \"Niaga-el\" baru.",
+ "EmailInstructionsButton": "Kirimkan instruksi ini melalui surel",
+ "EmailInstructionsDocsPlainText": "Jika Anda ingin melakukan lebih dari sekadar melacak tampilan halaman, silakan lihat dokumentasi Matomo di %1$s.",
+ "EmailInstructionsGenerateTrackingCode": "Anda juga dapat membuat kode pelacakan khusus di %1$s.",
+ "EmailInstructionsSiteDetails": "Anda akan membutuhkan rincian ini untuk menggunakan API atau SDK untuk melacak kunjungan Matomo.",
+ "EmailInstructionsSiteDetailsHeading": "Rincian Situs Anda",
+ "EmailInstructionsSubject": "Kode Pelacakan Analitik Matomo",
+ "EmailInstructionsYourSiteId": "ID situs Anda: %1$s",
+ "EmailInstructionsYourTrackingUrl": "URL pelacakan Anda: %1$s",
+ "EnableEcommerce": "Niaga-el diaktifkan",
+ "EnableSiteSearch": "Pelacakan Pencarian Situs diaktifkan",
+ "ExceptionDeleteSite": "Tidak mungkin untuk menghapus situs web ini karena ini adalah satu-satunya situs web yang terdaftar. Tambahkan situs web baru terlebih dahulu, lalu hapus yang ini.",
+ "ExceptionEmptyName": "Nama situs web wajib diisi.",
+ "ExceptionInvalidCurrency": "Mata uang \"%1$s\" tidak valid. Harap masukkan simbol mata uang yang valid (mis. %2$s)",
+ "ExceptionInvalidIPFormat": "IP yang dikecualikan \"%1$s\" tidak memiliki format IP yang valid (mis. %2$s).",
+ "ExceptionInvalidTimezone": "Zona waktu \"%s\" tidak valid. Harap masukkan zona waktu yang valid.",
+ "ExceptionInvalidUrl": "URL '%s' bukanlah URL yang valid.",
+ "ExceptionNoUrl": "Anda harus menentukan setidaknya satu URL untuk situs web.",
+ "ExcludedIps": "IP yang Dikecualikan",
+ "ExcludedParameters": "Parameter yang Dikecualikan",
+ "ExcludedUserAgents": "Agen Pengguna yang Dikecualikan",
+ "ExtraInformationNeeded": "Untuk mengatur Matomo di sistem Anda, mungkin Anda membutuhkan informasi berikut ini:",
+ "Format_Utc": "UTC%s",
"GlobalExcludedUserAgentHelp1": "Masukkan daftar agen pengguna yang dikecualikan dari pelacakan oleh Matomo.",
- "GlobalExcludedUserAgentHelp2": "Anda dapat menggunakan ini untuk mengecualikan beberapa bot dari pelacakan.",
- "GlobalListExcludedIps": "Daftar Umum IP Terkecualikan",
- "GlobalListExcludedQueryParameters": "Daftar umum parameter Permintaan URL untuk dikecualikan",
- "GlobalListExcludedUserAgents": "Daftar Global agen pengguna terkecualikan",
- "GlobalListExcludedUserAgents_Desc": "Bila agen pengguna penggunjung mengandung larik apapun yang Anda tentukan, pengunjung akan dikecualikan dari Matomo.",
- "GlobalSettings": "Pengaturan global",
- "GlobalWebsitesSettings": "Pengaturan situs umum",
+ "GlobalExcludedUserAgentHelp2": "Anda dapat menggunakan ini untuk mengecualikan beberapa bot agar tidak dilacak.",
+ "GlobalExcludedUserAgentHelp3": "Ekspresi reguler seperti %s didukung.",
+ "GlobalListExcludedIps": "Daftar umum IP yang Dikecualikan",
+ "GlobalListExcludedQueryParameters": "Daftar umum parameter Kueri URL yang dikecualikan",
+ "GlobalListExcludedUserAgents": "Daftar umum agen pengguna yang dikecualikan",
+ "GlobalListExcludedUserAgents_Desc": "Jika agen pengguna pengunjung berisi salah satu string yang Anda tentukan, pengunjung akan dikeluarkan dari Matomo.",
+ "GlobalSettings": "Pengaturan umum",
+ "GlobalWebsitesSettings": "Pengaturan umum situs web",
+ "HelpExcludedIpAddresses": "Masukkan daftar IP, satu per baris, yang ingin Anda kecualikan agar tidak dilacak oleh Matomo. Anda dapat menggunakan notasi CIDR mis. %1$s atau Anda dapat menggunakan wildcard, mis. %2$s atau %3$s",
+ "InstallationGuides": "Panduan Instalasi",
+ "InstallationGuidesIntro": "Kami menyediakan panduan langkah demi langkah yang menjelaskan mengenai cara menyematkan kode pelacakan untuk beberapa CMS dan pembuat situs web populer:",
+ "Integrations": "Integrasi",
"JsTrackingTagHelp": "Ini merupakan kode Pelacakan JavaScript untuk dimasukkan ke seluruh halaman Anda",
- "KeepURLFragments": "Pelacakan pecahan URL Halaman",
- "KeepURLFragmentsHelp": "Bila kotak centang di bawah tidak dicentang, pecahan URL Halaman (apapun setelah %1$s) akan dihapus ketika pelacakan: %2$s akan dilacak sebagai %3$s",
- "KeepURLFragmentsHelp2": "Anda juga dapat menimpa pengaturan ini untuk situs individu di atas.",
- "KeepURLFragmentsLong": "Jaga pecahan URL halaman ketika pelacakan URL Halaman",
+ "KeepURLFragments": "Pelacakan fragmen URL halaman",
+ "KeepURLFragmentsHelp": "Bila kotak centang di bawah ini tidak dicentang, fragmen URL Halaman (apa pun setelah %1$s) akan dihapus ketika pelacakan: %2$s akan dilacak sebagai %3$s",
+ "KeepURLFragmentsHelp2": "Anda juga dapat mengganti setelan ini untuk situs web individual di atas.",
+ "KeepURLFragmentsLong": "Simpan fragmen URL Halaman saat melacak URL Halaman",
"ListOfIpsToBeExcludedOnAllWebsites": "IP berikut ini akan dikecualikan dari pelacakan seluruh situs.",
- "ListOfQueryParametersToBeExcludedOnAllWebsites": "Parameter URL berikut akan dikecualikan dari URL situs.",
- "MainDescription": "Laporan Analisis Ramatraya Anda membutuhkan Situs! Menambah, memperbarui, menghapus Situs, dan menampilkan JavaScript untuk ditampilakan ke halaman Anda.",
- "NoWebsites": "Anda tidak memiliki situs untuk dikelola.",
- "NotAnEcommerceSite": "Bukan situs Niaga-E",
- "NotFound": "Tak ada situs yang ditemukan",
- "OnlyOneSiteAtTime": "Anda hanya dapat menyunting satu situs dalam sekali waktu. Silakan Simpam atau Batalkan perubahan terhadap situs %s.",
- "PiwikOffersEcommerceAnalytics": "Matomo mungkinkan pelaporan dan pelacakan Analisis Niaga-E. Pelajari tentang %1$s Analisis Niaga-E%2$s.",
- "PiwikWillAutomaticallyExcludeCommonSessionParameters": "Matomo akan otomatis kecualikan parameter sesi umum (%s).",
- "SearchCategoryDesc": "Matomo juga dapat melacak kategori Pencarian untuk setiap kata kunci pencarian situs dalam.",
+ "ListOfQueryParametersToBeExcludedOnAllWebsites": "Parameter URL Kueri di bawah ini akan dikecualikan dari URL di semua situs web.",
+ "ListOfQueryParametersToExclude": "Masukkan daftar Parameter Kueri URL, satu per baris, untuk dikecualikan dari laporan URL Halaman. Ekspresi reguler seperti %s didukung.",
+ "LogAnalytics": "Analisis Log",
+ "LogAnalyticsDescription": "Jika metode pelacakan Javascript tidak memungkinkan, Anda dapat %1$smenggunakan analisis log server%2$s sebagai metode alternatif untuk melacak pengguna situs web Anda.",
+ "MainDescription": "Laporan Analisis Web Anda membutuhkan Situs Web! Tambah, perbarui, hapus Situs Web, dan tampilkan JavaScript untuk disisipkan di halaman Anda.",
+ "MenuManage": "Kelola",
+ "MobileAppsAndSDKs": "Aplikasi seluler dan SDK",
+ "MobileAppsAndSDKsDescription": "Tidak melacak situs web? Anda juga dapat melacak aplikasi seluler atau jenis aplikasi lainnya menggunakan salah satu dari %1$sSDK yang tersedia%2$s.",
+ "NoWebsites": "Anda tidak memiliki situs web untuk dikelola.",
+ "NotAnEcommerceSite": "Bukan situs web Niaga-el",
+ "NotFound": "Tidak ada situs web yang ditemukan",
+ "OnlyMatchedUrlsAllowed": "Hanya lacak kunjungan dan tindakan saat URL tindakan dimulai dengan salah satu URL di atas.",
+ "OnlyMatchedUrlsAllowedHelp": "Saat diaktifkan, Matomo hanya akan melacak tindakan internal saat URL Halaman adalah salah satu dari URL yang dikenal untuk situs web Anda. Ini mencegah orang-orang mengirim spam analitik Anda dengan URL untuk situs web lain.",
+ "OnlyMatchedUrlsAllowedHelpExamples": "Domain dan lokasi harus sama persis dan setiap subdomain yang valid harus ditentukan secara terpisah. Misalnya saat URL yang diketahui adalah 'http://contoh.com/lokasi' dan 'http://bagus.contoh.com', melacak permintaan untuk 'http://contoh.com/lokasilain' atau 'http:/ /buruk.contoh.com' diabaikan.",
+ "OnlyOneSiteAtTime": "Anda hanya dapat mengedit satu situs web dalam satu waktu. Harap Simpan atau Batalkan modifikasi Anda saat ini pada situs web %s.",
+ "PiwikOffersEcommerceAnalytics": "Matomo memungkinkan pelacakan &amp; pelaporan Analisis Niaga-el tingkat lanjut. Pelajari lebih lanjut tentang %1$s Analisis Niaga-el%2$s.",
+ "PiwikWillAutomaticallyExcludeCommonSessionParameters": "Matomo akan secara otomatis mengecualikan parameter sesi umum (%s).",
+ "PluginDescription": "Manajemen situs web memungkinkan Anda untuk menambahkan situs web baru dan mengedit situs web yang sudah ada.",
+ "SearchCategoryDesc": "Matomo juga dapat melacak kategori Pencarian untuk setiap kata kunci pencarian situs internal.",
"SearchCategoryLabel": "Parameter kategori",
- "SearchCategoryParametersDesc": "Anda diizinkan memasukkan daftar dipisah koma parameter kueri kategori pencarian tertentu.",
- "SearchKeywordLabel": "Parameter pencarian",
- "SearchKeywordParametersDesc": "Masukkan daftar dipisah koma seluruh daftar nama parameter kueri yang mengandung kata kunci pencarian situs.",
- "SearchParametersNote": "Catatan: Parameter Kueri dan parameter Kategori akan digunakan hanya untuk situs dengan Pencarian Situs diaktifkan tapi hanya meninggalkan parameter tersebut kosong.",
- "SearchParametersNote2": "Untuk mematikan Pencarian Situs untuk situs baru, biarkan dua isian itu kosong.",
+ "SearchCategoryParametersDesc": "Anda dapat memasukkan daftar parameter kueri yang dipisahkan koma yang menentukan kategori penelusuran.",
+ "SearchKeywordLabel": "Parameter kueri",
+ "SearchKeywordParametersDesc": "Masukkan daftar yang dipisahkan koma dari semua nama parameter kueri yang berisi kata kunci penelusuran situs.",
+ "SearchParametersNote": "Catatan: parameter Kueri dan parameter Kategori hanya akan digunakan untuk situs web yang mengaktifkan Penelusuran Situs, namun membiarkan parameter ini kosong.",
+ "SearchParametersNote2": "Untuk menonaktifkan Penelusuran Situs untuk situs web baru, biarkan kedua kolom ini kosong.",
"SearchUseDefault": "Gunakan parameter Pencarian Situs %1$sasali%2$s",
"SelectACity": "Pilih kota",
- "SelectDefaultCurrency": "Anda dapat Mata Uang yang diatur secara asali untuk situs baru.",
- "SelectDefaultTimezone": "Anda dapat memilih yang dipilih secara asali untuk situs baru.",
- "ShowTrackingTag": "Tampilkan kode Pelacakan",
- "SiteSearchUse": "Anda dapat menggunakan Matomo untuk melacak dan melaporkan apa yang pengunjung cari di mesin pencari dalam situs Anda.",
- "Sites": "Situs",
- "SuperUserAccessCan": "Pengguna dengan akses Super User juga dapat %1$s menentukan pengaturan global %2$s untuk situs web baru.",
- "Timezone": "Wilayah waktu",
- "TrackingSiteSearch": "Melacak Pencarian Situs Dalam",
- "TrackingTags": "Kode Pelacakan untuk %s",
+ "SelectDefaultCurrency": "Anda dapat memilih mata uang yang akan ditetapkan secara asali untuk situs web yang baru.",
+ "SelectDefaultTimezone": "Anda dapat memilih zona waktu untuk dipilih secara asali untuk situs web yang baru.",
+ "ShowTrackingTag": "Tampilkan Kode Pelacakan",
+ "SiteSearchUse": "Anda dapat menggunakan Matomo untuk melacak dan melaporkan apa yang dicari oleh pengunjung di mesin pencari internal situs web Anda.",
+ "SiteWithoutDataChoosePreferredWay": "Pilih cara yang Anda inginkan untuk menyiapkan",
+ "SiteWithoutDataDescription": "Anda perlu menambahkan beberapa kode tambahan ke situs web atau aplikasi seluler Anda jika Anda belum melakukannya. Periksa opsi Anda di bawah ini atau %1$skirim semua instruksi ke rekan satu tim%2$s.",
+ "SiteWithoutDataDetectedGtm": "Kami juga mendeteksi bahwa Anda menggunakan Pengelola Tag Google. Jika Anda lebih suka mengatur Matomo menggunakan Pengelola Tag Google, ikuti %2$spanduan ini%3$s.",
+ "SiteWithoutDataDetectedSite": "Kami mendeteksi bahwa Anda menggunakan situs %1$s. Cukup ikuti instruksi dari %2$spanduan%3$s ini.",
+ "SiteWithoutDataGoogleTagManager": "Pengelola Tag Google",
+ "SiteWithoutDataGoogleTagManagerDescription": "Anda dapat menggunakan Matomo dengan Pengelola Tag Google. Untuk menyiapkan Pelacakan Matomo di Pengelola Tag Google, ikuti petunjuk dari %1$spanduan%2$s ini.",
+ "SiteWithoutDataIgnoreMessage": "Jangan tampilkan pesan ini selama satu jam ke depan",
+ "SiteWithoutDataMatomoTagManager": "Pengelola Tag Matomo",
+ "SiteWithoutDataMatomoTagManagerNotActive": "Tidak tahu apa itu Pengelola Tag? Lihat %1$spanduan Pengelola Tag%2$s kami. Jika Anda menyematkan beberapa sumber daya dari situs web pihak ketiga ke situs web Anda, melacak situs web Anda menggunakan Pengelola Tag mungkin merupakan pilihan terbaik untuk Anda dibandingkan dengan menggunakan pelacakan JavaScript biasa.",
+ "SiteWithoutDataMessageDisappears": "Pesan ini akan hilang segera setelah beberapa data dilacak untuk situs web ini.",
+ "SiteWithoutDataOtherIntegrations": "Integrasi lainnya",
+ "SiteWithoutDataOtherWays": "Cara lain",
+ "SiteWithoutDataSetupTracking": "Harap sematkan %1$skode pelacakan%2$s di bawah ini ke situs web atau aplikasi seluler Anda jika Anda belum melakukannya.",
+ "SiteWithoutDataSinglePageApplication": "Aplikasi Satu Halaman atau Aplikasi Web Progresif",
+ "SiteWithoutDataSinglePageApplicationDescription": "Untuk Aplikasi Satu Halaman atau Pelacakan Aplikasi Web Progresif. Lihat %1$spanduan%2$s kami.",
+ "SiteWithoutDataTitle": "Hanya satu langkah terakhir untuk melacak lalu lintas Anda dengan Matomo dan mendapatkan wawasan berharga",
+ "Sites": "Situs Web",
+ "SuperUserAccessCan": "Pengguna dengan akses Pengguna Super juga dapat %1$s menentukan pengaturan umum%2$s untuk situs web baru.",
+ "Timezone": "Zona waktu",
+ "TrackingSiteSearch": "Melacak Pencarian Situs Internal",
+ "TrackingTags": "Kode pelacakan untuk %s",
"Type": "Jenis",
"UTCTimeIs": "Waktu UTC adalah %s.",
"Urls": "URL",
- "WebsitesManagement": "Pengatur Situs",
- "YouCurrentlyHaveAccessToNWebsites": "Anda telah memiliki akses ke %s situs.",
+ "WebsiteCreated": "Situs web telah dibuat",
+ "WebsiteUpdated": "Situs web telah diperbarui",
+ "WebsitesManagement": "Manajemen Situs Web",
+ "XManagement": "Kelola %s",
+ "YouCurrentlyHaveAccessToNWebsites": "Saat ini Anda memiliki akses ke situs web %s.",
"YourCurrentIpAddressIs": "Alamat IP Anda saat ini adalah %s"
}
}
diff --git a/plugins/SitesManager/lang/pt-br.json b/plugins/SitesManager/lang/pt-br.json
index 82cd27d95f..613f17f089 100644
--- a/plugins/SitesManager/lang/pt-br.json
+++ b/plugins/SitesManager/lang/pt-br.json
@@ -101,6 +101,8 @@
"SiteWithoutDataOtherIntegrations": "Outras integrações",
"SiteWithoutDataOtherWays": "Outras maneiras",
"SiteWithoutDataSetupTracking": "Por favor, configure o %1$scódigo de rastreamento%2$s abaixo em seu site ou aplicativo móvel, caso ainda não tenha feito.",
+ "SiteWithoutDataSinglePageApplication": "Aplicativo de página única (SPA) ou aplicativo da Web progressivo (PWA)",
+ "SiteWithoutDataSinglePageApplicationDescription": "Para aplicativos de página única ou rastreamento progressivo de aplicativos da Web. Confira nosso %1$sguia%2$s.",
"SiteWithoutDataTitle": "Apenas uma última etapa para rastrear seu tráfego com o Matomo e obter informações valiosas",
"Sites": "Sites",
"SuperUserAccessCan": "Um usuário com privilégio de Super Usuário também pode %1$s especificar configurações globais%2$s para novos sites.",
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.js b/plugins/SitesManager/vue/dist/SitesManager.umd.js
index 99ea5670ac..cad6c847f8 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.js
@@ -298,7 +298,7 @@ function sitesManagerTypeModelAdapter() {
}
window.angular.module('piwikApp.service').factory('sitesManagerTypeModel', sitesManagerTypeModelAdapter);
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=template&id=55014f8d
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=template&id=a989c766
var _hoisted_1 = {
class: "SitesManager",
@@ -359,7 +359,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
}, 8, ["help-url", "feature-name"])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.availableTypes.length]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_MainDescription')) + " ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
innerHTML: _ctx.$sanitize(_ctx.mainDescription)
}, null, 8, _hoisted_3), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, [_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.superUserAccessMessage
+ innerHTML: _ctx.$sanitize(_ctx.superUserAccessMessage)
}, null, 8, _hoisted_5)], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSuperUserAccess]])])], 512), [[_directive_content_intro]])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
hide_only: !_ctx.isLoading
@@ -464,7 +464,7 @@ function render(_ctx, _cache, $props, $setup, $data, $options) {
})
}, null, 8, ["site-is-being-edited", "has-prev", "hasNext", "offset-start", "offset-end", "total-number-of-sites", "is-loading", "search-term", "is-searching"])])], 512);
}
-// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=template&id=55014f8d
+// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue?vue&type=template&id=a989c766
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/SitesManagement/ButtonBar.vue?vue&type=template&id=e81d4006
@@ -1807,81 +1807,81 @@ SitesManagementvue_type_script_lang_ts.render = render
window.angular.module('piwikApp').factory('sitesManagerAPI', function () {
return {};
});
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=107daf55
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=7b5a0306
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_1 = {
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_1 = {
class: "SitesManager"
};
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_2 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
name: "globalSettings",
id: "globalSettings"
}, null, -1);
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_3 = {
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_3 = {
id: "excludedIpsGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_4 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_6 = ["innerHTML"];
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_7 = {
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_6 = ["innerHTML"];
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_7 = {
id: "excludedQueryParametersGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_8 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_9 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_10 = {
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_10 = {
id: "excludedUserAgentsGlobalHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_11 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_12 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_13 = {
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_13 = {
id: "timezoneHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_14 = {
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_14 = {
key: 0
};
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_15 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("br", null, null, -1);
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_17 = {
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_17 = {
id: "keepURLFragmentsHelp",
class: "inline-help-node"
};
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_18 = ["innerHTML"];
-var ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_19 = {
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_18 = ["innerHTML"];
+var ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_19 = {
class: "alert alert-info"
};
-function ManageGlobalSettingsvue_type_template_id_107daf55_render(_ctx, _cache, $props, $setup, $data, $options) {
+function ManageGlobalSettingsvue_type_template_id_7b5a0306_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
var _component_ContentBlock = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ContentBlock");
- return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, {
"content-title": _ctx.translate('SitesManager_GlobalWebsitesSettings')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_HelpExcludedIpAddresses', '1.2.3.4/24', '1.2.3.*', '1.2.*.*')) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_4, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.yourCurrentIpAddressIs
- }, null, 8, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_6)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ListOfQueryParametersToExclude', '/^sess.*|.*[dD]ate$/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_8, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', 'phpsessid, sessionid, ...')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp1')) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_11, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalListExcludedUserAgents_Desc')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp2')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp3', '/bot|spider|crawl|scanner/i')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [!_ctx.timezoneSupportEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_AdvancedTimezoneSupportNotFound')) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_15])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_UTCTimeIs', _ctx.utcTimeDate)) + " ", 1), ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
- innerHTML: _ctx.keepUrlFragmentHelp
- }, null, 8, ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_18), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_KeepURLFragmentsHelp2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ return [ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_2, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_HelpExcludedIpAddresses', '1.2.3.4/24', '1.2.3.*', '1.2.*.*')) + " ", 1), ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_4, ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.yourCurrentIpAddressIs)
+ }, null, 8, ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_6)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ListOfQueryParametersToExclude', '/^sess.*|.*[dD]ate$/')) + " ", 1), ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_8, ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_9, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters', 'phpsessid, sessionid, ...')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp1')) + " ", 1), ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_11, ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalListExcludedUserAgents_Desc')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp2')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_GlobalExcludedUserAgentHelp3', '/bot|spider|crawl|scanner/i')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [!_ctx.timezoneSupportEnabled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_AdvancedTimezoneSupportNotFound')) + " ", 1), ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_15])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_UTCTimeIs', _ctx.utcTimeDate)) + " ", 1), ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward')), 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ innerHTML: _ctx.$sanitize(_ctx.keepUrlFragmentHelp)
+ }, null, 8, ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_18), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_KeepURLFragmentsHelp2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "textarea",
name: "excludedIpsGlobal",
"var-type": "array",
@@ -1928,7 +1928,7 @@ function ManageGlobalSettingsvue_type_template_id_107daf55_render(_ctx, _cache,
introduction: _ctx.translate('SitesManager_KeepURLFragments'),
"inline-help": '#keepURLFragmentsHelp',
disabled: _ctx.isLoading
- }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_TrackingSiteSearch')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SiteSearchUse')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_107daf55_hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote2')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["modelValue", "title", "introduction", "disabled"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h3", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_TrackingSiteSearch')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SiteSearchUse')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", ManageGlobalSettingsvue_type_template_id_7b5a0306_hoisted_19, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('SitesManager_SearchParametersNote2')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
uicontrol: "text",
name: "searchKeywordParametersGlobal",
"var-type": "array",
@@ -1984,7 +1984,7 @@ function ManageGlobalSettingsvue_type_template_id_107daf55_render(_ctx, _cache,
_: 1
}, 8, ["content-title"]), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.hasSuperUserAccess]])]);
}
-// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=107daf55
+// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=template&id=7b5a0306
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue?vue&type=script&lang=ts
@@ -2123,7 +2123,7 @@ function ManageGlobalSettingsvue_type_template_id_107daf55_render(_ctx, _cache,
-ManageGlobalSettingsvue_type_script_lang_ts.render = ManageGlobalSettingsvue_type_template_id_107daf55_render
+ManageGlobalSettingsvue_type_script_lang_ts.render = ManageGlobalSettingsvue_type_template_id_7b5a0306_render
/* harmony default export */ var ManageGlobalSettings = (ManageGlobalSettingsvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.adapter.ts
diff --git a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
index 7c11a808ab..1ed34d9ba8 100644
--- a/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
+++ b/plugins/SitesManager/vue/dist/SitesManager.umd.min.js
@@ -11,13 +11,13 @@
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
*/
-function p(){return{get typesById(){return Object(r["clone"])(h.typesById.value)},fetchTypeById:function(e){var t=this;return h.fetchAvailableTypes().then((function(){return Object(r["cloneThenApply"])(t.typesById[e])}))},fetchAvailableTypes:function(){return h.fetchAvailableTypes().then((function(e){return Object(r["cloneThenApply"])(e)}))},hasMultipleTypes:function(){return h.fetchAvailableTypes().then((function(e){return e&&Object.keys(e).length>1}))},removeEditSiteIdParameterFromHash:h.removeEditSiteIdParameterFromHash.bind(h),getEditSiteIdParameter:h.getEditSiteIdParameter.bind(h)}}window.angular.module("piwikApp.service").factory("sitesManagerTypeModel",p);var g={class:"SitesManager",ref:"root"},f={class:"sites-manager-header"},S=["innerHTML"],v=Object(l["createElementVNode"])("br",null,null,-1),j=["innerHTML"],O={class:"loadingPiwik"},y=["alt"],E={class:"ui-confirm"},N={class:"center"},V=["title","onClick"],T={class:"ui-button-text"},x={class:"sitesManagerList"},M={key:0},w={class:"bottomButtonBar"};function A(e,t,n,a,i,r){var o=this,s=Object(l["resolveComponent"])("EnrichedHeadline"),c=Object(l["resolveComponent"])("ButtonBar"),u=Object(l["resolveComponent"])("MatomoDialog"),d=Object(l["resolveComponent"])("SiteFields"),b=Object(l["resolveDirective"])("content-intro");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",g,[Object(l["createElementVNode"])("div",f,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("h2",null,[Object(l["createVNode"])(s,{"help-url":"https://matomo.org/docs/manage-websites/","feature-name":e.translate("SitesManager_WebsitesManagement")},{default:Object(l["withCtx"])((function(){return[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.headlineText),1)]})),_:1},8,["help-url","feature-name"])],512),[[l["vShow"],e.availableTypes.length]]),Object(l["createElementVNode"])("p",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_MainDescription"))+" ",1),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mainDescription)},null,8,S),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[v,Object(l["createElementVNode"])("span",{innerHTML:e.superUserAccessMessage},null,8,j)],512),[[l["vShow"],e.hasSuperUserAccess]])])],512),[[b]])]),Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])({hide_only:!e.isLoading})},[Object(l["createElementVNode"])("div",O,[Object(l["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,y),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_LoadingData")),1)])],2)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[0]||(t[0]=function(t){return e.searchTerm=t}),onAdd:t[1]||(t[1]=function(t){return e.addNewEntity()}),onSearch:t[2]||(t[2]=function(t){return e.searchSites(t)}),onPrev:t[3]||(t[3]=function(t){return e.previousPage()}),onNext:t[4]||(t[4]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])]),Object(l["createVNode"])(u,{modelValue:e.showAddSiteDialog,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.showAddSiteDialog=t})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",E,[Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("SitesManager_ChooseMeasurableTypeHeadline")),1),Object(l["createElementVNode"])("div",N,[Object(l["createElementVNode"])("p",null,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableTypes,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("button",{type:"button",key:t.id,title:t.description,class:"modal-close btn",style:{"margin-left":"20px"},onClick:function(n){e.addSite(t.id)},"aria-disabled":"false"},[Object(l["createElementVNode"])("span",T,Object(l["toDisplayString"])(t.name),1)],8,V)})),128))])])])])]})),_:1},8,["modelValue"]),Object(l["createElementVNode"])("div",x,[e.activeSearchTerm&&0===e.sites.length&&!e.isLoading?(Object(l["openBlock"])(),Object(l["createElementBlock"])("p",M,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_NotFound"))+" ",1),Object(l["createElementVNode"])("strong",null,Object(l["toDisplayString"])(e.activeSearchTerm),1)])):Object(l["createCommentVNode"])("",!0),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.sites,(function(n,a){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:n.idsite},[Object(l["createVNode"])(d,{site:n,"timezone-support-enabled":e.timezoneSupportEnabled,"utc-time":e.utcTime,"global-settings":e.globalSettings,onEditSite:t[6]||(t[6]=function(e){return o.isSiteBeingEdited=!0}),onCancelEditSite:t[7]||(t[7]=function(t){return e.afterCancelEdit(t)}),onDelete:t[8]||(t[8]=function(t){return e.afterDelete(t)}),onSave:function(t){return e.afterSave(t.site,t.settingValues,a,t.isNew)}},null,8,["site","timezone-support-enabled","utc-time","global-settings","onSave"])])})),128))]),Object(l["createElementVNode"])("div",w,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[9]||(t[9]=function(t){return e.searchTerm=t}),onAdd:t[10]||(t[10]=function(t){return e.addNewEntity()}),onSearch:t[11]||(t[11]=function(t){return e.searchSites(t)}),onPrev:t[12]||(t[12]=function(t){return e.previousPage()}),onNext:t[13]||(t[13]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])])],512)}var C={class:"sitesButtonBar clearfix"},_={class:"search"},P=["value","placeholder","disabled"],D=["title"],k={class:"paging"},G=["disabled"],U={style:{cursor:"pointer"}},L={class:"counter"},I=["disabled"],B={style:{cursor:"pointer"},class:"pointer"};function z(e,t,n,a,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",C,[Object(l["withDirectives"])(Object(l["createElementVNode"])("a",{class:Object(l["normalizeClass"])(["btn addSite",{disabled:e.siteIsBeingEdited}]),onClick:t[0]||(t[0]=function(t){return e.addNewEntity()}),tabindex:"1"},Object(l["toDisplayString"])(e.availableTypes.length>1?e.translate("SitesManager_AddMeasurable"):e.translate("SitesManager_AddSite")),3),[[l["vShow"],e.hasSuperUserAccess&&e.availableTypes]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",_,[Object(l["createElementVNode"])("input",{value:e.searchTerm,onKeydown:t[1]||(t[1]=function(t){return e.onKeydown(t)}),placeholder:e.translate("Actions_SubmenuSitesearch"),type:"text",disabled:e.siteIsBeingEdited},null,40,P),Object(l["createElementVNode"])("img",{onClick:t[2]||(t[2]=function(t){return e.searchSite()}),title:e.translate("General_ClickToSearch"),class:"search_ico",src:"plugins/Morpheus/images/search_ico.png"},null,8,D)],512),[[l["vShow"],e.hasPrev||e.hasNext||e.isSearching]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",k,[Object(l["createElementVNode"])("a",{class:"btn prev",disabled:!(e.hasPrev&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[3]||(t[3]=function(t){return e.previousPage()})},[Object(l["createElementVNode"])("span",U,"« "+Object(l["toDisplayString"])(e.translate("General_Previous")),1)],8,G),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",L,[Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.paginationText),1)],512),[[l["vShow"],e.hasPrev||e.hasNext]]),Object(l["createElementVNode"])("a",{class:"btn next",disabled:!(e.hasNext&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[4]||(t[4]=function(t){return e.nextPage()})},[Object(l["createElementVNode"])("span",B,Object(l["toDisplayString"])(e.translate("General_Next"))+" »",1)],8,I)],512),[[l["vShow"],e.hasPrev||e.hasNext]])])}var H=Object(l["defineComponent"])({props:{siteIsBeingEdited:{type:Boolean,required:!0},hasPrev:{type:Boolean,required:!0},hasNext:{type:Boolean,required:!0},offsetStart:{type:Number,required:!0},offsetEnd:{type:Number,required:!0},totalNumberOfSites:{type:Number},isLoading:{type:Boolean,required:!0},searchTerm:{type:String,required:!0},isSearching:{type:Boolean,required:!0}},emits:["add","search","prev","next","update:searchTerm"],created:function(){h.init(),this.onKeydown=Object(r["debounce"])(this.onKeydown,50)},computed:{hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},availableTypes:function(){return h.types.value},paginationText:function(){var e;return e=this.isSearching?Object(r["translate"])("General_PaginationWithoutTotal","".concat(this.offsetStart),"".concat(this.offsetEnd)):Object(r["translate"])("General_Pagination","".concat(this.offsetStart),"".concat(this.offsetEnd),null===this.totalNumberOfSites?"?":"".concat(this.totalNumberOfSites))," ".concat(e," ")}},methods:{addNewEntity:function(){this.$emit("add")},searchSite:function(){this.siteIsBeingEdited||this.$emit("search")},previousPage:function(){this.$emit("prev")},nextPage:function(){this.$emit("next")},onKeydown:function(e){var t=this;setTimeout((function(){"Enter"!==e.key?t.$emit("update:searchTerm",e.target.value):t.searchSiteOnEnter(e)}))},searchSiteOnEnter:function(e){e.preventDefault(),this.searchSite()}}});H.render=z;var F=H,K=["idsite","type"],W={class:"card-content"},R={key:0,class:"row"},Q={class:"col m3"},q={class:"title"},$={class:"title"},Y=["target","title","href"],J={class:"col m4"},X={class:"title"},Z={class:"title"},ee={class:"title"},te={class:"title"},ne={class:"col m4"},ae={class:"title"},ie=Object(l["createTextVNode"])(": "),re=["href"],le={key:0},oe={class:"title"},se={key:1},ce={class:"title"},ue={key:2},de={class:"title"},be={class:"col m1 text-right"},me=["title"],he=Object(l["createElementVNode"])("span",{class:"icon-edit"},null,-1),pe=[he],ge=["title"],fe=Object(l["createElementVNode"])("span",{class:"icon-delete"},null,-1),Se=[fe],ve={key:1},je={class:"form-group row"},Oe={class:"col s12 m6 input-field"},ye=["placeholder"],Ee=Object(l["createElementVNode"])("div",{class:"col s12 m6"},null,-1),Ne={id:"timezoneHelpText",class:"inline-help-node"},Ve={key:0},Te=Object(l["createElementVNode"])("br",null,null,-1),xe=Object(l["createElementVNode"])("br",null,null,-1),Me={class:"editingSiteFooter"},we=["value"],Ae={class:"ui-confirm"},Ce=["value"],_e=["value"];function Pe(e,t,n,a,i,r){var o,s,c,u=this,d=Object(l["resolveComponent"])("ActivityIndicator"),b=Object(l["resolveComponent"])("GroupedSettings"),m=Object(l["resolveComponent"])("Field"),h=Object(l["resolveComponent"])("MatomoDialog");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:Object(l["normalizeClass"])(["site card hoverable",{editingSite:!!e.editMode}]),idsite:e.theSite.idsite,type:e.theSite.type,ref:"root"},[Object(l["createElementVNode"])("div",W,[e.editMode?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",R,[Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("h4",null,Object(l["toDisplayString"])(e.theSite.name),1),Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",q,Object(l["toDisplayString"])(e.translate("General_Id"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.idsite),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",$,Object(l["toDisplayString"])(e.translate("SitesManager_Type"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.currentType.name),1)],512),[[l["vShow"],e.availableTypes.length>1]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("a",{target:e.isInternalSetupUrl?"_self":"_blank",title:e.translate("SitesManager_ShowTrackingTag"),href:e.setupUrl},Object(l["toDisplayString"])(e.translate("SitesManager_ShowTrackingTag")),9,Y)],512),[[l["vShow"],e.theSite.idsite&&e.howToSetupUrl]])])]),Object(l["createElementVNode"])("div",J,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",X,Object(l["toDisplayString"])(e.translate("SitesManager_Timezone"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.timezone_name),1)]),Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",Z,Object(l["toDisplayString"])(e.translate("SitesManager_Currency"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.currency_name),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ee,Object(l["toDisplayString"])(e.translate("Goals_Ecommerce"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.ecommerce||"1"===e.theSite.ecommerce]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",te,Object(l["toDisplayString"])(e.translate("Actions_SubmenuSitesearch"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.sitesearch||"1"===e.theSite.sitesearch]])])]),Object(l["createElementVNode"])("div",ne,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ae,Object(l["toDisplayString"])(e.translate("SitesManager_Urls")),1),ie,(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.theSite.alias_urls,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("span",{key:t},[Object(l["createElementVNode"])("a",{target:"_blank",rel:"noreferrer noopener",href:t},Object(l["toDisplayString"])(t)+Object(l["toDisplayString"])(n===e.theSite.alias_urls.length-1?"":", "),9,re)])})),128))]),null!==(o=e.theSite.excluded_ips)&&void 0!==o&&o.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",le,[Object(l["createElementVNode"])("span",oe,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedIps"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_ips.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(s=e.theSite.excluded_parameters)&&void 0!==s&&s.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",se,[Object(l["createElementVNode"])("span",ce,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedParameters"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_parameters.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(c=e.theSite.excluded_user_agents)&&void 0!==c&&c.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",ue,[Object(l["createElementVNode"])("span",de,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedUserAgents"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_user_agents.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0)])]),Object(l["createElementVNode"])("div",be,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[0]||(t[0]=function(t){return e.editSite()}),title:e.translate("General_Edit")},pe,8,me)]),Object(l["createElementVNode"])("li",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[1]||(t[1]=function(e){return u.showRemoveDialog=!0}),title:e.translate("General_Delete")},Se,8,ge),[[l["vShow"],e.theSite.idsite]])])])])])),e.editMode?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ve,[Object(l["createElementVNode"])("div",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.theSite.name=t}),maxlength:"90",placeholder:e.translate("General_Name")},null,8,ye),[[l["vModelText"],e.theSite.name]]),Object(l["createElementVNode"])("label",null,Object(l["toDisplayString"])(e.translate("General_Name")),1)]),Ee]),Object(l["createVNode"])(d,{loading:e.isLoading},null,8,["loading"]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.measurableSettings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:t.pluginName},[Object(l["createVNode"])(b,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"])])})),128)),Object(l["createVNode"])(m,{uicontrol:"select",name:"currency",modelValue:e.theSite.currency,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.theSite.currency=t}),title:e.translate("SitesManager_Currency"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),options:e.currencies},null,8,["modelValue","title","inline-help","options"]),Object(l["createVNode"])(m,{uicontrol:"select",name:"timezone",modelValue:e.theSite.timezone,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theSite.timezone=t}),title:e.translate("SitesManager_Timezone"),"inline-help":"#timezoneHelpText",options:e.timezones},null,8,["modelValue","title","options"]),Object(l["createElementVNode"])("div",Ne,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",Ve,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Te])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.utcTimeIs)+" ",1),xe,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Me,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"submit",class:"btn",value:e.translate("General_Save"),onClick:t[5]||(t[5]=function(t){return e.saveSite()})},null,8,we),[[l["vShow"],!e.isLoading]]),Object(l["createElementVNode"])("button",{class:"btn btn-link",onClick:t[6]||(t[6]=function(t){return e.cancelEditSite(e.site)})},Object(l["toDisplayString"])(e.translate("General_Cancel","","")),1)])])):Object(l["createCommentVNode"])("",!0)]),Object(l["createVNode"])(h,{modelValue:e.showRemoveDialog,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.showRemoveDialog=t}),onYes:t[8]||(t[8]=function(t){return e.deleteSite()})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",Ae,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.removeDialogTitle),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_DeleteSiteExplanation")),1),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_Yes"),role:"yes"},null,8,Ce),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_No"),role:"no"},null,8,_e)])]})),_:1},8,["modelValue"])],10,K)}var De=n("a5a2");function ke(e,t){return Be(e)||Ie(e,t)||Ue(e,t)||Ge()}function Ge(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Le(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(e,t):void 0}}function Le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function Ie(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function Be(e){if(Array.isArray(e))return e}function ze(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function He(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function Fe(e,t,n){return t&&He(e.prototype,t),n&&He(e,n),e}function Ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+function p(){return{get typesById(){return Object(r["clone"])(h.typesById.value)},fetchTypeById:function(e){var t=this;return h.fetchAvailableTypes().then((function(){return Object(r["cloneThenApply"])(t.typesById[e])}))},fetchAvailableTypes:function(){return h.fetchAvailableTypes().then((function(e){return Object(r["cloneThenApply"])(e)}))},hasMultipleTypes:function(){return h.fetchAvailableTypes().then((function(e){return e&&Object.keys(e).length>1}))},removeEditSiteIdParameterFromHash:h.removeEditSiteIdParameterFromHash.bind(h),getEditSiteIdParameter:h.getEditSiteIdParameter.bind(h)}}window.angular.module("piwikApp.service").factory("sitesManagerTypeModel",p);var g={class:"SitesManager",ref:"root"},f={class:"sites-manager-header"},S=["innerHTML"],v=Object(l["createElementVNode"])("br",null,null,-1),j=["innerHTML"],O={class:"loadingPiwik"},y=["alt"],E={class:"ui-confirm"},N={class:"center"},V=["title","onClick"],T={class:"ui-button-text"},x={class:"sitesManagerList"},M={key:0},w={class:"bottomButtonBar"};function A(e,t,n,a,i,r){var o=this,s=Object(l["resolveComponent"])("EnrichedHeadline"),c=Object(l["resolveComponent"])("ButtonBar"),u=Object(l["resolveComponent"])("MatomoDialog"),d=Object(l["resolveComponent"])("SiteFields"),b=Object(l["resolveDirective"])("content-intro");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",g,[Object(l["createElementVNode"])("div",f,[Object(l["withDirectives"])(Object(l["createElementVNode"])("div",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("h2",null,[Object(l["createVNode"])(s,{"help-url":"https://matomo.org/docs/manage-websites/","feature-name":e.translate("SitesManager_WebsitesManagement")},{default:Object(l["withCtx"])((function(){return[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.headlineText),1)]})),_:1},8,["help-url","feature-name"])],512),[[l["vShow"],e.availableTypes.length]]),Object(l["createElementVNode"])("p",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_MainDescription"))+" ",1),Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.mainDescription)},null,8,S),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",null,[v,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.superUserAccessMessage)},null,8,j)],512),[[l["vShow"],e.hasSuperUserAccess]])])],512),[[b]])]),Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("div",{class:Object(l["normalizeClass"])({hide_only:!e.isLoading})},[Object(l["createElementVNode"])("div",O,[Object(l["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:e.translate("General_LoadingData")},null,8,y),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_LoadingData")),1)])],2)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[0]||(t[0]=function(t){return e.searchTerm=t}),onAdd:t[1]||(t[1]=function(t){return e.addNewEntity()}),onSearch:t[2]||(t[2]=function(t){return e.searchSites(t)}),onPrev:t[3]||(t[3]=function(t){return e.previousPage()}),onNext:t[4]||(t[4]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])]),Object(l["createVNode"])(u,{modelValue:e.showAddSiteDialog,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.showAddSiteDialog=t})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",E,[Object(l["createElementVNode"])("div",null,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.translate("SitesManager_ChooseMeasurableTypeHeadline")),1),Object(l["createElementVNode"])("div",N,[Object(l["createElementVNode"])("p",null,[(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.availableTypes,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("button",{type:"button",key:t.id,title:t.description,class:"modal-close btn",style:{"margin-left":"20px"},onClick:function(n){e.addSite(t.id)},"aria-disabled":"false"},[Object(l["createElementVNode"])("span",T,Object(l["toDisplayString"])(t.name),1)],8,V)})),128))])])])])]})),_:1},8,["modelValue"]),Object(l["createElementVNode"])("div",x,[e.activeSearchTerm&&0===e.sites.length&&!e.isLoading?(Object(l["openBlock"])(),Object(l["createElementBlock"])("p",M,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_NotFound"))+" ",1),Object(l["createElementVNode"])("strong",null,Object(l["toDisplayString"])(e.activeSearchTerm),1)])):Object(l["createCommentVNode"])("",!0),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.sites,(function(n,a){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:n.idsite},[Object(l["createVNode"])(d,{site:n,"timezone-support-enabled":e.timezoneSupportEnabled,"utc-time":e.utcTime,"global-settings":e.globalSettings,onEditSite:t[6]||(t[6]=function(e){return o.isSiteBeingEdited=!0}),onCancelEditSite:t[7]||(t[7]=function(t){return e.afterCancelEdit(t)}),onDelete:t[8]||(t[8]=function(t){return e.afterDelete(t)}),onSave:function(t){return e.afterSave(t.site,t.settingValues,a,t.isNew)}},null,8,["site","timezone-support-enabled","utc-time","global-settings","onSave"])])})),128))]),Object(l["createElementVNode"])("div",w,[Object(l["createVNode"])(c,{"site-is-being-edited":e.isSiteBeingEdited,"has-prev":e.hasPrev,hasNext:e.hasNext,"offset-start":e.offsetStart,"offset-end":e.offsetEnd,"total-number-of-sites":e.totalNumberOfSites,"is-loading":e.isLoading,"search-term":e.searchTerm,"is-searching":!!e.activeSearchTerm,"onUpdate:searchTerm":t[9]||(t[9]=function(t){return e.searchTerm=t}),onAdd:t[10]||(t[10]=function(t){return e.addNewEntity()}),onSearch:t[11]||(t[11]=function(t){return e.searchSites(t)}),onPrev:t[12]||(t[12]=function(t){return e.previousPage()}),onNext:t[13]||(t[13]=function(t){return e.nextPage()})},null,8,["site-is-being-edited","has-prev","hasNext","offset-start","offset-end","total-number-of-sites","is-loading","search-term","is-searching"])])],512)}var C={class:"sitesButtonBar clearfix"},_={class:"search"},P=["value","placeholder","disabled"],D=["title"],k={class:"paging"},G=["disabled"],U={style:{cursor:"pointer"}},L={class:"counter"},z=["disabled"],I={style:{cursor:"pointer"},class:"pointer"};function B(e,t,n,a,i,r){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",C,[Object(l["withDirectives"])(Object(l["createElementVNode"])("a",{class:Object(l["normalizeClass"])(["btn addSite",{disabled:e.siteIsBeingEdited}]),onClick:t[0]||(t[0]=function(t){return e.addNewEntity()}),tabindex:"1"},Object(l["toDisplayString"])(e.availableTypes.length>1?e.translate("SitesManager_AddMeasurable"):e.translate("SitesManager_AddSite")),3),[[l["vShow"],e.hasSuperUserAccess&&e.availableTypes]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",_,[Object(l["createElementVNode"])("input",{value:e.searchTerm,onKeydown:t[1]||(t[1]=function(t){return e.onKeydown(t)}),placeholder:e.translate("Actions_SubmenuSitesearch"),type:"text",disabled:e.siteIsBeingEdited},null,40,P),Object(l["createElementVNode"])("img",{onClick:t[2]||(t[2]=function(t){return e.searchSite()}),title:e.translate("General_ClickToSearch"),class:"search_ico",src:"plugins/Morpheus/images/search_ico.png"},null,8,D)],512),[[l["vShow"],e.hasPrev||e.hasNext||e.isSearching]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("div",k,[Object(l["createElementVNode"])("a",{class:"btn prev",disabled:!(e.hasPrev&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[3]||(t[3]=function(t){return e.previousPage()})},[Object(l["createElementVNode"])("span",U,"« "+Object(l["toDisplayString"])(e.translate("General_Previous")),1)],8,G),Object(l["withDirectives"])(Object(l["createElementVNode"])("span",L,[Object(l["createElementVNode"])("span",null,Object(l["toDisplayString"])(e.paginationText),1)],512),[[l["vShow"],e.hasPrev||e.hasNext]]),Object(l["createElementVNode"])("a",{class:"btn next",disabled:!(e.hasNext&&!e.isLoading&&!e.siteIsBeingEdited)||void 0,onClick:t[4]||(t[4]=function(t){return e.nextPage()})},[Object(l["createElementVNode"])("span",I,Object(l["toDisplayString"])(e.translate("General_Next"))+" »",1)],8,z)],512),[[l["vShow"],e.hasPrev||e.hasNext]])])}var H=Object(l["defineComponent"])({props:{siteIsBeingEdited:{type:Boolean,required:!0},hasPrev:{type:Boolean,required:!0},hasNext:{type:Boolean,required:!0},offsetStart:{type:Number,required:!0},offsetEnd:{type:Number,required:!0},totalNumberOfSites:{type:Number},isLoading:{type:Boolean,required:!0},searchTerm:{type:String,required:!0},isSearching:{type:Boolean,required:!0}},emits:["add","search","prev","next","update:searchTerm"],created:function(){h.init(),this.onKeydown=Object(r["debounce"])(this.onKeydown,50)},computed:{hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},availableTypes:function(){return h.types.value},paginationText:function(){var e;return e=this.isSearching?Object(r["translate"])("General_PaginationWithoutTotal","".concat(this.offsetStart),"".concat(this.offsetEnd)):Object(r["translate"])("General_Pagination","".concat(this.offsetStart),"".concat(this.offsetEnd),null===this.totalNumberOfSites?"?":"".concat(this.totalNumberOfSites))," ".concat(e," ")}},methods:{addNewEntity:function(){this.$emit("add")},searchSite:function(){this.siteIsBeingEdited||this.$emit("search")},previousPage:function(){this.$emit("prev")},nextPage:function(){this.$emit("next")},onKeydown:function(e){var t=this;setTimeout((function(){"Enter"!==e.key?t.$emit("update:searchTerm",e.target.value):t.searchSiteOnEnter(e)}))},searchSiteOnEnter:function(e){e.preventDefault(),this.searchSite()}}});H.render=B;var F=H,K=["idsite","type"],W={class:"card-content"},R={key:0,class:"row"},Q={class:"col m3"},q={class:"title"},$={class:"title"},Y=["target","title","href"],J={class:"col m4"},X={class:"title"},Z={class:"title"},ee={class:"title"},te={class:"title"},ne={class:"col m4"},ae={class:"title"},ie=Object(l["createTextVNode"])(": "),re=["href"],le={key:0},oe={class:"title"},se={key:1},ce={class:"title"},ue={key:2},de={class:"title"},be={class:"col m1 text-right"},me=["title"],he=Object(l["createElementVNode"])("span",{class:"icon-edit"},null,-1),pe=[he],ge=["title"],fe=Object(l["createElementVNode"])("span",{class:"icon-delete"},null,-1),Se=[fe],ve={key:1},je={class:"form-group row"},Oe={class:"col s12 m6 input-field"},ye=["placeholder"],Ee=Object(l["createElementVNode"])("div",{class:"col s12 m6"},null,-1),Ne={id:"timezoneHelpText",class:"inline-help-node"},Ve={key:0},Te=Object(l["createElementVNode"])("br",null,null,-1),xe=Object(l["createElementVNode"])("br",null,null,-1),Me={class:"editingSiteFooter"},we=["value"],Ae={class:"ui-confirm"},Ce=["value"],_e=["value"];function Pe(e,t,n,a,i,r){var o,s,c,u=this,d=Object(l["resolveComponent"])("ActivityIndicator"),b=Object(l["resolveComponent"])("GroupedSettings"),m=Object(l["resolveComponent"])("Field"),h=Object(l["resolveComponent"])("MatomoDialog");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{class:Object(l["normalizeClass"])(["site card hoverable",{editingSite:!!e.editMode}]),idsite:e.theSite.idsite,type:e.theSite.type,ref:"root"},[Object(l["createElementVNode"])("div",W,[e.editMode?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",R,[Object(l["createElementVNode"])("div",Q,[Object(l["createElementVNode"])("h4",null,Object(l["toDisplayString"])(e.theSite.name),1),Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",q,Object(l["toDisplayString"])(e.translate("General_Id"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.idsite),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",$,Object(l["toDisplayString"])(e.translate("SitesManager_Type"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.currentType.name),1)],512),[[l["vShow"],e.availableTypes.length>1]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("a",{target:e.isInternalSetupUrl?"_self":"_blank",title:e.translate("SitesManager_ShowTrackingTag"),href:e.setupUrl},Object(l["toDisplayString"])(e.translate("SitesManager_ShowTrackingTag")),9,Y)],512),[[l["vShow"],e.theSite.idsite&&e.howToSetupUrl]])])]),Object(l["createElementVNode"])("div",J,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",X,Object(l["toDisplayString"])(e.translate("SitesManager_Timezone"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.timezone_name),1)]),Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",Z,Object(l["toDisplayString"])(e.translate("SitesManager_Currency"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.currency_name),1)]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ee,Object(l["toDisplayString"])(e.translate("Goals_Ecommerce"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.ecommerce||"1"===e.theSite.ecommerce]]),Object(l["withDirectives"])(Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",te,Object(l["toDisplayString"])(e.translate("Actions_SubmenuSitesearch"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("General_Yes")),1)],512),[[l["vShow"],1===e.theSite.sitesearch||"1"===e.theSite.sitesearch]])])]),Object(l["createElementVNode"])("div",ne,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("span",ae,Object(l["toDisplayString"])(e.translate("SitesManager_Urls")),1),ie,(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.theSite.alias_urls,(function(t,n){return Object(l["openBlock"])(),Object(l["createElementBlock"])("span",{key:t},[Object(l["createElementVNode"])("a",{target:"_blank",rel:"noreferrer noopener",href:t},Object(l["toDisplayString"])(t)+Object(l["toDisplayString"])(n===e.theSite.alias_urls.length-1?"":", "),9,re)])})),128))]),null!==(o=e.theSite.excluded_ips)&&void 0!==o&&o.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",le,[Object(l["createElementVNode"])("span",oe,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedIps"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_ips.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(s=e.theSite.excluded_parameters)&&void 0!==s&&s.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",se,[Object(l["createElementVNode"])("span",ce,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedParameters"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_parameters.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0),null!==(c=e.theSite.excluded_user_agents)&&void 0!==c&&c.length?(Object(l["openBlock"])(),Object(l["createElementBlock"])("li",ue,[Object(l["createElementVNode"])("span",de,Object(l["toDisplayString"])(e.translate("SitesManager_ExcludedUserAgents"))+":",1),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.theSite.excluded_user_agents.split(/\s*,\s*/g).join(", ")),1)])):Object(l["createCommentVNode"])("",!0)])]),Object(l["createElementVNode"])("div",be,[Object(l["createElementVNode"])("ul",null,[Object(l["createElementVNode"])("li",null,[Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[0]||(t[0]=function(t){return e.editSite()}),title:e.translate("General_Edit")},pe,8,me)]),Object(l["createElementVNode"])("li",null,[Object(l["withDirectives"])(Object(l["createElementVNode"])("button",{class:"table-action",onClick:t[1]||(t[1]=function(e){return u.showRemoveDialog=!0}),title:e.translate("General_Delete")},Se,8,ge),[[l["vShow"],e.theSite.idsite]])])])])])),e.editMode?(Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ve,[Object(l["createElementVNode"])("div",je,[Object(l["createElementVNode"])("div",Oe,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"text","onUpdate:modelValue":t[2]||(t[2]=function(t){return e.theSite.name=t}),maxlength:"90",placeholder:e.translate("General_Name")},null,8,ye),[[l["vModelText"],e.theSite.name]]),Object(l["createElementVNode"])("label",null,Object(l["toDisplayString"])(e.translate("General_Name")),1)]),Ee]),Object(l["createVNode"])(d,{loading:e.isLoading},null,8,["loading"]),(Object(l["openBlock"])(!0),Object(l["createElementBlock"])(l["Fragment"],null,Object(l["renderList"])(e.measurableSettings,(function(t){return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",{key:t.pluginName},[Object(l["createVNode"])(b,{"group-name":t.pluginName,settings:t.settings,"all-setting-values":e.settingValues,onChange:function(n){return e.settingValues["".concat(t.pluginName,".").concat(n.name)]=n.value}},null,8,["group-name","settings","all-setting-values","onChange"])])})),128)),Object(l["createVNode"])(m,{uicontrol:"select",name:"currency",modelValue:e.theSite.currency,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.theSite.currency=t}),title:e.translate("SitesManager_Currency"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),options:e.currencies},null,8,["modelValue","title","inline-help","options"]),Object(l["createVNode"])(m,{uicontrol:"select",name:"timezone",modelValue:e.theSite.timezone,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theSite.timezone=t}),title:e.translate("SitesManager_Timezone"),"inline-help":"#timezoneHelpText",options:e.timezones},null,8,["modelValue","title","options"]),Object(l["createElementVNode"])("div",Ne,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",Ve,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Te])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.utcTimeIs)+" ",1),xe,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Me,[Object(l["withDirectives"])(Object(l["createElementVNode"])("input",{type:"submit",class:"btn",value:e.translate("General_Save"),onClick:t[5]||(t[5]=function(t){return e.saveSite()})},null,8,we),[[l["vShow"],!e.isLoading]]),Object(l["createElementVNode"])("button",{class:"btn btn-link",onClick:t[6]||(t[6]=function(t){return e.cancelEditSite(e.site)})},Object(l["toDisplayString"])(e.translate("General_Cancel","","")),1)])])):Object(l["createCommentVNode"])("",!0)]),Object(l["createVNode"])(h,{modelValue:e.showRemoveDialog,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.showRemoveDialog=t}),onYes:t[8]||(t[8]=function(t){return e.deleteSite()})},{default:Object(l["withCtx"])((function(){return[Object(l["createElementVNode"])("div",Ae,[Object(l["createElementVNode"])("h2",null,Object(l["toDisplayString"])(e.removeDialogTitle),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_DeleteSiteExplanation")),1),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_Yes"),role:"yes"},null,8,Ce),Object(l["createElementVNode"])("input",{type:"button",value:e.translate("General_No"),role:"no"},null,8,_e)])]})),_:1},8,["modelValue"])],10,K)}var De=n("a5a2");function ke(e,t){return Ie(e)||ze(e,t)||Ue(e,t)||Ge()}function Ge(){throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function Ue(e,t){if(e){if("string"===typeof e)return Le(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?Le(e,t):void 0}}function Le(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,a=new Array(t);n<t;n++)a[n]=e[n];return a}function ze(e,t){var n=null==e?null:"undefined"!==typeof Symbol&&e[Symbol.iterator]||e["@@iterator"];if(null!=n){var a,i,r=[],l=!0,o=!1;try{for(n=n.call(e);!(l=(a=n.next()).done);l=!0)if(r.push(a.value),t&&r.length===t)break}catch(s){o=!0,i=s}finally{try{l||null==n["return"]||n["return"]()}finally{if(o)throw i}}return r}}function Ie(e){if(Array.isArray(e))return e}function Be(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function He(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function Fe(e,t,n){return t&&He(e.prototype,t),n&&He(e,n),e}function Ke(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var We=function(){function e(){var t=this;ze(this,e),Ke(this,"privateState",Object(l["reactive"])({isLoading:!1,timezones:[],timezoneSupportEnabled:!1})),Ke(this,"state",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState)}))),Ke(this,"timezones",Object(l["computed"])((function(){return t.state.value.timezones}))),Ke(this,"timezoneSupportEnabled",Object(l["computed"])((function(){return t.state.value.timezoneSupportEnabled}))),Ke(this,"isLoading",Object(l["computed"])((function(){return t.state.value.isLoading}))),Ke(this,"initializePromise",null)}return Fe(e,[{key:"init",value:function(){var e=this;return this.initializePromise||(this.privateState.isLoading=!0,this.initializePromise=Promise.all([this.checkTimezoneSupportEnabled(),this.fetchTimezones()]).finally((function(){e.privateState.isLoading=!1}))),this.initializePromise}},{key:"fetchTimezones",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getTimezonesList"}).then((function(t){var n=[];Object.entries(t).forEach((function(e){var t=ke(e,2),a=t[0],i=t[1];Object.entries(i).forEach((function(e){var t=ke(e,2),i=t[0],r=t[1];n.push({group:a,label:i,code:r})}))})),e.privateState.timezones=n}))}},{key:"checkTimezoneSupportEnabled",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.isTimezoneSupportEnabled"}).then((function(t){e.privateState.timezoneSupportEnabled=t.value}))}}]),e}(),Re=new We;function Qe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function qe(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function $e(e,t,n){return t&&qe(e.prototype,t),n&&qe(e,n),e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+ */var We=function(){function e(){var t=this;Be(this,e),Ke(this,"privateState",Object(l["reactive"])({isLoading:!1,timezones:[],timezoneSupportEnabled:!1})),Ke(this,"state",Object(l["computed"])((function(){return Object(l["readonly"])(t.privateState)}))),Ke(this,"timezones",Object(l["computed"])((function(){return t.state.value.timezones}))),Ke(this,"timezoneSupportEnabled",Object(l["computed"])((function(){return t.state.value.timezoneSupportEnabled}))),Ke(this,"isLoading",Object(l["computed"])((function(){return t.state.value.isLoading}))),Ke(this,"initializePromise",null)}return Fe(e,[{key:"init",value:function(){var e=this;return this.initializePromise||(this.privateState.isLoading=!0,this.initializePromise=Promise.all([this.checkTimezoneSupportEnabled(),this.fetchTimezones()]).finally((function(){e.privateState.isLoading=!1}))),this.initializePromise}},{key:"fetchTimezones",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.getTimezonesList"}).then((function(t){var n=[];Object.entries(t).forEach((function(e){var t=ke(e,2),a=t[0],i=t[1];Object.entries(i).forEach((function(e){var t=ke(e,2),i=t[0],r=t[1];n.push({group:a,label:i,code:r})}))})),e.privateState.timezones=n}))}},{key:"checkTimezoneSupportEnabled",value:function(){var e=this;return r["AjaxHelper"].fetch({method:"SitesManager.isTimezoneSupportEnabled"}).then((function(t){e.privateState.timezoneSupportEnabled=t.value}))}}]),e}(),Re=new We;function Qe(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function qe(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}function $e(e,t,n){return t&&qe(e.prototype,t),n&&qe(e,n),e}function Ye(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
@@ -35,7 +35,7 @@ function p(){return{get typesById(){return Object(r["clone"])(h.typesById.value)
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */Object(r["createAngularJsAdapter"])({component:gt,scope:{},directiveName:"matomoSitesManagement"});window.angular.module("piwikApp").factory("sitesManagerAPI",(function(){return{}}));var ft={class:"SitesManager"},St=Object(l["createElementVNode"])("a",{name:"globalSettings",id:"globalSettings"},null,-1),vt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},jt=Object(l["createElementVNode"])("br",null,null,-1),Ot=Object(l["createElementVNode"])("br",null,null,-1),yt=["innerHTML"],Et={id:"excludedQueryParametersGlobalHelp",class:"inline-help-node"},Nt=Object(l["createElementVNode"])("br",null,null,-1),Vt=Object(l["createElementVNode"])("br",null,null,-1),Tt={id:"excludedUserAgentsGlobalHelp",class:"inline-help-node"},xt=Object(l["createElementVNode"])("br",null,null,-1),Mt=Object(l["createElementVNode"])("br",null,null,-1),wt={id:"timezoneHelp",class:"inline-help-node"},At={key:0},Ct=Object(l["createElementVNode"])("br",null,null,-1),_t=Object(l["createElementVNode"])("br",null,null,-1),Pt={id:"keepURLFragmentsHelp",class:"inline-help-node"},Dt=["innerHTML"],kt={class:"alert alert-info"};function Gt(e,t,n,a,i,r){var o=Object(l["resolveComponent"])("Field"),s=Object(l["resolveComponent"])("SaveButton"),c=Object(l["resolveComponent"])("ContentBlock");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ft,[Object(l["withDirectives"])(Object(l["createVNode"])(c,{"content-title":e.translate("SitesManager_GlobalWebsitesSettings")},{default:Object(l["withCtx"])((function(){return[St,Object(l["createElementVNode"])("div",vt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_HelpExcludedIpAddresses","1.2.3.4/24","1.2.3.*","1.2.*.*"))+" ",1),jt,Ot,Object(l["createElementVNode"])("span",{innerHTML:e.yourCurrentIpAddressIs},null,8,yt)])]),Object(l["createElementVNode"])("div",Et,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ListOfQueryParametersToExclude","/^sess.*|.*[dD]ate$/"))+" ",1),Nt,Vt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters","phpsessid, sessionid, ...")),1)])]),Object(l["createElementVNode"])("div",Tt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp1"))+" ",1),xt,Mt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp2"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp3","/bot|spider|crawl|scanner/i")),1)])]),Object(l["createElementVNode"])("div",wt,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",At,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Ct])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_UTCTimeIs",e.utcTimeDate))+" ",1),_t,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Pt,[Object(l["createElementVNode"])("div",{innerHTML:e.keepUrlFragmentHelp},null,8,Dt),Object(l["createElementVNode"])("div",null,Object(l["toDisplayString"])(e.translate("SitesManager_KeepURLFragmentsHelp2")),1)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedIpsGlobal","var-type":"array",modelValue:e.excludedIpsGlobal,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.excludedIpsGlobal=t}),title:e.translate("SitesManager_ListOfIpsToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedIps"),"inline-help":"#excludedIpsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedQueryParametersGlobal","var-type":"array",modelValue:e.excludedQueryParametersGlobal,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.excludedQueryParametersGlobal=t}),title:e.translate("SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedQueryParameters"),"inline-help":"#excludedQueryParametersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedUserAgentsGlobal","var-type":"array",modelValue:e.excludedUserAgentsGlobal,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.excludedUserAgentsGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"),introduction:e.translate("SitesManager_GlobalListExcludedUserAgents"),"inline-help":"#excludedUserAgentsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"checkbox",name:"keepURLFragmentsGlobal",modelValue:e.keepURLFragmentsGlobal,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.keepURLFragmentsGlobal=t}),title:e.translate("SitesManager_KeepURLFragmentsLong"),introduction:e.translate("SitesManager_KeepURLFragments"),"inline-help":"#keepURLFragmentsHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("h3",null,Object(l["toDisplayString"])(e.translate("SitesManager_TrackingSiteSearch")),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_SiteSearchUse")),1),Object(l["createElementVNode"])("div",kt,Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote2")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchKeywordParametersGlobal","var-type":"array",modelValue:e.searchKeywordParametersGlobal,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.searchKeywordParametersGlobal=t}),title:e.translate("SitesManager_SearchKeywordLabel"),"inline-help":e.translate("SitesManager_SearchKeywordParametersDesc"),disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchCategoryParametersGlobal","var-type":"array",modelValue:e.searchCategoryParametersGlobal,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.searchCategoryParametersGlobal=t}),title:e.translate("SitesManager_SearchCategoryLabel"),"inline-help":e.searchCategoryParamsInlineHelp,disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultTimezone",options:e.timezoneOptions,title:e.translate("SitesManager_SelectDefaultTimezone"),introduction:e.translate("SitesManager_DefaultTimezoneForNewWebsites"),"inline-help":"#timezoneHelp",disabled:e.isLoading,modelValue:e.defaultTimezone,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.defaultTimezone=t})},null,8,["options","title","introduction","disabled","modelValue"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultCurrency",modelValue:e.defaultCurrency,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.defaultCurrency=t}),options:e.currencies,title:e.translate("SitesManager_SelectDefaultCurrency"),introduction:e.translate("SitesManager_DefaultCurrencyForNewWebsites"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),disabled:e.isLoading},null,8,["modelValue","options","title","introduction","inline-help","disabled"])]),Object(l["createVNode"])(s,{saving:e.isSaving,onConfirm:t[8]||(t[8]=function(t){return e.saveGlobalSettings()})},null,8,["saving"])]})),_:1},8,["content-title"]),[[l["vShow"],e.hasSuperUserAccess]])])}var Ut=Object(l["defineComponent"])({props:{dummy:String},components:{ContentBlock:r["ContentBlock"],Field:De["Field"],SaveButton:De["SaveButton"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()),n=ht.globalSettings.value;return{currentIpAddress:null,utcTime:t,keepURLFragmentsGlobal:n.keepURLFragmentsGlobal,defaultTimezone:n.defaultTimezone,defaultCurrency:n.defaultCurrency,excludedIpsGlobal:(n.excludedIpsGlobal||"").split(","),excludedQueryParametersGlobal:(n.excludedQueryParametersGlobal||"").split(","),excludedUserAgentsGlobal:(n.excludedUserAgentsGlobal||"").split(","),searchKeywordParametersGlobal:(n.searchKeywordParametersGlobal||"").split(","),searchCategoryParametersGlobal:(n.searchCategoryParametersGlobal||"").split(","),isSaving:!1}},created:function(){var e=this;Xe.init(),Re.init(),ht.init(),Object(l["watch"])((function(){return ht.globalSettings.value}),(function(t){e.keepURLFragmentsGlobal=t.keepURLFragmentsGlobal,e.defaultTimezone=t.defaultTimezone,e.defaultCurrency=t.defaultCurrency,e.excludedIpsGlobal=(t.excludedIpsGlobal||"").split(","),e.excludedQueryParametersGlobal=(t.excludedQueryParametersGlobal||"").split(","),e.excludedUserAgentsGlobal=(t.excludedUserAgentsGlobal||"").split(","),e.searchKeywordParametersGlobal=(t.searchKeywordParametersGlobal||"").split(","),e.searchCategoryParametersGlobal=(t.searchCategoryParametersGlobal||"").split(",")})),r["AjaxHelper"].fetch({method:"API.getIpFromHeader"}).then((function(t){e.currentIpAddress=t.value}))},methods:{saveGlobalSettings:function(){this.isSaving=!0,ht.saveGlobalSettings({keepURLFragments:this.keepURLFragmentsGlobal,currency:this.defaultCurrency,timezone:this.defaultTimezone,excludedIps:this.excludedIpsGlobal.join(","),excludedQueryParameters:this.excludedQueryParametersGlobal.join(","),excludedUserAgents:this.excludedUserAgentsGlobal.join(","),searchKeywordParameters:this.searchKeywordParametersGlobal.join(","),searchCategoryParameters:this.searchCategoryParametersGlobal.join(",")}).then((function(){r["Matomo"].helper.redirect({showaddsite:!1})}))}},computed:{isLoading:function(){return ht.isLoading.value||Re.isLoading.value||Xe.isLoading.value},timezones:function(){return Re.timezones.value},timezoneOptions:function(){return this.timezones.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))},currencies:function(){return Xe.currencies.value},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},yourCurrentIpAddressIs:function(){return Object(r["translate"])("SitesManager_YourCurrentIpAddressIs","<i>".concat(this.currentIpAddress,"</i>"))},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},utcTimeDate:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds());return"".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i)},keepUrlFragmentHelp:function(){return Object(r["translate"])("SitesManager_KeepURLFragmentsHelp","<em>#</em>","<em>example.org/index.html#first_section</em>","<em>example.org/index.html</em>")},searchCategoryParamsInlineHelp:function(){var e=[Object(r["translate"])("Goals_Optional"),Object(r["translate"])("SitesManager_SearchCategoryDesc"),Object(r["translate"])("SitesManager_SearchCategoryParametersDesc")];return e.join(" ")}}});Ut.render=Gt;var Lt=Ut;
+ */Object(r["createAngularJsAdapter"])({component:gt,scope:{},directiveName:"matomoSitesManagement"});window.angular.module("piwikApp").factory("sitesManagerAPI",(function(){return{}}));var ft={class:"SitesManager"},St=Object(l["createElementVNode"])("a",{name:"globalSettings",id:"globalSettings"},null,-1),vt={id:"excludedIpsGlobalHelp",class:"inline-help-node"},jt=Object(l["createElementVNode"])("br",null,null,-1),Ot=Object(l["createElementVNode"])("br",null,null,-1),yt=["innerHTML"],Et={id:"excludedQueryParametersGlobalHelp",class:"inline-help-node"},Nt=Object(l["createElementVNode"])("br",null,null,-1),Vt=Object(l["createElementVNode"])("br",null,null,-1),Tt={id:"excludedUserAgentsGlobalHelp",class:"inline-help-node"},xt=Object(l["createElementVNode"])("br",null,null,-1),Mt=Object(l["createElementVNode"])("br",null,null,-1),wt={id:"timezoneHelp",class:"inline-help-node"},At={key:0},Ct=Object(l["createElementVNode"])("br",null,null,-1),_t=Object(l["createElementVNode"])("br",null,null,-1),Pt={id:"keepURLFragmentsHelp",class:"inline-help-node"},Dt=["innerHTML"],kt={class:"alert alert-info"};function Gt(e,t,n,a,i,r){var o=Object(l["resolveComponent"])("Field"),s=Object(l["resolveComponent"])("SaveButton"),c=Object(l["resolveComponent"])("ContentBlock");return Object(l["openBlock"])(),Object(l["createElementBlock"])("div",ft,[Object(l["withDirectives"])(Object(l["createVNode"])(c,{"content-title":e.translate("SitesManager_GlobalWebsitesSettings")},{default:Object(l["withCtx"])((function(){return[St,Object(l["createElementVNode"])("div",vt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_HelpExcludedIpAddresses","1.2.3.4/24","1.2.3.*","1.2.*.*"))+" ",1),jt,Ot,Object(l["createElementVNode"])("span",{innerHTML:e.$sanitize(e.yourCurrentIpAddressIs)},null,8,yt)])]),Object(l["createElementVNode"])("div",Et,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_ListOfQueryParametersToExclude","/^sess.*|.*[dD]ate$/"))+" ",1),Nt,Vt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_PiwikWillAutomaticallyExcludeCommonSessionParameters","phpsessid, sessionid, ...")),1)])]),Object(l["createElementVNode"])("div",Tt,[Object(l["createElementVNode"])("div",null,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp1"))+" ",1),xt,Mt,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp2"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_GlobalExcludedUserAgentHelp3","/bot|spider|crawl|scanner/i")),1)])]),Object(l["createElementVNode"])("div",wt,[Object(l["createElementVNode"])("div",null,[e.timezoneSupportEnabled?Object(l["createCommentVNode"])("",!0):(Object(l["openBlock"])(),Object(l["createElementBlock"])("span",At,[Object(l["createTextVNode"])(Object(l["toDisplayString"])(e.translate("SitesManager_AdvancedTimezoneSupportNotFound"))+" ",1),Ct])),Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_UTCTimeIs",e.utcTimeDate))+" ",1),_t,Object(l["createTextVNode"])(" "+Object(l["toDisplayString"])(e.translate("SitesManager_ChangingYourTimezoneWillOnlyAffectDataForward")),1)])]),Object(l["createElementVNode"])("div",Pt,[Object(l["createElementVNode"])("div",{innerHTML:e.$sanitize(e.keepUrlFragmentHelp)},null,8,Dt),Object(l["createElementVNode"])("div",null,Object(l["toDisplayString"])(e.translate("SitesManager_KeepURLFragmentsHelp2")),1)]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedIpsGlobal","var-type":"array",modelValue:e.excludedIpsGlobal,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.excludedIpsGlobal=t}),title:e.translate("SitesManager_ListOfIpsToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedIps"),"inline-help":"#excludedIpsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedQueryParametersGlobal","var-type":"array",modelValue:e.excludedQueryParametersGlobal,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.excludedQueryParametersGlobal=t}),title:e.translate("SitesManager_ListOfQueryParametersToBeExcludedOnAllWebsites"),introduction:e.translate("SitesManager_GlobalListExcludedQueryParameters"),"inline-help":"#excludedQueryParametersGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"textarea",name:"excludedUserAgentsGlobal","var-type":"array",modelValue:e.excludedUserAgentsGlobal,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.excludedUserAgentsGlobal=t}),title:e.translate("SitesManager_GlobalListExcludedUserAgents_Desc"),introduction:e.translate("SitesManager_GlobalListExcludedUserAgents"),"inline-help":"#excludedUserAgentsGlobalHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"checkbox",name:"keepURLFragmentsGlobal",modelValue:e.keepURLFragmentsGlobal,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.keepURLFragmentsGlobal=t}),title:e.translate("SitesManager_KeepURLFragmentsLong"),introduction:e.translate("SitesManager_KeepURLFragments"),"inline-help":"#keepURLFragmentsHelp",disabled:e.isLoading},null,8,["modelValue","title","introduction","disabled"])]),Object(l["createElementVNode"])("h3",null,Object(l["toDisplayString"])(e.translate("SitesManager_TrackingSiteSearch")),1),Object(l["createElementVNode"])("p",null,Object(l["toDisplayString"])(e.translate("SitesManager_SiteSearchUse")),1),Object(l["createElementVNode"])("div",kt,Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote"))+" "+Object(l["toDisplayString"])(e.translate("SitesManager_SearchParametersNote2")),1),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchKeywordParametersGlobal","var-type":"array",modelValue:e.searchKeywordParametersGlobal,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.searchKeywordParametersGlobal=t}),title:e.translate("SitesManager_SearchKeywordLabel"),"inline-help":e.translate("SitesManager_SearchKeywordParametersDesc"),disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"text",name:"searchCategoryParametersGlobal","var-type":"array",modelValue:e.searchCategoryParametersGlobal,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.searchCategoryParametersGlobal=t}),title:e.translate("SitesManager_SearchCategoryLabel"),"inline-help":e.searchCategoryParamsInlineHelp,disabled:e.isLoading},null,8,["modelValue","title","inline-help","disabled"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultTimezone",options:e.timezoneOptions,title:e.translate("SitesManager_SelectDefaultTimezone"),introduction:e.translate("SitesManager_DefaultTimezoneForNewWebsites"),"inline-help":"#timezoneHelp",disabled:e.isLoading,modelValue:e.defaultTimezone,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.defaultTimezone=t})},null,8,["options","title","introduction","disabled","modelValue"])]),Object(l["createElementVNode"])("div",null,[Object(l["createVNode"])(o,{uicontrol:"select",name:"defaultCurrency",modelValue:e.defaultCurrency,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.defaultCurrency=t}),options:e.currencies,title:e.translate("SitesManager_SelectDefaultCurrency"),introduction:e.translate("SitesManager_DefaultCurrencyForNewWebsites"),"inline-help":e.translate("SitesManager_CurrencySymbolWillBeUsedForGoals"),disabled:e.isLoading},null,8,["modelValue","options","title","introduction","inline-help","disabled"])]),Object(l["createVNode"])(s,{saving:e.isSaving,onConfirm:t[8]||(t[8]=function(t){return e.saveGlobalSettings()})},null,8,["saving"])]})),_:1},8,["content-title"]),[[l["vShow"],e.hasSuperUserAccess]])])}var Ut=Object(l["defineComponent"])({props:{dummy:String},components:{ContentBlock:r["ContentBlock"],Field:De["Field"],SaveButton:De["SaveButton"]},data:function(){var e=new Date,t=new Date(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds()),n=ht.globalSettings.value;return{currentIpAddress:null,utcTime:t,keepURLFragmentsGlobal:n.keepURLFragmentsGlobal,defaultTimezone:n.defaultTimezone,defaultCurrency:n.defaultCurrency,excludedIpsGlobal:(n.excludedIpsGlobal||"").split(","),excludedQueryParametersGlobal:(n.excludedQueryParametersGlobal||"").split(","),excludedUserAgentsGlobal:(n.excludedUserAgentsGlobal||"").split(","),searchKeywordParametersGlobal:(n.searchKeywordParametersGlobal||"").split(","),searchCategoryParametersGlobal:(n.searchCategoryParametersGlobal||"").split(","),isSaving:!1}},created:function(){var e=this;Xe.init(),Re.init(),ht.init(),Object(l["watch"])((function(){return ht.globalSettings.value}),(function(t){e.keepURLFragmentsGlobal=t.keepURLFragmentsGlobal,e.defaultTimezone=t.defaultTimezone,e.defaultCurrency=t.defaultCurrency,e.excludedIpsGlobal=(t.excludedIpsGlobal||"").split(","),e.excludedQueryParametersGlobal=(t.excludedQueryParametersGlobal||"").split(","),e.excludedUserAgentsGlobal=(t.excludedUserAgentsGlobal||"").split(","),e.searchKeywordParametersGlobal=(t.searchKeywordParametersGlobal||"").split(","),e.searchCategoryParametersGlobal=(t.searchCategoryParametersGlobal||"").split(",")})),r["AjaxHelper"].fetch({method:"API.getIpFromHeader"}).then((function(t){e.currentIpAddress=t.value}))},methods:{saveGlobalSettings:function(){this.isSaving=!0,ht.saveGlobalSettings({keepURLFragments:this.keepURLFragmentsGlobal,currency:this.defaultCurrency,timezone:this.defaultTimezone,excludedIps:this.excludedIpsGlobal.join(","),excludedQueryParameters:this.excludedQueryParametersGlobal.join(","),excludedUserAgents:this.excludedUserAgentsGlobal.join(","),searchKeywordParameters:this.searchKeywordParametersGlobal.join(","),searchCategoryParameters:this.searchCategoryParametersGlobal.join(",")}).then((function(){r["Matomo"].helper.redirect({showaddsite:!1})}))}},computed:{isLoading:function(){return ht.isLoading.value||Re.isLoading.value||Xe.isLoading.value},timezones:function(){return Re.timezones.value},timezoneOptions:function(){return this.timezones.map((function(e){var t=e.group,n=e.label,a=e.code;return{group:t,key:n,value:a}}))},currencies:function(){return Xe.currencies.value},hasSuperUserAccess:function(){return r["Matomo"].hasSuperUserAccess},yourCurrentIpAddressIs:function(){return Object(r["translate"])("SitesManager_YourCurrentIpAddressIs","<i>".concat(this.currentIpAddress,"</i>"))},timezoneSupportEnabled:function(){return Re.timezoneSupportEnabled.value},utcTimeDate:function(){var e=this.utcTime,t=function(e){return e.toString().padStart(2,"0")},n=t(e.getHours()),a=t(e.getMinutes()),i=t(e.getSeconds());return"".concat(Object(r["format"])(this.utcTime)," ").concat(n,":").concat(a,":").concat(i)},keepUrlFragmentHelp:function(){return Object(r["translate"])("SitesManager_KeepURLFragmentsHelp","<em>#</em>","<em>example.org/index.html#first_section</em>","<em>example.org/index.html</em>")},searchCategoryParamsInlineHelp:function(){var e=[Object(r["translate"])("Goals_Optional"),Object(r["translate"])("SitesManager_SearchCategoryDesc"),Object(r["translate"])("SitesManager_SearchCategoryParametersDesc")];return e.join(" ")}}});Ut.render=Gt;var Lt=Ut;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue b/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
index c6c550b3eb..f16afcd304 100644
--- a/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
+++ b/plugins/SitesManager/vue/src/ManageGlobalSettings/ManageGlobalSettings.vue
@@ -23,7 +23,7 @@
<br/><br/>
- <span v-html="yourCurrentIpAddressIs"></span>
+ <span v-html="$sanitize(yourCurrentIpAddressIs)"></span>
</div>
</div>
@@ -69,7 +69,7 @@
</div>
<div id="keepURLFragmentsHelp" class="inline-help-node">
- <div v-html="keepUrlFragmentHelp"></div>
+ <div v-html="$sanitize(keepUrlFragmentHelp)"></div>
<div>{{ translate('SitesManager_KeepURLFragmentsHelp2') }}</div>
</div>
diff --git a/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue b/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue
index 5b23d29fd4..c4ca241486 100644
--- a/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue
+++ b/plugins/SitesManager/vue/src/SitesManagement/SitesManagement.vue
@@ -26,7 +26,7 @@
<span v-show="hasSuperUserAccess">
<br/>
- <span v-html="superUserAccessMessage"></span>
+ <span v-html="$sanitize(superUserAccessMessage)"></span>
</span>
</p>
</div>
diff --git a/plugins/TagManager b/plugins/TagManager
-Subproject 5b2d83a7abaad256762c74cff9774aebafad5fb
+Subproject 5bf140961dd04633b7459ba69676744d0a90f32
diff --git a/plugins/Tour/lang/ga.json b/plugins/Tour/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Tour/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/TrackingSpamPrevention b/plugins/TrackingSpamPrevention
-Subproject a31470c551fdb13af73a4fdc0b923f53e8912bf
+Subproject 8775f258058e0e19b75778934f7f3ea3858dae5
diff --git a/plugins/Transitions/Transitions.php b/plugins/Transitions/Transitions.php
index aae4211596..5f5367988f 100644
--- a/plugins/Transitions/Transitions.php
+++ b/plugins/Transitions/Transitions.php
@@ -38,14 +38,12 @@ class Transitions extends \Piwik\Plugin
public function getStylesheetFiles(&$stylesheets)
{
$stylesheets[] = 'plugins/Transitions/stylesheets/transitions.less';
- $stylesheets[] = 'plugins/Transitions/angularjs/transitionexporter/transitionexporter.popover.less';
+ $stylesheets[] = 'plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.less';
}
public function getJsFiles(&$jsFiles)
{
$jsFiles[] = 'plugins/Transitions/javascripts/transitions.js';
- $jsFiles[] = 'plugins/Transitions/angularjs/transitionswitcher/transitionswitcher.controller.js';
- $jsFiles[] = 'plugins/Transitions/angularjs/transitionexporter/transitionexporter.directive.js';
}
public function getClientSideTranslationKeys(&$translationKeys)
@@ -58,6 +56,13 @@ class Transitions extends \Piwik\Plugin
$translationKeys[] = 'Transitions_Transitions';
$translationKeys[] = 'CoreHome_ThereIsNoDataForThisReport';
$translationKeys[] = 'General_Others';
+ $translationKeys[] = 'Actions_ActionType';
+ $translationKeys[] = 'Transitions_TopX';
+ $translationKeys[] = 'Transitions_AvailableInOtherReports';
+ $translationKeys[] = 'Actions_SubmenuPageTitles';
+ $translationKeys[] = 'Actions_SubmenuPagesEntry';
+ $translationKeys[] = 'Actions_SubmenuPagesExit';
+ $translationKeys[] = 'Transitions_AvailableInOtherReports2';
}
public function addJsGlobalVariables(&$out)
diff --git a/plugins/Transitions/angularjs/transitionexporter/transitionexporter.directive.js b/plugins/Transitions/angularjs/transitionexporter/transitionexporter.directive.js
deleted file mode 100644
index f26a448d13..0000000000
--- a/plugins/Transitions/angularjs/transitionexporter/transitionexporter.directive.js
+++ /dev/null
@@ -1,83 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-(function () {
-
- angular.module("piwikApp").directive('transitionExporter', transitionExporter);
- transitionExporter.$inject = ['$document', 'piwik', '$compile', '$timeout', '$location', '$httpParamSerializerJQLike', '$rootScope'];
-
- function transitionExporter($document, piwik, $compile, $timeout, $location, $httpParamSerializerJQLike, $rootScope) {
-
- return {
- restrict: 'A',
- link: function(scope, element) {
-
- scope.getExportLink = function() {
-
- var exportUrlParams = {
- module: 'API'
- };
-
- exportUrlParams.method = 'Transitions.getTransitionsForAction';
- exportUrlParams.actionType = $rootScope.transitionExportParams['actionType'];
- exportUrlParams.actionName = $rootScope.transitionExportParams['actionName'];
-
- exportUrlParams.idSite = piwik.idSite;
- exportUrlParams.period = piwik.period;
- exportUrlParams.date = piwik.currentDateString;
- exportUrlParams.format = scope.exportFormat;
- exportUrlParams.token_auth = piwik.token_auth;
- exportUrlParams.force_api_session = 1;
-
- var currentUrl = $location.absUrl();
- var urlParts = currentUrl.split('/');
- urlParts.pop();
- var url = urlParts.join('/');
-
- return url + '/index.php?' + $httpParamSerializerJQLike(exportUrlParams);
- }
-
- $rootScope.$on('Transitions.dataChanged', function (event, params) {
- $rootScope.transitionExportParams = params;
- });
-
- scope.onExportFormatChange = function (format) {
- scope.exportFormat = format;
- }
-
- element.on('click', function () {
-
- scope.exportFormat = 'JSON';
- scope.exportFormatOptions = [
- {key: 'JSON', value: 'JSON'},
- {key: 'XML', value: 'XML'}
- ];
-
- if (!$rootScope.transitionExportParams) {
- return;
- }
-
- scope.reportTitle = $rootScope.transitionExportParams['actionName'] + ' ' + _pk_translate('Transitions_Transitions');
-
- this.popover = Piwik_Popover.showLoading(_pk_translate('General_Export'), self.actionName, 200);
-
- var elem = $document.find('#transitionExport').eq(0);
- if (!elem.length) {
- elem = angular.element('<span id="transitionExport"></span>');
- elem.attr('ng-include', "'plugins/Transitions/angularjs/transitionexporter/transitionexporter.popover.html?cb=' + encodeURIComponent(piwik.cacheBuster) + '\'");
- }
-
- $compile(elem)(scope, function (compiled){
- Piwik_Popover.setTitle(_pk_translate('General_Export') + ' ' + piwikHelper.htmlEntities(scope.reportTitle));
- Piwik_Popover.setContent(compiled);
- });
-
- });
- }
- };
- }
-})();
diff --git a/plugins/Transitions/angularjs/transitionexporter/transitionexporter.popover.html b/plugins/Transitions/angularjs/transitionexporter/transitionexporter.popover.html
deleted file mode 100644
index 76f1b74f6f..0000000000
--- a/plugins/Transitions/angularjs/transitionexporter/transitionexporter.popover.html
+++ /dev/null
@@ -1,21 +0,0 @@
-<div class="transition-export-popover row">
-
- <div class="col l6">
- <div class="input-field">
- <div piwik-field uicontrol="radio" name="exportFormat"
- data-title="{{ 'CoreHome_ExportFormat'|translate }}"
- ng-change="onExportFormatChange(exportFormat)"
- ng-model="exportFormat"
- full-width="true"
- value="JSON"
- options="exportFormatOptions">
- </div>
- </div>
-
- </div>
-
- <div class="col l12">
- <a class="btn" ng-attr-href="{{ getExportLink() }}" target="_new" title="{{ 'CoreHome_ExportTooltip'|translate }}">{{ 'General_Export'|translate }}</a>
- </div>
-
-</div> \ No newline at end of file
diff --git a/plugins/Transitions/angularjs/transitionswitcher/transitionswitcher.controller.js b/plugins/Transitions/angularjs/transitionswitcher/transitionswitcher.controller.js
deleted file mode 100644
index 4195ba495a..0000000000
--- a/plugins/Transitions/angularjs/transitionswitcher/transitionswitcher.controller.js
+++ /dev/null
@@ -1,155 +0,0 @@
-/*!
- * Matomo - free/libre analytics platform
- *
- * @link https://matomo.org
- * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */
-
-(function () {
- angular.module('piwikApp').controller('TransitionSwitcherController', TransitionSwitcherController);
-
- TransitionSwitcherController.$inject = ['piwikApi', '$filter', '$rootScope'];
-
- function TransitionSwitcherController(piwikApi, $filter, $rootScope) {
- var translate = $filter('translate');
-
- var self = this;
- this.actionType = 'Actions.getPageUrls';
- this.actionNameOptions = [];
- this.actionTypeOptions = [
- {key: 'Actions.getPageUrls', value: translate('Actions_PageUrls')},
- {key: 'Actions.getPageTitles', value: translate('Actions_WidgetPageTitles')}
- ];
- this.isLoading = false;
- this.transitions = null;
- this.actionName = null;
- this.isEnabled = true;
- var noDataKey = '_____ignore_____';
-
- this.detectActionName = function (reports)
- {
- var othersLabel = translate('General_Others');
-
- var label, report;
- for (var i = 0; i < reports.length; i++) {
- if (!reports[i]) {
- continue;
- }
-
- report = reports[i];
-
- if (report.label === othersLabel) {
- continue;
- }
-
- var key = null;
- if (self.isUrlReport()) {
- key = report.url
- } else {
- key = report.label;
- }
-
- if (key) {
- label = report.label + ' (' + translate('Transitions_NumPageviews', report.nb_hits) + ')';
- self.actionNameOptions.push({key: key, value: label, url: report.url});
- if (!self.actionName) {
- self.actionName = key
- }
- }
- }
- }
-
- this.isUrlReport = function()
- {
- return this.actionType === 'Actions.getPageUrls';
- }
-
- this.fetch = function (type) {
- this.isLoading = true;
- this.actionNameOptions = [];
- this.actionName = null;
-
- piwikApi.fetch({
- method: type,
- flat: 1, filter_limit: 100,
- filter_sort_order: 'desc',
- filter_sort_column: 'nb_hits',
- showColumns: 'label,nb_hits,url'
- }).then(function (report) {
- self.isLoading = false;
- self.actionNameOptions = [];
- self.actionName = null;
-
- if (report && report.length) {
- self.isEnabled = true;
- self.detectActionName(report);
- self.onActionNameChange(self.actionName);
- }
-
- if (null === self.actionName || self.actionNameOptions.length === 0) {
- self.isEnabled = false;
- self.actionName = noDataKey;
- self.actionNameOptions.push({key: noDataKey, value: translate('CoreHome_ThereIsNoDataForThisReport')});
- }
- }, function () {
- self.isLoading = false;
- self.isEnabled = false;
- });
- }
-
- this.onActionTypeChange = function (actionName) {
- this.fetch(actionName);
- };
-
- this.onActionNameChange = function (actionName) {
- if (actionName === null || actionName === noDataKey) {
- return;
- }
-
- var type = 'url';
- if (!this.isUrlReport()) {
- type = 'title';
- }
- if (!this.transitions) {
- this.transitions = new Piwik_Transitions(type, actionName, null, '');
- } else {
- this.transitions.reset(type, actionName, '');
- }
- this.transitions.showPopover(true);
- };
-
- $rootScope.$on('Transitions.switchTransitionsUrl', function (event, params) {
- if (params && params.url) {
- if (self.isUrlReport()) {
- params.url = params.url.replace('https://', '').replace('http://', '');
- }
-
- var found = false, option, optionUrl;
- for (var i = 0; i < self.actionNameOptions.length; i++) {
- option = self.actionNameOptions[i];
- optionUrl = option.url;
- if (optionUrl && self.isUrlReport()) {
- optionUrl = String(optionUrl).replace('https://', '').replace('http://', '');
- } else {
- optionUrl = null;
- }
-
- if (!found && (option.key === params.url || (params.url === optionUrl && optionUrl))) {
- found = true;
- self.actionName = option.key;
- }
- }
- if (!found) {
- // we only fetch top 100 in the report... so the entry the user clicked on, might not be in the top 100
- var options = angular.copy(self.actionNameOptions); // somehow needed to force angular to render it
- options.push({key: params.url, value: params.url});
- self.actionNameOptions = options;
- self.actionName = params.url;
- }
- self.onActionNameChange(self.actionName);
- }
- });
-
- this.fetch(this.actionType);
- }
-})(); \ No newline at end of file
diff --git a/plugins/Transitions/javascripts/transitions.js b/plugins/Transitions/javascripts/transitions.js
index caabaa0b69..f8d0bf8749 100644
--- a/plugins/Transitions/javascripts/transitions.js
+++ b/plugins/Transitions/javascripts/transitions.js
@@ -249,7 +249,7 @@ Piwik_Transitions.prototype.showPopover = function (showEmbeddedInReport) {
if (!showEmbeddedInReport) {
Piwik_Popover.setContent(Piwik_Transitions.popoverHtml);
} else {
- $('#transitions_inline_loading').hide();
+ $('#transitions_inline_loading').hide();
$('#transitions_report .popoverContainer').html(Piwik_Transitions.popoverHtml);
$('#transitions_report .popoverContainer').show();
}
@@ -1620,7 +1620,7 @@ Piwik_Transitions_Ajax.prototype.callApi = function (method, params, callback) {
Piwik_Popover.showError(errorTitle, errorMessage, errorBack);
}
- $('#transitions_inline_loading').hide();
+ $('#transitions_inline_loading').hide();
};
if (typeof Piwik_Transitions_Translations == 'undefined') {
diff --git a/plugins/Transitions/lang/ga.json b/plugins/Transitions/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/Transitions/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/Transitions/lang/id.json b/plugins/Transitions/lang/id.json
index 0226ed074e..9e71381c04 100644
--- a/plugins/Transitions/lang/id.json
+++ b/plugins/Transitions/lang/id.json
@@ -1,31 +1,42 @@
{
"Transitions": {
- "BouncesInline": "%s pentalan",
- "DirectEntries": "Masukan Langsung",
+ "AvailableInOtherReports": "Tahukah Anda? Transisi juga tersedia sebagai tindakan baris dalam laporan berikut:",
+ "AvailableInOtherReports2": "Cukup arahkan satu baris di salah satu laporan ini dan klik ikon transisi %s untuk meluncurkannya.",
+ "BouncesInline": "%s pantulan",
+ "DirectEntries": "Entri Langsung",
"ErrorBack": "Kembali ke aksi sebelumnya",
"ExitsInline": "%s keluar",
+ "FeatureDescription": "Transisi memberi Anda laporan yang menampilkan hal-hal yang dilakukan oleh pengunjung Anda secara langsung sebelum dan sesudah melihat laman tertentu. Halaman ini akan menjelaskan cara mengakses, memahami, dan menggunakan laporan Transisi yang canggih.",
"FromCampaigns": "Dari Kampanye",
- "FromPreviousPages": "Dari Halaman Dalam",
- "FromPreviousPagesInline": "%s dari halaman dalam",
- "FromPreviousSiteSearches": "Dari Pencarian Dalam",
- "FromPreviousSiteSearchesInline": "%s dari pencarian dalam",
+ "FromPreviousPages": "Dari Halaman Internal",
+ "FromPreviousPagesInline": "%s dari halaman internal",
+ "FromPreviousSiteSearches": "Dari Pencarian Internal",
+ "FromPreviousSiteSearchesInline": "%s dari pencarian internal",
"FromSearchEngines": "Dari Mesin Pencari",
- "FromWebsites": "Dari Situs",
+ "FromSocialNetworks": "Dari Media Sosial",
+ "FromWebsites": "Dari Situs Web",
"IncomingTraffic": "Lalu lintas masuk",
- "LoopsInline": "%s halam dimuat ulang",
+ "LoopsInline": "%s halaman dimuat ulang",
"NoDataForAction": "Tidak tersedia data untuk %s",
- "NoDataForActionDetails": "Tidak ada tindakan memiliki tampilan halaman selama periode %s atau ini tidak sahih.",
+ "NoDataForActionDetails": "Entah tindakan tersebut tidak memiliki tayangan laman selama periode %s atau tindakan tersebut tidak valid.",
"NumDownloads": "%s unduhan",
- "NumOutlinks": "%s tautan luar",
+ "NumOutlinks": "%s tautan keluar",
"NumPageviews": "%s tampilan halaman",
"OutgoingTraffic": "Lalu lintas keluar",
+ "PageURLTransitions": "Transisi URL Halaman",
+ "PeriodNotAllowed": "Jangka waktu yang tidak diperbolehkan",
+ "PeriodNotAllowedDetails": "Fitur ini tidak tersedia untuk periode ini, coba pilih periode dengan hari yang lebih sedikit",
+ "PluginDescription": "Melaporkan tindakan sebelum dan selanjutnya untuk setiap URL laman dalam laporan Transisi baru, tersedia di laporan Tindakan melalui ikon baru.",
"ShareOfAllPageviews": "Halaman ini memiliki %1$s tampilan halaman (%2$s dari semua tampilan halaman)",
- "ToFollowingPages": "Menuju Halaman Dalam",
- "ToFollowingPagesInline": "%s menuju halaman dalam",
- "ToFollowingSiteSearches": "Pencarian Dalam",
- "ToFollowingSiteSearchesInline": "%s pencarian dalam",
- "TransitionsSubcategoryHelp2": "Selengkapnya",
- "XOfAllPageviews": "%s dari selruh tanpilan dari halaman ini",
- "XOutOfYVisits": "%1$s (di luar dari %2$s)"
+ "ToFollowingPages": "Ke Halaman Internal",
+ "ToFollowingPagesInline": "%s ke halaman internal",
+ "ToFollowingSiteSearches": "Pencarian Internal",
+ "ToFollowingSiteSearchesInline": "%s pencarian internal",
+ "TopX": "%s label teratas",
+ "Transitions": "Transisi",
+ "TransitionsSubcategoryHelp1": "Transisi memberi Anda laporan yang menunjukkan hal-hal yang dilakukan oleh pengunjung Anda secara langsung sebelum dan sesudah melihat laman tertentu. Halaman ini akan menjelaskan cara mengakses, memahami, dan menggunakan laporan Transisi yang canggih.",
+ "TransitionsSubcategoryHelp2": "Keterangan Lebih Lanjut",
+ "XOfAllPageviews": "%s dari semua tampilan halaman ini",
+ "XOutOfYVisits": "%1$s (dari %2$s)"
}
}
diff --git a/plugins/Transitions/templates/transitions.twig b/plugins/Transitions/templates/transitions.twig
index 3cb0a6354e..beb54a04d0 100644
--- a/plugins/Transitions/templates/transitions.twig
+++ b/plugins/Transitions/templates/transitions.twig
@@ -3,66 +3,10 @@
help-url="https://matomo.org/docs/transitions/"
content-title="{{ 'Transitions_Transitions'|translate|e('html_attr') }}">{% endif %}
-<div id="transitions_report" {% if isWidget %}class="widgetBody"{% endif %} ng-controller="TransitionSwitcherController as transitionSwitcher">
- <div class="row">
- <div class="col s12 m3">
- <div piwik-field uicontrol="select" name="actionType"
- ng-model="transitionSwitcher.actionType"
- ng-change="transitionSwitcher.onActionTypeChange(transitionSwitcher.actionType)"
- data-title="{{ 'Actions_ActionType'|translate|e('html_attr') }}"
- full-width="true"
- options='transitionSwitcher.actionTypeOptions'>
- </div>
- </div>
- <div class="col s12 m9">
- <div piwik-field uicontrol="select" name="actionName"
- ng-model="transitionSwitcher.actionName"
- ng-change="transitionSwitcher.onActionNameChange(transitionSwitcher.actionName)"
- data-title="{{ 'Transitions_TopX'|translate(100)|e('html_attr') }}"
- full-width="true"
- data-disabled="!transitionSwitcher.isEnabled"
- options='transitionSwitcher.actionNameOptions'>
- </div>
- </div>
- </div>
-
- <div piwik-activity-indicator loading="transitionSwitcher.isLoading"></div>
-
- <div class="loadingPiwik" ng-show="!transitionSwitcher.isLoading" style="display:none" id="transitions_inline_loading">
- <img src="plugins/Morpheus/images/loading-blue.gif" alt=""/> <span>{{ 'General_LoadingData'|translate }}</span>
- </div>
-
- <div class="popoverContainer" ng-show="!transitionSwitcher.isLoading && transitionSwitcher.isEnabled">
-
- </div>
-
- <div id="Transitions_Error_Container" ng-show="!transitionSwitcher.isLoading">
-
- </div>
-
- <div class="dataTableWrapper" ng-show="transitionSwitcher.isEnabled">
- <div class="dataTableFeatures">
- <div class="dataTableFooterNavigation">
- <div class="dataTableControls">
- <div class="row">
- <a class="dataTableAction" href="javascript:;" transition-exporter>
- <span class="icon-export"></span>
- </a>
- </div>
- </div>
- </div>
- </div>
- </div>
-
- <div class="alert alert-info">
- {{ 'Transitions_AvailableInOtherReports'|translate }}
- {{ 'Actions_PageUrls'|translate }}, {{ 'Actions_SubmenuPageTitles'|translate }},
- {{ 'Actions_SubmenuPagesEntry'|translate }}
- {{ 'General_And'|translate }}
- {{ 'Actions_SubmenuPagesExit'|translate }}.
- {{ 'Transitions_AvailableInOtherReports2'|translate('<span class="icon-transition"></span>')|raw }}
- </div>
-</div>
+<div
+ vue-entry="Transitions.TransitionSwitcher"
+ is-widget="{{ (not not isWidget)|default(null)|json_encode|e('html_attr') }}"
+></div>
{% if not isWidget %}</div>{% endif %}
diff --git a/plugins/Transitions/vue/dist/Transitions.umd.js b/plugins/Transitions/vue/dist/Transitions.umd.js
new file mode 100644
index 0000000000..9f02d85f2c
--- /dev/null
+++ b/plugins/Transitions/vue/dist/Transitions.umd.js
@@ -0,0 +1,672 @@
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else if(typeof define === 'function' && define.amd)
+ define(["CoreHome", , "CorePluginsAdmin"], factory);
+ else if(typeof exports === 'object')
+ exports["Transitions"] = factory(require("CoreHome"), require("vue"), require("CorePluginsAdmin"));
+ else
+ root["Transitions"] = factory(root["CoreHome"], root["Vue"], root["CorePluginsAdmin"]);
+})((typeof self !== 'undefined' ? self : this), function(__WEBPACK_EXTERNAL_MODULE__19dc__, __WEBPACK_EXTERNAL_MODULE__8bbf__, __WEBPACK_EXTERNAL_MODULE_a5a2__) {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "plugins/Transitions/vue/dist/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "fae3");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "19dc":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__19dc__;
+
+/***/ }),
+
+/***/ "8bbf":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE__8bbf__;
+
+/***/ }),
+
+/***/ "a5a2":
+/***/ (function(module, exports) {
+
+module.exports = __WEBPACK_EXTERNAL_MODULE_a5a2__;
+
+/***/ }),
+
+/***/ "fae3":
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+// ESM COMPAT FLAG
+__webpack_require__.r(__webpack_exports__);
+
+// EXPORTS
+__webpack_require__.d(__webpack_exports__, "TransitionExporter", function() { return /* reexport */ TransitionExporter; });
+__webpack_require__.d(__webpack_exports__, "TransitionSwitcher", function() { return /* reexport */ TransitionSwitcher; });
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/setPublicPath.js
+// This file is imported into lib/wc client bundles.
+
+if (typeof window !== 'undefined') {
+ var currentScript = window.document.currentScript
+ if (false) { var getCurrentScript; }
+
+ var src = currentScript && currentScript.src.match(/(.+\/)[^/]+\.js(\?.*)?$/)
+ if (src) {
+ __webpack_require__.p = src[1] // eslint-disable-line
+ }
+}
+
+// Indicate to webpack that this file can be concatenated
+/* harmony default export */ var setPublicPath = (null);
+
+// EXTERNAL MODULE: external "CoreHome"
+var external_CoreHome_ = __webpack_require__("19dc");
+
+// EXTERNAL MODULE: external {"commonjs":"vue","commonjs2":"vue","root":"Vue"}
+var external_commonjs_vue_commonjs2_vue_root_Vue_ = __webpack_require__("8bbf");
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.vue?vue&type=template&id=35161b10
+
+var _hoisted_1 = {
+ class: "transition-export-popover row"
+};
+var _hoisted_2 = {
+ class: "col l6"
+};
+var _hoisted_3 = {
+ class: "input-field"
+};
+var _hoisted_4 = {
+ class: "matomo-field"
+};
+var _hoisted_5 = {
+ class: "col l12"
+};
+var _hoisted_6 = ["href"];
+function render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", _hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "radio",
+ name: "exportFormat",
+ title: _ctx.translate('CoreHome_ExportFormat'),
+ "model-value": _ctx.exportFormat,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.exportFormat = $event;
+ }),
+ "full-width": true,
+ options: _ctx.exportFormatOptions
+ }, null, 8, ["title", "model-value", "options"])])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ class: "btn",
+ href: _ctx.exportLink,
+ target: "_new",
+ title: "translate('CoreHome_ExportTooltip')"
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Export')), 9, _hoisted_6)])]);
+}
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.vue?vue&type=template&id=35161b10
+
+// EXTERNAL MODULE: external "CorePluginsAdmin"
+var external_CorePluginsAdmin_ = __webpack_require__("a5a2");
+
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/TransitionExporter/transitionParams.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+var actionType = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])('');
+var actionName = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])('');
+
+var onDataChanged = function onDataChanged(params) {
+ actionType.value = params.actionType;
+ actionName.value = params.actionName;
+};
+
+external_CoreHome_["Matomo"].on('Transitions.dataChanged', onDataChanged);
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.vue?vue&type=script&lang=ts
+
+
+
+
+/* harmony default export */ var TransitionExporterPopovervue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ exportFormatOptions: {
+ type: Object,
+ required: true
+ }
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"]
+ },
+ data: function data() {
+ return {
+ exportFormat: 'JSON'
+ };
+ },
+ computed: {
+ exportLink: function exportLink() {
+ var exportUrlParams = {
+ module: 'API'
+ };
+ exportUrlParams.method = 'Transitions.getTransitionsForAction';
+ exportUrlParams.actionType = actionType.value;
+ exportUrlParams.actionName = actionName.value;
+ exportUrlParams.idSite = external_CoreHome_["Matomo"].idSite;
+ exportUrlParams.period = external_CoreHome_["Matomo"].period;
+ exportUrlParams.date = external_CoreHome_["Matomo"].currentDateString;
+ exportUrlParams.format = this.exportFormat;
+ exportUrlParams.token_auth = external_CoreHome_["Matomo"].token_auth;
+ exportUrlParams.force_api_session = 1;
+ var currentUrl = window.location.href;
+ var urlParts = currentUrl.split('/');
+ urlParts.pop();
+ var url = urlParts.join('/');
+ return "".concat(url, "/index.php?").concat(external_CoreHome_["MatomoUrl"].stringify(exportUrlParams));
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.vue
+
+
+
+TransitionExporterPopovervue_type_script_lang_ts.render = render
+
+/* harmony default export */ var TransitionExporterPopover = (TransitionExporterPopovervue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+var _window = window,
+ Piwik_Popover = _window.Piwik_Popover;
+/* harmony default export */ var TransitionExporter = ({
+ mounted: function mounted(element) {
+ element.addEventListener('click', function (e) {
+ e.preventDefault();
+ var props = {
+ exportFormat: 'JSON',
+ exportFormatOptions: [{
+ key: 'JSON',
+ value: 'JSON'
+ }, {
+ key: 'XML',
+ value: 'XML'
+ }]
+ };
+ var app = Object(external_CoreHome_["createVueApp"])({
+ template: "\n <popover v-bind=\"bind\"/>",
+ data: function data() {
+ return {
+ bind: props
+ };
+ }
+ });
+ app.component('popover', TransitionExporterPopover);
+ var mountPoint = document.createElement('div');
+ app.mount(mountPoint);
+ Piwik_Popover.showLoading('');
+ Piwik_Popover.setTitle("".concat(actionName.value, " ").concat(Object(external_CoreHome_["translate"])('Transitions_Transitions')));
+ Piwik_Popover.setContent(mountPoint);
+ Piwik_Popover.onClose(function () {
+ app.unmount();
+ });
+ });
+ }
+});
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.adapter.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+function transitionExporter() {
+ return {
+ restrict: 'A',
+ link: function link(scope, element) {
+ TransitionExporter.mounted(element[0]);
+ }
+ };
+}
+
+window.angular.module('piwikApp').directive('transitionExporter', transitionExporter);
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Transitions/vue/src/TransitionSwitcher/TransitionSwitcher.vue?vue&type=template&id=3282161c
+
+var TransitionSwitchervue_type_template_id_3282161c_hoisted_1 = {
+ class: "row"
+};
+var TransitionSwitchervue_type_template_id_3282161c_hoisted_2 = {
+ class: "col s12 m3"
+};
+var TransitionSwitchervue_type_template_id_3282161c_hoisted_3 = {
+ name: "actionType"
+};
+var TransitionSwitchervue_type_template_id_3282161c_hoisted_4 = {
+ class: "col s12 m9"
+};
+var TransitionSwitchervue_type_template_id_3282161c_hoisted_5 = {
+ name: "actionName"
+};
+var TransitionSwitchervue_type_template_id_3282161c_hoisted_6 = {
+ class: "loadingPiwik",
+ style: {
+ "display": "none"
+ },
+ id: "transitions_inline_loading"
+};
+
+var _hoisted_7 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("img", {
+ src: "plugins/Morpheus/images/loading-blue.gif",
+ alt: ""
+}, null, -1);
+
+var _hoisted_8 = {
+ class: "popoverContainer"
+};
+var _hoisted_9 = {
+ id: "Transitions_Error_Container"
+};
+var _hoisted_10 = {
+ class: "dataTableWrapper"
+};
+var _hoisted_11 = {
+ class: "dataTableFeatures"
+};
+var _hoisted_12 = {
+ class: "dataTableFooterNavigation"
+};
+var _hoisted_13 = {
+ class: "dataTableControls"
+};
+var _hoisted_14 = {
+ class: "row"
+};
+var _hoisted_15 = {
+ class: "dataTableAction"
+};
+
+var _hoisted_16 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ class: "icon-export"
+}, null, -1);
+
+var _hoisted_17 = [_hoisted_16];
+var _hoisted_18 = {
+ class: "alert alert-info"
+};
+var _hoisted_19 = ["innerHTML"];
+function TransitionSwitchervue_type_template_id_3282161c_render(_ctx, _cache, $props, $setup, $data, $options) {
+ var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
+
+ var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
+
+ var _directive_transition_exporter = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveDirective"])("transition-exporter");
+
+ return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", {
+ class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
+ widgetBody: _ctx.isWidget
+ }),
+ id: "transitions_report"
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", TransitionSwitchervue_type_template_id_3282161c_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", TransitionSwitchervue_type_template_id_3282161c_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", TransitionSwitchervue_type_template_id_3282161c_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "actionType",
+ modelValue: _ctx.actionType,
+ "onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
+ return _ctx.actionType = $event;
+ }),
+ title: _ctx.translate('Actions_ActionType'),
+ "full-width": true,
+ options: _ctx.actionTypeOptions
+ }, null, 8, ["modelValue", "title", "options"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", TransitionSwitchervue_type_template_id_3282161c_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", TransitionSwitchervue_type_template_id_3282161c_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ uicontrol: "select",
+ name: "actionName",
+ modelValue: _ctx.actionName,
+ "onUpdate:modelValue": _cache[1] || (_cache[1] = function ($event) {
+ return _ctx.actionName = $event;
+ }),
+ title: _ctx.translate('Transitions_TopX', 100),
+ "full-width": true,
+ disabled: !_ctx.isEnabled,
+ options: _ctx.actionNameOptions
+ }, null, 8, ["modelValue", "title", "disabled", "options"])])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ActivityIndicator, {
+ loading: _ctx.isLoading
+ }, null, 8, ["loading"]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", TransitionSwitchervue_type_template_id_3282161c_hoisted_6, [_hoisted_7, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_LoadingData')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_8, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.isLoading && _ctx.isEnabled]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, null, 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], !_ctx.isLoading]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", _hoisted_15, _hoisted_17, 512), [[_directive_transition_exporter]])])])])])], 512), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.isEnabled]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Transitions_AvailableInOtherReports')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Actions_PageUrls')) + ", " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Actions_SubmenuPageTitles')) + ", " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Actions_SubmenuPagesEntry')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_And')) + " " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Actions_SubmenuPagesExit')) + ". ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.availableInOtherReports2)
+ }, null, 8, _hoisted_19)])], 2);
+}
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/TransitionSwitcher/TransitionSwitcher.vue?vue&type=template&id=3282161c
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/Transitions/vue/src/TransitionSwitcher/TransitionSwitcher.vue?vue&type=script&lang=ts
+function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
+
+function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
+
+function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
+
+function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
+
+function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
+
+function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
+
+
+
+
+
+/* harmony default export */ var TransitionSwitchervue_type_script_lang_ts = (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["defineComponent"])({
+ props: {
+ isWidget: Boolean
+ },
+ components: {
+ Field: external_CorePluginsAdmin_["Field"],
+ ActivityIndicator: external_CoreHome_["ActivityIndicator"]
+ },
+ directives: {
+ TransitionExporter: TransitionExporter
+ },
+ data: function data() {
+ return {
+ actionType: 'Actions.getPageUrls',
+ actionNameOptions: [],
+ actionTypeOptions: [{
+ key: 'Actions.getPageUrls',
+ value: Object(external_CoreHome_["translate"])('Actions_PageUrls')
+ }, {
+ key: 'Actions.getPageTitles',
+ value: Object(external_CoreHome_["translate"])('Actions_WidgetPageTitles')
+ }],
+ isLoading: false,
+ actionName: null,
+ isEnabled: true,
+ noDataKey: '_____ignore_____'
+ };
+ },
+ setup: function setup() {
+ var transitionsInstance = null;
+ var transitionsUrl = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["ref"])();
+
+ var onSwitchTransitionsUrl = function onSwitchTransitionsUrl(params) {
+ if (params !== null && params !== void 0 && params.url) {
+ transitionsUrl.value = params.url;
+ }
+ };
+
+ external_CoreHome_["Matomo"].on('Transitions.switchTransitionsUrl', onSwitchTransitionsUrl);
+ Object(external_commonjs_vue_commonjs2_vue_root_Vue_["onBeforeUnmount"])(function () {
+ external_CoreHome_["Matomo"].off('Transitions.switchTransitionsUrl', onSwitchTransitionsUrl);
+ });
+
+ var createTransitionsInstance = function createTransitionsInstance(type, actionName) {
+ if (!transitionsInstance) {
+ transitionsInstance = new window.Piwik_Transitions(type, actionName, null, '');
+ } else {
+ transitionsInstance.reset(type, actionName, '');
+ }
+ };
+
+ var getTransitionsInstance = function getTransitionsInstance() {
+ return transitionsInstance;
+ };
+
+ return {
+ transitionsUrl: transitionsUrl,
+ createTransitionsInstance: createTransitionsInstance,
+ getTransitionsInstance: getTransitionsInstance
+ };
+ },
+ watch: {
+ transitionsUrl: function transitionsUrl(newValue) {
+ var _this = this;
+
+ var url = newValue;
+
+ if (this.isUrlReport) {
+ url = url.replace('https://', '').replace('http://', '');
+ }
+
+ var found = this.actionNameOptions.find(function (option) {
+ var optionUrl = option.url;
+
+ if (optionUrl && _this.isUrlReport) {
+ optionUrl = String(optionUrl).replace('https://', '').replace('http://', '');
+ } else {
+ optionUrl = undefined;
+ }
+
+ return option.key === url || url === optionUrl && optionUrl;
+ });
+
+ if (found) {
+ this.actionName = found.key;
+ } else {
+ // we only fetch top 100 in the report... so the entry the user clicked on, might not
+ // be in the top 100
+ this.actionNameOptions = [].concat(_toConsumableArray(this.actionNameOptions), [{
+ key: url,
+ value: url
+ }]);
+ this.actionName = url;
+ }
+ },
+ actionName: function actionName(newValue) {
+ if (newValue === null || newValue === this.noDataKey) {
+ return;
+ }
+
+ var type = this.isUrlReport ? 'url' : 'title';
+ this.createTransitionsInstance(type, newValue);
+ this.getTransitionsInstance().showPopover(true);
+ },
+ actionType: function actionType(newValue) {
+ this.fetch(newValue);
+ }
+ },
+ created: function created() {
+ this.fetch(this.actionType);
+ },
+ methods: {
+ detectActionName: function detectActionName(reports) {
+ var _this2 = this;
+
+ var othersLabel = Object(external_CoreHome_["translate"])('General_Others');
+ reports.forEach(function (report) {
+ if (!report) {
+ return;
+ }
+
+ if (report.label === othersLabel) {
+ return;
+ }
+
+ var key = _this2.isUrlReport ? report.url : report.label;
+
+ if (key) {
+ var pageviews = Object(external_CoreHome_["translate"])('Transitions_NumPageviews', report.nb_hits);
+ var label = "".concat(report.label, " (").concat(pageviews, ")");
+
+ _this2.actionNameOptions.push({
+ key: key,
+ value: label,
+ url: report.url
+ });
+
+ if (!_this2.actionName) {
+ _this2.actionName = key;
+ }
+ }
+ });
+ },
+ fetch: function fetch(type) {
+ var _this3 = this;
+
+ this.isLoading = true;
+ this.actionNameOptions = [];
+ this.actionName = null;
+ external_CoreHome_["AjaxHelper"].fetch({
+ method: type,
+ flat: 1,
+ filter_limit: 100,
+ filter_sort_order: 'desc',
+ filter_sort_column: 'nb_hits',
+ showColumns: 'label,nb_hits,url'
+ }).then(function (report) {
+ _this3.isLoading = false;
+ _this3.actionNameOptions = [];
+ _this3.actionName = null;
+
+ if (report !== null && report !== void 0 && report.length) {
+ _this3.isEnabled = true;
+
+ _this3.detectActionName(report);
+ }
+
+ if (_this3.actionName === null || _this3.actionNameOptions.length === 0) {
+ _this3.isEnabled = false;
+ _this3.actionName = _this3.noDataKey;
+
+ _this3.actionNameOptions.push({
+ key: _this3.noDataKey,
+ value: Object(external_CoreHome_["translate"])('CoreHome_ThereIsNoDataForThisReport')
+ });
+ }
+ }).catch(function () {
+ _this3.isLoading = false;
+ _this3.isEnabled = false;
+ });
+ }
+ },
+ computed: {
+ isUrlReport: function isUrlReport() {
+ return this.actionType === 'Actions.getPageUrls';
+ },
+ availableInOtherReports2: function availableInOtherReports2() {
+ return Object(external_CoreHome_["translate"])('Transitions_AvailableInOtherReports2', '<span class="icon-transition"></span>');
+ }
+ }
+}));
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/TransitionSwitcher/TransitionSwitcher.vue?vue&type=script&lang=ts
+
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/TransitionSwitcher/TransitionSwitcher.vue
+
+
+
+TransitionSwitchervue_type_script_lang_ts.render = TransitionSwitchervue_type_template_id_3282161c_render
+
+/* harmony default export */ var TransitionSwitcher = (TransitionSwitchervue_type_script_lang_ts);
+// CONCATENATED MODULE: ./plugins/Transitions/vue/src/index.ts
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+
+
+// CONCATENATED MODULE: ./node_modules/@vue/cli-service/lib/commands/build/entry-lib-no-default.js
+
+
+
+
+/***/ })
+
+/******/ });
+});
+//# sourceMappingURL=Transitions.umd.js.map \ No newline at end of file
diff --git a/plugins/Transitions/vue/dist/Transitions.umd.min.js b/plugins/Transitions/vue/dist/Transitions.umd.min.js
new file mode 100644
index 0000000000..deed55a747
--- /dev/null
+++ b/plugins/Transitions/vue/dist/Transitions.umd.min.js
@@ -0,0 +1,27 @@
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["Transitions"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["Transitions"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(o){if(t[o])return t[o].exports;var i=t[o]={i:o,l:!1,exports:{}};return e[o].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,o){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:o})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var o=Object.create(null);if(n.r(o),Object.defineProperty(o,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(o,i,function(t){return e[t]}.bind(null,i));return o},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/Transitions/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"TransitionExporter",(function(){return N})),n.d(t,"TransitionSwitcher",(function(){return Q})),"undefined"!==typeof window){var o=window.document.currentScript,i=o&&o.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);i&&(n.p=i[1])}var a=n("19dc"),r=n("8bbf"),c={class:"transition-export-popover row"},l={class:"col l6"},s={class:"input-field"},u={class:"matomo-field"},d={class:"col l12"},p=["href"];function m(e,t,n,o,i,a){var m=Object(r["resolveComponent"])("Field");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",c,[Object(r["createElementVNode"])("div",l,[Object(r["createElementVNode"])("div",s,[Object(r["createElementVNode"])("div",u,[Object(r["createVNode"])(m,{uicontrol:"radio",name:"exportFormat",title:e.translate("CoreHome_ExportFormat"),"model-value":e.exportFormat,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.exportFormat=t}),"full-width":!0,options:e.exportFormatOptions},null,8,["title","model-value","options"])])])]),Object(r["createElementVNode"])("div",d,[Object(r["createElementVNode"])("a",{class:"btn",href:e.exportLink,target:"_new",title:"translate('CoreHome_ExportTooltip')"},Object(r["toDisplayString"])(e.translate("General_Export")),9,p)])])}var f=n("a5a2"),b=Object(r["ref"])(""),v=Object(r["ref"])(""),O=function(e){b.value=e.actionType,v.value=e.actionName};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */a["Matomo"].on("Transitions.dataChanged",O);var h=Object(r["defineComponent"])({props:{exportFormatOptions:{type:Object,required:!0}},components:{Field:f["Field"]},data:function(){return{exportFormat:"JSON"}},computed:{exportLink:function(){var e={module:"API",method:"Transitions.getTransitionsForAction"};e.actionType=b.value,e.actionName=v.value,e.idSite=a["Matomo"].idSite,e.period=a["Matomo"].period,e.date=a["Matomo"].currentDateString,e.format=this.exportFormat,e.token_auth=a["Matomo"].token_auth,e.force_api_session=1;var t=window.location.href,n=t.split("/");n.pop();var o=n.join("/");return"".concat(o,"/index.php?").concat(a["MatomoUrl"].stringify(e))}}});h.render=m;var j=h,y=window,g=y.Piwik_Popover,N={mounted:function(e){e.addEventListener("click",(function(e){e.preventDefault();var t={exportFormat:"JSON",exportFormatOptions:[{key:"JSON",value:"JSON"},{key:"XML",value:"XML"}]},n=Object(a["createVueApp"])({template:'\n <popover v-bind="bind"/>',data:function(){return{bind:t}}});n.component("popover",j);var o=document.createElement("div");n.mount(o),g.showLoading(""),g.setTitle("".concat(v.value," ").concat(Object(a["translate"])("Transitions_Transitions"))),g.setContent(o),g.onClose((function(){n.unmount()}))}))}};
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+function T(){return{restrict:"A",link:function(e,t){N.mounted(t[0])}}}window.angular.module("piwikApp").directive("transitionExporter",T);var _={class:"row"},E={class:"col s12 m3"},w={name:"actionType"},A={class:"col s12 m9"},V={name:"actionName"},x={class:"loadingPiwik",style:{display:"none"},id:"transitions_inline_loading"},S=Object(r["createElementVNode"])("img",{src:"plugins/Morpheus/images/loading-blue.gif",alt:""},null,-1),P={class:"popoverContainer"},C={id:"Transitions_Error_Container"},k={class:"dataTableWrapper"},D={class:"dataTableFeatures"},F={class:"dataTableFooterNavigation"},U={class:"dataTableControls"},M={class:"row"},I={class:"dataTableAction"},L=Object(r["createElementVNode"])("span",{class:"icon-export"},null,-1),H=[L],R={class:"alert alert-info"},q=["innerHTML"];function B(e,t,n,o,i,a){var c=Object(r["resolveComponent"])("Field"),l=Object(r["resolveComponent"])("ActivityIndicator"),s=Object(r["resolveDirective"])("transition-exporter");return Object(r["openBlock"])(),Object(r["createElementBlock"])("div",{class:Object(r["normalizeClass"])({widgetBody:e.isWidget}),id:"transitions_report"},[Object(r["createElementVNode"])("div",_,[Object(r["createElementVNode"])("div",E,[Object(r["createElementVNode"])("div",w,[Object(r["createVNode"])(c,{uicontrol:"select",name:"actionType",modelValue:e.actionType,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.actionType=t}),title:e.translate("Actions_ActionType"),"full-width":!0,options:e.actionTypeOptions},null,8,["modelValue","title","options"])])]),Object(r["createElementVNode"])("div",A,[Object(r["createElementVNode"])("div",V,[Object(r["createVNode"])(c,{uicontrol:"select",name:"actionName",modelValue:e.actionName,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.actionName=t}),title:e.translate("Transitions_TopX",100),"full-width":!0,disabled:!e.isEnabled,options:e.actionNameOptions},null,8,["modelValue","title","disabled","options"])])])]),Object(r["createVNode"])(l,{loading:e.isLoading},null,8,["loading"]),Object(r["createElementVNode"])("div",x,[S,Object(r["createElementVNode"])("span",null,Object(r["toDisplayString"])(e.translate("General_LoadingData")),1)]),Object(r["withDirectives"])(Object(r["createElementVNode"])("div",P,null,512),[[r["vShow"],!e.isLoading&&e.isEnabled]]),Object(r["withDirectives"])(Object(r["createElementVNode"])("div",C,null,512),[[r["vShow"],!e.isLoading]]),Object(r["withDirectives"])(Object(r["createElementVNode"])("div",k,[Object(r["createElementVNode"])("div",D,[Object(r["createElementVNode"])("div",F,[Object(r["createElementVNode"])("div",U,[Object(r["createElementVNode"])("div",M,[Object(r["withDirectives"])(Object(r["createElementVNode"])("a",I,H,512),[[s]])])])])])],512),[[r["vShow"],e.isEnabled]]),Object(r["createElementVNode"])("div",R,[Object(r["createTextVNode"])(Object(r["toDisplayString"])(e.translate("Transitions_AvailableInOtherReports"))+" "+Object(r["toDisplayString"])(e.translate("Actions_PageUrls"))+", "+Object(r["toDisplayString"])(e.translate("Actions_SubmenuPageTitles"))+", "+Object(r["toDisplayString"])(e.translate("Actions_SubmenuPagesEntry"))+" "+Object(r["toDisplayString"])(e.translate("General_And"))+" "+Object(r["toDisplayString"])(e.translate("Actions_SubmenuPagesExit"))+". ",1),Object(r["createElementVNode"])("span",{innerHTML:e.$sanitize(e.availableInOtherReports2)},null,8,q)])],2)}function G(e){return X(e)||W(e)||K(e)||J()}function J(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function K(e,t){if(e){if("string"===typeof e)return $(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?$(e,t):void 0}}function W(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function X(e){if(Array.isArray(e))return $(e)}function $(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,o=new Array(t);n<t;n++)o[n]=e[n];return o}var z=Object(r["defineComponent"])({props:{isWidget:Boolean},components:{Field:f["Field"],ActivityIndicator:a["ActivityIndicator"]},directives:{TransitionExporter:N},data:function(){return{actionType:"Actions.getPageUrls",actionNameOptions:[],actionTypeOptions:[{key:"Actions.getPageUrls",value:Object(a["translate"])("Actions_PageUrls")},{key:"Actions.getPageTitles",value:Object(a["translate"])("Actions_WidgetPageTitles")}],isLoading:!1,actionName:null,isEnabled:!0,noDataKey:"_____ignore_____"}},setup:function(){var e=null,t=Object(r["ref"])(),n=function(e){null!==e&&void 0!==e&&e.url&&(t.value=e.url)};a["Matomo"].on("Transitions.switchTransitionsUrl",n),Object(r["onBeforeUnmount"])((function(){a["Matomo"].off("Transitions.switchTransitionsUrl",n)}));var o=function(t,n){e?e.reset(t,n,""):e=new window.Piwik_Transitions(t,n,null,"")},i=function(){return e};return{transitionsUrl:t,createTransitionsInstance:o,getTransitionsInstance:i}},watch:{transitionsUrl:function(e){var t=this,n=e;this.isUrlReport&&(n=n.replace("https://","").replace("http://",""));var o=this.actionNameOptions.find((function(e){var o=e.url;return o=o&&t.isUrlReport?String(o).replace("https://","").replace("http://",""):void 0,e.key===n||n===o&&o}));o?this.actionName=o.key:(this.actionNameOptions=[].concat(G(this.actionNameOptions),[{key:n,value:n}]),this.actionName=n)},actionName:function(e){if(null!==e&&e!==this.noDataKey){var t=this.isUrlReport?"url":"title";this.createTransitionsInstance(t,e),this.getTransitionsInstance().showPopover(!0)}},actionType:function(e){this.fetch(e)}},created:function(){this.fetch(this.actionType)},methods:{detectActionName:function(e){var t=this,n=Object(a["translate"])("General_Others");e.forEach((function(e){if(e&&e.label!==n){var o=t.isUrlReport?e.url:e.label;if(o){var i=Object(a["translate"])("Transitions_NumPageviews",e.nb_hits),r="".concat(e.label," (").concat(i,")");t.actionNameOptions.push({key:o,value:r,url:e.url}),t.actionName||(t.actionName=o)}}}))},fetch:function(e){var t=this;this.isLoading=!0,this.actionNameOptions=[],this.actionName=null,a["AjaxHelper"].fetch({method:e,flat:1,filter_limit:100,filter_sort_order:"desc",filter_sort_column:"nb_hits",showColumns:"label,nb_hits,url"}).then((function(e){t.isLoading=!1,t.actionNameOptions=[],t.actionName=null,null!==e&&void 0!==e&&e.length&&(t.isEnabled=!0,t.detectActionName(e)),null!==t.actionName&&0!==t.actionNameOptions.length||(t.isEnabled=!1,t.actionName=t.noDataKey,t.actionNameOptions.push({key:t.noDataKey,value:Object(a["translate"])("CoreHome_ThereIsNoDataForThisReport")}))})).catch((function(){t.isLoading=!1,t.isEnabled=!1}))}},computed:{isUrlReport:function(){return"Actions.getPageUrls"===this.actionType},availableInOtherReports2:function(){return Object(a["translate"])("Transitions_AvailableInOtherReports2",'<span class="icon-transition"></span>')}}});z.render=B;var Q=z;
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */}})}));
+//# sourceMappingURL=Transitions.umd.min.js.map \ No newline at end of file
diff --git a/plugins/Transitions/vue/dist/umd.metadata.json b/plugins/Transitions/vue/dist/umd.metadata.json
new file mode 100644
index 0000000000..dce4477a3c
--- /dev/null
+++ b/plugins/Transitions/vue/dist/umd.metadata.json
@@ -0,0 +1,6 @@
+{
+ "dependsOn": [
+ "CoreHome",
+ "CorePluginsAdmin"
+ ]
+} \ No newline at end of file
diff --git a/plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.adapter.ts b/plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.adapter.ts
new file mode 100644
index 0000000000..82f1a78ca5
--- /dev/null
+++ b/plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.adapter.ts
@@ -0,0 +1,20 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { IDirective } from 'angular';
+import TransitionExporter from './TransitionExporter';
+
+function transitionExporter(): IDirective {
+ return {
+ restrict: 'A',
+ link(scope, element) {
+ TransitionExporter.mounted(element[0]);
+ },
+ };
+}
+
+window.angular.module('piwikApp').directive('transitionExporter', transitionExporter);
diff --git a/plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.ts b/plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.ts
new file mode 100644
index 0000000000..b9b6a0b7bd
--- /dev/null
+++ b/plugins/Transitions/vue/src/TransitionExporter/TransitionExporter.ts
@@ -0,0 +1,50 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { createVueApp, translate } from 'CoreHome';
+import TransitionExporterPopover from './TransitionExporterPopover';
+import { actionName } from './transitionParams';
+
+const { Piwik_Popover } = window;
+
+export default {
+ mounted(element: HTMLElement): void {
+ element.addEventListener('click', (e) => {
+ e.preventDefault();
+
+ const props = {
+ exportFormat: 'JSON',
+ exportFormatOptions: [
+ { key: 'JSON', value: 'JSON' },
+ { key: 'XML', value: 'XML' },
+ ],
+ };
+
+ const app = createVueApp({
+ template: `
+ <popover v-bind="bind"/>`,
+ data() {
+ return {
+ bind: props,
+ };
+ },
+ });
+ app.component('popover', TransitionExporterPopover);
+
+ const mountPoint = document.createElement('div');
+ app.mount(mountPoint);
+
+ Piwik_Popover.showLoading('');
+ Piwik_Popover.setTitle(`${actionName.value} ${translate('Transitions_Transitions')}`);
+ Piwik_Popover.setContent(mountPoint);
+
+ Piwik_Popover.onClose(() => {
+ app.unmount();
+ });
+ });
+ },
+};
diff --git a/plugins/Transitions/angularjs/transitionexporter/transitionexporter.popover.less b/plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.less
index 54b15e412c..c793232928 100644
--- a/plugins/Transitions/angularjs/transitionexporter/transitionexporter.popover.less
+++ b/plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.less
@@ -27,7 +27,7 @@
clear: both;
float: none;
- [piwik-field] {
+ .matomo-field {
width: 50%;
float: left;
}
@@ -46,7 +46,7 @@
}
.tooltip > a {
- color: @color-blue-piwik;
- text-decoration: underline;
+ color: @color-blue-piwik;
+ text-decoration: underline;
}
} \ No newline at end of file
diff --git a/plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.vue b/plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.vue
new file mode 100644
index 0000000000..b900645d31
--- /dev/null
+++ b/plugins/Transitions/vue/src/TransitionExporter/TransitionExporterPopover.vue
@@ -0,0 +1,91 @@
+<!--
+ Matomo - free/libre analytics platform
+
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div class="transition-export-popover row">
+ <div class="col l6">
+ <div class="input-field">
+ <div class="matomo-field">
+ <Field
+ uicontrol="radio"
+ name="exportFormat"
+ :title="translate('CoreHome_ExportFormat')"
+ :model-value="exportFormat"
+ @update:model-value="exportFormat = $event"
+ :full-width="true"
+ :options="exportFormatOptions"
+ />
+ </div>
+ </div>
+ </div>
+
+ <div class="col l12">
+ <a
+ class="btn"
+ :href="exportLink"
+ target="_new"
+ title="translate('CoreHome_ExportTooltip')"
+ >
+ {{ translate('General_Export') }}
+ </a>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent } from 'vue';
+import { Matomo, MatomoUrl } from 'CoreHome';
+import { Field } from 'CorePluginsAdmin';
+import { actionType, actionName } from './transitionParams';
+
+interface TransitionExportPopoverState {
+ exportFormat: string;
+}
+
+export default defineComponent({
+ props: {
+ exportFormatOptions: {
+ type: Object,
+ required: true,
+ },
+ },
+ components: {
+ Field,
+ },
+ data(): TransitionExportPopoverState {
+ return {
+ exportFormat: 'JSON',
+ };
+ },
+ computed: {
+ exportLink() {
+ const exportUrlParams: QueryParameters = {
+ module: 'API',
+ };
+
+ exportUrlParams.method = 'Transitions.getTransitionsForAction';
+ exportUrlParams.actionType = actionType.value;
+ exportUrlParams.actionName = actionName.value;
+
+ exportUrlParams.idSite = Matomo.idSite;
+ exportUrlParams.period = Matomo.period;
+ exportUrlParams.date = Matomo.currentDateString;
+ exportUrlParams.format = this.exportFormat;
+ exportUrlParams.token_auth = Matomo.token_auth;
+ exportUrlParams.force_api_session = 1;
+
+ const currentUrl = window.location.href;
+
+ const urlParts = currentUrl.split('/');
+ urlParts.pop();
+
+ const url = urlParts.join('/');
+ return `${url}/index.php?${MatomoUrl.stringify(exportUrlParams)}`;
+ },
+ },
+});
+</script>
diff --git a/plugins/Transitions/vue/src/TransitionExporter/transitionParams.ts b/plugins/Transitions/vue/src/TransitionExporter/transitionParams.ts
new file mode 100644
index 0000000000..f49b698cf9
--- /dev/null
+++ b/plugins/Transitions/vue/src/TransitionExporter/transitionParams.ts
@@ -0,0 +1,29 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import { ref } from 'vue';
+import { Matomo } from 'CoreHome';
+
+interface DataChangedParams {
+ actionType: string;
+ actionName: string;
+}
+
+const actionType = ref('');
+const actionName = ref('');
+
+const onDataChanged = (params: DataChangedParams) => {
+ actionType.value = params.actionType;
+ actionName.value = params.actionName;
+};
+
+Matomo.on('Transitions.dataChanged', onDataChanged);
+
+export {
+ actionType,
+ actionName,
+};
diff --git a/plugins/Transitions/vue/src/TransitionSwitcher/TransitionSwitcher.vue b/plugins/Transitions/vue/src/TransitionSwitcher/TransitionSwitcher.vue
new file mode 100644
index 0000000000..6b54359a96
--- /dev/null
+++ b/plugins/Transitions/vue/src/TransitionSwitcher/TransitionSwitcher.vue
@@ -0,0 +1,308 @@
+<!--
+ Matomo - free/libre analytics platform
+ @link https://matomo.org
+ @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+-->
+
+<template>
+ <div
+ :class="{ widgetBody: isWidget }"
+ id="transitions_report"
+ >
+ <div class="row">
+ <div class="col s12 m3">
+ <div name="actionType">
+ <Field
+ uicontrol="select"
+ name="actionType"
+ v-model="actionType"
+ :title="translate('Actions_ActionType')"
+ :full-width="true"
+ :options="actionTypeOptions"
+ >
+ </Field>
+ </div>
+ </div>
+ <div class="col s12 m9">
+ <div name="actionName">
+ <Field
+ uicontrol="select"
+ name="actionName"
+ v-model="actionName"
+ :title="translate('Transitions_TopX', 100)"
+ :full-width="true"
+ :disabled="!isEnabled"
+ :options="actionNameOptions"
+ >
+ </Field>
+ </div>
+ </div>
+ </div>
+ <ActivityIndicator :loading="isLoading" />
+ <div
+ class="loadingPiwik"
+ style="display:none;"
+ id="transitions_inline_loading"
+ >
+ <img src="plugins/Morpheus/images/loading-blue.gif" alt/>
+ <span>{{ translate('General_LoadingData') }}</span>
+ </div>
+ <div
+ class="popoverContainer"
+ v-show="!isLoading && isEnabled"
+ >
+ </div>
+ <div
+ id="Transitions_Error_Container"
+ v-show="!isLoading"
+ >
+ </div>
+ <div
+ class="dataTableWrapper"
+ v-show="isEnabled"
+ >
+ <div class="dataTableFeatures">
+ <div class="dataTableFooterNavigation">
+ <div class="dataTableControls">
+ <div class="row">
+ <a
+ class="dataTableAction"
+ v-transition-exporter
+ >
+ <span class="icon-export" />
+ </a>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="alert alert-info">
+ {{ translate('Transitions_AvailableInOtherReports') }}
+ {{ translate('Actions_PageUrls') }}, {{ translate('Actions_SubmenuPageTitles') }},
+ {{ translate('Actions_SubmenuPagesEntry') }}
+ {{ translate('General_And') }}
+ {{ translate('Actions_SubmenuPagesExit') }}.
+ <span v-html="$sanitize(availableInOtherReports2)"></span>
+ </div>
+ </div>
+</template>
+
+<script lang="ts">
+import { defineComponent, onBeforeUnmount, ref } from 'vue';
+import {
+ translate,
+ AjaxHelper,
+ Matomo,
+ ActivityIndicator,
+} from 'CoreHome';
+import { Field } from 'CorePluginsAdmin';
+import TransitionExporter from '../TransitionExporter/TransitionExporter';
+
+interface Option {
+ key: string;
+ value: unknown;
+ url?: string;
+}
+
+interface TransitionSwitcherState {
+ actionType: string;
+ actionNameOptions: Option[];
+ actionTypeOptions: Option[];
+ isLoading: boolean;
+ actionName: string|null;
+ isEnabled: boolean;
+ noDataKey: string;
+}
+
+interface ActionReportRow {
+ label: string;
+ nb_hits: string|number;
+ segment: string;
+ url: string;
+}
+
+export default defineComponent({
+ props: {
+ isWidget: Boolean,
+ },
+ components: {
+ Field,
+ ActivityIndicator,
+ },
+ directives: {
+ TransitionExporter,
+ },
+ data(): TransitionSwitcherState {
+ return {
+ actionType: 'Actions.getPageUrls',
+ actionNameOptions: [],
+ actionTypeOptions: [
+ {
+ key: 'Actions.getPageUrls',
+ value: translate('Actions_PageUrls'),
+ }, {
+ key: 'Actions.getPageTitles',
+ value: translate('Actions_WidgetPageTitles'),
+ },
+ ],
+ isLoading: false,
+ actionName: null,
+ isEnabled: true,
+ noDataKey: '_____ignore_____',
+ };
+ },
+ setup() {
+ let transitionsInstance: Transitions|null = null;
+ const transitionsUrl = ref<null|string>();
+
+ const onSwitchTransitionsUrl = (params: { url: string }) => {
+ if (params?.url) {
+ transitionsUrl.value = params.url;
+ }
+ };
+
+ Matomo.on('Transitions.switchTransitionsUrl', onSwitchTransitionsUrl);
+
+ onBeforeUnmount(() => {
+ Matomo.off('Transitions.switchTransitionsUrl', onSwitchTransitionsUrl);
+ });
+
+ const createTransitionsInstance = (type: string, actionName: string) => {
+ if (!transitionsInstance) {
+ transitionsInstance = new window.Piwik_Transitions(type, actionName, null, '');
+ } else {
+ transitionsInstance.reset(type, actionName, '');
+ }
+ };
+
+ const getTransitionsInstance = () => transitionsInstance;
+
+ return {
+ transitionsUrl,
+ createTransitionsInstance,
+ getTransitionsInstance,
+ };
+ },
+ watch: {
+ transitionsUrl(newValue) {
+ let url = newValue;
+ if (this.isUrlReport) {
+ url = url.replace('https://', '').replace('http://', '');
+ }
+
+ const found = this.actionNameOptions.find((option) => {
+ let optionUrl = option.url;
+
+ if (optionUrl && this.isUrlReport) {
+ optionUrl = String(optionUrl).replace('https://', '').replace('http://', '');
+ } else {
+ optionUrl = undefined;
+ }
+
+ return option.key === url || (url === optionUrl && optionUrl);
+ });
+
+ if (found) {
+ this.actionName = found.key;
+ } else {
+ // we only fetch top 100 in the report... so the entry the user clicked on, might not
+ // be in the top 100
+ this.actionNameOptions = [
+ ...this.actionNameOptions,
+ { key: url, value: url },
+ ];
+ this.actionName = url;
+ }
+ },
+ actionName(newValue) {
+ if (newValue === null || newValue === this.noDataKey) {
+ return;
+ }
+
+ const type = this.isUrlReport ? 'url' : 'title';
+
+ this.createTransitionsInstance(type, newValue);
+
+ this.getTransitionsInstance()!.showPopover(true);
+ },
+ actionType(newValue) {
+ this.fetch(newValue);
+ },
+ },
+ created() {
+ this.fetch(this.actionType);
+ },
+ methods: {
+ detectActionName(reports: ActionReportRow[]) {
+ const othersLabel = translate('General_Others');
+
+ reports.forEach((report) => {
+ if (!report) {
+ return;
+ }
+
+ if (report.label === othersLabel) {
+ return;
+ }
+
+ const key = this.isUrlReport ? report.url : report.label;
+ if (key) {
+ const pageviews = translate('Transitions_NumPageviews', report.nb_hits as string);
+ const label = `${report.label} (${pageviews})`;
+ this.actionNameOptions.push({
+ key,
+ value: label,
+ url: report.url,
+ });
+
+ if (!this.actionName) {
+ this.actionName = key;
+ }
+ }
+ });
+ },
+ fetch(type: string) {
+ this.isLoading = true;
+ this.actionNameOptions = [];
+ this.actionName = null;
+ AjaxHelper.fetch<ActionReportRow[]>({
+ method: type,
+ flat: 1,
+ filter_limit: 100,
+ filter_sort_order: 'desc',
+ filter_sort_column: 'nb_hits',
+ showColumns: 'label,nb_hits,url',
+ }).then((report) => {
+ this.isLoading = false;
+ this.actionNameOptions = [];
+ this.actionName = null;
+
+ if (report?.length) {
+ this.isEnabled = true;
+ this.detectActionName(report);
+ }
+
+ if (this.actionName === null || this.actionNameOptions.length === 0) {
+ this.isEnabled = false;
+ this.actionName = this.noDataKey;
+ this.actionNameOptions.push({
+ key: this.noDataKey,
+ value: translate('CoreHome_ThereIsNoDataForThisReport'),
+ });
+ }
+ }).catch(() => {
+ this.isLoading = false;
+ this.isEnabled = false;
+ });
+ },
+ },
+ computed: {
+ isUrlReport() {
+ return this.actionType === 'Actions.getPageUrls';
+ },
+ availableInOtherReports2() {
+ return translate('Transitions_AvailableInOtherReports2', '<span class="icon-transition"></span>');
+ },
+ },
+});
+</script>
diff --git a/plugins/Transitions/vue/src/index.ts b/plugins/Transitions/vue/src/index.ts
new file mode 100644
index 0000000000..dff1aa7557
--- /dev/null
+++ b/plugins/Transitions/vue/src/index.ts
@@ -0,0 +1,11 @@
+/*!
+ * Matomo - free/libre analytics platform
+ *
+ * @link https://matomo.org
+ * @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
+ */
+
+import './TransitionExporter/TransitionExporter.adapter.ts';
+
+export { default as TransitionExporter } from './TransitionExporter/TransitionExporter';
+export { default as TransitionSwitcher } from './TransitionSwitcher/TransitionSwitcher.vue';
diff --git a/plugins/TwoFactorAuth/lang/ga.json b/plugins/TwoFactorAuth/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/TwoFactorAuth/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/UserCountry/lang/de.json b/plugins/UserCountry/lang/de.json
index 43aeb0be40..f7063e0422 100644
--- a/plugins/UserCountry/lang/de.json
+++ b/plugins/UserCountry/lang/de.json
@@ -7,33 +7,28 @@
"Continents": "Kontinente",
"Country": "Land",
"CountryCode": "Länderkürzel",
- "country_a1": "Anonymer Proxy",
- "country_a2": "Satelliten-Anbieter",
- "country_cat": "Katalanisch sprechende Gemeinden",
- "country_o1": "Anderes Land",
- "VisitLocation": "Besuchsort",
"CurrentLocationIntro": "Gemäß diesem Provider ist Ihr derzeitiger Standort",
"DefaultLocationProviderDesc1": "Die voreingestellte Standorterkennung versucht das Herkunftsland des Besuchers anhand dessen verwendeter Sprache zu erkennen.",
"DefaultLocationProviderDesc2": "Dies ist nicht sehr genau, daher %1$swird empfohlen %2$sGeolocation-Datenbank%3$s zu installieren und zu nutzen.%4$s",
"DefaultLocationProviderExplanation": "Sie benutzen den standardmäßigen Standortanbieter. Das bedeutet, dass Matomo den Standort durch die Sprache des Besuchers erahnen wird. %1$sLesen sie dies%2$s, um zu erfahren, wie Sie eine genauere Standorterkennung einrichten.",
+ "DisabledLocationProvider": "Deaktiviert die Geolokalisierung.",
"DistinctCountries": "%s unterschiedliche Länder",
"FromDifferentCities": "Unterschiedliche Städte",
"GeoIPDocumentationSuffix": "Um Daten für diesen Bericht sehen zu können, müssen Sie GeoIP im Standorterkennung Administrations-Reiter konfigurieren. Die kommerziellen %1$sMaxmind%2$s GeoIP Datenbanken sind weit genauer als die kostenlosen. Um zu sehen, wie genau sie sind, klicken Sie %3$shier%4$s.",
+ "GeoIpDbIpAccuracyNote": "Bemerkung: Die DBIP Datenbanken sind frei und können automatisch heruntergeladen werden, aber Geolocation Resultate (insbesondere Städte-Resultate) sind nicht so akkurat wie die von MaxMind. Bei MaxMind hingegen benötigen Sie auch für die freie Geolocation Datenbank ein Benutzerkonto, Sie können den Prozess %1$shier%2$s starten",
"Geolocation": "Standorterkennung",
"GeolocationPageDesc": "Auf dieser Seite können Sie einstellen auf welche Weise Matomo die Herkunft eines Besuchers ermittelt.",
"GeolocationProviderBroken": "Der konfigurierte Geolocation Provider %1$s funktioniert nicht. Bitte korrigieren Sie die Einstellungen oder stellen Sie einen anderen Provider ein, damit Geolocation wieder funktioniert.",
"GeolocationProviderUnavailable": "Der konfigurierte Geolocation Provider %1$s ist nicht mehr verfügbar, bitte stellen Sie einen anderen ein.",
- "getCityDocumentation": "Dieser Bericht enthält die Städte, in denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
- "getContinentDocumentation": "Dieser Bericht enthält die Kontinente, auf denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
- "getCountryDocumentation": "Dieser Bericht enthält die Länder, in denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
- "getRegionDocumentation": "Dieser Bericht enthält die Regionen, in denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
"HowToInstallGeoIPDatabases": "Woher bekommt man die Geolocation-Datenbanken?",
"Latitude": "Breitengrad",
"Latitudes": "Breitengrade",
"Location": "Ort",
"LocationProvider": "Standorterkennungsdienst",
+ "LocationsSubcategoryHelp": "Der Orte Abschnitt ist der beste Weg herauszufinden wo Personen sind, wenn Sie Ihre Seite besuchen. Er zeigt Länder, Kontinente, Regionen und Städte auf, von denen Ihre Besucher kommen, in Tabellen- und Kartenform. Zusätzlich dazu können Sie sehen welche Browsersprachen eingestellt sind, was dabei hilft internationale Besucher aus alternativen Standorten zu identifizieren.",
"Longitude": "Längengrad",
"Longitudes": "Längengrade",
+ "MaxMindLinkExplanation": "Wenn Sie die Geolocation Datenbanken von MaxMind verwenden und Sie nicht wissen wie Ihre Download URL zu generieren ist, %1$sklicken Sie hier um zu lernen wie%2$s.",
"NoDataForGeoIPReport1": "Es sind keine Daten für diesen Bericht vorhanden, da entweder keine Lokalisierungsdaten vorhanden sind oder die Besucher IP-Adresse nicht geortet werden kann.",
"NoDataForGeoIPReport2": "Um die vollständige Standorterkennung zu aktivieren, ändern Sie bitte %1$shier%2$s die Einstellungen und benutzen eine %3$sStädtebasierte Datenbank%4$s.",
"NoProviders": "Es sind aktuell keine zusätzlichen Geolocation Anbieter verfügbar. Matomo empfiehlt, die %1$sdbip%2$s Datenbanken zu verwenden, welche aber ist die Aktivierung des Plugins GeoIp2 bedingt. (Alternativ können Sie ein Third Party Plugin aus dem Marketplace installieren, welches eigene Geolocation Funktionalität bereitstellt.)",
@@ -42,9 +37,15 @@
"SubmenuLocations": "Orte",
"TestIPLocatorFailed": "Matomo hat die Überprüfung einer bekannten IP-Adresse (%1$s) durchgeführt, aber Ihr Server hat keine Informationen zurückgegeben. Diese Provider ist möglicherweise nicht korrekt konfiguriert (z.B. könnte die Geolocation-Datenbank falsch benannt sein oder im falschen Ordner liegen).",
"ToGeolocateOldVisits": "Für Standortdaten für vergangene Besuche verwenden Sie bitte das %1$shier beschriebene Skript%2$s.",
+ "VisitLocation": "Besuchsort",
"WidgetLocation": "Besucherstandort",
- "GeoIpDbIpAccuracyNote": "Bemerkung: Die DBIP Datenbanken sind frei und können automatisch heruntergeladen werden, aber Geolocation Resultate (insbesondere Städte-Resultate) sind nicht so akkurat wie die von MaxMind. Bei MaxMind hingegen benötigen Sie auch für die freie Geolocation Datenbank ein Benutzerkonto, Sie können den Prozess %1$shier%2$s starten",
- "MaxMindLinkExplanation": "Wenn Sie die Geolocation Datenbanken von MaxMind verwenden und Sie nicht wissen wie Ihre Download URL zu generieren ist, %1$sklicken Sie hier um zu lernen wie%2$s.",
- "LocationsSubcategoryHelp": "Der Orte Abschnitt ist der beste Weg herauszufinden wo Personen sind, wenn Sie Ihre Seite besuchen. Er zeigt Länder, Kontinente, Regionen und Städte auf, von denen Ihre Besucher kommen, in Tabellen- und Kartenform. Zusätzlich dazu können Sie sehen welche Browsersprachen eingestellt sind, was dabei hilft internationale Besucher aus alternativen Standorten zu identifizieren."
+ "country_a1": "Anonymer Proxy",
+ "country_a2": "Satelliten-Anbieter",
+ "country_cat": "Katalanisch sprechende Gemeinden",
+ "country_o1": "Anderes Land",
+ "getCityDocumentation": "Dieser Bericht enthält die Städte, in denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
+ "getContinentDocumentation": "Dieser Bericht enthält die Kontinente, auf denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
+ "getCountryDocumentation": "Dieser Bericht enthält die Länder, in denen sich Ihre Besucher befanden, als sie Ihre Website besuchten.",
+ "getRegionDocumentation": "Dieser Bericht enthält die Regionen, in denen sich Ihre Besucher befanden, als sie Ihre Website besuchten."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserCountry/lang/ga.json b/plugins/UserCountry/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/UserCountry/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/UserCountry/lang/id.json b/plugins/UserCountry/lang/id.json
index 74b65989ed..5b6ecbd370 100644
--- a/plugins/UserCountry/lang/id.json
+++ b/plugins/UserCountry/lang/id.json
@@ -1,37 +1,51 @@
{
"UserCountry": {
- "CannotLocalizeLocalIP": "Alamat IP %s merupakan alamat lokal dan tidak dapat diperiksa oleh lokasi-geo.",
+ "CannotLocalizeLocalIP": "Alamat IP %s merupakan alamat lokal dan tidak dapat diperiksa oleh geolokasi.",
"City": "Kota",
"CityAndCountry": "%1$s, %2$s",
"Continent": "Benua",
"Continents": "Benua",
"Country": "Negara",
"CountryCode": "Kode negara",
- "country_a1": "Wali Anonim",
- "country_a2": "Penyedia Satelit",
- "country_cat": "Masyarakat berbahasa Katalan",
- "country_o1": "Negara Lain",
- "VisitLocation": "Lokasi berkunjung",
"CurrentLocationIntro": "Berdasar penyedia ini, lokasi Anda adalah",
"DefaultLocationProviderDesc1": "Lokasi penyedia asali menebak negara pengunjung dari bahasa yang digunakan.",
+ "DefaultLocationProviderDesc2": "Ini tidak terlalu akurat, jadi %1$skami menyarankan Anda untuk memasang dan menggunakan %2$sbasis data geolokasi%3$s.%4$s",
+ "DefaultLocationProviderExplanation": "Anda menggunakan penyedia lokasi bawaan, yang mana Matomo akan menebak lokasi pengunjung berdasarkan bahasa yang mereka gunakan. %1$sBaca ini%2$s untuk mempelajari cara untuk menyiapkan geolokasi yang lebih akurat.",
+ "DisabledLocationProvider": "Menonaktifkan geolokasi.",
"DistinctCountries": "%s negara berbeda",
"FromDifferentCities": "kota berbeda",
- "GeoIPDocumentationSuffix": "Agar dapat melihat data untuk laporan ini, Anda harus memasang GeoIP di tab pengelola Lokasi-Geo. Basisdata GeoIP %1$sMaxmind%2$s komersial lebih teliti daripada yang gratis. Untuk melihat seberapa teliti mereka, klik %3$sdi sini%4$s.",
- "Geolocation": "Lokasi-Geo",
+ "GeoIPDocumentationSuffix": "Untuk melihat data laporan ini, Anda harus menyiapkan GeoIP di tab Admin Geolokasi. Database GeoIP %1$sMaxmind%2$s komersial lebih akurat daripada yang gratis. Untuk melihat seberapa akuratnya, klik %3$sdi sini%4$s.",
+ "GeoIpDbIpAccuracyNote": "Catatan: basis data DBIP gratis dan dapat diunduh secara otomatis, tetapi hasil geolokasi (khususnya hasil kota) tidak seakurat MaxMind. Namun MaxMind mengharuskan Anda untuk membuat akun bahkan untuk memakai basis data yang gratis. Jika Anda ingin menggunakan basis data geolokasi MaxMind, Anda dapat memulai prosesnya %1$sdi sini%2$s",
+ "Geolocation": "Geolokasi",
"GeolocationPageDesc": "Dalam halaman ini Anda dapat mengganti bagaimana Matomo menentukan lokasi pengunjung.",
- "getCityDocumentation": "Laporan ini menunjukkan kota pengunjung Anda berada saat mengunjungi situs Anda.",
- "getContinentDocumentation": "Laporan ini menunjukkan benua pengunjung Anda berada saat mengunjungi situs Anda.",
- "getCountryDocumentation": "Laporan ini menujukkan negara pengunjung Anda berada saat mengunjungi sutus Anda.",
- "getRegionDocumentation": "Laporan ini menunjukkan wilayah pengunjung Anda berada saat mengunjungi situs Anda.",
+ "GeolocationProviderBroken": "Penyedia geolokasi yang telah diatur %1$s rusak. Harap perbaiki penyedia atau atur penyedia lain agar geolokasi berfungsi kembali.",
+ "GeolocationProviderUnavailable": "Penyedia geolokasi yang dikonfigurasi %1$s tidak tersedia lagi, silakan konfigurasikan yang lain.",
+ "HowToInstallGeoIPDatabases": "Bagaimana cara mendapatkan basis data geolokasi?",
"Latitude": "Lintang",
+ "Latitudes": "Garis lintang",
"Location": "Lokasi",
"LocationProvider": "Penyedia Lokasi",
+ "LocationsSubcategoryHelp": "Bagian Lokasi adalah cara terbaik untuk mengetahui di mana orang-orang berada saat mereka mengunjungi situs Anda. Ini mengungkapkan negara, benua, wilayah, kota asal pengunjung Anda, dalam bentuk tabel dan peta. Selain itu, Anda juga dapat melihat bahasa apa yang diatur di peramban mereka, membantu mengidentifikasi pengunjung internasional di lokasi alternatif.",
"Longitude": "Bujur",
- "NoDataForGeoIPReport1": "Tidak ada data untuk laporan ini sebab tidak ada data lokasi yang tersedia atau alamat IP tidak dikenali lokasi-geo.",
- "NoDataForGeoIPReport2": "Untuk mengaktifkan lokasi-geo teliti, ganti pengaturan %1$sdi sini%2$s dan gunakan sebuah %3$sbasisdata tingkat kota%4$s.",
+ "Longitudes": "Garis bujur",
+ "MaxMindLinkExplanation": "Jika Anda menggunakan basis data geolokasi MaxMind dan Anda belum tahu cara membuat URL unduhan, %1$sklik di sini untuk mempelajari caranya%2$s.",
+ "NoDataForGeoIPReport1": "Tidak ada data untuk laporan ini sebab tidak ada data lokasi yang tersedia atau alamat IP tidak dikenali oleh geolokasi.",
+ "NoDataForGeoIPReport2": "Untuk mengaktifkan geolokasi yang akurat, ubah pengaturan %1$sdi sini%2$s dan gunakan basis data tingkat kota %3$s%4$s.",
+ "NoProviders": "Saat ini tidak ada penyedia geolokasi tambahan yang tersedia. Matomo merekomendasikan untuk menggunakan basis data %1$sdbip%2$s, tetapi ini memerlukan pengaktifan plugin GeoIp2. (Atau Anda dapat memasang plugin pihak ketiga yang menyediakan fungsionalitas geolokasi sendiri dari lokapasar.)",
+ "PluginDescription": "Melaporkan lokasi pengunjung Anda: negara, wilayah, kota, dan koordinat geografis (lintang/ bujur).",
"Region": "Wilayah",
"SubmenuLocations": "Lokasi",
+ "TestIPLocatorFailed": "Matomo mencoba memeriksa lokasi alamat IP yang diketahui (%1$s), tetapi server Anda tidak memberikan informasinya. Penyedia ini mungkin tidak dikonfigurasi dengan benar (misalnya, basis data geolokasi mungkin namanya salah atau terletak di direktori yang salah).",
"ToGeolocateOldVisits": "Untuk mendapatkan data untuk kunjungan lama Anda, gunakan sekrip yang dijelaskan %1$sdi sini%2$s.",
- "WidgetLocation": "Lokasi Pengunjung"
+ "VisitLocation": "Lokasi berkunjung",
+ "WidgetLocation": "Lokasi Pengunjung",
+ "country_a1": "Proksi Anonim",
+ "country_a2": "Penyedia Satelit",
+ "country_cat": "Masyarakat berbahasa Katalan",
+ "country_o1": "Negara Lain",
+ "getCityDocumentation": "Laporan ini menunjukkan kota tempat pengunjung Anda mengakses situs web Anda.",
+ "getContinentDocumentation": "Laporan ini menunjukkan benua pengunjung Anda berada saat mengunjungi situs Anda.",
+ "getCountryDocumentation": "Laporan ini menujukkan negara pengunjung Anda berada saat mengunjungi sutus Anda.",
+ "getRegionDocumentation": "Laporan ini menunjukkan wilayah pengunjung Anda berada saat mengunjungi situs Anda."
}
-} \ No newline at end of file
+}
diff --git a/plugins/UserCountryMap/lang/id.json b/plugins/UserCountryMap/lang/id.json
index 42cc55e63a..4d1b0db0ae 100644
--- a/plugins/UserCountryMap/lang/id.json
+++ b/plugins/UserCountryMap/lang/id.json
@@ -1,6 +1,6 @@
{
"UserCountryMap": {
- "AndNOthers": "dan %s lain",
+ "AndNOthers": "dan %s lainnya",
"Cities": "Kota",
"Countries": "Negara",
"DaysAgo": "%s hari lalu",
@@ -11,14 +11,14 @@
"NoVisitsInfo": "Tidak ada kunjungan yang ditampilkan untuk saat ini, karena tidak ada kunjungan untuk periode saat ini yang memiliki informasi geolokasi yang benar (lintang &amp; bujur).",
"NoVisitsInfo2": "Untuk mengatasi masalah ini, pastikan Anda menggunakan penyedia geolokasi GeoIP dengan basis data kota GeoIP. Jika ini tidak menyelesaikan masalah Anda, maka mungkin (meskipun tidak mungkin) kunjungan Anda memiliki alamat IP yang tidak dapat diidentifikasi.",
"None": "Tidak Ada",
- "PluginDescription": "Pengaya ini menyediakan gawit Peta Pengunjung dan Peta Waktu-Nyata. Catatan: Membutuhkan pengaya NegaraPengguna diaktifkan.",
- "RealTimeMap": "Peta Waktu-Nyata",
+ "PluginDescription": "Plugin ini menyediakan widget Peta Pengunjung dan Peta Waktu Nyata. Catatan: Membutuhkan plugin UserCountry yang diaktifkan.",
+ "RealTimeMap": "Peta Waktu Nyata",
"RealTimeMapHelp": "Peta Waktu Nyata menunjukkan lokasi pengunjung di situs Anda selama 30 menit terakhir. Gelembung oranye besar menunjukkan kunjungan yang terbaru, sedangkan gelembung abu-abu yang lebih kecil menunjukkan kunjungan lama. Data ini diperbarui setiap lima detik dan pengunjung baru ditandai dengan efek berkedip.",
"Regions": "Wilayah",
"Searches": "%s pencarian",
"SecondsAgo": "%s detik lalu",
- "ShowingVisits": "Kunjungan Lokasi-Geo terakhir",
- "Unlocated": "<b>%1$s</b> %2$s kunjungan dari %3$s lokasi-geo tidak diketahui.",
+ "ShowingVisits": "Kunjungan terakhir dengan lokasi geografis",
+ "Unlocated": "<b>%1$s</b> %2$s kunjungan dari %3$s lokasi geografisnya tidak dapat diketahui.",
"VisitorMap": "Peta Pengunjung",
"WithUnknownCity": "%s dengan kota tidak dikenal",
"WithUnknownRegion": "%s dengan wilayah tidak dikenal",
diff --git a/plugins/UserCountryMap/svg/MYS.svg b/plugins/UserCountryMap/svg/MYS.svg
index 0d3fd84713..45f684edbb 100644
--- a/plugins/UserCountryMap/svg/MYS.svg
+++ b/plugins/UserCountryMap/svg/MYS.svg
@@ -1,2 +1,2 @@
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable_background="new 0 0 450 301" height="301px" style="stroke-linejoin: round; stroke:#000; fill:#f6f3f0;" version="1.1" viewBox="0 0 450 301" width="450px" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><defs><style type="text/css"><![CDATA[path { fill-rule: evenodd; }
-#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="4.78988882056" lon0="101.018412833"/><bbox h="111.11" w="269.07" x="968.74" y="951.25"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M340,133L340,139L341,143L346,144L345,138L342,133L340,133Z M340,132L339,130L336,132L322,140L320,140L323,142L325,146L327,147L331,151L335,148L336,144L334,137L340,133L340,132Z " data-iso="BRN"/><path d="M41,299L36,294L35,294L36,299L41,299Z M201,299L202,295L201,292L198,290L193,289L190,289L188,299L201,299Z M35,293L35,292L31,289L31,294L35,293Z M28,285L25,279L23,279L23,283L28,285Z M216,270L213,269L214,271L216,270Z M169,299L168,296L169,292L172,290L163,287L159,282L159,275L156,270L151,268L149,268L149,272L147,268L144,269L143,273L137,279L142,281L146,280L151,282L151,284L154,288L154,293L165,299L169,299Z M232,261L226,258L226,262L232,261Z M14,274L16,273L12,262L8,256L4,257L3,263L7,269L12,274L14,274Z M124,244L119,246L121,250L126,246L124,244Z M130,240L125,236L124,239L126,242L128,241L135,243L131,240L130,240Z M99,226L96,224L96,226L99,226Z M94,222L84,214L82,219L87,221L94,222Z M97,219L89,213L89,216L97,219Z M114,212L113,216L115,216L114,212Z M126,212L121,212L119,214L120,216L123,215L123,217L126,220L127,217L126,212Z M81,217L80,209L77,209L77,211L81,217Z M83,207L82,206L73,203L73,205L83,209L83,207Z M450,252L448,251L445,246L443,237L445,229L450,223L449,212L444,218L443,221L441,224L439,228L437,235L440,251L438,249L433,252L429,263L429,268L425,280L425,283L418,290L418,299L449,299L450,292L450,252Z M67,194L65,193L60,195L60,198L64,202L67,194Z M150,178L152,175L149,173L150,178Z M394,165L393,162L392,162L394,165Z M393,148L395,150L399,149L399,148L398,146L395,147L393,147L393,148Z M202,160L204,154L200,150L196,153L198,160L202,160Z M392,147L386,144L382,144L370,143L368,145L360,145L358,144L353,147L351,153L351,163L350,168L346,172L345,172L342,175L341,178L343,180L339,186L335,190L336,195L335,196L330,205L328,204L318,205L313,209L309,208L301,206L298,203L288,203L282,206L280,212L277,213L275,215L260,214L250,218L248,218L230,203L230,199L228,197L230,194L225,196L222,201L218,206L217,211L220,210L216,213L215,225L216,229L222,236L221,236L220,244L222,248L225,249L222,253L233,257L237,262L238,265L237,275L240,282L242,292L243,297L249,296L251,298L255,298L259,299L268,297L273,295L275,299L299,299L300,296L303,299L366,299L369,291L369,288L372,286L373,282L372,280L367,279L370,277L370,271L368,270L371,268L373,264L377,261L377,257L380,260L381,259L393,245L391,241L393,227L396,219L401,215L400,211L404,214L413,217L420,215L419,210L415,206L403,198L397,192L402,187L402,184L394,175L392,169L387,166L382,159L390,157L391,156L395,158L395,155L390,149L392,147L392,147Z M155,299L147,288L140,285L135,285L132,287L129,290L128,286L130,284L131,280L125,274L121,258L115,258L108,255L102,249L102,241L109,236L107,231L102,226L99,227L91,231L84,232L93,228L95,227L90,222L81,220L73,207L68,204L62,202L60,201L57,194L53,190L48,193L48,196L34,182L29,175L26,171L14,163L6,159L0,154L0,197L4,202L6,206L12,223L13,227L17,233L23,235L32,247L38,254L41,264L49,277L49,281L54,290L58,293L62,299L155,299Z " data-iso="IDN"/><path d="M122,22L124,20L130,19L134,16L134,12L139,13L141,11L148,10L151,12L152,12L157,14L155,8L151,4L150,0L95,0L96,12L101,10L102,8L106,9L107,12L103,18L106,20L118,19L122,22Z " data-iso="KHM"/><path d="M5,27L7,16L15,8L20,0L6,0L6,5L0,17L2,30L4,27L5,27Z " data-iso="MMR"/><path d="M266,186L264,179L264,185L266,186Z M396,145L395,145L394,145L394,146L393,147L395,147L398,146L396,145Z M37,128L38,125L36,125L35,128L37,128Z M28,104L24,104L26,108L30,106L28,104Z M35,106L39,118L39,122L41,133L44,141L44,147L47,152L46,155L52,162L58,170L59,175L58,177L63,182L68,184L76,191L84,195L88,199L91,200L101,205L103,209L114,207L114,204L117,209L119,208L118,201L110,184L104,180L102,176L102,164L101,161L103,146L102,137L93,123L83,116L79,110L78,109L74,108L74,111L71,114L65,117L64,116L57,117L54,121L52,118L54,112L46,103L44,104L38,102L37,99L35,100L34,104L35,106Z M342,133L345,138L346,144L341,143L340,139L340,133L334,137L336,144L335,148L331,151L327,147L325,146L323,142L320,140L320,140L318,141L318,146L313,152L308,158L300,169L293,172L281,175L273,177L267,181L267,184L262,190L263,191L261,196L261,200L259,204L263,207L240,201L237,201L231,197L230,194L228,197L230,199L230,203L248,218L250,218L260,214L275,215L277,213L280,212L282,206L288,203L298,203L301,206L309,208L313,209L318,205L328,204L330,205L335,196L336,195L335,190L339,186L343,180L341,178L342,175L345,172L346,172L350,168L351,163L351,153L353,147L358,144L360,145L368,145L370,143L382,144L386,144L392,147L392,146L393,144L401,145L412,141L413,140L407,136L404,133L405,129L414,130L425,125L425,121L419,120L414,117L409,113L405,112L399,115L401,112L400,107L392,110L392,105L393,101L391,98L385,95L384,90L379,92L377,95L375,89L362,107L355,119L351,118L347,122L347,124L351,127L350,129L347,132L342,133Z M381,85L383,84L384,81L380,83L381,85Z " data-iso="MYS"/><path d="M446,123L444,121L437,126L440,127L441,125L445,124L446,123Z M380,70L379,66L377,70L380,70Z M434,14L435,11L433,11L431,12L432,14L434,14Z M423,0L421,7L422,12L417,17L407,29L398,40L395,41L384,52L382,60L388,56L397,49L402,42L404,42L408,37L412,30L412,28L416,25L420,23L430,14L426,4L427,2L423,0Z " data-iso="PHL"/><path d="M113,209L110,207L107,210L110,211L113,209Z " data-iso="SGP"/><path d="M33,39L30,40L31,43L33,39Z M34,104L35,100L37,99L38,102L44,104L46,103L54,112L52,118L54,121L57,117L64,116L65,117L71,114L74,111L74,108L68,103L64,98L60,95L52,95L48,93L43,89L41,89L36,82L35,77L38,79L37,80L40,87L41,83L37,66L36,63L31,58L30,49L26,45L18,47L15,32L15,24L17,19L21,12L22,8L24,0L20,0L15,8L7,16L5,27L2,34L0,41L0,67L5,66L7,71L12,74L17,81L18,85L23,85L22,88L26,90L25,95L29,98L34,104Z " data-iso="THA"/><path d="M114,22L111,23L113,30L114,22Z M123,23L134,29L135,32L131,34L130,38L130,47L130,55L131,56L129,59L136,59L140,55L144,49L157,43L156,37L150,30L152,31L158,37L161,39L164,39L165,36L164,34L156,26L166,33L170,28L167,24L169,24L166,20L168,19L170,21L176,20L179,22L191,15L194,15L196,11L202,8L205,6L208,5L210,2L214,2L214,0L150,0L151,4L155,8L157,14L152,12L151,12L148,10L141,11L139,13L134,12L134,16L130,19L124,20L122,22L123,23Z " data-iso="VNM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M51,118L51,123L49,126L44,131L42,132L42,131L41,131L41,131L40,131L40,131L40,131L40,135L43,136L45,143L43,148L45,151L47,153L49,158L49,158L51,157L58,161L59,159L62,161L64,159L65,159L65,159L64,156L64,153L59,145L59,143L60,142L60,141L59,140L61,137L61,134L63,128L64,127L67,126L66,123L66,118L66,118L64,115L58,117L56,120L51,118L51,118Z " data-fips="MY07" data-fips-="" data-iso3="MYS" data-name="Perak"/><path d="M42,131L42,124L39,122L39,122L39,123L39,125L40,131L40,131L40,131L41,131L41,131L42,131L42,131Z " data-fips="MY09" data-fips-="" data-iso3="MYS" data-name="Pulau Pinang"/><path d="M38,124L35,126L35,128L37,128L38,125L38,124Z " data-fips="MY09" data-fips-="" data-iso3="MYS" data-name="Pulau Pinang"/><path d="M39,102L36,107L35,108L35,108L39,113L39,117L39,122L39,122L42,124L42,131L42,131L42,132L44,131L49,126L51,123L51,118L51,118L53,115L54,111L53,108L48,107L46,103L39,102L39,102Z " data-fips="MY02" data-fips-="" data-iso3="MYS" data-name="Kedah"/><path d="M35,108L36,107L39,102L39,102L35,99L34,105L35,107L35,108Z " data-fips="MY08" data-fips-="" data-iso3="MYS" data-name="Perlis"/><path d="M29,104L25,106L26,108L29,104Z " data-fips="MY08" data-fips-="" data-iso3="MYS" data-name="Perlis"/><path d="M87,178L87,179L86,183L86,183L85,186L85,187L84,187L83,191L82,191L83,194L83,194L87,199L100,205L102,209L106,208L107,207L113,208L114,205L117,209L120,206L116,198L116,197L113,190L110,186L110,185L107,182L106,182L106,186L103,185L96,185L93,183L88,179L87,178Z " data-fips="MY01" data-fips-="" data-iso3="MYS" data-name="Johor"/><path d="M83,116L80,110L77,108L74,109L74,111L71,114L71,116L68,118L67,118L66,118L66,123L67,126L64,127L63,128L61,134L61,137L59,140L60,141L60,142L61,142L65,143L68,141L68,139L71,142L75,139L77,141L86,139L86,139L86,138L83,136L83,132L81,130L81,126L81,123L81,119L84,116L83,116Z " data-fips="MY03" data-fips-="" data-iso3="MYS" data-name="Kelantan"/><path d="M82,186L77,186L76,186L72,188L72,188L75,190L80,193L83,194L82,191L83,191L84,187L85,187L82,186Z " data-fips="MY04" data-fips-="" data-iso3="MYS" data-name="Melaka"/><path d="M66,178L67,176L66,177L66,178Z M66,171L67,174L67,172L66,171Z M71,170L71,170L71,175L70,178L68,178L67,183L68,183L70,187L72,188L72,188L76,186L77,186L82,186L85,187L85,186L86,183L86,183L87,179L87,178L87,177L82,174L71,170L71,170Z " data-fips="MY05" data-fips-="" data-iso3="MYS" data-name="Negeri Sembilan"/><path d="M86,139L77,141L75,139L71,142L68,139L68,141L65,143L61,142L60,142L59,143L59,145L64,153L64,156L65,159L65,159L65,160L68,161L69,163L68,167L70,170L71,170L71,170L82,174L87,177L87,178L88,179L93,183L96,185L103,185L106,186L106,182L106,182L104,179L102,176L103,164L101,158L102,151L102,151L100,156L93,152L92,152L92,149L93,145L90,143L86,139L86,139L86,139Z " data-fips="MY06" data-fips-="" data-iso3="MYS" data-name="Pahang"/><path d="M48,158L53,162L58,169L60,174L58,178L61,179L62,181L67,183L67,183L68,178L70,178L71,175L71,170L71,170L70,170L68,167L69,163L68,161L65,160L65,159L64,159L62,161L59,159L58,161L51,157L49,158L48,158Z " data-fips="MY12" data-fips-="" data-iso3="MYS" data-name="Selangor"/><path d="M102,151L103,143L100,134L95,126L84,116L84,116L81,119L81,123L81,126L81,130L83,132L83,136L86,138L86,139L86,139L90,143L93,145L92,149L92,152L93,152L100,156L102,151L102,151Z " data-fips="MY13" data-fips-="" data-iso3="MYS" data-name="Trengganu"/><path d="M394,147L398,147L393,146L394,147Z M388,96L389,94L388,93L388,96Z M348,131L352,132L353,134L351,139L351,143L353,144L352,148L353,148L356,145L356,144L360,145L362,143L366,143L368,145L371,143L380,144L385,143L389,147L393,143L396,143L398,145L413,141L413,139L409,138L403,132L407,128L410,131L412,130L416,129L424,127L426,125L425,120L414,117L413,116L411,118L412,115L405,112L403,113L399,115L402,111L401,108L399,108L397,110L389,112L391,105L393,103L393,99L388,97L384,93L384,89L379,90L380,92L378,94L375,97L375,89L374,88L372,91L372,94L369,99L364,104L365,104L356,119L351,119L350,119L347,124L349,126L348,131L348,131Z M379,82L376,82L376,84L379,82Z M384,84L384,81L380,82L380,86L384,84Z " data-fips="MY15" data-fips-="MY16" data-iso3="MYS" data-name="Sabah"/><path d="M266,186L266,180L264,180L266,186Z M347,132L346,133L344,132L343,132L347,145L346,145L341,143L340,138L340,133L335,136L334,137L335,143L336,143L333,151L331,151L328,147L325,144L323,141L318,140L319,142L318,146L314,152L298,170L279,176L275,176L269,179L267,187L266,187L262,186L262,191L263,192L260,199L260,201L259,201L258,204L262,207L259,206L257,205L251,206L252,204L247,202L248,200L244,199L243,201L238,201L230,197L230,193L228,196L230,199L230,202L239,211L241,212L249,218L254,217L255,215L262,214L268,215L268,216L271,214L275,215L277,213L281,212L282,207L282,206L288,203L295,203L298,203L300,204L298,206L313,210L318,205L323,205L331,205L332,202L334,196L335,196L337,192L336,193L335,189L344,182L341,181L341,176L345,172L346,172L349,171L351,158L350,153L351,152L352,149L352,148L353,144L351,143L351,139L353,134L352,132L348,131L347,132Z " data-fips="MY11" data-fips-="" data-iso3="MYS" data-name="Sarawak"/></g></svg> \ No newline at end of file
+#context path { fill: #eee; stroke: #bbb; } ]]></style></defs><metadata><views><view h="301.0" padding="0.06" w="450"><proj id="laea" lat0="4.78988882056" lon0="101.018412833"/><bbox h="111.11" w="269.07" x="968.74" y="951.25"/><llbbox lat0="-90" lat1="90" lon0="-180" lon1="180"/></view></views></metadata><g id="context"><path d="M340,133L340,139L341,143L346,144L345,138L342,133L340,133Z M340,132L339,130L336,132L322,140L320,140L323,142L325,146L327,147L331,151L335,148L336,144L334,137L340,133L340,132Z " data-iso="BRN"/><path d="M41,299L36,294L35,294L36,299L41,299Z M201,299L202,295L201,292L198,290L193,289L190,289L188,299L201,299Z M35,293L35,292L31,289L31,294L35,293Z M28,285L25,279L23,279L23,283L28,285Z M216,270L213,269L214,271L216,270Z M169,299L168,296L169,292L172,290L163,287L159,282L159,275L156,270L151,268L149,268L149,272L147,268L144,269L143,273L137,279L142,281L146,280L151,282L151,284L154,288L154,293L165,299L169,299Z M232,261L226,258L226,262L232,261Z M14,274L16,273L12,262L8,256L4,257L3,263L7,269L12,274L14,274Z M124,244L119,246L121,250L126,246L124,244Z M130,240L125,236L124,239L126,242L128,241L135,243L131,240L130,240Z M99,226L96,224L96,226L99,226Z M94,222L84,214L82,219L87,221L94,222Z M97,219L89,213L89,216L97,219Z M114,212L113,216L115,216L114,212Z M126,212L121,212L119,214L120,216L123,215L123,217L126,220L127,217L126,212Z M81,217L80,209L77,209L77,211L81,217Z M83,207L82,206L73,203L73,205L83,209L83,207Z M450,252L448,251L445,246L443,237L445,229L450,223L449,212L444,218L443,221L441,224L439,228L437,235L440,251L438,249L433,252L429,263L429,268L425,280L425,283L418,290L418,299L449,299L450,292L450,252Z M67,194L65,193L60,195L60,198L64,202L67,194Z M150,178L152,175L149,173L150,178Z M394,165L393,162L392,162L394,165Z M393,148L395,150L399,149L399,148L398,146L395,147L393,147L393,148Z M202,160L204,154L200,150L196,153L198,160L202,160Z M392,147L386,144L382,144L370,143L368,145L360,145L358,144L353,147L351,153L351,163L350,168L346,172L345,172L342,175L341,178L343,180L339,186L335,190L336,195L335,196L330,205L328,204L318,205L313,209L309,208L301,206L298,203L288,203L282,206L280,212L277,213L275,215L260,214L250,218L248,218L230,203L230,199L228,197L230,194L225,196L222,201L218,206L217,211L220,210L216,213L215,225L216,229L222,236L221,236L220,244L222,248L225,249L222,253L233,257L237,262L238,265L237,275L240,282L242,292L243,297L249,296L251,298L255,298L259,299L268,297L273,295L275,299L299,299L300,296L303,299L366,299L369,291L369,288L372,286L373,282L372,280L367,279L370,277L370,271L368,270L371,268L373,264L377,261L377,257L380,260L381,259L393,245L391,241L393,227L396,219L401,215L400,211L404,214L413,217L420,215L419,210L415,206L403,198L397,192L402,187L402,184L394,175L392,169L387,166L382,159L390,157L391,156L395,158L395,155L390,149L392,147L392,147Z M155,299L147,288L140,285L135,285L132,287L129,290L128,286L130,284L131,280L125,274L121,258L115,258L108,255L102,249L102,241L109,236L107,231L102,226L99,227L91,231L84,232L93,228L95,227L90,222L81,220L73,207L68,204L62,202L60,201L57,194L53,190L48,193L48,196L34,182L29,175L26,171L14,163L6,159L0,154L0,197L4,202L6,206L12,223L13,227L17,233L23,235L32,247L38,254L41,264L49,277L49,281L54,290L58,293L62,299L155,299Z " data-iso="IDN"/><path d="M122,22L124,20L130,19L134,16L134,12L139,13L141,11L148,10L151,12L152,12L157,14L155,8L151,4L150,0L95,0L96,12L101,10L102,8L106,9L107,12L103,18L106,20L118,19L122,22Z " data-iso="KHM"/><path d="M5,27L7,16L15,8L20,0L6,0L6,5L0,17L2,30L4,27L5,27Z " data-iso="MMR"/><path d="M266,186L264,179L264,185L266,186Z M396,145L395,145L394,145L394,146L393,147L395,147L398,146L396,145Z M37,128L38,125L36,125L35,128L37,128Z M28,104L24,104L26,108L30,106L28,104Z M35,106L39,118L39,122L41,133L44,141L44,147L47,152L46,155L52,162L58,170L59,175L58,177L63,182L68,184L76,191L84,195L88,199L91,200L101,205L103,209L114,207L114,204L117,209L119,208L118,201L110,184L104,180L102,176L102,164L101,161L103,146L102,137L93,123L83,116L79,110L78,109L74,108L74,111L71,114L65,117L64,116L57,117L54,121L52,118L54,112L46,103L44,104L38,102L37,99L35,100L34,104L35,106Z M342,133L345,138L346,144L341,143L340,139L340,133L334,137L336,144L335,148L331,151L327,147L325,146L323,142L320,140L320,140L318,141L318,146L313,152L308,158L300,169L293,172L281,175L273,177L267,181L267,184L262,190L263,191L261,196L261,200L259,204L263,207L240,201L237,201L231,197L230,194L228,197L230,199L230,203L248,218L250,218L260,214L275,215L277,213L280,212L282,206L288,203L298,203L301,206L309,208L313,209L318,205L328,204L330,205L335,196L336,195L335,190L339,186L343,180L341,178L342,175L345,172L346,172L350,168L351,163L351,153L353,147L358,144L360,145L368,145L370,143L382,144L386,144L392,147L392,146L393,144L401,145L412,141L413,140L407,136L404,133L405,129L414,130L425,125L425,121L419,120L414,117L409,113L405,112L399,115L401,112L400,107L392,110L392,105L393,101L391,98L385,95L384,90L379,92L377,95L375,89L362,107L355,119L351,118L347,122L347,124L351,127L350,129L347,132L342,133Z M381,85L383,84L384,81L380,83L381,85Z " data-iso="MYS"/><path d="M446,123L444,121L437,126L440,127L441,125L445,124L446,123Z M380,70L379,66L377,70L380,70Z M434,14L435,11L433,11L431,12L432,14L434,14Z M423,0L421,7L422,12L417,17L407,29L398,40L395,41L384,52L382,60L388,56L397,49L402,42L404,42L408,37L412,30L412,28L416,25L420,23L430,14L426,4L427,2L423,0Z " data-iso="PHL"/><path d="M113,209L110,207L107,210L110,211L113,209Z " data-iso="SGP"/><path d="M33,39L30,40L31,43L33,39Z M34,104L35,100L37,99L38,102L44,104L46,103L54,112L52,118L54,121L57,117L64,116L65,117L71,114L74,111L74,108L68,103L64,98L60,95L52,95L48,93L43,89L41,89L36,82L35,77L38,79L37,80L40,87L41,83L37,66L36,63L31,58L30,49L26,45L18,47L15,32L15,24L17,19L21,12L22,8L24,0L20,0L15,8L7,16L5,27L2,34L0,41L0,67L5,66L7,71L12,74L17,81L18,85L23,85L22,88L26,90L25,95L29,98L34,104Z " data-iso="THA"/><path d="M114,22L111,23L113,30L114,22Z M123,23L134,29L135,32L131,34L130,38L130,47L130,55L131,56L129,59L136,59L140,55L144,49L157,43L156,37L150,30L152,31L158,37L161,39L164,39L165,36L164,34L156,26L166,33L170,28L167,24L169,24L166,20L168,19L170,21L176,20L179,22L191,15L194,15L196,11L202,8L205,6L208,5L210,2L214,2L214,0L150,0L151,4L155,8L157,14L152,12L151,12L148,10L141,11L139,13L134,12L134,16L130,19L124,20L122,22L123,23Z " data-iso="VNM"/></g><g fill="red" fill-opacity="0.35" id="regions"><path d="M51,118L51,123L49,126L44,131L42,132L42,131L41,131L41,131L40,131L40,131L40,131L40,135L43,136L45,143L43,148L45,151L47,153L49,158L49,158L51,157L58,161L59,159L62,161L64,159L65,159L65,159L64,156L64,153L59,145L59,143L60,142L60,141L59,140L61,137L61,134L63,128L64,127L67,126L66,123L66,118L66,118L64,115L58,117L56,120L51,118L51,118Z " data-fips="MY08" data-fips-="" data-iso3="MYS" data-name="Perak"/><path d="M42,131L42,124L39,122L39,122L39,123L39,125L40,131L40,131L40,131L41,131L41,131L42,131L42,131Z " data-fips="MY07" data-fips-="" data-iso3="MYS" data-name="Pulau Pinang"/><path d="M38,124L35,126L35,128L37,128L38,125L38,124Z " data-fips="MY07" data-fips-="" data-iso3="MYS" data-name="Pulau Pinang"/><path d="M39,102L36,107L35,108L35,108L39,113L39,117L39,122L39,122L42,124L42,131L42,131L42,132L44,131L49,126L51,123L51,118L51,118L53,115L54,111L53,108L48,107L46,103L39,102L39,102Z " data-fips="MY02" data-fips-="" data-iso3="MYS" data-name="Kedah"/><path d="M35,108L36,107L39,102L39,102L35,99L34,105L35,107L35,108Z " data-fips="MY09" data-fips-="" data-iso3="MYS" data-name="Perlis"/><path d="M29,104L25,106L26,108L29,104Z " data-fips="MY09" data-fips-="" data-iso3="MYS" data-name="Perlis"/><path d="M87,178L87,179L86,183L86,183L85,186L85,187L84,187L83,191L82,191L83,194L83,194L87,199L100,205L102,209L106,208L107,207L113,208L114,205L117,209L120,206L116,198L116,197L113,190L110,186L110,185L107,182L106,182L106,186L103,185L96,185L93,183L88,179L87,178Z " data-fips="MY01" data-fips-="" data-iso3="MYS" data-name="Johor"/><path d="M83,116L80,110L77,108L74,109L74,111L71,114L71,116L68,118L67,118L66,118L66,123L67,126L64,127L63,128L61,134L61,137L59,140L60,141L60,142L61,142L65,143L68,141L68,139L71,142L75,139L77,141L86,139L86,139L86,138L83,136L83,132L81,130L81,126L81,123L81,119L84,116L83,116Z " data-fips="MY03" data-fips-="" data-iso3="MYS" data-name="Kelantan"/><path d="M82,186L77,186L76,186L72,188L72,188L75,190L80,193L83,194L82,191L83,191L84,187L85,187L82,186Z " data-fips="MY04" data-fips-="" data-iso3="MYS" data-name="Melaka"/><path d="M66,178L67,176L66,177L66,178Z M66,171L67,174L67,172L66,171Z M71,170L71,170L71,175L70,178L68,178L67,183L68,183L70,187L72,188L72,188L76,186L77,186L82,186L85,187L85,186L86,183L86,183L87,179L87,178L87,177L82,174L71,170L71,170Z " data-fips="MY05" data-fips-="" data-iso3="MYS" data-name="Negeri Sembilan"/><path d="M86,139L77,141L75,139L71,142L68,139L68,141L65,143L61,142L60,142L59,143L59,145L64,153L64,156L65,159L65,159L65,160L68,161L69,163L68,167L70,170L71,170L71,170L82,174L87,177L87,178L88,179L93,183L96,185L103,185L106,186L106,182L106,182L104,179L102,176L103,164L101,158L102,151L102,151L100,156L93,152L92,152L92,149L93,145L90,143L86,139L86,139L86,139Z " data-fips="MY06" data-fips-="" data-iso3="MYS" data-name="Pahang"/><path d="M48,158L53,162L58,169L60,174L58,178L61,179L62,181L67,183L67,183L68,178L70,178L71,175L71,170L71,170L70,170L68,167L69,163L68,161L65,160L65,159L64,159L62,161L59,159L58,161L51,157L49,158L48,158Z " data-fips="MY10" data-fips-="" data-iso3="MYS" data-name="Selangor"/><path d="M102,151L103,143L100,134L95,126L84,116L84,116L81,119L81,123L81,126L81,130L83,132L83,136L86,138L86,139L86,139L90,143L93,145L92,149L92,152L93,152L100,156L102,151L102,151Z " data-fips="MY11" data-fips-="" data-iso3="MYS" data-name="Trengganu"/><path d="M394,147L398,147L393,146L394,147Z M388,96L389,94L388,93L388,96Z M348,131L352,132L353,134L351,139L351,143L353,144L352,148L353,148L356,145L356,144L360,145L362,143L366,143L368,145L371,143L380,144L385,143L389,147L393,143L396,143L398,145L413,141L413,139L409,138L403,132L407,128L410,131L412,130L416,129L424,127L426,125L425,120L414,117L413,116L411,118L412,115L405,112L403,113L399,115L402,111L401,108L399,108L397,110L389,112L391,105L393,103L393,99L388,97L384,93L384,89L379,90L380,92L378,94L375,97L375,89L374,88L372,91L372,94L369,99L364,104L365,104L356,119L351,119L350,119L347,124L349,126L348,131L348,131Z M379,82L376,82L376,84L379,82Z M384,84L384,81L380,82L380,86L384,84Z " data-fips="MY12" data-fips-="" data-iso3="MYS" data-name="Sabah"/><path d="M266,186L266,180L264,180L266,186Z M347,132L346,133L344,132L343,132L347,145L346,145L341,143L340,138L340,133L335,136L334,137L335,143L336,143L333,151L331,151L328,147L325,144L323,141L318,140L319,142L318,146L314,152L298,170L279,176L275,176L269,179L267,187L266,187L262,186L262,191L263,192L260,199L260,201L259,201L258,204L262,207L259,206L257,205L251,206L252,204L247,202L248,200L244,199L243,201L238,201L230,197L230,193L228,196L230,199L230,202L239,211L241,212L249,218L254,217L255,215L262,214L268,215L268,216L271,214L275,215L277,213L281,212L282,207L282,206L288,203L295,203L298,203L300,204L298,206L313,210L318,205L323,205L331,205L332,202L334,196L335,196L337,192L336,193L335,189L344,182L341,181L341,176L345,172L346,172L349,171L351,158L350,153L351,152L352,149L352,148L353,144L351,143L351,139L353,134L352,132L348,131L347,132Z " data-fips="MY13" data-fips-="" data-iso3="MYS" data-name="Sarawak"/></g></svg> \ No newline at end of file
diff --git a/plugins/UserId/lang/ga.json b/plugins/UserId/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/UserId/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/UserId/lang/id.json b/plugins/UserId/lang/id.json
index 1df67f5be8..d0972c2787 100644
--- a/plugins/UserId/lang/id.json
+++ b/plugins/UserId/lang/id.json
@@ -2,7 +2,7 @@
"UserId": {
"PluginDescription": "Tampilkan laporan pengguna",
"ThereIsNoDataForThisReportHelp": "%1$sPelajari lebih lanjut tentang cara menghasilkan data untuk laporan ini di panduan pengguna kami.%2$s",
- "UserId": "IdPengguna",
+ "UserId": "ID Pengguna",
"UserReportDocumentation": "Laporan ini menunjukkan kunjungan dan metrik umum lainnya untuk setiap ID Pengguna individual.",
"UserReportTitle": "ID pengguna",
"VisitorsUserSubcategoryHelp": "Laporan ID Pengguna menunjukkan tentang kunjungan yang terkait dengan semua pengguna Anda yang terdaftar dan masuk. Anda dapat menggunakan bagian ini untuk memahami penggunaan situs web oleh pengguna tertentu dan mengidentifikasi siapa pengguna yang paling aktif dan paling tidak aktif."
diff --git a/plugins/UserLanguage/lang/ga.json b/plugins/UserLanguage/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/UserLanguage/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/UserLanguage/lang/id.json b/plugins/UserLanguage/lang/id.json
index 32665124ae..21c06d952a 100644
--- a/plugins/UserLanguage/lang/id.json
+++ b/plugins/UserLanguage/lang/id.json
@@ -2,8 +2,8 @@
"UserLanguage": {
"BrowserLanguage": "Bahasa Peramban",
"LanguageCode": "Kode Bahasa",
- "PluginDescription": "Laporan bahasa yang digunakan oleh peramban pengunjung.",
+ "PluginDescription": "Laporan bahasa yang digunakan oleh peramban web pengunjung.",
"getLanguageCodeDocumentation": "Laporan ini menunjukkan kode bahasa yang diatur oleh peramban milik pengunjung. (misalnya \"Jerman - Austria (de-at)\")",
- "getLanguageDocumentation": "Laporan ini menunjukkan bahasa mana yang digunakan oleh peramban milik pengunjung. (misalnya \"Bahasa Inggris\")"
+ "getLanguageDocumentation": "Laporan ini menunjukkan bahasa mana yang digunakan oleh peramban web milik pengunjung. (misalnya \"Bahasa Inggris\")"
}
}
diff --git a/plugins/UsersManager/lang/ga.json b/plugins/UsersManager/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/UsersManager/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/UsersManager/lang/id.json b/plugins/UsersManager/lang/id.json
index b5c226d40d..3a9e83e1ee 100644
--- a/plugins/UsersManager/lang/id.json
+++ b/plugins/UsersManager/lang/id.json
@@ -40,10 +40,10 @@
"ThereAreCurrentlyNRegisteredUsers": "Telah ada %s pengguna terdaftar.",
"TypeYourPasswordAgain": "Ketik sandi baru Anda di sini.",
"User": "Pengguna",
- "Username": "Nama-Id",
+ "Username": "Nama pengguna",
"UsersManagement": "Pengatur Pengguna",
"UsersManagementMainDescription": "Menciptakan pengguna baru atau memperbarui pengguna yang telah ada. Anda dapat mengatur perizinan di atas.",
- "YourUsernameCannotBeChanged": "Nama-id Anda tidak dapat diubah.",
+ "YourUsernameCannotBeChanged": "Nama pengguna Anda tidak dapat diubah.",
"YourVisitsAreIgnoredOnDomain": "%1$sKunjungan Anda diabaikan oleh Matomo dalam %2$s %3$s (kuki pengecualian ditemukan dalam peramban Anda).",
"YourVisitsAreNotIgnored": "%1$sKunjungan Anda tidak diabaikan oleh Matomo%2$s (kuki pengecualian tidak ditemukan dalam peramban Anda)."
}
diff --git a/plugins/UsersManager/lang/nb.json b/plugins/UsersManager/lang/nb.json
index c93199aa2f..6409cf4d22 100644
--- a/plugins/UsersManager/lang/nb.json
+++ b/plugins/UsersManager/lang/nb.json
@@ -7,26 +7,34 @@
"AllUsersAreSelected": "Alle %1$s brukere er valgt.",
"AllWebsites": "Alle nettsteder",
"AllWebsitesAreSelected": "Alle %1$s nettsider er valgt.",
+ "AnonymousAccessConfirmation": "Innvilg den anonyme brukeren «lese»-tilgang til nettsiden, noe som gjør dine analyserapporter og besøksinfo vil bli offentlig tilgjengelig for alle, selv uten innlogging?",
"AnonymousUser": "Anonym bruker",
"AnonymousUserHasViewAccess": "Merk: brukeren %1$s har %2$s tilgang til dette nettstedet.",
"AnonymousUserHasViewAccess2": "Dine analyserapporter og informasjon om dine besøkere er offentlig tilgjengelig.",
"ApplyToAllWebsites": "Legg til alle nettsteder",
"AreYouSure": "Er du sikker?",
"AuthTokenPurpose": "Hva bruker du dette symbolet til?",
+ "AuthTokens": "Symboler for identitetsbekreftelse",
"BasicInformation": "Grunnleggende info",
"BulkActions": "Masseendringshandlinger",
"ChangeAllConfirm": "Er du sikker på at du vil gi «%s» tilgang til alle nettsteder?",
+ "ChangePermToAllSitesConfirm": "Er du sikker på at du ønsker å innvilge %1$s-brukeren %2$s-tilgang til hver nettside du nå har administratortilgang til?",
"ClickHereToDeleteTheCookie": "Klikk her for å slette informasjonskapselen og la Matomo spore dine besøk",
"ClickHereToSetTheCookieOnDomain": "Klikk her for å sette en informasjonskapsel som vil ekskludere dine besøk på nettsteder som spores av Matomo på %s",
"ClickToSelectAll": "Klikk for å velge alle %1$s.",
+ "ClickToSelectDisplayedUsers": "Klikk for å velge de %1$s viste brukerne.",
"ConfirmGrantSuperUserAccess": "Vil du virkelig gi «%s» superbrukertilgang? Advarsel: brukeren vil ha tilgang til alle nettsteder og være i stand til å utføre administrative oppgaver.",
"ConfirmProhibitMySuperUserAccess": "%s, vil du virkelig fjerne din egen superbrukertilgang? Du vil miste alle rettigheter og tilgang til alle nettsteder og bli logget ut av Matomo.",
"ConfirmTokenCopied": "Jeg bekrefter at jeg har kopiert symbolet og forstår at jeg ikke skal dele det med andre.",
+ "ConfirmWithPassword": "Skriv inn passordet ditt for å bekrefte denne endringen.",
"CreateNewToken": "Opprett nytt symbol",
"CreateUser": "Opprett bruker",
+ "CurrentPasswordNotCorrect": "Passordet du skrev inn er ikke riktig.",
"DeleteAllTokens": "Slett alle symboler",
"DeleteConfirm": "Er du sikker på at du vil slette brukeren %s?",
+ "DeleteUserConfirmMultiple": "Slett de %1$s valgte brukerne?",
"DeleteUserConfirmSingle": "Vil du slette %1$s?",
+ "DeleteUserPermConfirmSingle": "Vil du endre %1$s sin rolle til %2$s for %3$s?",
"DeleteUsers": "Slett brukere",
"DoNotStoreToken": "Ikke del dette symbolet med noen andre. Det er like hemmelig som innloggingen og passordet ditt.",
"EditUser": "Rediger bruker",
@@ -37,8 +45,12 @@
"ExceptionDeleteOnlyUserWithSuperUserAccess": "Sletting av brukeren «%s» er ikke mulig.",
"ExceptionEditAnonymous": "Den anonyme brukeren kan ikke bli redigert eller slettet. Den blir brukt av Matomo for å definere en bruker som ikke har blitt logget inn ennå. Du kan for eksempel gjøre statistikken din offentlig ved å gi 'view'-tilgang til 'anonymous'-brukeren.",
"ExceptionEmailExists": "Bruker med e-post «%s» eksisterer allerede.",
+ "ExceptionEmailExistsAsLogin": "E-posten «%s» er allerede i bruk som et brukernavn.",
"ExceptionInvalidEmail": "Epost-adressen er ikke i gyldig format.",
+ "ExceptionInvalidPasswordTooLong": "Passordslengden må være kortere enn %1$s tegn.",
"ExceptionLoginExists": "Brukernavnet «%s» finnes allerede.",
+ "ExceptionLoginExistsAsEmail": "Brukernavnet «%s» er allerede i bruk som en e-postadresse.",
+ "ExceptionNoValueForUsernameOrEmail": "Skriv inn et brukernavn eller en e-postadresse.",
"ExceptionPasswordMD5HashExpected": "UsersManager.getTokenAuth forventer et MD5-hashet passord (32 tegn lang streng). Vennligst kall md5()-funksjonen på passordet før du kaller denne metoden.",
"ExceptionRemoveSuperUserAccessOnlySuperUser": "Det er ikke mulig å fjerne superbrukertilgang fra brukeren «%s».",
"ExceptionSuperUserAccess": "Denne brukeren har superbrukertilgang og har allerede tilgang til å se og modifisere alle nettsteder i Matomo. Du kan også fjerne superbrukertilgangen fra denne brukeren og prøve igjen.",
@@ -51,13 +63,18 @@
"FilterByWebsite": "Filtrer etter nettside",
"FirstWebsitePermission": "Første nettside-tilgang",
"ForAnonymousUsersReportDateToLoadByDefault": "Rapportdato som skal lastes som standard for anonyme brukere",
+ "GiveAccessToAll": "Innvilg denne brukeren tilgang til alle nettsider",
+ "GiveUserAccess": "Innvilg «%1$s» %2$s-tilgang for %3$s.",
"GiveViewAccess": "Innvilg visningstilgang for %1$s",
+ "GiveViewAccessTitle": "Innvilg en eksisterende bruker tilgang til å vise rapporter for %s",
"GoBackSecurityPage": "Gå til sikkerhetssiden.",
"HasSuperUserAccess": "Har superbrukertilgang",
+ "IfYouWouldLikeToChangeThePasswordTypeANewOne": "Hvis du vil endre passordstypen kan du skrive inn en ny. Ellers kan du la dette stå tomt.",
"IncludedInUsersRole": "Inkludert i denne brukerens rolle.",
"InjectedHostCannotChangePwd": "Du besøker nå med et ukjent vertsnavn (%1$s). Du kan ikke endre passord før problemet er rettet opp.",
"LastSeen": "Sist sett",
"LastUsed": "Sist brukt",
+ "MainDescription": "Avgjør hvilke brukere som har tilgang til dine nettsider. Du kan også gi tilgang til alle nettsidene samtidig ved å velge «Bruk for alle nettsider» i nettsidevelgeren.",
"ManageAccess": "Administrer tilgang",
"ManageUsers": "Håndter brukere",
"ManageUsersDesc": "Opprett nye brukere eller endre eksisterende. Her kan sette tilgangene deres også.",
@@ -65,17 +82,20 @@
"MenuPersonal": "Personlig",
"MenuUserSettings": "Brukerinnstillinger",
"MenuUsers": "Brukere",
+ "NewsletterSignupFailureMessage": "Noe gikk galt. Kunne ikke melde deg på nyhetsbrevet.",
"NewsletterSignupSuccessMessage": "Topp, du har registrert deg. Du vil bli kontaktet snart.",
"NewsletterSignupTitle": "Nyhetsbrevsregistrering",
"NoTokenCreatedYetCreateNow": "Symbol har ikke blitt opprettet enda. %1$sOpprett et nytt nå%2$s.",
"NoUsersExist": "Det er ingen brukere ennå.",
"NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Merk: Du kan ikke endre innstillingene i denne seksjonen fordi du ikke har noen nettsteder som kan nås av en anonym bruker.",
+ "OrManageIndividually": "Eler håndter denne brukerens tilgang til hver nettside individuelt",
"Permissions": "Tilganger",
"PersonalSettings": "Personlige innstillinger",
"PleaseStoreToken": "Lagre symbolet ditt sikkert, siden du ikke vil få tilgang til det igjen.",
"PrivAdmin": "Admin",
"PrivNone": "Ingen tilgang",
"PrivView": "Vis",
+ "PrivViewDescription": "En bruker med denne rollen kan lese alle rapporter.",
"PrivWrite": "Skriv",
"RemoveAllAccessToThisSite": "Fjern all tilgang til denne nettsiden",
"RemovePermissions": "Fjern tilganger",
@@ -98,9 +118,13 @@
"TokenSuccessfullyDeleted": "Symbol slettet",
"TokenSuccessfullyGenerated": "Symbol generert",
"TokensSuccessfullyDeleted": "Alle symboler ble slettet.",
+ "TokensWithExpireDateCreationBySystem": "Symboler med utløpsdato kan foreløpig kun opprettes av systemet",
"TwoFactorAuthentication": "To-faktoridentitetsbekreftelse",
+ "TypeYourCurrentPassword": "Skriv inn ditt nåværende passord for å bekrefte passordsendringen.",
"TypeYourPasswordAgain": "Skriv inn ditt nye passord på nytt.",
"User": "Bruker",
+ "UserHasNoPermission": "%1$s har for øyeblikket %2$s til %3$s.",
+ "UserHasPermission": "%1$s har for øyeblikket %2$s-tilgang til %3$s.",
"UserSearch": "Brukersøk",
"Username": "Brukernavn",
"UsersManagement": "Administrasjon av brukere",
diff --git a/plugins/UsersManager/lang/pt-br.json b/plugins/UsersManager/lang/pt-br.json
index a93124690b..fbb753e049 100644
--- a/plugins/UsersManager/lang/pt-br.json
+++ b/plugins/UsersManager/lang/pt-br.json
@@ -20,6 +20,8 @@
"AreYouSureChangeDetails": "Tem certeza de que deseja alterar as informações de usuário de %s?",
"AreYouSureRemoveCapability": "Tem certeza de que deseja remover a capacidade %1$s de %2$s por %3$s?",
"AtLeastView": "Pelo menos visualizar",
+ "AuthTokenPurpose": "Para que você está usando este token?",
+ "AuthTokens": "Tokens de autenticação",
"BasicInformation": "Informação básica",
"BulkActions": "Ações em massa",
"Capabilities": "Capacidades",
@@ -38,9 +40,12 @@
"ConfirmGrantSuperUserAccess": "Você realmente deseja conceder a '%s' o acesso de Super Usuário? Aviso: o usuário terá acesso a todos os sites e será capaz de executar tarefas administrativas.",
"ConfirmProhibitMySuperUserAccess": "%s, você realmente deseja remover o seu próprio acesso de Super Usuário? Você perderá todas as permissões e acessos a todos os sites e será desconectado do Matomo.",
"ConfirmProhibitOtherUsersSuperUserAccess": "Você realmente deseja remover o acesso de Super Usuário de '%s'? O usuário perderá todas as permissões e acesso a todos os sites. Certifique-se de dar acesso a sites necessários mais tarde, se for preciso.",
+ "ConfirmTokenCopied": "Confirmo que copiei o token e entendo que não devo compartilhar esse token com mais ninguém.",
"ConfirmWithPassword": "Por favor digite sua senha para confirmar esta alteração.",
+ "CreateNewToken": "Criar novo token",
"CreateUser": "Criar usuário",
"CurrentPasswordNotCorrect": "A senha atual informada não está correta.",
+ "DeleteAllTokens": "Excluir todos os tokens",
"DeleteConfirm": "Tem certeza que deseja excluir o usuário %s?",
"DeletePermConfirmMultiple": "Você tem certeza de que deseja remover o acesso de %1$s aos %2$s sites selecionados?",
"DeletePermConfirmSingle": "Você tem certeza de que deseja remover o acesso de %1$s ao %2$s?",
@@ -49,6 +54,7 @@
"DeleteUserPermConfirmMultiple": "Tem certeza de que deseja alterar os perfis dos %1$s usuários selecionados para %2$s em %3$s?",
"DeleteUserPermConfirmSingle": "Tem certeza de que deseja alterar o perfil de %1$s para %2$s em %3$s?",
"DeleteUsers": "Excluir usuários",
+ "DoNotStoreToken": "Não compartilhe este token com mais ninguém, pois é tão secreto quanto seu login e senha.",
"EditUser": "Editar usuário",
"Email": "E-mail",
"EmailChangeNotificationSubject": "O endereço de e-mail da sua conta Matomo acabou de ser alterado",
@@ -61,13 +67,15 @@
"ExceptionAnonymousNoCapabilities": "Você não pode conceder nenhuma capacidade para o usuário 'anônimo'.",
"ExceptionDeleteDoesNotExist": "O usuário '%s' não existe portanto não é possível excluí-lo.",
"ExceptionDeleteOnlyUserWithSuperUserAccess": "Não é possível excluir o usuário '%s'.",
- "ExceptionEditAnonymous": "O usuário anonymous não pode ser editado ou apagado. Ele é usado pelo sistema para definir um usuário que ainda não não entrou. Por examplo, você pode tornar as estatísticas públicas concedendo acesso 'view' para o usuário 'anonymous'.",
+ "ExceptionEditAnonymous": "O usuário anônimo não pode ser editado ou apagado. Ele é usado pelo sistema para definir um usuário que ainda não entrou. Por exemplo, você pode tornar as estatísticas públicas concedendo acesso 'visualização' para o usuário 'anônimo'.",
"ExceptionEmailExists": "Usuário com o e-mail '%s' já existe.",
+ "ExceptionEmailExistsAsLogin": "E-mail '%s' já usado como nome de usuário.",
"ExceptionInvalidEmail": "O e-mail não tem um formato válido.",
"ExceptionInvalidLoginFormat": "O nome de usuário deve ter entre %1$s e %2$s caracteres e conter apenas letras, números ou os caracteres '_' or '-' or '.' or '@' or '+'",
"ExceptionInvalidPassword": "O comprimento da senha deve ser maior que %1$s caracteres.",
"ExceptionInvalidPasswordTooLong": "O tamanho da senha deve ser menor que %1$s caracteres.",
"ExceptionLoginExists": "O nome de usuário '%s' já existe.",
+ "ExceptionLoginExistsAsEmail": "Nome de usuário '%s' já usado como e-mail.",
"ExceptionMultipleRoleSet": "Apenas um perfil pode ser definido, mas vários foram definidos. Use somente um desses: %s",
"ExceptionNoRoleSet": "Nenhum perfil está definido, mas um desses precisa ser definido: %s",
"ExceptionNoValueForUsernameOrEmail": "Por favor, digite um nome de usuário ou endereço de e-mail.",
@@ -79,41 +87,50 @@
"ExceptionUserHasViewAccessAlready": "Esse usuário já tem acesso a este site.",
"ExceptionYouMustGrantSuperUserAccessFirst": "É preciso haver pelo menos um usuário com acesso de Super Usuário. Por favor, conceda acesso de Super Usuário para outro usuário primeiro.",
"ExcludeVisitsViaCookie": "Excluir suas visitas usando um cookie",
+ "ExpireDate": "Data de expiração",
+ "ExpiredTokensDeleteAutomatically": "Tokens com data de expiração serão excluídos automaticamente.",
"FilterByAccess": "Filtrar por acesso",
"FilterByWebsite": "Filtrar por site",
"FirstSiteInlineHelp": "É necessário dar a um novo usuário, em sua criação, um perfil de visualização para um site. Se nenhum acesso for dado, o usuário verá um erro ao fazer login. Você pode conceder mais permissões após a criação do usuário na aba 'Permissões' que irá aparecer na esquerda.",
+ "FirstWebsitePermission": "Primeira permissão do site",
"ForAnonymousUsersReportDateToLoadByDefault": "Para usuários anônimos, reportar data a ser carregada por padrão",
"GiveAccessToAll": "Dar a este usuário acesso a todos os sites",
"GiveUserAccess": "Permitir '%1$s' %2$s acesso para %3$s.",
"GiveViewAccess": "Permitir acesso de visualização para %1$s",
"GiveViewAccessInstructions": "Para dar acesso a um usuário existente para %s digite o nome de usuário ou endereço de e-mail de um usuário existente",
"GiveViewAccessTitle": "Dar a usuário existente acesso para visualizar relatórios de %s",
+ "GoBackSecurityPage": "Voltar para a página de segurança.",
"HasSuperUserAccess": "Possui Acesso Super Usuário",
"IfThisWasYouIgnoreIfNot": "Se foi você, fique à vontade para ignorar este e-mail. Se não foi você, por favor faça login, corrija seu endereço de e-mail, altere sua senha e entre em contato com seu administrador Matomo.",
+ "IfThisWasYouPasswordChange": "Se foi você, fique à vontade para ignorar este e-mail. Se não foi você, entre em contato com o administrador do Matomo imediatamente, pois sua conta pode ter sido comprometida!",
"IfYouWouldLikeToChangeThePasswordTypeANewOne": "Se você deseja alterar sua senha, digite uma nova. Caso contrário, deixe em branco.",
"IncludedInUsersRole": "Incluído no perfil deste usuário.",
"InjectedHostCannotChangePwd": "Você está visitando com um host desconhecido (%1$s). Você não pode mudar sua senha até que este problema seja resolvido.",
"LastSeen": "Visto por último",
+ "LastUsed": "Usado por último",
"MainDescription": "Decida quais usuários têm acesso a seus sites. Você também pode dar acesso a todos os sites de uma só vez, escolhendo \"Aplicar a todos os sites\" no seletor de site.",
"ManageAccess": "Gerenciar acesso",
"ManageUsers": "Gerenciar Usuários",
+ "ManageUsersAdminDesc": "Crie novos usuários ou atualize os usuários existentes. Você pode definir suas permissões aqui também. Observe que você está logado como administrador. Isso significa que você só vê e gerencia usuários que têm acesso a sites específicos nos quais você tem permissões de 'administrador'. Apenas um usuário com acesso de superusuário pode ver e gerenciar todos os usuários em todos os sites.",
"ManageUsersDesc": "Crie novos usuários ou atualize os usuários existentes. Então você pode definir as permissões deles aqui também.",
"MenuAnonymousUserSettings": "Configurações de usuário anônimo",
"MenuPersonal": "Pessoal",
"MenuUserSettings": "Configurações de usuário",
"MenuUsers": "Usuários",
"NewsletterSignupFailureMessage": "Ops, algo deu errado. Nós não conseguimos te inscrever no boletim informativo.",
- "NewsletterSignupMessage": "Inscreva-se em nosso boletim informativo para receber informações regulares sobre o Matomo. Você pode cancelar a inscrição a qualquer momento. Este serviço usa o Mad Mimi. Saiba mais sobre ele em nossa %1$spágina da Política de Privacidade%2$s.",
+ "NewsletterSignupMessage": "Inscreva-se em nosso boletim informativo para receber informações regulares sobre o Matomo. Você pode cancelar a inscrição a qualquer momento. Este serviço usa o MadMimi. Saiba mais sobre ele em nossa %1$spágina da Política de Privacidade%2$s.",
"NewsletterSignupSuccessMessage": "Parabéns, você está inscrito! Entraremos em contato em breve.",
"NewsletterSignupTitle": "Inscrição em boletim informativo",
"NoAccessWarning": "Este usuário não tem acesso a um site. Quando ele fizer login, ele verá uma mensagem de erro. Para evitar isto, conceda acesso a um site abaixo.",
+ "NoTokenCreatedYetCreateNow": "Nenhum token criado ainda, %1$scrie um novo token agora%2$s.",
"NoUsersExist": "Não há usuários ainda.",
"NoteNoAnonymousUserAccessSettingsWontBeUsed2": "Obs: Você não pode alterar as configurações nesta seção, porque você não tem nenhum site que pode ser acessado pelo usuário anônimo.",
- "OrManageIndividually": "Ou gerencie o acesso deste usuário em cada site individualmente.",
+ "OrManageIndividually": "Ou gerencie o acesso deste usuário em cada site individualmente",
"PasswordChangeNotificationSubject": "A senha da sua conta Matomo acabou de ser alterada",
"PasswordChangedEmail": "Sua senha acabou de ser alterada. A alteração foi iniciada a partir do seguinte dispositivo: %1$s (endereço IP = %2$s).",
"Permissions": "Permissões",
"PersonalSettings": "Configurações pessoais",
+ "PleaseStoreToken": "Por favor, armazene seu token com segurança, pois você não poderá acessar ou ver o token novamente.",
"PluginDescription": "O Gerenciamento de Usuários permite que você adicione novos usuários, edite usuários existentes e dê a eles acesso para visualizar ou administrar sites.",
"PrivAdmin": "Administrador",
"PrivAdminDescription": "Usuários com este perfil podem gerenciar um site e dar acesso a esse site para outros usuários. Eles também podem fazer qualquer coisa que o perfil %s pode fazer.",
@@ -147,9 +164,15 @@
"TheLoginScreen": "A tela de login",
"ThereAreCurrentlyNRegisteredUsers": "Existem atualmente %s usuários registrados.",
"TokenAuth": "Token de autenticação da API",
+ "TokenAuthIntro": "Os tokens que você gerou podem ser usados para acessar a API de relatórios do Matomo, a API de rastreamento do Matomo e os widgets do Matomo exportados e têm as mesmas permissões que seu login de usuário regular. Você pode usar esses tokens também para o aplicativo Matomo Mobile.",
"TokenRegenerateConfirmSelf": "Alterar o token de autenticação da API irá invalidar o seu próprio token. Se o token atual estiver em uso, você precisa atualizar todos os clientes da API com o novo token gerado. Você quer mesmo alterar o seu token de autenticação?",
"TokenRegenerateTitle": "Regenerar",
+ "TokenSuccessfullyDeleted": "O token foi excluído com sucesso",
+ "TokenSuccessfullyGenerated": "Token gerado com sucesso",
+ "TokensSuccessfullyDeleted": "Todos os tokens foram excluídos com sucesso",
+ "TokensWithExpireDateCreationBySystem": "Tokens com data de validade atualmente só podem ser criados pelo sistema",
"TwoFactorAuthentication": "Autenticação de dois fatores",
+ "TypeYourCurrentPassword": "Digite sua senha atual para confirmar a alteração da senha.",
"TypeYourPasswordAgain": "Digite sua nova senha novamente.",
"User": "Usuário",
"UserHasNoPermission": "%1$s tem atualmente %2$s para %3$s",
@@ -159,7 +182,7 @@
"UsersManagement": "Gerenciamento de usuários",
"UsersManagementMainDescription": "Crie novos usuários ou atualize os usuários existentes. Você poderá então ajustar as permissões deles acima.",
"UsesTwoFactorAuthentication": "Usar autenticação de dois fatores",
- "WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Quando os usuários não estão conectados e visitam o Matomo, eles devem ver inicialmente.",
+ "WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess": "Quando os usuários não estão conectados e visitam o Matomo, eles devem ver inicialmente",
"YourCurrentPassword": "Sua senha atual",
"YourUsernameCannotBeChanged": "Seu nome de usuário não pode ser alterado.",
"YourVisitsAreIgnoredOnDomain": "%1$s Suas visitas são ignoradas pelo Matomo em %2$s %3$s (o Matomo ignora o cookie encontrado em seu navegador).",
diff --git a/plugins/UsersManager/vue/dist/UsersManager.umd.js b/plugins/UsersManager/vue/dist/UsersManager.umd.js
index a79c88744d..6d071e3938 100644
--- a/plugins/UsersManager/vue/dist/UsersManager.umd.js
+++ b/plugins/UsersManager/vue/dist/UsersManager.umd.js
@@ -587,38 +587,38 @@ CapabilitiesEditvue_type_script_lang_ts.render = render
}
}
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue?vue&type=template&id=ec62f9da
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue?vue&type=template&id=061f5e4b
-var UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_1 = {
+var UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_1 = {
key: 0,
class: "row"
};
-var UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_2 = {
+var UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_2 = {
class: "row to-all-websites"
};
-var UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_3 = {
+var UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_3 = {
class: "col s12"
};
-var UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_4 = {
+var UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_4 = {
style: {
"margin-right": "3.5px"
}
};
-var UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_5 = {
+var UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_5 = {
id: "all-sites-access-select",
style: {
"margin-right": "3.5px"
}
};
-var UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_6 = {
+var UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_6 = {
style: {
"margin-top": "18px"
}
};
-var UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_7 = {
+var UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_7 = {
class: "filters row"
};
-var UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_8 = {
+var UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_8 = {
class: "col s12 m12 l8"
};
var _hoisted_9 = {
@@ -769,7 +769,7 @@ var _hoisted_62 = ["innerHTML"];
var _hoisted_63 = {
class: "modal-footer"
};
-function UserPermissionsEditvue_type_template_id_ec62f9da_render(_ctx, _cache, $props, $setup, $data, $options) {
+function UserPermissionsEditvue_type_template_id_061f5e4b_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Notification = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Notification");
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
@@ -784,7 +784,7 @@ function UserPermissionsEditvue_type_template_id_ec62f9da_render(_ctx, _cache, $
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["userPermissionsEdit", {
loading: _ctx.isLoadingAccess
}])
- }, [!_ctx.hasAccessToAtLeastOneSite ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Notification, {
+ }, [!_ctx.hasAccessToAtLeastOneSite ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Notification, {
context: "warning",
type: "transient",
noclear: true
@@ -793,7 +793,7 @@ function UserPermissionsEditvue_type_template_id_ec62f9da_render(_ctx, _cache, $
return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Warning')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(" " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_NoAccessWarning')), 1)];
}),
_: 1
- })])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_GiveAccessToAll')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ })])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_4, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_GiveAccessToAll')) + ":", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.allWebsitesAccssLevelSet,
"onUpdate:modelValue": _cache[0] || (_cache[0] = function ($event) {
return _ctx.allWebsitesAccssLevelSet = $event;
@@ -809,7 +809,7 @@ function UserPermissionsEditvue_type_template_id_ec62f9da_render(_ctx, _cache, $
onClick: _cache[1] || (_cache[1] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.showChangeAccessAllSitesModal();
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Apply')), 3)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_OrManageIndividually')) + ":", 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_ec62f9da_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Apply')), 3)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_OrManageIndividually')) + ":", 1)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_7, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserPermissionsEditvue_type_template_id_061f5e4b_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["dropdown-trigger btn", {
disabled: _ctx.isBulkActionsDisabled
}]),
@@ -908,7 +908,7 @@ function UserPermissionsEditvue_type_template_id_ec62f9da_render(_ctx, _cache, $
return _ctx.onAllCheckboxChange($event);
})
}, null, 40, _hoisted_27), _hoisted_28])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Name')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", _hoisted_29, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: "".concat(_ctx.translate('UsersManager_Role'), " ")
+ innerHTML: _ctx.$sanitize("".concat(_ctx.translate('UsersManager_Role'), " "))
}, null, 8, _hoisted_30), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["helpIcon", {
@@ -918,7 +918,7 @@ function UserPermissionsEditvue_type_template_id_ec62f9da_render(_ctx, _cache, $
return _ctx.isRoleHelpToggled = !_ctx.isRoleHelpToggled;
}, ["prevent"]))
}, _hoisted_32, 2)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", _hoisted_33, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: "".concat(_ctx.translate('UsersManager_Capabilities'), " ")
+ innerHTML: _ctx.$sanitize("".concat(_ctx.translate('UsersManager_Capabilities'), " "))
}, null, 8, _hoisted_34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["helpIcon", {
@@ -1043,7 +1043,7 @@ function UserPermissionsEditvue_type_template_id_ec62f9da_render(_ctx, _cache, $
})
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)], 2);
}
-// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue?vue&type=template&id=ec62f9da
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue?vue&type=template&id=061f5e4b
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue?vue&type=script&lang=ts
@@ -1408,7 +1408,7 @@ var UserPermissionsEditvue_type_script_lang_ts_window = window,
-UserPermissionsEditvue_type_script_lang_ts.render = UserPermissionsEditvue_type_template_id_ec62f9da_render
+UserPermissionsEditvue_type_script_lang_ts.render = UserPermissionsEditvue_type_template_id_061f5e4b_render
/* harmony default export */ var UserPermissionsEdit = (UserPermissionsEditvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.adapter.ts
@@ -1447,102 +1447,102 @@ UserPermissionsEditvue_type_script_lang_ts.render = UserPermissionsEditvue_type_
directiveName: 'piwikUserPermissionsEdit',
restrict: 'E'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=6467f54f
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=851b548a
-var UserEditFormvue_type_template_id_6467f54f_hoisted_1 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_1 = {
class: "row"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_2 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_2 = {
key: 0,
class: "col m2 entityList"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_3 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_3 = {
class: "listCircle"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_4 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_4 = {
key: 0,
class: "icon-warning"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+var UserEditFormvue_type_template_id_851b548a_hoisted_5 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "save-button-spacer hide-on-small-only"
}, null, -1);
-var UserEditFormvue_type_template_id_6467f54f_hoisted_6 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_6 = {
href: "",
class: "entityCancelLink"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_7 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_7 = {
class: "visibleTab col m10"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_8 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_8 = {
key: 0,
class: "basic-info-tab"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_9 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_9 = {
key: 0,
class: "entityCancel"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_10 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_10 = {
key: 1,
class: "user-permissions"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_11 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_11 = {
key: 0
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_12 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_12 = {
key: 1,
class: "alert alert-info"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_13 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_13 = {
key: 2,
class: "superuser-access"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_14 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_14 = {
class: "superuser-confirm-modal modal",
ref: "superUserConfirmModal"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_15 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_15 = {
class: "modal-content"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_16 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_16 = {
key: 0
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_17 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_17 = {
key: 1
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_18 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_18 = {
class: "modal-footer"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_19 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_19 = {
key: 3,
class: "twofa-reset"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_20 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_20 = {
class: "resetTwoFa"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_21 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_21 = {
class: "twofa-confirm-modal modal",
ref: "twofaConfirmModal"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_22 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_22 = {
class: "modal-content"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_23 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_23 = {
class: "modal-footer"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_24 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_24 = {
class: "change-password-modal modal",
ref: "changePasswordModal"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_25 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_25 = {
class: "modal-content"
};
-var UserEditFormvue_type_template_id_6467f54f_hoisted_26 = ["innerHTML"];
-var UserEditFormvue_type_template_id_6467f54f_hoisted_27 = {
+var UserEditFormvue_type_template_id_851b548a_hoisted_26 = ["innerHTML"];
+var UserEditFormvue_type_template_id_851b548a_hoisted_27 = {
class: "modal-footer"
};
-function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props, $setup, $data, $options) {
+function UserEditFormvue_type_template_id_851b548a_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_SaveButton = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("SaveButton");
@@ -1560,7 +1560,7 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
"content-title": "".concat(_ctx.formTitle, " ").concat(!_ctx.isAdd ? "'".concat(_ctx.theUser.login, "'") : '')
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
- return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_1, [!_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", UserEditFormvue_type_template_id_6467f54f_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
+ return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_1, [!_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", UserEditFormvue_type_template_id_851b548a_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])([{
active: _ctx.activeTab === 'basic'
}, "menuBasicInfo"])
@@ -1581,7 +1581,7 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
style: {
"margin-right": "3.5px"
}
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Permissions')), 1), !_ctx.userHasAccess && !_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", UserEditFormvue_type_template_id_6467f54f_hoisted_4)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Permissions')), 1), !_ctx.userHasAccess && !_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", UserEditFormvue_type_template_id_851b548a_hoisted_4)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 2), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
key: 0,
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])([{
active: _ctx.activeTab === 'superuser'
@@ -1601,12 +1601,12 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
onClick: _cache[3] || (_cache[3] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.activeTab = '2fa';
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_TwoFactorAuthentication')), 1)], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), UserEditFormvue_type_template_id_6467f54f_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_TwoFactorAuthentication')), 1)], 2)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), UserEditFormvue_type_template_id_851b548a_hoisted_5, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", {
class: "entityCancel",
onClick: _cache[4] || (_cache[4] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.onDoneEditing();
}, ["prevent"]))
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", UserEditFormvue_type_template_id_6467f54f_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Mobile_NavigationBack')), 1)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_7, [_ctx.activeTab === 'basic' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", UserEditFormvue_type_template_id_851b548a_hoisted_6, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('Mobile_NavigationBack')), 1)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_7, [_ctx.activeTab === 'basic' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.theUser.login,
"onUpdate:modelValue": _cache[5] || (_cache[5] = function ($event) {
return _ctx.theUser.login = $event;
@@ -1659,13 +1659,13 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
onConfirm: _cache[9] || (_cache[9] = function ($event) {
return _ctx.saveUserInfo();
})
- }, null, 8, ["value", "disabled", "saving"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), _ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["value", "disabled", "saving"])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), _ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "entityCancelLink",
onClick: _cache[10] || (_cache[10] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.onDoneEditing();
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Cancel')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.isAdd ? Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_10, [!_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_UserPermissionsEdit, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Cancel')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.isAdd ? Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_10, [!_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_UserPermissionsEdit, {
"user-login": _ctx.theUser.login,
onUserHasAccessDetected: _cache[11] || (_cache[11] = function ($event) {
return _ctx.userHasAccess = $event.hasAccess;
@@ -1675,7 +1675,7 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
}),
"access-levels": _ctx.accessLevels,
"filter-access-levels": _ctx.filterAccessLevels
- }, null, 8, ["user-login", "access-levels", "filter-access-levels"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUsersPermissionsNotice')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.activeTab === 'permissions']]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.activeTab === 'superuser' && _ctx.currentUserRole === 'superuser' && !_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUserIntro1')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUserIntro2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["user-login", "access-levels", "filter-access-levels"])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_12, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUsersPermissionsNotice')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.activeTab === 'permissions']]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.activeTab === 'superuser' && _ctx.currentUserRole === 'superuser' && !_ctx.isAdd ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUserIntro1')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("strong", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SuperUserIntro2')), 1)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.superUserAccessChecked,
"onUpdate:modelValue": _cache[13] || (_cache[13] = function ($event) {
return _ctx.superUserAccessChecked = $event;
@@ -1687,7 +1687,7 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
uicontrol: "checkbox",
name: "superuser_access",
title: _ctx.translate('UsersManager_HasSuperUserAccess')
- }, null, 8, ["modelValue", "disabled", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AreYouSure')), 1), _ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UserEditFormvue_type_template_id_6467f54f_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RemoveSuperuserAccessConfirm')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UserEditFormvue_type_template_id_6467f54f_hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AddSuperuserAccessConfirm')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["modelValue", "disabled", "title"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_14, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AreYouSure')), 1), _ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UserEditFormvue_type_template_id_851b548a_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RemoveSuperuserAccessConfirm')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.theUser.superuser_access ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", UserEditFormvue_type_template_id_851b548a_hoisted_17, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AddSuperuserAccessConfirm')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.passwordConfirmationForSuperUser,
"onUpdate:modelValue": _cache[15] || (_cache[15] = function ($event) {
return _ctx.passwordConfirmationForSuperUser = $event;
@@ -1697,7 +1697,7 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
autocomplete: false,
"full-width": true,
title: _ctx.translate('UsersManager_YourCurrentPassword')
- }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_18, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
onClick: _cache[16] || (_cache[16] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -1714,13 +1714,13 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
_ctx.passwordConfirmationForSuperUser = '';
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' && !_ctx.isAdd ? Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ResetTwoFactorAuthenticationInfo')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' && !_ctx.isAdd ? Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])((Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ResetTwoFactorAuthenticationInfo')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_SaveButton, {
saving: _ctx.isResetting2FA,
onConfirm: _cache[18] || (_cache[18] = function ($event) {
return _ctx.confirmReset2FA();
}),
value: _ctx.translate('UsersManager_ResetTwoFactorAuthentication')
- }, null, 8, ["saving", "value"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_21, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_22, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AreYouSure')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["saving", "value"])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_21, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_22, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_AreYouSure')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.passwordConfirmation,
"onUpdate:modelValue": _cache[19] || (_cache[19] = function ($event) {
return _ctx.passwordConfirmation = $event;
@@ -1730,7 +1730,7 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
autocomplete: false,
"full-width": true,
title: _ctx.translate('UsersManager_YourCurrentPassword')
- }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
onClick: _cache[20] || (_cache[20] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -1746,9 +1746,9 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
$event.preventDefault();
_ctx.passwordConfirmation = '';
})
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.activeTab === '2fa']]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 512), [[_directive_form]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_24, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_25, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", {
- innerHTML: _ctx.changePasswordTitle
- }, null, 8, UserEditFormvue_type_template_id_6467f54f_hoisted_26), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)], 512)), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vShow"], _ctx.activeTab === '2fa']]) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 512), [[_directive_form]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_24, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_25, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("h2", {
+ innerHTML: _ctx.$sanitize(_ctx.changePasswordTitle)
+ }, null, 8, UserEditFormvue_type_template_id_851b548a_hoisted_26), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("p", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_ConfirmWithPassword')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
modelValue: _ctx.passwordConfirmation,
"onUpdate:modelValue": _cache[22] || (_cache[22] = function ($event) {
return _ctx.passwordConfirmation = $event;
@@ -1758,7 +1758,7 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
autocomplete: false,
"full-width": true,
title: _ctx.translate('UsersManager_YourCurrentPassword')
- }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_6467f54f_hoisted_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["modelValue", "title"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", UserEditFormvue_type_template_id_851b548a_hoisted_27, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
onClick: _cache[23] || (_cache[23] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -1776,7 +1776,7 @@ function UserEditFormvue_type_template_id_6467f54f_render(_ctx, _cache, $props,
_: 1
}, 8, ["class", "content-title"]);
}
-// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=6467f54f
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=template&id=851b548a
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue?vue&type=script&lang=ts
@@ -2047,7 +2047,7 @@ var UserEditFormvue_type_script_lang_ts_window = window,
-UserEditFormvue_type_script_lang_ts.render = UserEditFormvue_type_template_id_6467f54f_render
+UserEditFormvue_type_script_lang_ts.render = UserEditFormvue_type_template_id_851b548a_render
/* harmony default export */ var UserEditForm = (UserEditFormvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/UserEditForm/UserEditForm.adapter.ts
@@ -2092,183 +2092,183 @@ UserEditFormvue_type_script_lang_ts.render = UserEditFormvue_type_template_id_64
directiveName: 'piwikUserEditForm',
restrict: 'E'
}));
-// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=template&id=2bc7ec27
+// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-babel/node_modules/cache-loader/dist/cjs.js??ref--12-0!./node_modules/@vue/cli-plugin-babel/node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist/templateLoader.js??ref--6!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=template&id=6767e472
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_1 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_1 = {
class: "userListFilters row"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_2 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_2 = {
class: "col s12 m12 l6"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_3 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_3 = {
class: "input-field col s12 m4 l4"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_4 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_4 = {
id: "user-list-bulk-actions",
class: "dropdown-content"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_5 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_5 = {
class: "dropdown-trigger",
"data-target": "bulk-set-access"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_6 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_6 = {
id: "bulk-set-access",
class: "dropdown-content"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_7 = ["onClick"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_8 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_7 = ["onClick"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_8 = {
key: 0
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_9 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_9 = {
class: "input-field col s12 m4 l4"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_10 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_10 = {
class: "permissions-for-selector"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_11 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_11 = {
class: "input-field col s12 m4 l4"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_12 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_12 = {
key: 0,
class: "input-field col s12 m12 l6 users-list-pagination-container"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_13 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_13 = {
class: "usersListPagination"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_14 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_14 = {
class: "pointer"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_15 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_15 = {
class: "counter"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_16 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_16 = {
class: "pointer"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_17 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_17 = {
key: 0,
class: "roles-help-notification"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_18 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_19 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_18 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_19 = {
class: "select-cell"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_20 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_20 = {
class: "checkbox-container"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_21 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
+var PagedUsersListvue_type_template_id_6767e472_hoisted_21 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_22 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_22 = {
class: "first"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_23 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_23 = {
class: "role_header"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_24 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_24 = {
style: {
"margin-right": "3.5px"
}
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_25 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_25 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-help"
}, null, -1);
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_26 = [PagedUsersListvue_type_template_id_2bc7ec27_hoisted_25];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_27 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_26 = [PagedUsersListvue_type_template_id_6767e472_hoisted_25];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_27 = {
key: 0
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_28 = ["title"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_29 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_28 = ["title"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_29 = {
key: 2
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_30 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_30 = {
class: "actions-cell-header"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_31 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_31 = {
key: 0,
class: "select-all-row"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_32 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_32 = {
colspan: "8"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_33 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_33 = {
key: 0
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_34 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_35 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_36 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_34 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_35 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_36 = {
key: 1
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_37 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_38 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_39 = ["id"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_40 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_37 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_38 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_39 = ["id"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_40 = {
class: "select-cell"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_41 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_41 = {
class: "checkbox-container"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_42 = ["id", "onUpdate:modelValue"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_42 = ["id", "onUpdate:modelValue"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_43 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
+var PagedUsersListvue_type_template_id_6767e472_hoisted_43 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", null, null, -1);
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_44 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_44 = {
id: "userLogin"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_45 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_45 = {
class: "access-cell"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_46 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_46 = {
key: 0,
id: "email"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_47 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_47 = {
key: 1,
id: "twofa"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_48 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_48 = {
key: 0,
class: "icon-ok"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_49 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_49 = {
key: 1,
class: "icon-close"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_50 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_50 = {
key: 2,
id: "last_seen"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_51 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_51 = {
class: "center actions-cell"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_52 = ["onClick"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_52 = ["onClick"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_53 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_53 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-edit"
}, null, -1);
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_54 = [PagedUsersListvue_type_template_id_2bc7ec27_hoisted_53];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_55 = ["onClick"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_54 = [PagedUsersListvue_type_template_id_6767e472_hoisted_53];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_55 = ["onClick"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_56 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_56 = /*#__PURE__*/Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: "icon-delete"
}, null, -1);
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_57 = [PagedUsersListvue_type_template_id_2bc7ec27_hoisted_56];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_58 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_57 = [PagedUsersListvue_type_template_id_6767e472_hoisted_56];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_58 = {
class: "delete-user-confirm-modal modal",
ref: "deleteUserConfirmModal"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_59 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_59 = {
class: "modal-content"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_60 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_61 = ["innerHTML"];
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_62 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_60 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_61 = ["innerHTML"];
+var PagedUsersListvue_type_template_id_6767e472_hoisted_62 = {
class: "modal-footer"
};
-var PagedUsersListvue_type_template_id_2bc7ec27_hoisted_63 = {
+var PagedUsersListvue_type_template_id_6767e472_hoisted_63 = {
class: "change-user-role-confirm-modal modal",
ref: "changeUserRoleConfirmModal"
};
@@ -2284,7 +2284,7 @@ var _hoisted_68 = ["innerHTML"];
var _hoisted_69 = {
class: "modal-footer"
};
-function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props, $setup, $data, $options) {
+function PagedUsersListvue_type_template_id_6767e472_render(_ctx, _cache, $props, $setup, $data, $options) {
var _component_Field = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("Field");
var _component_ActivityIndicator = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["resolveComponent"])("ActivityIndicator");
@@ -2301,13 +2301,13 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["pagedUsersList", {
loading: _ctx.isLoadingUsers
}])
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_1, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_2, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_3, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["dropdown-trigger btn bulk-actions", {
disabled: _ctx.isBulkActionsDisabled
}]),
href: "",
"data-target": "user-list-bulk-actions"
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_BulkActions')), 1)], 2), [[_directive_dropdown_menu]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SetPermission')), 1)], 512), [[_directive_dropdown_menu]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_6, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.bulkActionAccessLevels, function (access) {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_BulkActions')), 1)], 2), [[_directive_dropdown_menu]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", PagedUsersListvue_type_template_id_6767e472_hoisted_4, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", PagedUsersListvue_type_template_id_6767e472_hoisted_5, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_SetPermission')), 1)], 512), [[_directive_dropdown_menu]]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("ul", PagedUsersListvue_type_template_id_6767e472_hoisted_6, [(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.bulkActionAccessLevels, function (access) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", {
key: access.key
}, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
@@ -2318,7 +2318,7 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
_ctx.showAccessChangeConfirm();
}, ["prevent"])
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(access.value), 9, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_7)]);
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(access.value), 9, PagedUsersListvue_type_template_id_6767e472_hoisted_7)]);
}), 128))])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("li", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
onClick: _cache[0] || (_cache[0] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -2327,12 +2327,12 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
_ctx.showAccessChangeConfirm();
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RemovePermissions')), 1)]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RemovePermissions')), 1)]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("li", PagedUsersListvue_type_template_id_6767e472_hoisted_8, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
onClick: _cache[1] || (_cache[1] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.showDeleteConfirm();
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_DeleteUsers')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_DeleteUsers')), 1)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_9, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_10, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"model-value": _ctx.userTextFilter,
"onUpdate:modelValue": _cache[2] || (_cache[2] = function ($event) {
return _ctx.onUserTextFilterChange($event);
@@ -2341,7 +2341,7 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
uicontrol: "text",
"full-width": true,
placeholder: _ctx.translate('UsersManager_UserSearch')
- }, null, 8, ["model-value", "placeholder"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, ["model-value", "placeholder"])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_11, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"model-value": _ctx.accessLevelFilter,
"onUpdate:modelValue": _cache[3] || (_cache[3] = function ($event) {
_ctx.accessLevelFilter = $event;
@@ -2356,14 +2356,14 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
options: _ctx.filterAccessLevels,
"full-width": true,
placeholder: _ctx.translate('UsersManager_FilterByAccess')
- }, null, 8, ["model-value", "options", "placeholder"])])])]), _ctx.totalEntries > _ctx.searchParams.limit ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, ["model-value", "options", "placeholder"])])])]), _ctx.totalEntries > _ctx.searchParams.limit ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_12, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_13, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["btn prev", {
disabled: _ctx.searchParams.offset <= 0
}]),
onClick: _cache[4] || (_cache[4] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.gotoPreviousPage();
}, ["prevent"]))
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_14, "« " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Previous')), 1)], 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_6767e472_hoisted_14, "« " + Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Previous')), 1)], 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_15, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
visibility: _ctx.isLoadingUsers ? 'hidden' : 'visible'
})
@@ -2376,15 +2376,15 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
onClick: _cache[5] || (_cache[5] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.gotoNextPage();
}, ["prevent"]))
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Next')) + " »", 1)], 2)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), _ctx.isRoleHelpToggled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Notification, {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_6767e472_hoisted_16, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Next')) + " »", 1)], 2)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), _ctx.isRoleHelpToggled ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_17, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Notification, {
context: "info",
type: "persistent",
noclear: true
}, {
default: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withCtx"])(function () {
return [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.rolesHelpText
- }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_18)];
+ innerHTML: _ctx.$sanitize(_ctx.rolesHelpText)
+ }, null, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_18)];
}),
_: 1
})])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_ContentBlock, null, {
@@ -2394,7 +2394,7 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])({
loading: _ctx.isLoadingUsers
})
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("thead", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tr", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_6767e472_hoisted_19, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_6767e472_hoisted_20, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "checkbox",
id: "paged_users_select_all",
checked: "checked",
@@ -2404,7 +2404,7 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
onChange: _cache[7] || (_cache[7] = function ($event) {
return _ctx.onAllCheckboxChange();
})
- }, null, 544), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelCheckbox"], _ctx.isAllCheckboxSelected]]), PagedUsersListvue_type_template_id_2bc7ec27_hoisted_21])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Username')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_24, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RoleFor')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 544), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelCheckbox"], _ctx.isAllCheckboxSelected]]), PagedUsersListvue_type_template_id_6767e472_hoisted_21])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_6767e472_hoisted_22, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Username')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_6767e472_hoisted_23, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_6767e472_hoisted_24, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_RoleFor')), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: Object(external_commonjs_vue_commonjs2_vue_root_Vue_["normalizeClass"])(["helpIcon", {
sticky: _ctx.isRoleHelpToggled
@@ -2412,7 +2412,7 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
onClick: _cache[8] || (_cache[8] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.isRoleHelpToggled = !_ctx.isRoleHelpToggled;
}, ["prevent"]))
- }, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_26, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, PagedUsersListvue_type_template_id_6767e472_hoisted_26, 2), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
class: "permissions-for-selector",
"model-value": _ctx.permissionsForSite,
"onUpdate:modelValue": _cache[9] || (_cache[9] = function ($event) {
@@ -2422,38 +2422,38 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
"ui-control-attributes": {
onlySitesWithAdminAccess: _ctx.currentUserRole !== 'superuser'
}
- }, null, 8, ["model-value", "ui-control-attributes"])])]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_27, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Email')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", {
+ }, null, 8, ["model-value", "ui-control-attributes"])])]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", PagedUsersListvue_type_template_id_6767e472_hoisted_27, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_Email')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", {
key: 1,
title: _ctx.translate('UsersManager_UsesTwoFactorAuthentication')
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_2FA')), 9, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_28)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_29, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_LastSeen')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_30, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Actions')), 1)])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tbody", null, [_ctx.isAllCheckboxSelected && _ctx.users.length && _ctx.users.length < _ctx.totalEntries ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_32, [!_ctx.areAllResultsSelected ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_33, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.translate('UsersManager_TheDisplayedUsersAreSelected', "<strong>".concat(_ctx.users.length, "</strong>")),
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_2FA')), 9, PagedUsersListvue_type_template_id_6767e472_hoisted_28)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("th", PagedUsersListvue_type_template_id_6767e472_hoisted_29, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('UsersManager_LastSeen')), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("th", PagedUsersListvue_type_template_id_6767e472_hoisted_30, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Actions')), 1)])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("tbody", null, [_ctx.isAllCheckboxSelected && _ctx.users.length && _ctx.users.length < _ctx.totalEntries ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", PagedUsersListvue_type_template_id_6767e472_hoisted_31, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_6767e472_hoisted_32, [!_ctx.areAllResultsSelected ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_33, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_TheDisplayedUsersAreSelected', "<strong>".concat(_ctx.users.length, "</strong>"))),
style: {
"margin-right": "3.5px"
}
- }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_34), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: "toggle-select-all-in-search",
href: "#",
onClick: _cache[10] || (_cache[10] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.areAllResultsSelected = !_ctx.areAllResultsSelected;
}, ["prevent"])),
- innerHTML: _ctx.translate('UsersManager_ClickToSelectAll', "<strong>".concat(_ctx.totalEntries, "</strong>"))
- }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_35)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.areAllResultsSelected ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_36, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.translate('UsersManager_AllUsersAreSelected', "<strong>".concat(_ctx.totalEntries, "</strong>")),
+ innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_ClickToSelectAll', "<strong>".concat(_ctx.totalEntries, "</strong>")))
+ }, null, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_35)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.areAllResultsSelected ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_36, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
+ innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_AllUsersAreSelected', "<strong>".concat(_ctx.totalEntries, "</strong>"))),
style: {
"margin-right": "3.5px"
}
- }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_37), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ }, null, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_37), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
class: "toggle-select-all-in-search",
href: "#",
onClick: _cache[11] || (_cache[11] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
return _ctx.areAllResultsSelected = !_ctx.areAllResultsSelected;
}, ["prevent"])),
- innerHTML: _ctx.translate('UsersManager_ClickToSelectDisplayedUsers', "<strong>".concat(_ctx.users.length, "</strong>"))
- }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_38)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.users, function (user, index) {
+ innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_ClickToSelectDisplayedUsers', "<strong>".concat(_ctx.users.length, "</strong>")))
+ }, null, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_38)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])(external_commonjs_vue_commonjs2_vue_root_Vue_["Fragment"], null, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["renderList"])(_ctx.users, function (user, index) {
return Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("tr", {
id: "row".concat(index),
key: user.login
- }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_40, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_41, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
+ }, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_6767e472_hoisted_40, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", PagedUsersListvue_type_template_id_6767e472_hoisted_41, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("label", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withDirectives"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("input", {
type: "checkbox",
id: "paged_users_select_row".concat(index),
"onUpdate:modelValue": function onUpdateModelValue($event) {
@@ -2462,7 +2462,7 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
onClick: _cache[12] || (_cache[12] = function ($event) {
return _ctx.onRowSelected();
})
- }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_42), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelCheckbox"], _ctx.selectedRows[index]]]), PagedUsersListvue_type_template_id_2bc7ec27_hoisted_43])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_44, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.login), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_45, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
+ }, null, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_42), [[external_commonjs_vue_commonjs2_vue_root_Vue_["vModelCheckbox"], _ctx.selectedRows[index]]]), PagedUsersListvue_type_template_id_6767e472_hoisted_43])])]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_6767e472_hoisted_44, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.login), 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_6767e472_hoisted_45, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createVNode"])(_component_Field, {
"model-value": user.role,
"onUpdate:modelValue": function onUpdateModelValue($event) {
_ctx.userToChange = user;
@@ -2473,7 +2473,7 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
disabled: user.role === 'superuser',
uicontrol: "select",
options: user.login !== 'anonymous' ? _ctx.accessLevels : _ctx.anonymousAccessLevels
- }, null, 8, ["model-value", "onUpdate:modelValue", "disabled", "options"])])]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_46, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.email), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_47, [user.uses_2fa ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_48)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !user.uses_2fa ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_49)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_50, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.last_seen ? "".concat(user.last_seen, " ago") : '-'), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_51, [user.login !== 'anonymous' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
+ }, null, 8, ["model-value", "onUpdate:modelValue", "disabled", "options"])])]), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_6767e472_hoisted_46, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.email), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_6767e472_hoisted_47, [user.uses_2fa ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", PagedUsersListvue_type_template_id_6767e472_hoisted_48)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !user.uses_2fa ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("span", PagedUsersListvue_type_template_id_6767e472_hoisted_49)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("td", PagedUsersListvue_type_template_id_6767e472_hoisted_50, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(user.last_seen ? "".concat(user.last_seen, " ago") : '-'), 1)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("td", PagedUsersListvue_type_template_id_6767e472_hoisted_51, [user.login !== 'anonymous' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
key: 0,
class: "edituser table-action",
title: "Edit",
@@ -2482,7 +2482,7 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
user: user
});
}
- }, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_54, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_52)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' && user.login !== 'anonymous' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
+ }, PagedUsersListvue_type_template_id_6767e472_hoisted_54, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_52)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.currentUserRole === 'superuser' && user.login !== 'anonymous' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("button", {
key: 1,
class: "deleteuser table-action",
title: "Delete",
@@ -2491,17 +2491,17 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
_ctx.showDeleteConfirm();
}
- }, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_57, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_55)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_39);
+ }, PagedUsersListvue_type_template_id_6767e472_hoisted_57, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_55)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)])], 8, PagedUsersListvue_type_template_id_6767e472_hoisted_39);
}), 128))])], 2), [[_directive_content_table]])];
}),
_: 1
- }), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_58, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_59, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
+ }), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_58, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_59, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
key: 0,
- innerHTML: _ctx.translate('UsersManager_DeleteUserConfirmSingle', "<strong>".concat(_ctx.userToChange.login, "</strong>"))
- }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_60)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
+ innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_DeleteUserConfirmSingle', "<strong>".concat(_ctx.userToChange.login, "</strong>")))
+ }, null, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_60)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
key: 1,
- innerHTML: _ctx.translate('UsersManager_DeleteUserConfirmMultiple', "<strong>".concat(_ctx.affectedUsersCount, "</strong>"))
- }, null, 8, PagedUsersListvue_type_template_id_2bc7ec27_hoisted_61)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_62, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
+ innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_DeleteUserConfirmMultiple', "<strong>".concat(_ctx.affectedUsersCount, "</strong>")))
+ }, null, 8, PagedUsersListvue_type_template_id_6767e472_hoisted_61)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_62, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
onClick: _cache[13] || (_cache[13] = Object(external_commonjs_vue_commonjs2_vue_root_Vue_["withModifiers"])(function ($event) {
@@ -2517,14 +2517,14 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
_ctx.userToChange = null;
_ctx.roleToChangeTo = null;
}, ["prevent"]))
- }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_2bc7ec27_hoisted_63, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_64, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
+ }, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", PagedUsersListvue_type_template_id_6767e472_hoisted_63, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_64, [_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", {
key: 0,
innerHTML: _ctx.$sanitize(_ctx.deleteUserPermConfirmSingleText)
}, null, 8, _hoisted_65)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), _ctx.userToChange && _ctx.userToChange.login === 'anonymous' && _ctx.roleToChangeTo === 'view' ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("h3", _hoisted_66, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("em", null, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createTextVNode"])(Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_Note')) + ": ", 1), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("span", {
- innerHTML: _ctx.translate('UsersManager_AnonymousUserRoleChangeWarning', 'anonymous', _ctx.getRoleDisplay(_ctx.roleToChangeTo))
+ innerHTML: _ctx.$sanitize(_ctx.translate('UsersManager_AnonymousUserRoleChangeWarning', 'anonymous', _ctx.getRoleDisplay(_ctx.roleToChangeTo)))
}, null, 8, _hoisted_67)])])) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true), !_ctx.userToChange ? (Object(external_commonjs_vue_commonjs2_vue_root_Vue_["openBlock"])(), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementBlock"])("p", {
key: 2,
- innerHTML: _ctx.deleteUserPermConfirmMultipleText
+ innerHTML: _ctx.$sanitize(_ctx.deleteUserPermConfirmMultipleText)
}, null, 8, _hoisted_68)) : Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createCommentVNode"])("", true)]), Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("div", _hoisted_69, [Object(external_commonjs_vue_commonjs2_vue_root_Vue_["createElementVNode"])("a", {
href: "",
class: "modal-action modal-close btn",
@@ -2543,7 +2543,7 @@ function PagedUsersListvue_type_template_id_2bc7ec27_render(_ctx, _cache, $props
}, ["prevent"]))
}, Object(external_commonjs_vue_commonjs2_vue_root_Vue_["toDisplayString"])(_ctx.translate('General_No')), 1)])], 512)], 2);
}
-// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=template&id=2bc7ec27
+// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=template&id=6767e472
// CONCATENATED MODULE: ./node_modules/@vue/cli-plugin-typescript/node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/babel-loader/lib!./node_modules/@vue/cli-plugin-typescript/node_modules/ts-loader??ref--14-2!./node_modules/@vue/cli-service/node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/@vue/cli-service/node_modules/vue-loader-v16/dist??ref--0-1!./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue?vue&type=script&lang=ts
@@ -2776,12 +2776,12 @@ var PagedUsersListvue_type_script_lang_ts_window = window,
deleteUserPermConfirmSingleText: function deleteUserPermConfirmSingleText() {
var _this$userToChange, _this$permissionsForS;
- return Object(external_CoreHome_["translate"])('UsersManager_DeleteUserPermConfirmSingle', "<strong>".concat(((_this$userToChange = this.userToChange) === null || _this$userToChange === void 0 ? void 0 : _this$userToChange.login) || '', "</strong>"), "<strong>".concat(this.getRoleDisplay(this.roleToChangeTo), "</strong>"), "<strong>".concat(((_this$permissionsForS = this.permissionsForSite) === null || _this$permissionsForS === void 0 ? void 0 : _this$permissionsForS.name) || '', "</strong>"));
+ return Object(external_CoreHome_["translate"])('UsersManager_DeleteUserPermConfirmSingle', "<strong>".concat(((_this$userToChange = this.userToChange) === null || _this$userToChange === void 0 ? void 0 : _this$userToChange.login) || '', "</strong>"), "<strong>".concat(this.getRoleDisplay(this.roleToChangeTo), "</strong>"), "<strong>".concat(external_CoreHome_["Matomo"].helper.htmlEntities(((_this$permissionsForS = this.permissionsForSite) === null || _this$permissionsForS === void 0 ? void 0 : _this$permissionsForS.name) || ''), "</strong>"));
},
deleteUserPermConfirmMultipleText: function deleteUserPermConfirmMultipleText() {
var _this$permissionsForS2;
- return Object(external_CoreHome_["translate"])('UsersManager_DeleteUserPermConfirmMultiple', "<strong>".concat(this.affectedUsersCount, "</strong>"), "<strong>".concat(this.getRoleDisplay(this.roleToChangeTo), "</strong>"), "<strong>".concat(((_this$permissionsForS2 = this.permissionsForSite) === null || _this$permissionsForS2 === void 0 ? void 0 : _this$permissionsForS2.name) || '', "</strong>"));
+ return Object(external_CoreHome_["translate"])('UsersManager_DeleteUserPermConfirmMultiple', "<strong>".concat(this.affectedUsersCount, "</strong>"), "<strong>".concat(this.getRoleDisplay(this.roleToChangeTo), "</strong>"), "<strong>".concat(external_CoreHome_["Matomo"].helper.htmlEntities(((_this$permissionsForS2 = this.permissionsForSite) === null || _this$permissionsForS2 === void 0 ? void 0 : _this$permissionsForS2.name) || ''), "</strong>"));
},
bulkActionAccessLevels: function bulkActionAccessLevels() {
return this.accessLevels.filter(function (e) {
@@ -2801,7 +2801,7 @@ var PagedUsersListvue_type_script_lang_ts_window = window,
-PagedUsersListvue_type_script_lang_ts.render = PagedUsersListvue_type_template_id_2bc7ec27_render
+PagedUsersListvue_type_script_lang_ts.render = PagedUsersListvue_type_template_id_6767e472_render
/* harmony default export */ var PagedUsersList = (PagedUsersListvue_type_script_lang_ts);
// CONCATENATED MODULE: ./plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.adapter.ts
diff --git a/plugins/UsersManager/vue/dist/UsersManager.umd.min.js b/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
index 370dfc72c5..b7e329b3d1 100644
--- a/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
+++ b/plugins/UsersManager/vue/dist/UsersManager.umd.min.js
@@ -1,52 +1,52 @@
-(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["UsersManager"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["UsersManager"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(s){if(t[s])return t[s].exports;var r=t[s]={i:s,l:!1,exports:{}};return e[s].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(s,r,function(t){return e[t]}.bind(null,r));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/UsersManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"CapabilitiesEdit",(function(){return V})),n.d(t,"UserPermissionsEdit",(function(){return He})),n.d(t,"UserEditForm",(function(){return vt})),n.d(t,"PagedUsersList",(function(){return Hn})),n.d(t,"UsersManager",(function(){return ds})),n.d(t,"NewsletterSettings",(function(){return gs})),n.d(t,"AnonymousSettings",(function(){return js})),n.d(t,"PersonalSettings",(function(){return Ms})),"undefined"!==typeof window){var s=window.document.currentScript,r=s&&s.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var i=n("19dc"),a=n("8bbf"),o=["title"],l=["onClick"],c={key:0,class:"addCapability"},d={class:"ui-confirm confirmCapabilityToggle modal",ref:"confirmCapabilityToggleModal"},u={class:"modal-content"},m=["innerHTML"],b=["innerHTML"],p={class:"modal-footer"};function g(e,t,n,s,r,i){var g=Object(a["resolveComponent"])("Field");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["capabilitiesEdit",{busy:e.isBusy}])},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.actualCapabilities,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:t.id,class:"chip"},[Object(a["createElementVNode"])("span",{class:"capability-name",title:"".concat(t.description," ").concat(e.isIncludedInRole(t)?"<br/><br/>".concat(e.translate("UsersManager_IncludedInUsersRole")):"")},Object(a["toDisplayString"])(t.category)+": "+Object(a["toDisplayString"])(t.name),9,o),e.isIncludedInRole(t)?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",{key:0,class:"icon-close",onClick:function(n){e.capabilityToRemoveId=t.id,e.onToggleCapability(!1)}},null,8,l))])})),128)),e.availableCapabilitiesGrouped.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",c,[Object(a["createVNode"])(g,{"model-value":e.capabilityToAddId,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.capabilityToAddId=t,e.onToggleCapability(!0)}),disabled:e.isBusy,uicontrol:"expandable-select",name:"add_capability","full-width":!0,options:e.availableCapabilitiesGrouped},null,8,["model-value","disabled","options"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",d,[Object(a["createElementVNode"])("div",u,[e.isAddingCapability?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",{key:0,innerHTML:e.$sanitize(e.confirmAddCapabilityToggleContent)},null,8,m)):Object(a["createCommentVNode"])("",!0),e.isAddingCapability?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",{key:1,innerHTML:e.$sanitize(e.confirmCapabilityToggleContent)},null,8,b))]),Object(a["createElementVNode"])("div",p,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.toggleCapability()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){e.capabilityToAddOrRemove=null,e.capabilityToAddId=null,e.capabilityToRemoveId=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var h=n("a5a2");function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function O(e,t){for(var n=0;n<t.length;n++){var s=t[n];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function j(e,t,n){return t&&O(e.prototype,t),n&&O(e,n),e}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
+(function(e,t){"object"===typeof exports&&"object"===typeof module?module.exports=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):"function"===typeof define&&define.amd?define(["CoreHome",,"CorePluginsAdmin"],t):"object"===typeof exports?exports["UsersManager"]=t(require("CoreHome"),require("vue"),require("CorePluginsAdmin")):e["UsersManager"]=t(e["CoreHome"],e["Vue"],e["CorePluginsAdmin"])})("undefined"!==typeof self?self:this,(function(e,t,n){return function(e){var t={};function n(s){if(t[s])return t[s].exports;var r=t[s]={i:s,l:!1,exports:{}};return e[s].call(r.exports,r,r.exports,n),r.l=!0,r.exports}return n.m=e,n.c=t,n.d=function(e,t,s){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:s})},n.r=function(e){"undefined"!==typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"===typeof e&&e&&e.__esModule)return e;var s=Object.create(null);if(n.r(s),Object.defineProperty(s,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var r in e)n.d(s,r,function(t){return e[t]}.bind(null,r));return s},n.n=function(e){var t=e&&e.__esModule?function(){return e["default"]}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="plugins/UsersManager/vue/dist/",n(n.s="fae3")}({"19dc":function(t,n){t.exports=e},"8bbf":function(e,n){e.exports=t},a5a2:function(e,t){e.exports=n},fae3:function(e,t,n){"use strict";if(n.r(t),n.d(t,"CapabilitiesEdit",(function(){return E})),n.d(t,"UserPermissionsEdit",(function(){return He})),n.d(t,"UserEditForm",(function(){return vt})),n.d(t,"PagedUsersList",(function(){return Hn})),n.d(t,"UsersManager",(function(){return ds})),n.d(t,"NewsletterSettings",(function(){return hs})),n.d(t,"AnonymousSettings",(function(){return js})),n.d(t,"PersonalSettings",(function(){return Ms})),"undefined"!==typeof window){var s=window.document.currentScript,r=s&&s.src.match(/(.+\/)[^/]+\.js(\?.*)?$/);r&&(n.p=r[1])}var i=n("19dc"),a=n("8bbf"),o=["title"],l=["onClick"],c={key:0,class:"addCapability"},d={class:"ui-confirm confirmCapabilityToggle modal",ref:"confirmCapabilityToggleModal"},u={class:"modal-content"},m=["innerHTML"],b=["innerHTML"],p={class:"modal-footer"};function h(e,t,n,s,r,i){var h=Object(a["resolveComponent"])("Field");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["capabilitiesEdit",{busy:e.isBusy}])},[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.actualCapabilities,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{key:t.id,class:"chip"},[Object(a["createElementVNode"])("span",{class:"capability-name",title:"".concat(t.description," ").concat(e.isIncludedInRole(t)?"<br/><br/>".concat(e.translate("UsersManager_IncludedInUsersRole")):"")},Object(a["toDisplayString"])(t.category)+": "+Object(a["toDisplayString"])(t.name),9,o),e.isIncludedInRole(t)?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",{key:0,class:"icon-close",onClick:function(n){e.capabilityToRemoveId=t.id,e.onToggleCapability(!1)}},null,8,l))])})),128)),e.availableCapabilitiesGrouped.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",c,[Object(a["createVNode"])(h,{"model-value":e.capabilityToAddId,"onUpdate:modelValue":t[0]||(t[0]=function(t){e.capabilityToAddId=t,e.onToggleCapability(!0)}),disabled:e.isBusy,uicontrol:"expandable-select",name:"add_capability","full-width":!0,options:e.availableCapabilitiesGrouped},null,8,["model-value","disabled","options"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",d,[Object(a["createElementVNode"])("div",u,[e.isAddingCapability?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",{key:0,innerHTML:e.$sanitize(e.confirmAddCapabilityToggleContent)},null,8,m)):Object(a["createCommentVNode"])("",!0),e.isAddingCapability?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("h2",{key:1,innerHTML:e.$sanitize(e.confirmCapabilityToggleContent)},null,8,b))]),Object(a["createElementVNode"])("div",p,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.toggleCapability()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){e.capabilityToAddOrRemove=null,e.capabilityToAddId=null,e.capabilityToRemoveId=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var g=n("a5a2");function f(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function O(e,t){for(var n=0;n<t.length;n++){var s=t[n];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,s.key,s)}}function j(e,t,n){return t&&O(e.prototype,t),n&&O(e,n),e}function v(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */var C=function(){function e(){var t=this;f(this,e),v(this,"privateState",Object(a["reactive"])({isLoading:!1,capabilities:[]})),v(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),v(this,"capabilities",Object(a["computed"])((function(){return t.state.value.capabilities}))),v(this,"isLoading",Object(a["computed"])((function(){return t.state.value.isLoading}))),v(this,"fetchPromise",void 0)}return j(e,[{key:"init",value:function(){return this.fetchCapabilities()}},{key:"fetchCapabilities",value:function(){var e=this;return this.fetchPromise||(this.privateState.isLoading=!0,this.fetchPromise=i["AjaxHelper"].fetch({method:"UsersManager.getAvailableCapabilities"}).then((function(t){return e.privateState.capabilities=t,e.capabilities.value})).finally((function(){e.privateState.isLoading=!1}))),this.fetchPromise}}]),e}(),S=new C,N=window,U=N.$,y=Object(a["defineComponent"])({props:{idsite:[String,Number],siteName:{type:String,required:!0},userLogin:{type:String,required:!0},userRole:{type:String,required:!0},capabilities:Array},components:{Field:h["Field"]},data:function(){return{theCapabilities:this.capabilities||[],isBusy:!1,isAddingCapability:!1,capabilityToAddId:null,capabilityToRemoveId:null,capabilityToAddOrRemove:null}},emits:["change"],watch:{capabilities:function(e){e&&(this.theCapabilities=e)}},created:function(){var e=this;S.init(),this.capabilities?this.theCapabilities=this.capabilities:(this.isBusy=!0,i["AjaxHelper"].fetch({method:"UsersManager.getUsersPlusRole",limit:"1",filter_search:this.userLogin}).then((function(e){return e&&e.capabilities?e.capabilities:[]})).then((function(t){e.theCapabilities=t})).finally((function(){e.isBusy=!1})))},methods:{onToggleCapability:function(e){var t=this;this.isAddingCapability=e;var n=e?this.capabilityToAddId:this.capabilityToRemoveId;this.capabilityToAddOrRemove=null,this.availableCapabilities.forEach((function(e){e.id===n&&(t.capabilityToAddOrRemove=e)})),this.$refs.confirmCapabilityToggleModal&&U(this.$refs.confirmCapabilityToggleModal).modal({dismissible:!1,yes:function(){return null}}).modal("open")},toggleCapability:function(){this.isAddingCapability?this.addCapability(this.capabilityToAddOrRemove):this.removeCapability(this.capabilityToAddOrRemove)},isIncludedInRole:function(e){return-1!==(e.includedInRoles||[]).indexOf(this.userRole)},getCapabilitiesList:function(){var e=this,t=[];return this.availableCapabilities.forEach((function(n){e.isIncludedInRole(n)||e.capabilitiesSet[n.id]&&t.push(n.id)})),t},addCapability:function(e){var t=this;this.isBusy=!0,i["AjaxHelper"].post({method:"UsersManager.addCapabilities"},{userLogin:this.userLogin,capabilities:e.id,idSites:this.idsite}).then((function(){t.$emit("change",t.getCapabilitiesList())})).finally((function(){t.isBusy=!1,t.capabilityToAddOrRemove=null,t.capabilityToAddId=null,t.capabilityToRemoveId=null}))},removeCapability:function(e){var t=this;this.isBusy=!0,i["AjaxHelper"].post({method:"UsersManager.removeCapabilities"},{userLogin:this.userLogin,capabilities:e.id,idSites:this.idsite}).then((function(){t.$emit("change",t.getCapabilitiesList())})).finally((function(){t.isBusy=!1,t.capabilityToAddOrRemove=null,t.capabilityToAddId=null,t.capabilityToRemoveId=null}))}},computed:{availableCapabilities:function(){return S.capabilities.value},confirmAddCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureAddCapability","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"","</strong>"),"<strong>".concat(this.siteNameText,"</strong>"))},confirmCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureRemoveCapability","<strong>".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"","</strong>"),"<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteNameText,"</strong>"))},siteNameText:function(){return i["Matomo"].helper.htmlEntities(this.siteName)},availableCapabilitiesGrouped:function(){var e=this,t=this.availableCapabilities.filter((function(t){return!e.capabilitiesSet[t.id]})).map((function(e){return{group:e.category,key:e.id,value:e.name,tooltip:e.description}}));return t.sort((function(e,t){return e.group===t.group?e.value===t.value?0:e.value<t.value?-1:1:e.group<t.group?-1:1})),t},capabilitiesSet:function(){var e=this,t={},n=this.theCapabilities;return(n||[]).forEach((function(e){t[e]=!0})),(this.availableCapabilities||[]).forEach((function(n){e.isIncludedInRole(n)&&(t[n.id]=!0)})),t},actualCapabilities:function(){var e=this.capabilitiesSet;return this.availableCapabilities.filter((function(t){return!!e[t.id]}))}}});y.render=g;var V=y,E=(Object(i["createAngularJsAdapter"])({component:V,scope:{idsite:{angularJsBind:"<"},siteName:{angularJsBind:"<"},userLogin:{angularJsBind:"<"},userRole:{angularJsBind:"<"},capabilities:{angularJsBind:"<"},onCapabilitiesChange:{angularJsBind:"&",vue:"change"}},directiveName:"piwikCapabilitiesEdit",restrict:"E",$inject:["$timeout"],events:{change:function(e,t,n,s,r,i,a){a((function(){n.onCapabilitiesChange&&n.onCapabilitiesChange.call({capabilities:e})}))}}}),{key:0,class:"row"}),k={class:"row to-all-websites"},A={class:"col s12"},w={style:{"margin-right":"3.5px"}},T={id:"all-sites-access-select",style:{"margin-right":"3.5px"}},B={style:{"margin-top":"18px"}},D={class:"filters row"},_={class:"col s12 m12 l8"},L={class:"input-field bulk-actions",style:{"margin-right":"3.5px"}},R={id:"user-permissions-edit-bulk-actions",class:"dropdown-content"},x={class:"dropdown-trigger","data-target":"user-permissions-bulk-set-access"},P={id:"user-permissions-bulk-set-access",class:"dropdown-content"},F=["onClick"],H={class:"input-field site-filter",style:{"margin-right":"3.5px"}},I=["value","placeholder"],J={class:"input-field access-filter",style:{"margin-right":"3.5px"}},q={key:0,class:"col s12 m12 l4 sites-for-permission-pagination-container"},G={class:"sites-for-permission-pagination"},$={class:"counter"},W=["textContent"],z={class:"roles-help-notification"},Y=["innerHTML"],X={class:"capabilities-help-notification"},K={id:"sitesForPermission"},Q={class:"select-cell"},Z={class:"checkbox-container"},ee=["checked"],te=Object(a["createElementVNode"])("span",null,null,-1),ne={class:"role_header"},se=["innerHTML"],re=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),ie=[re],ae={class:"capabilities_header"},oe=["innerHTML"],le=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),ce=[le],de={key:0,class:"select-all-row"},ue={colspan:"4"},me={key:0},be=["innerHTML"],pe=["innerHTML"],ge={key:1},he=["innerHTML"],fe=["innerHTML"],Oe={class:"select-cell"},je={class:"checkbox-container"},ve=["id","onUpdate:modelValue"],Ce=Object(a["createElementVNode"])("span",null,null,-1),Se={class:"role-select"},Ne={class:"delete-access-confirm-modal modal",ref:"deleteAccessConfirmModal"},Ue={class:"modal-content"},ye=["innerHTML"],Ve=["innerHTML"],Ee={class:"modal-footer"},ke={class:"change-access-confirm-modal modal",ref:"changeAccessConfirmModal"},Ae={class:"modal-content"},we=["innerHTML"],Te=["innerHTML"],Me={class:"modal-footer"},Be={class:"confirm-give-access-all-sites modal",ref:"confirmGiveAccessAllSitesModal"},De={class:"modal-content"},_e=["innerHTML"],Le={class:"modal-footer"};
+ */var C=function(){function e(){var t=this;f(this,e),v(this,"privateState",Object(a["reactive"])({isLoading:!1,capabilities:[]})),v(this,"state",Object(a["computed"])((function(){return Object(a["readonly"])(t.privateState)}))),v(this,"capabilities",Object(a["computed"])((function(){return t.state.value.capabilities}))),v(this,"isLoading",Object(a["computed"])((function(){return t.state.value.isLoading}))),v(this,"fetchPromise",void 0)}return j(e,[{key:"init",value:function(){return this.fetchCapabilities()}},{key:"fetchCapabilities",value:function(){var e=this;return this.fetchPromise||(this.privateState.isLoading=!0,this.fetchPromise=i["AjaxHelper"].fetch({method:"UsersManager.getAvailableCapabilities"}).then((function(t){return e.privateState.capabilities=t,e.capabilities.value})).finally((function(){e.privateState.isLoading=!1}))),this.fetchPromise}}]),e}(),S=new C,N=window,U=N.$,y=Object(a["defineComponent"])({props:{idsite:[String,Number],siteName:{type:String,required:!0},userLogin:{type:String,required:!0},userRole:{type:String,required:!0},capabilities:Array},components:{Field:g["Field"]},data:function(){return{theCapabilities:this.capabilities||[],isBusy:!1,isAddingCapability:!1,capabilityToAddId:null,capabilityToRemoveId:null,capabilityToAddOrRemove:null}},emits:["change"],watch:{capabilities:function(e){e&&(this.theCapabilities=e)}},created:function(){var e=this;S.init(),this.capabilities?this.theCapabilities=this.capabilities:(this.isBusy=!0,i["AjaxHelper"].fetch({method:"UsersManager.getUsersPlusRole",limit:"1",filter_search:this.userLogin}).then((function(e){return e&&e.capabilities?e.capabilities:[]})).then((function(t){e.theCapabilities=t})).finally((function(){e.isBusy=!1})))},methods:{onToggleCapability:function(e){var t=this;this.isAddingCapability=e;var n=e?this.capabilityToAddId:this.capabilityToRemoveId;this.capabilityToAddOrRemove=null,this.availableCapabilities.forEach((function(e){e.id===n&&(t.capabilityToAddOrRemove=e)})),this.$refs.confirmCapabilityToggleModal&&U(this.$refs.confirmCapabilityToggleModal).modal({dismissible:!1,yes:function(){return null}}).modal("open")},toggleCapability:function(){this.isAddingCapability?this.addCapability(this.capabilityToAddOrRemove):this.removeCapability(this.capabilityToAddOrRemove)},isIncludedInRole:function(e){return-1!==(e.includedInRoles||[]).indexOf(this.userRole)},getCapabilitiesList:function(){var e=this,t=[];return this.availableCapabilities.forEach((function(n){e.isIncludedInRole(n)||e.capabilitiesSet[n.id]&&t.push(n.id)})),t},addCapability:function(e){var t=this;this.isBusy=!0,i["AjaxHelper"].post({method:"UsersManager.addCapabilities"},{userLogin:this.userLogin,capabilities:e.id,idSites:this.idsite}).then((function(){t.$emit("change",t.getCapabilitiesList())})).finally((function(){t.isBusy=!1,t.capabilityToAddOrRemove=null,t.capabilityToAddId=null,t.capabilityToRemoveId=null}))},removeCapability:function(e){var t=this;this.isBusy=!0,i["AjaxHelper"].post({method:"UsersManager.removeCapabilities"},{userLogin:this.userLogin,capabilities:e.id,idSites:this.idsite}).then((function(){t.$emit("change",t.getCapabilitiesList())})).finally((function(){t.isBusy=!1,t.capabilityToAddOrRemove=null,t.capabilityToAddId=null,t.capabilityToRemoveId=null}))}},computed:{availableCapabilities:function(){return S.capabilities.value},confirmAddCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureAddCapability","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"","</strong>"),"<strong>".concat(this.siteNameText,"</strong>"))},confirmCapabilityToggleContent:function(){return Object(i["translate"])("UsersManager_AreYouSureRemoveCapability","<strong>".concat(this.capabilityToAddOrRemove?this.capabilityToAddOrRemove.name:"","</strong>"),"<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteNameText,"</strong>"))},siteNameText:function(){return i["Matomo"].helper.htmlEntities(this.siteName)},availableCapabilitiesGrouped:function(){var e=this,t=this.availableCapabilities.filter((function(t){return!e.capabilitiesSet[t.id]})).map((function(e){return{group:e.category,key:e.id,value:e.name,tooltip:e.description}}));return t.sort((function(e,t){return e.group===t.group?e.value===t.value?0:e.value<t.value?-1:1:e.group<t.group?-1:1})),t},capabilitiesSet:function(){var e=this,t={},n=this.theCapabilities;return(n||[]).forEach((function(e){t[e]=!0})),(this.availableCapabilities||[]).forEach((function(n){e.isIncludedInRole(n)&&(t[n.id]=!0)})),t},actualCapabilities:function(){var e=this.capabilitiesSet;return this.availableCapabilities.filter((function(t){return!!e[t.id]}))}}});y.render=h;var E=y,V=(Object(i["createAngularJsAdapter"])({component:E,scope:{idsite:{angularJsBind:"<"},siteName:{angularJsBind:"<"},userLogin:{angularJsBind:"<"},userRole:{angularJsBind:"<"},capabilities:{angularJsBind:"<"},onCapabilitiesChange:{angularJsBind:"&",vue:"change"}},directiveName:"piwikCapabilitiesEdit",restrict:"E",$inject:["$timeout"],events:{change:function(e,t,n,s,r,i,a){a((function(){n.onCapabilitiesChange&&n.onCapabilitiesChange.call({capabilities:e})}))}}}),{key:0,class:"row"}),k={class:"row to-all-websites"},A={class:"col s12"},w={style:{"margin-right":"3.5px"}},T={id:"all-sites-access-select",style:{"margin-right":"3.5px"}},B={style:{"margin-top":"18px"}},D={class:"filters row"},_={class:"col s12 m12 l8"},L={class:"input-field bulk-actions",style:{"margin-right":"3.5px"}},R={id:"user-permissions-edit-bulk-actions",class:"dropdown-content"},x={class:"dropdown-trigger","data-target":"user-permissions-bulk-set-access"},P={id:"user-permissions-bulk-set-access",class:"dropdown-content"},F=["onClick"],H={class:"input-field site-filter",style:{"margin-right":"3.5px"}},I=["value","placeholder"],J={class:"input-field access-filter",style:{"margin-right":"3.5px"}},q={key:0,class:"col s12 m12 l4 sites-for-permission-pagination-container"},$={class:"sites-for-permission-pagination"},G={class:"counter"},z=["textContent"],W={class:"roles-help-notification"},Y=["innerHTML"],X={class:"capabilities-help-notification"},K={id:"sitesForPermission"},Q={class:"select-cell"},Z={class:"checkbox-container"},ee=["checked"],te=Object(a["createElementVNode"])("span",null,null,-1),ne={class:"role_header"},se=["innerHTML"],re=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),ie=[re],ae={class:"capabilities_header"},oe=["innerHTML"],le=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),ce=[le],de={key:0,class:"select-all-row"},ue={colspan:"4"},me={key:0},be=["innerHTML"],pe=["innerHTML"],he={key:1},ge=["innerHTML"],fe=["innerHTML"],Oe={class:"select-cell"},je={class:"checkbox-container"},ve=["id","onUpdate:modelValue"],Ce=Object(a["createElementVNode"])("span",null,null,-1),Se={class:"role-select"},Ne={class:"delete-access-confirm-modal modal",ref:"deleteAccessConfirmModal"},Ue={class:"modal-content"},ye=["innerHTML"],Ee=["innerHTML"],Ve={class:"modal-footer"},ke={class:"change-access-confirm-modal modal",ref:"changeAccessConfirmModal"},Ae={class:"modal-content"},we=["innerHTML"],Te=["innerHTML"],Me={class:"modal-footer"},Be={class:"confirm-give-access-all-sites modal",ref:"confirmGiveAccessAllSitesModal"},De={class:"modal-content"},_e=["innerHTML"],Le={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Re(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Notification"),l=Object(a["resolveComponent"])("Field"),c=Object(a["resolveComponent"])("CapabilitiesEdit"),d=Object(a["resolveDirective"])("dropdown-menu"),u=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["userPermissionsEdit",{loading:e.isLoadingAccess}])},[e.hasAccessToAtLeastOneSite?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",E,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{context:"warning",type:"transient",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("General_Warning"))+":",1),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("UsersManager_NoAccessWarning")),1)]})),_:1})])])),Object(a["createElementVNode"])("div",k,[Object(a["createElementVNode"])("div",A,[Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("span",w,Object(a["toDisplayString"])(e.translate("UsersManager_GiveAccessToAll"))+":",1),Object(a["createElementVNode"])("div",T,[Object(a["createVNode"])(l,{modelValue:e.allWebsitesAccssLevelSet,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.allWebsitesAccssLevelSet=t}),uicontrol:"select",options:e.filteredAccessLevels,"full-width":!0},null,8,["modelValue","options"])]),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["btn",{disabled:e.isGivingAccessToAllSites}]),onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.showChangeAccessAllSitesModal()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Apply")),3)]),Object(a["createElementVNode"])("p",B,Object(a["toDisplayString"])(e.translate("UsersManager_OrManageIndividually"))+":",1)])]),Object(a["createElementVNode"])("div",D,[Object(a["createElementVNode"])("div",_,[Object(a["createElementVNode"])("div",L,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["dropdown-trigger btn",{disabled:e.isBulkActionsDisabled}]),href:"","data-target":"user-permissions-edit-bulk-actions"},[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_BulkActions")),1)],2),[[d,{activates:"#user-permissions-edit-bulk-actions"}]]),Object(a["createElementVNode"])("ul",R,[Object(a["createElementVNode"])("li",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",x,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_SetPermission")),1)],512),[[d,{activates:"#user-permissions-bulk-set-access"}]]),Object(a["createElementVNode"])("ul",P,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.filteredAccessLevels,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.key},[Object(a["createElementVNode"])("a",{href:"",onClick:Object(a["withModifiers"])((function(n){e.siteAccessToChange=null,e.roleToChangeTo=t.key,e.showChangeAccessConfirm()}),["prevent"])},Object(a["toDisplayString"])(t.value),9,F)])})),128))])]),Object(a["createElementVNode"])("li",null,[Object(a["createElementVNode"])("a",{href:"",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){e.siteAccessToChange=null,e.roleToChangeTo="noaccess",e.showRemoveAccessConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_RemovePermissions")),1)])])]),Object(a["createElementVNode"])("div",H,[Object(a["createElementVNode"])("input",{type:"text",value:e.siteNameFilter,onKeydown:t[3]||(t[3]=function(t){e.onChangeSiteFilter(t)}),onChange:t[4]||(t[4]=function(t){e.onChangeSiteFilter(t)}),placeholder:e.translate("UsersManager_FilterByWebsite")},null,40,I)]),Object(a["createElementVNode"])("div",J,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(l,{modelValue:e.accessLevelFilter,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.accessLevelFilter=t}),uicontrol:"select",options:e.filteredSelectAccessLevels,"full-width":!0,placeholder:e.translate("UsersManager_FilterByAccess")},null,8,["modelValue","options","placeholder"])])])]),e.totalEntries>e.limit?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",q,[Object(a["createElementVNode"])("div",G,[Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["prev",{disabled:e.offset<=0}])},[Object(a["createElementVNode"])("span",{class:"pointer",onClick:t[6]||(t[6]=function(t){return e.gotoPreviousPage()})},"« "+Object(a["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(a["createElementVNode"])("span",$,[Object(a["createElementVNode"])("span",{textContent:Object(a["toDisplayString"])(e.paginationText)},null,8,W)]),Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["next",{disabled:e.offset+e.limit>=e.totalEntries}])},[Object(a["createElementVNode"])("span",{class:"pointer",onClick:t[7]||(t[7]=function(t){return e.gotoNextPage()})},Object(a["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",z,[e.isRoleHelpToggled?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.rolesHelpText)},null,8,Y)]})),_:1})):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",X,[e.isCapabilitiesHelpToggled?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("UsersManager_CapabilitiesHelp")),1)]})),_:1})):Object(a["createCommentVNode"])("",!0)]),Object(a["withDirectives"])(Object(a["createElementVNode"])("table",K,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",Q,[Object(a["createElementVNode"])("span",Z,[Object(a["createElementVNode"])("label",null,[Object(a["createElementVNode"])("input",{type:"checkbox",id:"perm_edit_select_all",checked:e.isAllCheckboxSelected,onChange:t[8]||(t[8]=function(t){return e.onAllCheckboxChange(t)})},null,40,ee),te])])]),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Name")),1),Object(a["createElementVNode"])("th",ne,[Object(a["createElementVNode"])("span",{innerHTML:"".concat(e.translate("UsersManager_Role")," ")},null,8,se),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},ie,2)]),Object(a["createElementVNode"])("th",ae,[Object(a["createElementVNode"])("span",{innerHTML:"".concat(e.translate("UsersManager_Capabilities")," ")},null,8,oe),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isCapabilitiesHelpToggled}]),onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.isCapabilitiesHelpToggled=!e.isCapabilitiesHelpToggled}),["prevent"]))},ce,2)])])]),Object(a["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.siteAccess.length<e.totalEntries?(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",de,[Object(a["createElementVNode"])("td",ue,[e.areAllResultsSelected?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",me,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.theDisplayedWebsitesAreSelectedText),style:{"margin-right":"3.5px"}},null,8,be),Object(a["createElementVNode"])("a",{href:"#",onClick:t[11]||(t[11]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.clickToSelectAllText)},null,8,pe)])),e.areAllResultsSelected?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ge,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.allWebsitesAreSelectedText),style:{"margin-right":"3.5px"}},null,8,he),Object(a["createElementVNode"])("a",{href:"#",onClick:t[12]||(t[12]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.clickToSelectDisplayedWebsitesText)},null,8,fe)])):Object(a["createCommentVNode"])("",!0)])])):Object(a["createCommentVNode"])("",!0),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.siteAccess,(function(n,s){return Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{key:n.idsite},[Object(a["createElementVNode"])("td",Oe,[Object(a["createElementVNode"])("span",je,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"perm_edit_select_row".concat(s),"onUpdate:modelValue":function(t){return e.selectedRows[s]=t},onClick:t[13]||(t[13]=function(t){return e.onRowSelected()})},null,8,ve),[[a["vModelCheckbox"],e.selectedRows[s]]]),Ce])])]),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(n.site_name),1)]),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("div",Se,[Object(a["createVNode"])(l,{"model-value":n.role,"onUpdate:modelValue":function(t){e.onRoleChange(n,t)},uicontrol:"select",options:e.filteredAccessLevels,"full-width":!0},null,8,["model-value","onUpdate:modelValue","options"])])]),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(c,{idsite:n.idsite,"site-name":n.site_name,"user-login":e.userLogin,"user-role":n.role,capabilities:n.capabilities,onChange:t[14]||(t[14]=function(t){return e.fetchAccess()})},null,8,["idsite","site-name","user-login","user-role","capabilities"])])])])})),128))])],512),[[u]]),Object(a["createElementVNode"])("div",Ne,[Object(a["createElementVNode"])("div",Ue,[e.siteAccessToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.deletePermConfirmSingleText)},null,8,ye)):Object(a["createCommentVNode"])("",!0),e.siteAccessToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:1,innerHTML:e.$sanitize(e.deletePermConfirmMultipleText)},null,8,Ve))]),Object(a["createElementVNode"])("div",Ee,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[15]||(t[15]=Object(a["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){e.siteAccessToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",ke,[Object(a["createElementVNode"])("div",Ae,[e.siteAccessToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.changePermToSiteConfirmSingleText)},null,8,we)):Object(a["createCommentVNode"])("",!0),e.siteAccessToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:1,innerHTML:e.$sanitize(e.changePermToSiteConfirmMultipleText)},null,8,Te))]),Object(a["createElementVNode"])("div",Me,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[17]||(t[17]=Object(a["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[18]||(t[18]=Object(a["withModifiers"])((function(t){e.siteAccessToChange.role=e.previousRole,e.siteAccessToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",Be,[Object(a["createElementVNode"])("div",De,[Object(a["createElementVNode"])("h3",{innerHTML:e.$sanitize(e.changePermToAllSitesConfirmText)},null,8,_e),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ChangePermToAllSitesConfirm2")),1)]),Object(a["createElementVNode"])("div",Le,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[19]||(t[19]=Object(a["withModifiers"])((function(t){return e.giveAccessToAllSites()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[20]||(t[20]=function(e){return e.preventDefault()})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var xe=window,Pe=xe.$,Fe=Object(a["defineComponent"])({props:{userLogin:{type:String,required:!0},limit:{type:Number,default:10},accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0}},components:{Notification:i["Notification"],Field:h["Field"],CapabilitiesEdit:V},directives:{DropdownMenu:i["DropdownMenu"],ContentTable:i["ContentTable"]},data:function(){return{siteAccess:[],offset:0,totalEntries:null,accessLevelFilter:"",siteNameFilter:"",isLoadingAccess:!1,allWebsitesAccssLevelSet:"view",isAllCheckboxSelected:!1,selectedRows:{},isBulkActionsDisabled:!0,areAllResultsSelected:!1,previousRole:null,hasAccessToAtLeastOneSite:!0,isRoleHelpToggled:!1,isCapabilitiesHelpToggled:!1,isGivingAccessToAllSites:!1,roleToChangeTo:null,siteAccessToChange:null}},emits:["userHasAccessDetected","accessChanged"],created:function(){var e=this;this.onChangeSiteFilter=Object(i["debounce"])(this.onChangeSiteFilter,300),Object(a["watch"])((function(){return e.allPropsWatch}),(function(){e.limit&&e.fetchAccess()})),this.fetchAccess()},watch:{accessLevelFilter:function(){this.offset=0,this.fetchAccess()}},methods:{onAllCheckboxChange:function(e){var t=this;this.isAllCheckboxSelected=e.target.checked,this.isAllCheckboxSelected?(this.siteAccess.forEach((function(e,n){t.selectedRows[n]=!0})),this.isBulkActionsDisabled=!1):this.clearSelection()},clearSelection:function(){this.selectedRows={},this.areAllResultsSelected=!1,this.isBulkActionsDisabled=!0,this.isAllCheckboxSelected=!1,this.siteAccessToChange=null},onRowSelected:function(){var e=this;setTimeout((function(){var t=e.selectedRowsCount;e.isBulkActionsDisabled=0===t,e.isAllCheckboxSelected=t===e.siteAccess.length}))},fetchAccess:function(){var e=this;return this.isLoadingAccess=!0,i["AjaxHelper"].fetch({method:"UsersManager.getSitesAccessForUser",limit:this.limit,offset:this.offset,filter_search:this.siteNameFilter,filter_access:this.accessLevelFilter,userLogin:this.userLogin},{returnResponseObject:!0}).then((function(t){var n=t.getRequestHandle();e.isLoadingAccess=!1,e.siteAccess=n.responseJSON,e.totalEntries=parseInt(n.getResponseHeader("x-matomo-total-results"),10)||0,e.hasAccessToAtLeastOneSite=!!n.getResponseHeader("x-matomo-has-some"),e.$emit("userHasAccessDetected",{hasAccess:e.hasAccessToAtLeastOneSite}),e.clearSelection()})).catch((function(){e.isLoadingAccess=!1,e.clearSelection()}))},gotoPreviousPage:function(){this.offset=Math.max(0,this.offset-this.limit),this.fetchAccess()},gotoNextPage:function(){var e=this.offset+this.limit;e>=(this.totalEntries||0)||(this.offset=e,this.fetchAccess())},showRemoveAccessConfirm:function(){Pe(this.$refs.deleteAccessConfirmModal).modal({dismissible:!1}).modal("open")},changeUserRole:function(){var e=this,t=function(){var t=[];return Object.keys(e.selectedRows).forEach((function(n){e.selectedRows[n]&&e.siteAccess[n]&&t.push(e.siteAccess[n].idsite)})),t},n=function(){return i["AjaxHelper"].fetch({method:"UsersManager.getSitesAccessForUser",filter_search:e.siteNameFilter,filter_access:e.accessLevelFilter,userLogin:e.userLogin,filter_limit:"-1"}).then((function(e){return e.map((function(e){return e.idsite}))}))};return this.isLoadingAccess=!0,Promise.resolve().then((function(){return e.siteAccessToChange?[e.siteAccessToChange.idsite]:e.areAllResultsSelected?n():t()})).then((function(t){return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:e.userLogin,access:e.roleToChangeTo,idSites:t})})).catch((function(){})).then((function(){return e.$emit("accessChanged"),e.fetchAccess()}))},showChangeAccessConfirm:function(){Pe(this.$refs.changeAccessConfirmModal).modal({dismissible:!1}).modal("open")},getRoleDisplay:function(e){var t=null;return this.filteredAccessLevels.forEach((function(n){n.key===e&&(t=n.value)})),t},giveAccessToAllSites:function(){var e=this;this.isGivingAccessToAllSites=!0,i["AjaxHelper"].fetch({method:"SitesManager.getSitesWithAdminAccess"}).then((function(t){var n=t.map((function(e){return e.idsite}));return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:e.userLogin,access:e.allWebsitesAccssLevelSet,idSites:n})})).then((function(){return e.fetchAccess()})).finally((function(){e.isGivingAccessToAllSites=!1}))},showChangeAccessAllSitesModal:function(){Pe(this.$refs.confirmGiveAccessAllSitesModal).modal({dismissible:!1}).modal("open")},onChangeSiteFilter:function(e){var t=this;setTimeout((function(){var n=e.target.value;t.siteNameFilter!==n&&(t.siteNameFilter=n,t.offset=0,t.fetchAccess())}))},onRoleChange:function(e,t){this.previousRole=e.role,this.roleToChangeTo=t,this.siteAccessToChange=e,this.showChangeAccessConfirm()}},computed:{rolesHelpText:function(){return Object(i["translate"])("UsersManager_RolesHelp",'<a href="https://matomo.org/faq/general/faq_70/" target="_blank" rel="noreferrer noopener">',"</a>",'<a href="https://matomo.org/faq/general/faq_69/" target="_blank" rel="noreferrer noopener">',"</a>")},theDisplayedWebsitesAreSelectedText:function(){var e=Object(i["translate"])("UsersManager_TheDisplayedWebsitesAreSelected","<strong>".concat(this.siteAccess.length,"</strong>"));return"".concat(e," ")},clickToSelectAllText:function(){return Object(i["translate"])("UsersManager_ClickToSelectAll","<strong>".concat(this.totalEntries,"</strong>"))},allWebsitesAreSelectedText:function(){return Object(i["translate"])("UsersManager_AllWebsitesAreSelected","<strong>".concat(this.totalEntries,"</strong>"))},clickToSelectDisplayedWebsitesText:function(){return Object(i["translate"])("UsersManager_ClickToSelectDisplayedWebsites","<strong>".concat(this.siteAccess.length,"</strong>"))},deletePermConfirmSingleText:function(){return Object(i["translate"])("UsersManager_DeletePermConfirmSingle","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteAccessToChangeName,"</strong>"))},deletePermConfirmMultipleText:function(){return Object(i["translate"])("UsersManager_DeletePermConfirmMultiple","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.affectedSitesCount,"</strong>"))},changePermToSiteConfirmSingleText:function(){return Object(i["translate"])("UsersManager_ChangePermToSiteConfirmSingle","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteAccessToChangeName,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"))},changePermToSiteConfirmMultipleText:function(){return Object(i["translate"])("UsersManager_ChangePermToSiteConfirmMultiple","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.affectedSitesCount,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"))},changePermToAllSitesConfirmText:function(){return Object(i["translate"])("UsersManager_ChangePermToAllSitesConfirm","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.allWebsitesAccssLevelSet),"</strong>"))},paginationLowerBound:function(){return this.offset+1},paginationUpperBound:function(){return this.totalEntries?Math.min(this.offset+this.limit,this.totalEntries):"?"},filteredAccessLevels:function(){return this.accessLevels.filter((function(e){return"superuser"!==e.key}))},filteredSelectAccessLevels:function(){return this.filterAccessLevels.filter((function(e){return"superuser"!==e.key}))},selectedRowsCount:function(){var e=0;return Object.values(this.selectedRows).forEach((function(t){t&&(e+=1)})),e},affectedSitesCount:function(){return this.areAllResultsSelected?this.totalEntries:this.selectedRowsCount},allPropsWatch:function(){return this.userLogin,this.limit,this.accessLevels,this.filterAccessLevels,Date.now()},siteAccessToChangeName:function(){return this.siteAccessToChange?i["Matomo"].helper.htmlEntities(this.siteAccessToChange.site_name):""},paginationText:function(){var e=Object(i["translate"])("General_Pagination","".concat(this.paginationLowerBound),"".concat(this.paginationUpperBound),"".concat(this.totalEntries));return" ".concat(e," ")}}});Fe.render=Re;var He=Fe,Ie=(Object(i["createAngularJsAdapter"])({component:He,scope:{userLogin:{angularJsBind:"<"},limit:{angularJsBind:"<"},onUserHasAccessDetected:{angularJsBind:"&",vue:"userHasAccessDetected"},onAccessChange:{angularJsBind:"&",vue:"accessChanged"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"}},directiveName:"piwikUserPermissionsEdit",restrict:"E"}),{class:"row"}),Je={key:0,class:"col m2 entityList"},qe={class:"listCircle"},Ge={key:0,class:"icon-warning"},$e=Object(a["createElementVNode"])("div",{class:"save-button-spacer hide-on-small-only"},null,-1),We={href:"",class:"entityCancelLink"},ze={class:"visibleTab col m10"},Ye={key:0,class:"basic-info-tab"},Xe={key:0,class:"entityCancel"},Ke={key:1,class:"user-permissions"},Qe={key:0},Ze={key:1,class:"alert alert-info"},et={key:2,class:"superuser-access"},tt={class:"superuser-confirm-modal modal",ref:"superUserConfirmModal"},nt={class:"modal-content"},st={key:0},rt={key:1},it={class:"modal-footer"},at={key:3,class:"twofa-reset"},ot={class:"resetTwoFa"},lt={class:"twofa-confirm-modal modal",ref:"twofaConfirmModal"},ct={class:"modal-content"},dt={class:"modal-footer"},ut={class:"change-password-modal modal",ref:"changePasswordModal"},mt={class:"modal-content"},bt=["innerHTML"],pt={class:"modal-footer"};
+ */function Re(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Notification"),l=Object(a["resolveComponent"])("Field"),c=Object(a["resolveComponent"])("CapabilitiesEdit"),d=Object(a["resolveDirective"])("dropdown-menu"),u=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["userPermissionsEdit",{loading:e.isLoadingAccess}])},[e.hasAccessToAtLeastOneSite?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",V,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{context:"warning",type:"transient",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("General_Warning"))+":",1),Object(a["createTextVNode"])(" "+Object(a["toDisplayString"])(e.translate("UsersManager_NoAccessWarning")),1)]})),_:1})])])),Object(a["createElementVNode"])("div",k,[Object(a["createElementVNode"])("div",A,[Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("span",w,Object(a["toDisplayString"])(e.translate("UsersManager_GiveAccessToAll"))+":",1),Object(a["createElementVNode"])("div",T,[Object(a["createVNode"])(l,{modelValue:e.allWebsitesAccssLevelSet,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.allWebsitesAccssLevelSet=t}),uicontrol:"select",options:e.filteredAccessLevels,"full-width":!0},null,8,["modelValue","options"])]),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["btn",{disabled:e.isGivingAccessToAllSites}]),onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.showChangeAccessAllSitesModal()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Apply")),3)]),Object(a["createElementVNode"])("p",B,Object(a["toDisplayString"])(e.translate("UsersManager_OrManageIndividually"))+":",1)])]),Object(a["createElementVNode"])("div",D,[Object(a["createElementVNode"])("div",_,[Object(a["createElementVNode"])("div",L,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["dropdown-trigger btn",{disabled:e.isBulkActionsDisabled}]),href:"","data-target":"user-permissions-edit-bulk-actions"},[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_BulkActions")),1)],2),[[d,{activates:"#user-permissions-edit-bulk-actions"}]]),Object(a["createElementVNode"])("ul",R,[Object(a["createElementVNode"])("li",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",x,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_SetPermission")),1)],512),[[d,{activates:"#user-permissions-bulk-set-access"}]]),Object(a["createElementVNode"])("ul",P,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.filteredAccessLevels,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.key},[Object(a["createElementVNode"])("a",{href:"",onClick:Object(a["withModifiers"])((function(n){e.siteAccessToChange=null,e.roleToChangeTo=t.key,e.showChangeAccessConfirm()}),["prevent"])},Object(a["toDisplayString"])(t.value),9,F)])})),128))])]),Object(a["createElementVNode"])("li",null,[Object(a["createElementVNode"])("a",{href:"",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){e.siteAccessToChange=null,e.roleToChangeTo="noaccess",e.showRemoveAccessConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_RemovePermissions")),1)])])]),Object(a["createElementVNode"])("div",H,[Object(a["createElementVNode"])("input",{type:"text",value:e.siteNameFilter,onKeydown:t[3]||(t[3]=function(t){e.onChangeSiteFilter(t)}),onChange:t[4]||(t[4]=function(t){e.onChangeSiteFilter(t)}),placeholder:e.translate("UsersManager_FilterByWebsite")},null,40,I)]),Object(a["createElementVNode"])("div",J,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(l,{modelValue:e.accessLevelFilter,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.accessLevelFilter=t}),uicontrol:"select",options:e.filteredSelectAccessLevels,"full-width":!0,placeholder:e.translate("UsersManager_FilterByAccess")},null,8,["modelValue","options","placeholder"])])])]),e.totalEntries>e.limit?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",q,[Object(a["createElementVNode"])("div",$,[Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["prev",{disabled:e.offset<=0}])},[Object(a["createElementVNode"])("span",{class:"pointer",onClick:t[6]||(t[6]=function(t){return e.gotoPreviousPage()})},"« "+Object(a["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(a["createElementVNode"])("span",G,[Object(a["createElementVNode"])("span",{textContent:Object(a["toDisplayString"])(e.paginationText)},null,8,z)]),Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["next",{disabled:e.offset+e.limit>=e.totalEntries}])},[Object(a["createElementVNode"])("span",{class:"pointer",onClick:t[7]||(t[7]=function(t){return e.gotoNextPage()})},Object(a["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",W,[e.isRoleHelpToggled?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.rolesHelpText)},null,8,Y)]})),_:1})):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",X,[e.isCapabilitiesHelpToggled?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(e.translate("UsersManager_CapabilitiesHelp")),1)]})),_:1})):Object(a["createCommentVNode"])("",!0)]),Object(a["withDirectives"])(Object(a["createElementVNode"])("table",K,[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",Q,[Object(a["createElementVNode"])("span",Z,[Object(a["createElementVNode"])("label",null,[Object(a["createElementVNode"])("input",{type:"checkbox",id:"perm_edit_select_all",checked:e.isAllCheckboxSelected,onChange:t[8]||(t[8]=function(t){return e.onAllCheckboxChange(t)})},null,40,ee),te])])]),Object(a["createElementVNode"])("th",null,Object(a["toDisplayString"])(e.translate("General_Name")),1),Object(a["createElementVNode"])("th",ne,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize("".concat(e.translate("UsersManager_Role")," "))},null,8,se),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},ie,2)]),Object(a["createElementVNode"])("th",ae,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize("".concat(e.translate("UsersManager_Capabilities")," "))},null,8,oe),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isCapabilitiesHelpToggled}]),onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.isCapabilitiesHelpToggled=!e.isCapabilitiesHelpToggled}),["prevent"]))},ce,2)])])]),Object(a["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.siteAccess.length<e.totalEntries?(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",de,[Object(a["createElementVNode"])("td",ue,[e.areAllResultsSelected?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",me,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.theDisplayedWebsitesAreSelectedText),style:{"margin-right":"3.5px"}},null,8,be),Object(a["createElementVNode"])("a",{href:"#",onClick:t[11]||(t[11]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.clickToSelectAllText)},null,8,pe)])),e.areAllResultsSelected?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",he,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.allWebsitesAreSelectedText),style:{"margin-right":"3.5px"}},null,8,ge),Object(a["createElementVNode"])("a",{href:"#",onClick:t[12]||(t[12]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.clickToSelectDisplayedWebsitesText)},null,8,fe)])):Object(a["createCommentVNode"])("",!0)])])):Object(a["createCommentVNode"])("",!0),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.siteAccess,(function(n,s){return Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{key:n.idsite},[Object(a["createElementVNode"])("td",Oe,[Object(a["createElementVNode"])("span",je,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"perm_edit_select_row".concat(s),"onUpdate:modelValue":function(t){return e.selectedRows[s]=t},onClick:t[13]||(t[13]=function(t){return e.onRowSelected()})},null,8,ve),[[a["vModelCheckbox"],e.selectedRows[s]]]),Ce])])]),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("span",null,Object(a["toDisplayString"])(n.site_name),1)]),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("div",Se,[Object(a["createVNode"])(l,{"model-value":n.role,"onUpdate:modelValue":function(t){e.onRoleChange(n,t)},uicontrol:"select",options:e.filteredAccessLevels,"full-width":!0},null,8,["model-value","onUpdate:modelValue","options"])])]),Object(a["createElementVNode"])("td",null,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(c,{idsite:n.idsite,"site-name":n.site_name,"user-login":e.userLogin,"user-role":n.role,capabilities:n.capabilities,onChange:t[14]||(t[14]=function(t){return e.fetchAccess()})},null,8,["idsite","site-name","user-login","user-role","capabilities"])])])])})),128))])],512),[[u]]),Object(a["createElementVNode"])("div",Ne,[Object(a["createElementVNode"])("div",Ue,[e.siteAccessToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.deletePermConfirmSingleText)},null,8,ye)):Object(a["createCommentVNode"])("",!0),e.siteAccessToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:1,innerHTML:e.$sanitize(e.deletePermConfirmMultipleText)},null,8,Ee))]),Object(a["createElementVNode"])("div",Ve,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[15]||(t[15]=Object(a["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){e.siteAccessToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",ke,[Object(a["createElementVNode"])("div",Ae,[e.siteAccessToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.changePermToSiteConfirmSingleText)},null,8,we)):Object(a["createCommentVNode"])("",!0),e.siteAccessToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:1,innerHTML:e.$sanitize(e.changePermToSiteConfirmMultipleText)},null,8,Te))]),Object(a["createElementVNode"])("div",Me,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[17]||(t[17]=Object(a["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[18]||(t[18]=Object(a["withModifiers"])((function(t){e.siteAccessToChange.role=e.previousRole,e.siteAccessToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",Be,[Object(a["createElementVNode"])("div",De,[Object(a["createElementVNode"])("h3",{innerHTML:e.$sanitize(e.changePermToAllSitesConfirmText)},null,8,_e),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ChangePermToAllSitesConfirm2")),1)]),Object(a["createElementVNode"])("div",Le,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[19]||(t[19]=Object(a["withModifiers"])((function(t){return e.giveAccessToAllSites()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[20]||(t[20]=function(e){return e.preventDefault()})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var xe=window,Pe=xe.$,Fe=Object(a["defineComponent"])({props:{userLogin:{type:String,required:!0},limit:{type:Number,default:10},accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0}},components:{Notification:i["Notification"],Field:g["Field"],CapabilitiesEdit:E},directives:{DropdownMenu:i["DropdownMenu"],ContentTable:i["ContentTable"]},data:function(){return{siteAccess:[],offset:0,totalEntries:null,accessLevelFilter:"",siteNameFilter:"",isLoadingAccess:!1,allWebsitesAccssLevelSet:"view",isAllCheckboxSelected:!1,selectedRows:{},isBulkActionsDisabled:!0,areAllResultsSelected:!1,previousRole:null,hasAccessToAtLeastOneSite:!0,isRoleHelpToggled:!1,isCapabilitiesHelpToggled:!1,isGivingAccessToAllSites:!1,roleToChangeTo:null,siteAccessToChange:null}},emits:["userHasAccessDetected","accessChanged"],created:function(){var e=this;this.onChangeSiteFilter=Object(i["debounce"])(this.onChangeSiteFilter,300),Object(a["watch"])((function(){return e.allPropsWatch}),(function(){e.limit&&e.fetchAccess()})),this.fetchAccess()},watch:{accessLevelFilter:function(){this.offset=0,this.fetchAccess()}},methods:{onAllCheckboxChange:function(e){var t=this;this.isAllCheckboxSelected=e.target.checked,this.isAllCheckboxSelected?(this.siteAccess.forEach((function(e,n){t.selectedRows[n]=!0})),this.isBulkActionsDisabled=!1):this.clearSelection()},clearSelection:function(){this.selectedRows={},this.areAllResultsSelected=!1,this.isBulkActionsDisabled=!0,this.isAllCheckboxSelected=!1,this.siteAccessToChange=null},onRowSelected:function(){var e=this;setTimeout((function(){var t=e.selectedRowsCount;e.isBulkActionsDisabled=0===t,e.isAllCheckboxSelected=t===e.siteAccess.length}))},fetchAccess:function(){var e=this;return this.isLoadingAccess=!0,i["AjaxHelper"].fetch({method:"UsersManager.getSitesAccessForUser",limit:this.limit,offset:this.offset,filter_search:this.siteNameFilter,filter_access:this.accessLevelFilter,userLogin:this.userLogin},{returnResponseObject:!0}).then((function(t){var n=t.getRequestHandle();e.isLoadingAccess=!1,e.siteAccess=n.responseJSON,e.totalEntries=parseInt(n.getResponseHeader("x-matomo-total-results"),10)||0,e.hasAccessToAtLeastOneSite=!!n.getResponseHeader("x-matomo-has-some"),e.$emit("userHasAccessDetected",{hasAccess:e.hasAccessToAtLeastOneSite}),e.clearSelection()})).catch((function(){e.isLoadingAccess=!1,e.clearSelection()}))},gotoPreviousPage:function(){this.offset=Math.max(0,this.offset-this.limit),this.fetchAccess()},gotoNextPage:function(){var e=this.offset+this.limit;e>=(this.totalEntries||0)||(this.offset=e,this.fetchAccess())},showRemoveAccessConfirm:function(){Pe(this.$refs.deleteAccessConfirmModal).modal({dismissible:!1}).modal("open")},changeUserRole:function(){var e=this,t=function(){var t=[];return Object.keys(e.selectedRows).forEach((function(n){e.selectedRows[n]&&e.siteAccess[n]&&t.push(e.siteAccess[n].idsite)})),t},n=function(){return i["AjaxHelper"].fetch({method:"UsersManager.getSitesAccessForUser",filter_search:e.siteNameFilter,filter_access:e.accessLevelFilter,userLogin:e.userLogin,filter_limit:"-1"}).then((function(e){return e.map((function(e){return e.idsite}))}))};return this.isLoadingAccess=!0,Promise.resolve().then((function(){return e.siteAccessToChange?[e.siteAccessToChange.idsite]:e.areAllResultsSelected?n():t()})).then((function(t){return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:e.userLogin,access:e.roleToChangeTo,idSites:t})})).catch((function(){})).then((function(){return e.$emit("accessChanged"),e.fetchAccess()}))},showChangeAccessConfirm:function(){Pe(this.$refs.changeAccessConfirmModal).modal({dismissible:!1}).modal("open")},getRoleDisplay:function(e){var t=null;return this.filteredAccessLevels.forEach((function(n){n.key===e&&(t=n.value)})),t},giveAccessToAllSites:function(){var e=this;this.isGivingAccessToAllSites=!0,i["AjaxHelper"].fetch({method:"SitesManager.getSitesWithAdminAccess"}).then((function(t){var n=t.map((function(e){return e.idsite}));return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:e.userLogin,access:e.allWebsitesAccssLevelSet,idSites:n})})).then((function(){return e.fetchAccess()})).finally((function(){e.isGivingAccessToAllSites=!1}))},showChangeAccessAllSitesModal:function(){Pe(this.$refs.confirmGiveAccessAllSitesModal).modal({dismissible:!1}).modal("open")},onChangeSiteFilter:function(e){var t=this;setTimeout((function(){var n=e.target.value;t.siteNameFilter!==n&&(t.siteNameFilter=n,t.offset=0,t.fetchAccess())}))},onRoleChange:function(e,t){this.previousRole=e.role,this.roleToChangeTo=t,this.siteAccessToChange=e,this.showChangeAccessConfirm()}},computed:{rolesHelpText:function(){return Object(i["translate"])("UsersManager_RolesHelp",'<a href="https://matomo.org/faq/general/faq_70/" target="_blank" rel="noreferrer noopener">',"</a>",'<a href="https://matomo.org/faq/general/faq_69/" target="_blank" rel="noreferrer noopener">',"</a>")},theDisplayedWebsitesAreSelectedText:function(){var e=Object(i["translate"])("UsersManager_TheDisplayedWebsitesAreSelected","<strong>".concat(this.siteAccess.length,"</strong>"));return"".concat(e," ")},clickToSelectAllText:function(){return Object(i["translate"])("UsersManager_ClickToSelectAll","<strong>".concat(this.totalEntries,"</strong>"))},allWebsitesAreSelectedText:function(){return Object(i["translate"])("UsersManager_AllWebsitesAreSelected","<strong>".concat(this.totalEntries,"</strong>"))},clickToSelectDisplayedWebsitesText:function(){return Object(i["translate"])("UsersManager_ClickToSelectDisplayedWebsites","<strong>".concat(this.siteAccess.length,"</strong>"))},deletePermConfirmSingleText:function(){return Object(i["translate"])("UsersManager_DeletePermConfirmSingle","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteAccessToChangeName,"</strong>"))},deletePermConfirmMultipleText:function(){return Object(i["translate"])("UsersManager_DeletePermConfirmMultiple","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.affectedSitesCount,"</strong>"))},changePermToSiteConfirmSingleText:function(){return Object(i["translate"])("UsersManager_ChangePermToSiteConfirmSingle","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.siteAccessToChangeName,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"))},changePermToSiteConfirmMultipleText:function(){return Object(i["translate"])("UsersManager_ChangePermToSiteConfirmMultiple","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.affectedSitesCount,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"))},changePermToAllSitesConfirmText:function(){return Object(i["translate"])("UsersManager_ChangePermToAllSitesConfirm","<strong>".concat(this.userLogin,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.allWebsitesAccssLevelSet),"</strong>"))},paginationLowerBound:function(){return this.offset+1},paginationUpperBound:function(){return this.totalEntries?Math.min(this.offset+this.limit,this.totalEntries):"?"},filteredAccessLevels:function(){return this.accessLevels.filter((function(e){return"superuser"!==e.key}))},filteredSelectAccessLevels:function(){return this.filterAccessLevels.filter((function(e){return"superuser"!==e.key}))},selectedRowsCount:function(){var e=0;return Object.values(this.selectedRows).forEach((function(t){t&&(e+=1)})),e},affectedSitesCount:function(){return this.areAllResultsSelected?this.totalEntries:this.selectedRowsCount},allPropsWatch:function(){return this.userLogin,this.limit,this.accessLevels,this.filterAccessLevels,Date.now()},siteAccessToChangeName:function(){return this.siteAccessToChange?i["Matomo"].helper.htmlEntities(this.siteAccessToChange.site_name):""},paginationText:function(){var e=Object(i["translate"])("General_Pagination","".concat(this.paginationLowerBound),"".concat(this.paginationUpperBound),"".concat(this.totalEntries));return" ".concat(e," ")}}});Fe.render=Re;var He=Fe,Ie=(Object(i["createAngularJsAdapter"])({component:He,scope:{userLogin:{angularJsBind:"<"},limit:{angularJsBind:"<"},onUserHasAccessDetected:{angularJsBind:"&",vue:"userHasAccessDetected"},onAccessChange:{angularJsBind:"&",vue:"accessChanged"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"}},directiveName:"piwikUserPermissionsEdit",restrict:"E"}),{class:"row"}),Je={key:0,class:"col m2 entityList"},qe={class:"listCircle"},$e={key:0,class:"icon-warning"},Ge=Object(a["createElementVNode"])("div",{class:"save-button-spacer hide-on-small-only"},null,-1),ze={href:"",class:"entityCancelLink"},We={class:"visibleTab col m10"},Ye={key:0,class:"basic-info-tab"},Xe={key:0,class:"entityCancel"},Ke={key:1,class:"user-permissions"},Qe={key:0},Ze={key:1,class:"alert alert-info"},et={key:2,class:"superuser-access"},tt={class:"superuser-confirm-modal modal",ref:"superUserConfirmModal"},nt={class:"modal-content"},st={key:0},rt={key:1},it={class:"modal-footer"},at={key:3,class:"twofa-reset"},ot={class:"resetTwoFa"},lt={class:"twofa-confirm-modal modal",ref:"twofaConfirmModal"},ct={class:"modal-content"},dt={class:"modal-footer"},ut={class:"change-password-modal modal",ref:"changePasswordModal"},mt={class:"modal-content"},bt=["innerHTML"],pt={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function gt(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("UserPermissionsEdit"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{class:Object(a["normalizeClass"])(["userEditForm",{loading:e.isSavingUserInfo}]),"content-title":"".concat(e.formTitle," ").concat(e.isAdd?"":"'".concat(e.theUser.login,"'"))},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Ie,[e.isAdd?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Je,[Object(a["createElementVNode"])("ul",qe,[Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{active:"basic"===e.activeTab},"menuBasicInfo"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(a["withModifiers"])((function(t){return e.activeTab="basic"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_BasicInformation")),1)],2),Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{active:"permissions"===e.activeTab},"menuPermissions"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.activeTab="permissions"}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("UsersManager_Permissions")),1),e.userHasAccess||e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",Ge))],2),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:0,class:Object(a["normalizeClass"])([{active:"superuser"===e.activeTab},"menuSuperuser"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){return e.activeTab="superuser"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserAccess")),1)],2)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole&&e.theUser.uses_2fa&&!e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:1,class:Object(a["normalizeClass"])([{active:"2fa"===e.activeTab},"menuUserTwoFa"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[3]||(t[3]=Object(a["withModifiers"])((function(t){return e.activeTab="2fa"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_TwoFactorAuthentication")),1)],2)):Object(a["createCommentVNode"])("",!0)]),$e,Object(a["createElementVNode"])("div",{class:"entityCancel",onClick:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},[Object(a["createElementVNode"])("a",We,Object(a["toDisplayString"])(e.translate("Mobile_NavigationBack")),1)])])),Object(a["createElementVNode"])("div",ze,["basic"===e.activeTab?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ye,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.theUser.login,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.theUser.login=t}),disabled:e.isSavingUserInfo||!e.isAdd||e.isShowingPasswordConfirm,uicontrol:"text",name:"user_login",maxlength:100,title:e.translate("General_Username")},null,8,["modelValue","disabled","title"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":e.theUser.password,disabled:e.isSavingUserInfo||"superuser"!==e.currentUserRole&&!e.isAdd||e.isShowingPasswordConfirm,"onUpdate:modelValue":t[6]||(t[6]=function(t){e.theUser.password=t,e.isPasswordModified=!0}),uicontrol:"password",name:"user_password",title:e.translate("General_Password")},null,8,["model-value","disabled","title"])]),Object(a["createElementVNode"])("div",null,["superuser"===e.currentUserRole||e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,modelValue:e.theUser.email,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.theUser.email=t}),disabled:e.isSavingUserInfo||"superuser"!==e.currentUserRole&&!e.isAdd||e.isShowingPasswordConfirm,uicontrol:"text",name:"user_email",maxlength:100,title:e.translate("UsersManager_Email")},null,8,["modelValue","disabled","title"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",null,[e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,modelValue:e.firstSiteAccess,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.firstSiteAccess=t}),disabled:e.isSavingUserInfo,uicontrol:"site",name:"user_site","ui-control-attributes":{onlySitesWithAdminAccess:!0},title:e.translate("UsersManager_FirstWebsitePermission"),"inline-help":e.translate("UsersManager_FirstSiteInlineHelp")},null,8,["modelValue","disabled","title","inline-help"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",null,["superuser"===e.currentUserRole||e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,value:e.saveButtonLabel,disabled:e.isAdd&&(!e.firstSiteAccess||!e.firstSiteAccess.id),saving:e.isSavingUserInfo,onConfirm:t[9]||(t[9]=function(t){return e.saveUserInfo()})},null,8,["value","disabled","saving"])):Object(a["createCommentVNode"])("",!0)]),e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Xe,[Object(a["createElementVNode"])("a",{href:"",class:"entityCancelLink",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),e.isAdd?Object(a["createCommentVNode"])("",!0):Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ke,[e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Qe,[Object(a["createVNode"])(c,{"user-login":e.theUser.login,onUserHasAccessDetected:t[11]||(t[11]=function(t){return e.userHasAccess=t.hasAccess}),onAccessChanged:t[12]||(t[12]=function(t){return e.isUserModified=!0}),"access-levels":e.accessLevels,"filter-access-levels":e.filterAccessLevels},null,8,["user-login","access-levels","filter-access-levels"])])),e.theUser.superuser_access?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ze,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUsersPermissionsNotice")),1)):Object(a["createCommentVNode"])("",!0)],512)),[[a["vShow"],"permissions"===e.activeTab]]),"superuser"!==e.activeTab||"superuser"!==e.currentUserRole||e.isAdd?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",et,[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserIntro1")),1),Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserIntro2")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.superUserAccessChecked,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.superUserAccessChecked=t}),onClick:t[14]||(t[14]=function(t){return e.confirmSuperUserChange()}),disabled:e.isSavingUserInfo,uicontrol:"checkbox",name:"superuser_access",title:e.translate("UsersManager_HasSuperUserAccess")},null,8,["modelValue","disabled","title"])]),Object(a["createElementVNode"])("div",tt,[Object(a["createElementVNode"])("div",nt,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),e.theUser.superuser_access?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",st,Object(a["toDisplayString"])(e.translate("UsersManager_RemoveSuperuserAccessConfirm")),1)):Object(a["createCommentVNode"])("",!0),e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",rt,Object(a["toDisplayString"])(e.translate("UsersManager_AddSuperuserAccessConfirm")),1)),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmationForSuperUser,"onUpdate:modelValue":t[15]||(t[15]=function(t){return e.passwordConfirmationForSuperUser=t}),uicontrol:"password",name:"currentUserPasswordForSuperUser",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",it,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){return e.toggleSuperuserAccess()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[17]||(t[17]=Object(a["withModifiers"])((function(t){e.setSuperUserAccessChecked(),e.passwordConfirmationForSuperUser=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)])),"superuser"!==e.currentUserRole||e.isAdd?Object(a["createCommentVNode"])("",!0):Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",at,[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ResetTwoFactorAuthenticationInfo")),1),Object(a["createElementVNode"])("div",ot,[Object(a["createVNode"])(l,{saving:e.isResetting2FA,onConfirm:t[18]||(t[18]=function(t){return e.confirmReset2FA()}),value:e.translate("UsersManager_ResetTwoFactorAuthentication")},null,8,["saving","value"])]),Object(a["createElementVNode"])("div",lt,[Object(a["createElementVNode"])("div",ct,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[19]||(t[19]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPasswordTwoFa",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",dt,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[20]||(t[20]=Object(a["withModifiers"])((function(t){return e.reset2FA()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[21]||(t[21]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],512)),[[a["vShow"],"2fa"===e.activeTab]])])],512),[[u]]),Object(a["createElementVNode"])("div",ut,[Object(a["createElementVNode"])("div",mt,[Object(a["createElementVNode"])("h2",{innerHTML:e.changePasswordTitle},null,8,bt),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[22]||(t[22]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPasswordChangePwd",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",pt,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[23]||(t[23]=Object(a["withModifiers"])((function(t){return e.updateUser()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[24]||(t[24]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)]})),_:1},8,["class","content-title"])}var ht={login:"",superuser_access:!1,uses_2fa:!1,password:"",email:""},ft=window,Ot=ft.$,jt=Object(a["defineComponent"])({props:{user:Object,currentUserRole:{type:String,required:!0},accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0},initialSiteId:{type:[String,Number],required:!0},initialSiteName:{type:String,required:!0}},components:{ContentBlock:i["ContentBlock"],Field:h["Field"],SaveButton:h["SaveButton"],UserPermissionsEdit:He},directives:{Form:h["Form"]},data:function(){return{theUser:this.user||Object.assign({},ht),activeTab:"basic",permissionsForIdSite:1,isSavingUserInfo:!1,userHasAccess:!0,firstSiteAccess:{id:this.initialSiteId,name:this.initialSiteName},isUserModified:!1,passwordConfirmation:"",isPasswordModified:!1,superUserAccessChecked:null,passwordConfirmationForSuperUser:"",isResetting2FA:!1,isShowingPasswordConfirm:!1}},emits:["done","updated"],watch:{user:function(e){this.onUserChange(e)}},created:function(){this.onUserChange(this.user)},methods:{onUserChange:function(e){this.theUser=e||Object.assign({},ht),this.theUser.password||this.resetPasswordVar(),this.setSuperUserAccessChecked()},confirmSuperUserChange:function(){Ot(this.$refs.superUserConfirmModal).modal({dismissible:!1}).modal("open")},confirmReset2FA:function(){Ot(this.$refs.twofaConfirmModal).modal({dismissible:!1}).modal("open")},toggleSuperuserAccess:function(){var e=this;this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.setSuperUserAccess"},{userLogin:this.theUser.login,hasSuperUserAccess:this.theUser.superuser_access?"0":"1",passwordConfirmation:this.passwordConfirmationForSuperUser}).then((function(){e.theUser.superuser_access=!e.theUser.superuser_access})).catch((function(){})).then((function(){e.isSavingUserInfo=!1,e.isUserModified=!0,e.passwordConfirmationForSuperUser="",e.setSuperUserAccessChecked()}))},saveUserInfo:function(){var e=this;return Promise.resolve().then((function(){return e.isAdd?e.createUser():e.confirmUserChange()})).then((function(){e.$emit("updated",{user:Object(a["readonly"])(e.theUser)})}))},createUser:function(){var e=this;return this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.addUser"},{userLogin:this.theUser.login,password:this.theUser.password,email:this.theUser.email,initialIdSite:this.firstSiteAccess?this.firstSiteAccess.id:void 0}).catch((function(t){throw e.isSavingUserInfo=!1,t})).then((function(){e.firstSiteAccess=null,e.isSavingUserInfo=!1,e.isUserModified=!0,e.resetPasswordVar(),e.showUserSavedNotification()}))},resetPasswordVar:function(){this.isAdd||(this.theUser.password="XXXXXXXX")},confirmUserChange:function(){var e=this;this.passwordConfirmation="",this.isShowingPasswordConfirm=!0;var t=function(t){var n=t.keyCode?t.keyCode:t.which;13===n&&(Ot(e.$refs.changePasswordModal).modal("close"),e.updateUser())};Ot(this.$refs.changePasswordModal).modal({dismissible:!1,onOpenEnd:function(){e.isShowingPasswordConfirm=!1,Ot(".modal.open #currentUserPasswordChangePwd").focus().off("keypress").keypress(t)}}).modal("open")},showUserSavedNotification:function(){i["NotificationsStore"].show({message:Object(i["translate"])("General_YourChangesHaveBeenSaved"),context:"success",type:"toast"})},reset2FA:function(){var e=this;return this.isResetting2FA=!0,i["AjaxHelper"].post({method:"TwoFactorAuth.resetTwoFactorAuth",userLogin:this.theUser.login,passwordConfirmation:this.passwordConfirmation}).catch((function(t){throw e.isResetting2FA=!1,t})).then((function(){e.isResetting2FA=!1,e.theUser.uses_2fa=!1,e.activeTab="basic",e.showUserSavedNotification()})).finally((function(){e.passwordConfirmation=""}))},updateUser:function(){var e=this;return this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.updateUser"},{userLogin:this.theUser.login,password:this.isPasswordModified&&this.theUser.password?this.theUser.password:void 0,passwordConfirmation:this.passwordConfirmation?this.passwordConfirmation:void 0,email:this.theUser.email}).then((function(){e.isSavingUserInfo=!1,e.passwordConfirmation="",e.isUserModified=!0,e.isPasswordModified=!1,e.resetPasswordVar(),e.showUserSavedNotification()})).catch((function(){e.isSavingUserInfo=!1,e.passwordConfirmation=""}))},setSuperUserAccessChecked:function(){this.superUserAccessChecked=!!this.theUser.superuser_access},onDoneEditing:function(){this.$emit("done",{isUserModified:this.isUserModified})}},computed:{formTitle:function(){return this.isAdd?Object(i["translate"])("UsersManager_AddNewUser"):Object(i["translate"])("UsersManager_EditUser")},saveButtonLabel:function(){return this.isAdd?Object(i["translate"])("UsersManager_CreateUser"):Object(i["translate"])("UsersManager_SaveBasicInfo")},isAdd:function(){return!this.user},changePasswordTitle:function(){return Object(i["translate"])("UsersManager_AreYouSureChangeDetails","<strong>".concat(this.theUser.login,"</strong>"))}}});jt.render=gt;var vt=jt,Ct=(Object(i["createAngularJsAdapter"])({component:vt,scope:{user:{angularJsBind:"<"},onDoneEditing:{angularJsBind:"&",vue:"done"},currentUserRole:{angularJsBind:"<"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"},initialSiteId:{angularJsBind:"<"},initialSiteName:{angularJsBind:"<"},onUpdated:{angularJsBind:"&",vue:"updated"}},directiveName:"piwikUserEditForm",restrict:"E"}),{class:"userListFilters row"}),St={class:"col s12 m12 l6"},Nt={class:"input-field col s12 m4 l4"},Ut={id:"user-list-bulk-actions",class:"dropdown-content"},yt={class:"dropdown-trigger","data-target":"bulk-set-access"},Vt={id:"bulk-set-access",class:"dropdown-content"},Et=["onClick"],kt={key:0},At={class:"input-field col s12 m4 l4"},wt={class:"permissions-for-selector"},Tt={class:"input-field col s12 m4 l4"},Mt={key:0,class:"input-field col s12 m12 l6 users-list-pagination-container"},Bt={class:"usersListPagination"},Dt={class:"pointer"},_t={class:"counter"},Lt={class:"pointer"},Rt={key:0,class:"roles-help-notification"},xt=["innerHTML"],Pt={class:"select-cell"},Ft={class:"checkbox-container"},Ht=Object(a["createElementVNode"])("span",null,null,-1),It={class:"first"},Jt={class:"role_header"},qt={style:{"margin-right":"3.5px"}},Gt=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),$t=[Gt],Wt={key:0},zt=["title"],Yt={key:2},Xt={class:"actions-cell-header"},Kt={key:0,class:"select-all-row"},Qt={colspan:"8"},Zt={key:0},en=["innerHTML"],tn=["innerHTML"],nn={key:1},sn=["innerHTML"],rn=["innerHTML"],an=["id"],on={class:"select-cell"},ln={class:"checkbox-container"},cn=["id","onUpdate:modelValue"],dn=Object(a["createElementVNode"])("span",null,null,-1),un={id:"userLogin"},mn={class:"access-cell"},bn={key:0,id:"email"},pn={key:1,id:"twofa"},gn={key:0,class:"icon-ok"},hn={key:1,class:"icon-close"},fn={key:2,id:"last_seen"},On={class:"center actions-cell"},jn=["onClick"],vn=Object(a["createElementVNode"])("span",{class:"icon-edit"},null,-1),Cn=[vn],Sn=["onClick"],Nn=Object(a["createElementVNode"])("span",{class:"icon-delete"},null,-1),Un=[Nn],yn={class:"delete-user-confirm-modal modal",ref:"deleteUserConfirmModal"},Vn={class:"modal-content"},En=["innerHTML"],kn=["innerHTML"],An={class:"modal-footer"},wn={class:"change-user-role-confirm-modal modal",ref:"changeUserRoleConfirmModal"},Tn={class:"modal-content"},Mn=["innerHTML"],Bn={key:1},Dn=["innerHTML"],_n=["innerHTML"],Ln={class:"modal-footer"};
+ */function ht(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("UserPermissionsEdit"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{class:Object(a["normalizeClass"])(["userEditForm",{loading:e.isSavingUserInfo}]),"content-title":"".concat(e.formTitle," ").concat(e.isAdd?"":"'".concat(e.theUser.login,"'"))},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",Ie,[e.isAdd?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Je,[Object(a["createElementVNode"])("ul",qe,[Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{active:"basic"===e.activeTab},"menuBasicInfo"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(a["withModifiers"])((function(t){return e.activeTab="basic"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_BasicInformation")),1)],2),Object(a["createElementVNode"])("li",{class:Object(a["normalizeClass"])([{active:"permissions"===e.activeTab},"menuPermissions"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.activeTab="permissions"}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("UsersManager_Permissions")),1),e.userHasAccess||e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",$e))],2),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:0,class:Object(a["normalizeClass"])([{active:"superuser"===e.activeTab},"menuSuperuser"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[2]||(t[2]=Object(a["withModifiers"])((function(t){return e.activeTab="superuser"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserAccess")),1)],2)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole&&e.theUser.uses_2fa&&!e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:1,class:Object(a["normalizeClass"])([{active:"2fa"===e.activeTab},"menuUserTwoFa"])},[Object(a["createElementVNode"])("a",{href:"",onClick:t[3]||(t[3]=Object(a["withModifiers"])((function(t){return e.activeTab="2fa"}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_TwoFactorAuthentication")),1)],2)):Object(a["createCommentVNode"])("",!0)]),Ge,Object(a["createElementVNode"])("div",{class:"entityCancel",onClick:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},[Object(a["createElementVNode"])("a",ze,Object(a["toDisplayString"])(e.translate("Mobile_NavigationBack")),1)])])),Object(a["createElementVNode"])("div",We,["basic"===e.activeTab?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ye,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.theUser.login,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.theUser.login=t}),disabled:e.isSavingUserInfo||!e.isAdd||e.isShowingPasswordConfirm,uicontrol:"text",name:"user_login",maxlength:100,title:e.translate("General_Username")},null,8,["modelValue","disabled","title"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":e.theUser.password,disabled:e.isSavingUserInfo||"superuser"!==e.currentUserRole&&!e.isAdd||e.isShowingPasswordConfirm,"onUpdate:modelValue":t[6]||(t[6]=function(t){e.theUser.password=t,e.isPasswordModified=!0}),uicontrol:"password",name:"user_password",title:e.translate("General_Password")},null,8,["model-value","disabled","title"])]),Object(a["createElementVNode"])("div",null,["superuser"===e.currentUserRole||e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,modelValue:e.theUser.email,"onUpdate:modelValue":t[7]||(t[7]=function(t){return e.theUser.email=t}),disabled:e.isSavingUserInfo||"superuser"!==e.currentUserRole&&!e.isAdd||e.isShowingPasswordConfirm,uicontrol:"text",name:"user_email",maxlength:100,title:e.translate("UsersManager_Email")},null,8,["modelValue","disabled","title"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",null,[e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(o,{key:0,modelValue:e.firstSiteAccess,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.firstSiteAccess=t}),disabled:e.isSavingUserInfo,uicontrol:"site",name:"user_site","ui-control-attributes":{onlySitesWithAdminAccess:!0},title:e.translate("UsersManager_FirstWebsitePermission"),"inline-help":e.translate("UsersManager_FirstSiteInlineHelp")},null,8,["modelValue","disabled","title","inline-help"])):Object(a["createCommentVNode"])("",!0)]),Object(a["createElementVNode"])("div",null,["superuser"===e.currentUserRole||e.isAdd?(Object(a["openBlock"])(),Object(a["createBlock"])(l,{key:0,value:e.saveButtonLabel,disabled:e.isAdd&&(!e.firstSiteAccess||!e.firstSiteAccess.id),saving:e.isSavingUserInfo,onConfirm:t[9]||(t[9]=function(t){return e.saveUserInfo()})},null,8,["value","disabled","saving"])):Object(a["createCommentVNode"])("",!0)]),e.isAdd?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Xe,[Object(a["createElementVNode"])("a",{href:"",class:"entityCancelLink",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.onDoneEditing()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])):Object(a["createCommentVNode"])("",!0)])):Object(a["createCommentVNode"])("",!0),e.isAdd?Object(a["createCommentVNode"])("",!0):Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ke,[e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Qe,[Object(a["createVNode"])(c,{"user-login":e.theUser.login,onUserHasAccessDetected:t[11]||(t[11]=function(t){return e.userHasAccess=t.hasAccess}),onAccessChanged:t[12]||(t[12]=function(t){return e.isUserModified=!0}),"access-levels":e.accessLevels,"filter-access-levels":e.filterAccessLevels},null,8,["user-login","access-levels","filter-access-levels"])])),e.theUser.superuser_access?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Ze,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUsersPermissionsNotice")),1)):Object(a["createCommentVNode"])("",!0)],512)),[[a["vShow"],"permissions"===e.activeTab]]),"superuser"!==e.activeTab||"superuser"!==e.currentUserRole||e.isAdd?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",et,[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserIntro1")),1),Object(a["createElementVNode"])("p",null,[Object(a["createElementVNode"])("strong",null,Object(a["toDisplayString"])(e.translate("UsersManager_SuperUserIntro2")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.superUserAccessChecked,"onUpdate:modelValue":t[13]||(t[13]=function(t){return e.superUserAccessChecked=t}),onClick:t[14]||(t[14]=function(t){return e.confirmSuperUserChange()}),disabled:e.isSavingUserInfo,uicontrol:"checkbox",name:"superuser_access",title:e.translate("UsersManager_HasSuperUserAccess")},null,8,["modelValue","disabled","title"])]),Object(a["createElementVNode"])("div",tt,[Object(a["createElementVNode"])("div",nt,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),e.theUser.superuser_access?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",st,Object(a["toDisplayString"])(e.translate("UsersManager_RemoveSuperuserAccessConfirm")),1)):Object(a["createCommentVNode"])("",!0),e.theUser.superuser_access?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",rt,Object(a["toDisplayString"])(e.translate("UsersManager_AddSuperuserAccessConfirm")),1)),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmationForSuperUser,"onUpdate:modelValue":t[15]||(t[15]=function(t){return e.passwordConfirmationForSuperUser=t}),uicontrol:"password",name:"currentUserPasswordForSuperUser",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",it,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){return e.toggleSuperuserAccess()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[17]||(t[17]=Object(a["withModifiers"])((function(t){e.setSuperUserAccessChecked(),e.passwordConfirmationForSuperUser=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)])),"superuser"!==e.currentUserRole||e.isAdd?Object(a["createCommentVNode"])("",!0):Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",at,[Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ResetTwoFactorAuthenticationInfo")),1),Object(a["createElementVNode"])("div",ot,[Object(a["createVNode"])(l,{saving:e.isResetting2FA,onConfirm:t[18]||(t[18]=function(t){return e.confirmReset2FA()}),value:e.translate("UsersManager_ResetTwoFactorAuthentication")},null,8,["saving","value"])]),Object(a["createElementVNode"])("div",lt,[Object(a["createElementVNode"])("div",ct,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_AreYouSure")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[19]||(t[19]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPasswordTwoFa",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",dt,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[20]||(t[20]=Object(a["withModifiers"])((function(t){return e.reset2FA()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[21]||(t[21]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],512)),[[a["vShow"],"2fa"===e.activeTab]])])],512),[[u]]),Object(a["createElementVNode"])("div",ut,[Object(a["createElementVNode"])("div",mt,[Object(a["createElementVNode"])("h2",{innerHTML:e.$sanitize(e.changePasswordTitle)},null,8,bt),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{modelValue:e.passwordConfirmation,"onUpdate:modelValue":t[22]||(t[22]=function(t){return e.passwordConfirmation=t}),uicontrol:"password",name:"currentUserPasswordChangePwd",autocomplete:!1,"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",pt,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[23]||(t[23]=Object(a["withModifiers"])((function(t){return e.updateUser()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[24]||(t[24]=function(t){t.preventDefault(),e.passwordConfirmation=""})},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)]})),_:1},8,["class","content-title"])}var gt={login:"",superuser_access:!1,uses_2fa:!1,password:"",email:""},ft=window,Ot=ft.$,jt=Object(a["defineComponent"])({props:{user:Object,currentUserRole:{type:String,required:!0},accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0},initialSiteId:{type:[String,Number],required:!0},initialSiteName:{type:String,required:!0}},components:{ContentBlock:i["ContentBlock"],Field:g["Field"],SaveButton:g["SaveButton"],UserPermissionsEdit:He},directives:{Form:g["Form"]},data:function(){return{theUser:this.user||Object.assign({},gt),activeTab:"basic",permissionsForIdSite:1,isSavingUserInfo:!1,userHasAccess:!0,firstSiteAccess:{id:this.initialSiteId,name:this.initialSiteName},isUserModified:!1,passwordConfirmation:"",isPasswordModified:!1,superUserAccessChecked:null,passwordConfirmationForSuperUser:"",isResetting2FA:!1,isShowingPasswordConfirm:!1}},emits:["done","updated"],watch:{user:function(e){this.onUserChange(e)}},created:function(){this.onUserChange(this.user)},methods:{onUserChange:function(e){this.theUser=e||Object.assign({},gt),this.theUser.password||this.resetPasswordVar(),this.setSuperUserAccessChecked()},confirmSuperUserChange:function(){Ot(this.$refs.superUserConfirmModal).modal({dismissible:!1}).modal("open")},confirmReset2FA:function(){Ot(this.$refs.twofaConfirmModal).modal({dismissible:!1}).modal("open")},toggleSuperuserAccess:function(){var e=this;this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.setSuperUserAccess"},{userLogin:this.theUser.login,hasSuperUserAccess:this.theUser.superuser_access?"0":"1",passwordConfirmation:this.passwordConfirmationForSuperUser}).then((function(){e.theUser.superuser_access=!e.theUser.superuser_access})).catch((function(){})).then((function(){e.isSavingUserInfo=!1,e.isUserModified=!0,e.passwordConfirmationForSuperUser="",e.setSuperUserAccessChecked()}))},saveUserInfo:function(){var e=this;return Promise.resolve().then((function(){return e.isAdd?e.createUser():e.confirmUserChange()})).then((function(){e.$emit("updated",{user:Object(a["readonly"])(e.theUser)})}))},createUser:function(){var e=this;return this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.addUser"},{userLogin:this.theUser.login,password:this.theUser.password,email:this.theUser.email,initialIdSite:this.firstSiteAccess?this.firstSiteAccess.id:void 0}).catch((function(t){throw e.isSavingUserInfo=!1,t})).then((function(){e.firstSiteAccess=null,e.isSavingUserInfo=!1,e.isUserModified=!0,e.resetPasswordVar(),e.showUserSavedNotification()}))},resetPasswordVar:function(){this.isAdd||(this.theUser.password="XXXXXXXX")},confirmUserChange:function(){var e=this;this.passwordConfirmation="",this.isShowingPasswordConfirm=!0;var t=function(t){var n=t.keyCode?t.keyCode:t.which;13===n&&(Ot(e.$refs.changePasswordModal).modal("close"),e.updateUser())};Ot(this.$refs.changePasswordModal).modal({dismissible:!1,onOpenEnd:function(){e.isShowingPasswordConfirm=!1,Ot(".modal.open #currentUserPasswordChangePwd").focus().off("keypress").keypress(t)}}).modal("open")},showUserSavedNotification:function(){i["NotificationsStore"].show({message:Object(i["translate"])("General_YourChangesHaveBeenSaved"),context:"success",type:"toast"})},reset2FA:function(){var e=this;return this.isResetting2FA=!0,i["AjaxHelper"].post({method:"TwoFactorAuth.resetTwoFactorAuth",userLogin:this.theUser.login,passwordConfirmation:this.passwordConfirmation}).catch((function(t){throw e.isResetting2FA=!1,t})).then((function(){e.isResetting2FA=!1,e.theUser.uses_2fa=!1,e.activeTab="basic",e.showUserSavedNotification()})).finally((function(){e.passwordConfirmation=""}))},updateUser:function(){var e=this;return this.isSavingUserInfo=!0,i["AjaxHelper"].post({method:"UsersManager.updateUser"},{userLogin:this.theUser.login,password:this.isPasswordModified&&this.theUser.password?this.theUser.password:void 0,passwordConfirmation:this.passwordConfirmation?this.passwordConfirmation:void 0,email:this.theUser.email}).then((function(){e.isSavingUserInfo=!1,e.passwordConfirmation="",e.isUserModified=!0,e.isPasswordModified=!1,e.resetPasswordVar(),e.showUserSavedNotification()})).catch((function(){e.isSavingUserInfo=!1,e.passwordConfirmation=""}))},setSuperUserAccessChecked:function(){this.superUserAccessChecked=!!this.theUser.superuser_access},onDoneEditing:function(){this.$emit("done",{isUserModified:this.isUserModified})}},computed:{formTitle:function(){return this.isAdd?Object(i["translate"])("UsersManager_AddNewUser"):Object(i["translate"])("UsersManager_EditUser")},saveButtonLabel:function(){return this.isAdd?Object(i["translate"])("UsersManager_CreateUser"):Object(i["translate"])("UsersManager_SaveBasicInfo")},isAdd:function(){return!this.user},changePasswordTitle:function(){return Object(i["translate"])("UsersManager_AreYouSureChangeDetails","<strong>".concat(this.theUser.login,"</strong>"))}}});jt.render=ht;var vt=jt,Ct=(Object(i["createAngularJsAdapter"])({component:vt,scope:{user:{angularJsBind:"<"},onDoneEditing:{angularJsBind:"&",vue:"done"},currentUserRole:{angularJsBind:"<"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"},initialSiteId:{angularJsBind:"<"},initialSiteName:{angularJsBind:"<"},onUpdated:{angularJsBind:"&",vue:"updated"}},directiveName:"piwikUserEditForm",restrict:"E"}),{class:"userListFilters row"}),St={class:"col s12 m12 l6"},Nt={class:"input-field col s12 m4 l4"},Ut={id:"user-list-bulk-actions",class:"dropdown-content"},yt={class:"dropdown-trigger","data-target":"bulk-set-access"},Et={id:"bulk-set-access",class:"dropdown-content"},Vt=["onClick"],kt={key:0},At={class:"input-field col s12 m4 l4"},wt={class:"permissions-for-selector"},Tt={class:"input-field col s12 m4 l4"},Mt={key:0,class:"input-field col s12 m12 l6 users-list-pagination-container"},Bt={class:"usersListPagination"},Dt={class:"pointer"},_t={class:"counter"},Lt={class:"pointer"},Rt={key:0,class:"roles-help-notification"},xt=["innerHTML"],Pt={class:"select-cell"},Ft={class:"checkbox-container"},Ht=Object(a["createElementVNode"])("span",null,null,-1),It={class:"first"},Jt={class:"role_header"},qt={style:{"margin-right":"3.5px"}},$t=Object(a["createElementVNode"])("span",{class:"icon-help"},null,-1),Gt=[$t],zt={key:0},Wt=["title"],Yt={key:2},Xt={class:"actions-cell-header"},Kt={key:0,class:"select-all-row"},Qt={colspan:"8"},Zt={key:0},en=["innerHTML"],tn=["innerHTML"],nn={key:1},sn=["innerHTML"],rn=["innerHTML"],an=["id"],on={class:"select-cell"},ln={class:"checkbox-container"},cn=["id","onUpdate:modelValue"],dn=Object(a["createElementVNode"])("span",null,null,-1),un={id:"userLogin"},mn={class:"access-cell"},bn={key:0,id:"email"},pn={key:1,id:"twofa"},hn={key:0,class:"icon-ok"},gn={key:1,class:"icon-close"},fn={key:2,id:"last_seen"},On={class:"center actions-cell"},jn=["onClick"],vn=Object(a["createElementVNode"])("span",{class:"icon-edit"},null,-1),Cn=[vn],Sn=["onClick"],Nn=Object(a["createElementVNode"])("span",{class:"icon-delete"},null,-1),Un=[Nn],yn={class:"delete-user-confirm-modal modal",ref:"deleteUserConfirmModal"},En={class:"modal-content"},Vn=["innerHTML"],kn=["innerHTML"],An={class:"modal-footer"},wn={class:"change-user-role-confirm-modal modal",ref:"changeUserRoleConfirmModal"},Tn={class:"modal-content"},Mn=["innerHTML"],Bn={key:1},Dn=["innerHTML"],_n=["innerHTML"],Ln={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Rn(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("ActivityIndicator"),c=Object(a["resolveComponent"])("Notification"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("dropdown-menu"),m=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["pagedUsersList",{loading:e.isLoadingUsers}])},[Object(a["createElementVNode"])("div",Ct,[Object(a["createElementVNode"])("div",St,[Object(a["createElementVNode"])("div",Nt,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["dropdown-trigger btn bulk-actions",{disabled:e.isBulkActionsDisabled}]),href:"","data-target":"user-list-bulk-actions"},[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_BulkActions")),1)],2),[[u]]),Object(a["createElementVNode"])("ul",Ut,[Object(a["createElementVNode"])("li",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",yt,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_SetPermission")),1)],512),[[u]]),Object(a["createElementVNode"])("ul",Vt,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.bulkActionAccessLevels,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.key},[Object(a["createElementVNode"])("a",{href:"",onClick:Object(a["withModifiers"])((function(n){e.userToChange=null,e.roleToChangeTo=t.key,e.showAccessChangeConfirm()}),["prevent"])},Object(a["toDisplayString"])(t.value),9,Et)])})),128))])]),Object(a["createElementVNode"])("li",null,[Object(a["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo="noaccess",e.showAccessChangeConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_RemovePermissions")),1)]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",kt,[Object(a["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.showDeleteConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_DeleteUsers")),1)])):Object(a["createCommentVNode"])("",!0)])]),Object(a["createElementVNode"])("div",At,[Object(a["createElementVNode"])("div",wt,[Object(a["createVNode"])(o,{"model-value":e.userTextFilter,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onUserTextFilterChange(t)}),name:"user-text-filter",uicontrol:"text","full-width":!0,placeholder:e.translate("UsersManager_UserSearch")},null,8,["model-value","placeholder"])])]),Object(a["createElementVNode"])("div",Tt,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":e.accessLevelFilter,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.accessLevelFilter=t,e.changeSearch({filter_access:e.accessLevelFilter,offset:0})}),name:"access-level-filter",uicontrol:"select",options:e.filterAccessLevels,"full-width":!0,placeholder:e.translate("UsersManager_FilterByAccess")},null,8,["model-value","options","placeholder"])])])]),e.totalEntries>e.searchParams.limit?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Mt,[Object(a["createElementVNode"])("div",Bt,[Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["btn prev",{disabled:e.searchParams.offset<=0}]),onClick:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.gotoPreviousPage()}),["prevent"]))},[Object(a["createElementVNode"])("span",Dt,"« "+Object(a["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(a["createElementVNode"])("div",_t,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({visibility:e.isLoadingUsers?"hidden":"visible"})},Object(a["toDisplayString"])(e.translate("General_Pagination",e.paginationLowerBound,e.paginationUpperBound,e.totalEntries)),3),Object(a["createVNode"])(l,{loading:e.isLoadingUsers},null,8,["loading"])]),Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["btn next",{disabled:e.searchParams.offset+e.searchParams.limit>=e.totalEntries}]),onClick:t[5]||(t[5]=Object(a["withModifiers"])((function(t){return e.gotoNextPage()}),["prevent"]))},[Object(a["createElementVNode"])("span",Lt,Object(a["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(a["createCommentVNode"])("",!0)]),e.isRoleHelpToggled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Rt,[Object(a["createVNode"])(c,{context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",{innerHTML:e.rolesHelpText},null,8,xt)]})),_:1})])):Object(a["createCommentVNode"])("",!0),Object(a["createVNode"])(d,null,{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("table",{id:"manageUsersTable",class:Object(a["normalizeClass"])({loading:e.isLoadingUsers})},[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",Pt,[Object(a["createElementVNode"])("span",Ft,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"paged_users_select_all",checked:"checked","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.isAllCheckboxSelected=t}),onChange:t[7]||(t[7]=function(t){return e.onAllCheckboxChange()})},null,544),[[a["vModelCheckbox"],e.isAllCheckboxSelected]]),Ht])])]),Object(a["createElementVNode"])("th",It,Object(a["toDisplayString"])(e.translate("UsersManager_Username")),1),Object(a["createElementVNode"])("th",Jt,[Object(a["createElementVNode"])("span",qt,Object(a["toDisplayString"])(e.translate("UsersManager_RoleFor")),1),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[8]||(t[8]=Object(a["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},$t,2),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{class:"permissions-for-selector","model-value":e.permissionsForSite,"onUpdate:modelValue":t[9]||(t[9]=function(t){e.onPermissionsForUpdate(t)}),uicontrol:"site","ui-control-attributes":{onlySitesWithAdminAccess:"superuser"!==e.currentUserRole}},null,8,["model-value","ui-control-attributes"])])]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",Wt,Object(a["toDisplayString"])(e.translate("UsersManager_Email")),1)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",{key:1,title:e.translate("UsersManager_UsesTwoFactorAuthentication")},Object(a["toDisplayString"])(e.translate("UsersManager_2FA")),9,zt)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",Yt,Object(a["toDisplayString"])(e.translate("UsersManager_LastSeen")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("th",Xt,[Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.translate("General_Actions")),1)])])]),Object(a["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.users.length&&e.users.length<e.totalEntries?(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",Kt,[Object(a["createElementVNode"])("td",Qt,[e.areAllResultsSelected?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Zt,[Object(a["createElementVNode"])("span",{innerHTML:e.translate("UsersManager_TheDisplayedUsersAreSelected","<strong>".concat(e.users.length,"</strong>")),style:{"margin-right":"3.5px"}},null,8,en),Object(a["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.translate("UsersManager_ClickToSelectAll","<strong>".concat(e.totalEntries,"</strong>"))},null,8,tn)])),e.areAllResultsSelected?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",nn,[Object(a["createElementVNode"])("span",{innerHTML:e.translate("UsersManager_AllUsersAreSelected","<strong>".concat(e.totalEntries,"</strong>")),style:{"margin-right":"3.5px"}},null,8,sn),Object(a["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[11]||(t[11]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.translate("UsersManager_ClickToSelectDisplayedUsers","<strong>".concat(e.users.length,"</strong>"))},null,8,rn)])):Object(a["createCommentVNode"])("",!0)])])):Object(a["createCommentVNode"])("",!0),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.users,(function(n,s){return Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{id:"row".concat(s),key:n.login},[Object(a["createElementVNode"])("td",on,[Object(a["createElementVNode"])("span",ln,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"paged_users_select_row".concat(s),"onUpdate:modelValue":function(t){return e.selectedRows[s]=t},onClick:t[12]||(t[12]=function(t){return e.onRowSelected()})},null,8,cn),[[a["vModelCheckbox"],e.selectedRows[s]]]),dn])])]),Object(a["createElementVNode"])("td",un,Object(a["toDisplayString"])(n.login),1),Object(a["createElementVNode"])("td",mn,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":n.role,"onUpdate:modelValue":function(t){e.userToChange=n,e.roleToChangeTo=t,e.showAccessChangeConfirm()},disabled:"superuser"===n.role,uicontrol:"select",options:"anonymous"!==n.login?e.accessLevels:e.anonymousAccessLevels},null,8,["model-value","onUpdate:modelValue","disabled","options"])])]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",bn,Object(a["toDisplayString"])(n.email),1)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",pn,[n.uses_2fa?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",gn)):Object(a["createCommentVNode"])("",!0),n.uses_2fa?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",hn))])):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",fn,Object(a["toDisplayString"])(n.last_seen?"".concat(n.last_seen," ago"):"-"),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("td",On,["anonymous"!==n.login?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,class:"edituser table-action",title:"Edit",onClick:function(t){return e.$emit("editUser",{user:n})}},Cn,8,jn)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole&&"anonymous"!==n.login?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:1,class:"deleteuser table-action",title:"Delete",onClick:function(t){e.userToChange=n,e.showDeleteConfirm()}},Un,8,Sn)):Object(a["createCommentVNode"])("",!0)])],8,an)})),128))])],2),[[m]])]})),_:1}),Object(a["createElementVNode"])("div",yn,[Object(a["createElementVNode"])("div",Vn,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.translate("UsersManager_DeleteUserConfirmSingle","<strong>".concat(e.userToChange.login,"</strong>"))},null,8,En)):Object(a["createCommentVNode"])("",!0),e.userToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:1,innerHTML:e.translate("UsersManager_DeleteUserConfirmMultiple","<strong>".concat(e.affectedUsersCount,"</strong>"))},null,8,kn))]),Object(a["createElementVNode"])("div",An,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[13]||(t[13]=Object(a["withModifiers"])((function(t){return e.deleteRequestedUsers()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[14]||(t[14]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",wn,[Object(a["createElementVNode"])("div",Tn,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.deleteUserPermConfirmSingleText)},null,8,Mn)):Object(a["createCommentVNode"])("",!0),e.userToChange&&"anonymous"===e.userToChange.login&&"view"===e.roleToChangeTo?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",Bn,[Object(a["createElementVNode"])("em",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_Note"))+": ",1),Object(a["createElementVNode"])("span",{innerHTML:e.translate("UsersManager_AnonymousUserRoleChangeWarning","anonymous",e.getRoleDisplay(e.roleToChangeTo))},null,8,Dn)])])):Object(a["createCommentVNode"])("",!0),e.userToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:2,innerHTML:e.deleteUserPermConfirmMultipleText},null,8,_n))]),Object(a["createElementVNode"])("div",Ln,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[15]||(t[15]=Object(a["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var xn=window,Pn=xn.$,Fn=Object(a["defineComponent"])({props:{initialSiteId:{type:[String,Number],required:!0},initialSiteName:{type:String,required:!0},currentUserRole:String,isLoadingUsers:Boolean,accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0},totalEntries:Number,users:{type:Array,required:!0},searchParams:{type:Object,required:!0}},components:{Field:h["Field"],ActivityIndicator:i["ActivityIndicator"],Notification:i["Notification"],ContentBlock:i["ContentBlock"]},directives:{DropdownMenu:i["DropdownMenu"],ContentTable:i["ContentTable"]},data:function(){return{areAllResultsSelected:!1,selectedRows:{},isAllCheckboxSelected:!1,isBulkActionsDisabled:!0,userToChange:null,roleToChangeTo:null,accessLevelFilter:null,isRoleHelpToggled:!1,userTextFilter:"",permissionsForSite:{id:this.initialSiteId,name:this.initialSiteName}}},emits:["editUser","changeUserRole","deleteUser","searchChange"],created:function(){this.onUserTextFilterChange=Object(i["debounce"])(this.onUserTextFilterChange,300)},watch:{users:function(){this.clearSelection()}},methods:{onPermissionsForUpdate:function(e){this.permissionsForSite=e,this.changeSearch({idSite:this.permissionsForSite.id})},clearSelection:function(){this.selectedRows={},this.areAllResultsSelected=!1,this.isBulkActionsDisabled=!0,this.isAllCheckboxSelected=!1,this.userToChange=null},onAllCheckboxChange:function(){if(this.isAllCheckboxSelected){for(var e=0;e!==this.users.length;e+=1)this.selectedRows[e]=!0;this.isBulkActionsDisabled=!1}else this.clearSelection()},changeUserRole:function(){this.$emit("changeUserRole",{users:this.userOperationSubject,role:this.roleToChangeTo})},onRowSelected:function(){var e=this;setTimeout((function(){var t=e.selectedCount;e.isBulkActionsDisabled=0===t,e.isAllCheckboxSelected=t===e.users.length}))},deleteRequestedUsers:function(){this.$emit("deleteUser",{users:this.userOperationSubject})},showDeleteConfirm:function(){Pn(this.$refs.deleteUserConfirmModal).modal({dismissible:!1}).modal("open")},showAccessChangeConfirm:function(){Pn(this.$refs.changeUserRoleConfirmModal).modal({dismissible:!1}).modal("open")},getRoleDisplay:function(e){var t=null;return this.accessLevels.forEach((function(n){n.key===e&&(t=n.value)})),t},changeSearch:function(e){var t=Object.assign(Object.assign({},this.searchParams),e);this.$emit("searchChange",{params:t})},gotoPreviousPage:function(){this.changeSearch({offset:Math.max(0,this.searchParams.offset-this.searchParams.limit)})},gotoNextPage:function(){var e=this.searchParams.offset+this.searchParams.limit;e>=this.totalEntries||this.changeSearch({offset:e})},onUserTextFilterChange:function(e){this.userTextFilter=e,this.changeSearch({filter_search:e,offset:0})}},computed:{paginationLowerBound:function(){return this.searchParams.offset+1},paginationUpperBound:function(){if(null===this.totalEntries)return"?";var e=this.searchParams;return Math.min(e.offset+e.limit,this.totalEntries)},userOperationSubject:function(){return this.userToChange?[this.userToChange]:this.areAllResultsSelected?"all":this.selectedUsers},selectedUsers:function(){var e=this,t=this.users,n=[];return Object.keys(this.selectedRows).forEach((function(s){var r=parseInt(s,10);e.selectedRows[s]&&t[r]&&n.push(t[r])})),n},rolesHelpText:function(){var e="https://matomo.org/faq/general/faq_70/",t="https://matomo.org/faq/general/faq_69/";return Object(i["translate"])("UsersManager_RolesHelp",'<a href="'.concat(e,'" target="_blank" rel="noreferrer noopener">'),"</a>",'<a href="'.concat(t,'" target="_blank" rel="noreferrer noopener">'),"</a>")},affectedUsersCount:function(){return this.areAllResultsSelected?this.totalEntries||0:this.selectedCount},selectedCount:function(){var e=this,t=0;return Object.keys(this.selectedRows).forEach((function(n){e.selectedRows[n]&&(t+=1)})),t},deleteUserPermConfirmSingleText:function(){var e,t;return Object(i["translate"])("UsersManager_DeleteUserPermConfirmSingle","<strong>".concat((null===(e=this.userToChange)||void 0===e?void 0:e.login)||"","</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"),"<strong>".concat((null===(t=this.permissionsForSite)||void 0===t?void 0:t.name)||"","</strong>"))},deleteUserPermConfirmMultipleText:function(){var e;return Object(i["translate"])("UsersManager_DeleteUserPermConfirmMultiple","<strong>".concat(this.affectedUsersCount,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"),"<strong>".concat((null===(e=this.permissionsForSite)||void 0===e?void 0:e.name)||"","</strong>"))},bulkActionAccessLevels:function(){return this.accessLevels.filter((function(e){return"noaccess"!==e.key&&"superuser"!==e.key}))},anonymousAccessLevels:function(){return this.accessLevels.filter((function(e){return"noaccess"===e.key||"view"===e.key}))}}});Fn.render=Rn;var Hn=Fn,In=(Object(i["createAngularJsAdapter"])({component:Hn,scope:{onEditUser:{angularJsBind:"&",vue:"editUser"},onChangeUserRole:{angularJsBind:"&",vue:"changeUserRole"},onDeleteUser:{angularJsBind:"&",vue:"deleteUser"},onSearchChange:{angularJsBind:"&",vue:"searchChange"},initialSiteId:{angularJsBind:"<"},initialSiteName:{angularJsBind:"<"},currentUserRole:{angularJsBind:"<"},isLoadingUsers:{angularJsBind:"<"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"},totalEntries:{angularJsBind:"<"},users:{angularJsBind:"<"},searchParams:{angularJsBind:"<"}},directiveName:"piwikPagedUsersList",restrict:"E"}),{class:"usersManager"}),Jn={key:0},qn={key:1},Gn={class:"row add-user-container"},$n={class:"col s12"},Wn={class:"input-field",style:{"margin-right":"3.5px"}},zn={key:0,class:"input-field"},Yn={key:0},Xn={class:"add-existing-user-modal modal",ref:"addExistingUserModal"},Kn={class:"modal-content"},Qn={class:"modal-footer"};
+ */function Rn(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("ActivityIndicator"),c=Object(a["resolveComponent"])("Notification"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("dropdown-menu"),m=Object(a["resolveDirective"])("content-table");return Object(a["openBlock"])(),Object(a["createElementBlock"])("div",{class:Object(a["normalizeClass"])(["pagedUsersList",{loading:e.isLoadingUsers}])},[Object(a["createElementVNode"])("div",Ct,[Object(a["createElementVNode"])("div",St,[Object(a["createElementVNode"])("div",Nt,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["dropdown-trigger btn bulk-actions",{disabled:e.isBulkActionsDisabled}]),href:"","data-target":"user-list-bulk-actions"},[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_BulkActions")),1)],2),[[u]]),Object(a["createElementVNode"])("ul",Ut,[Object(a["createElementVNode"])("li",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("a",yt,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_SetPermission")),1)],512),[[u]]),Object(a["createElementVNode"])("ul",Et,[(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.bulkActionAccessLevels,(function(t){return Object(a["openBlock"])(),Object(a["createElementBlock"])("li",{key:t.key},[Object(a["createElementVNode"])("a",{href:"",onClick:Object(a["withModifiers"])((function(n){e.userToChange=null,e.roleToChangeTo=t.key,e.showAccessChangeConfirm()}),["prevent"])},Object(a["toDisplayString"])(t.value),9,Vt)])})),128))])]),Object(a["createElementVNode"])("li",null,[Object(a["createElementVNode"])("a",{href:"",onClick:t[0]||(t[0]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo="noaccess",e.showAccessChangeConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_RemovePermissions")),1)]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("li",kt,[Object(a["createElementVNode"])("a",{href:"",onClick:t[1]||(t[1]=Object(a["withModifiers"])((function(t){return e.showDeleteConfirm()}),["prevent"]))},Object(a["toDisplayString"])(e.translate("UsersManager_DeleteUsers")),1)])):Object(a["createCommentVNode"])("",!0)])]),Object(a["createElementVNode"])("div",At,[Object(a["createElementVNode"])("div",wt,[Object(a["createVNode"])(o,{"model-value":e.userTextFilter,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.onUserTextFilterChange(t)}),name:"user-text-filter",uicontrol:"text","full-width":!0,placeholder:e.translate("UsersManager_UserSearch")},null,8,["model-value","placeholder"])])]),Object(a["createElementVNode"])("div",Tt,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":e.accessLevelFilter,"onUpdate:modelValue":t[3]||(t[3]=function(t){e.accessLevelFilter=t,e.changeSearch({filter_access:e.accessLevelFilter,offset:0})}),name:"access-level-filter",uicontrol:"select",options:e.filterAccessLevels,"full-width":!0,placeholder:e.translate("UsersManager_FilterByAccess")},null,8,["model-value","options","placeholder"])])])]),e.totalEntries>e.searchParams.limit?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Mt,[Object(a["createElementVNode"])("div",Bt,[Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["btn prev",{disabled:e.searchParams.offset<=0}]),onClick:t[4]||(t[4]=Object(a["withModifiers"])((function(t){return e.gotoPreviousPage()}),["prevent"]))},[Object(a["createElementVNode"])("span",Dt,"« "+Object(a["toDisplayString"])(e.translate("General_Previous")),1)],2),Object(a["createElementVNode"])("div",_t,[Object(a["createElementVNode"])("span",{class:Object(a["normalizeClass"])({visibility:e.isLoadingUsers?"hidden":"visible"})},Object(a["toDisplayString"])(e.translate("General_Pagination",e.paginationLowerBound,e.paginationUpperBound,e.totalEntries)),3),Object(a["createVNode"])(l,{loading:e.isLoadingUsers},null,8,["loading"])]),Object(a["createElementVNode"])("a",{class:Object(a["normalizeClass"])(["btn next",{disabled:e.searchParams.offset+e.searchParams.limit>=e.totalEntries}]),onClick:t[5]||(t[5]=Object(a["withModifiers"])((function(t){return e.gotoNextPage()}),["prevent"]))},[Object(a["createElementVNode"])("span",Lt,Object(a["toDisplayString"])(e.translate("General_Next"))+" »",1)],2)])])):Object(a["createCommentVNode"])("",!0)]),e.isRoleHelpToggled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Rt,[Object(a["createVNode"])(c,{context:"info",type:"persistent",noclear:!0},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.rolesHelpText)},null,8,xt)]})),_:1})])):Object(a["createCommentVNode"])("",!0),Object(a["createVNode"])(d,null,{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("table",{id:"manageUsersTable",class:Object(a["normalizeClass"])({loading:e.isLoadingUsers})},[Object(a["createElementVNode"])("thead",null,[Object(a["createElementVNode"])("tr",null,[Object(a["createElementVNode"])("th",Pt,[Object(a["createElementVNode"])("span",Ft,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"paged_users_select_all",checked:"checked","onUpdate:modelValue":t[6]||(t[6]=function(t){return e.isAllCheckboxSelected=t}),onChange:t[7]||(t[7]=function(t){return e.onAllCheckboxChange()})},null,544),[[a["vModelCheckbox"],e.isAllCheckboxSelected]]),Ht])])]),Object(a["createElementVNode"])("th",It,Object(a["toDisplayString"])(e.translate("UsersManager_Username")),1),Object(a["createElementVNode"])("th",Jt,[Object(a["createElementVNode"])("span",qt,Object(a["toDisplayString"])(e.translate("UsersManager_RoleFor")),1),Object(a["createElementVNode"])("a",{href:"",class:Object(a["normalizeClass"])(["helpIcon",{sticky:e.isRoleHelpToggled}]),onClick:t[8]||(t[8]=Object(a["withModifiers"])((function(t){return e.isRoleHelpToggled=!e.isRoleHelpToggled}),["prevent"]))},Gt,2),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{class:"permissions-for-selector","model-value":e.permissionsForSite,"onUpdate:modelValue":t[9]||(t[9]=function(t){e.onPermissionsForUpdate(t)}),uicontrol:"site","ui-control-attributes":{onlySitesWithAdminAccess:"superuser"!==e.currentUserRole}},null,8,["model-value","ui-control-attributes"])])]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",zt,Object(a["toDisplayString"])(e.translate("UsersManager_Email")),1)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",{key:1,title:e.translate("UsersManager_UsesTwoFactorAuthentication")},Object(a["toDisplayString"])(e.translate("UsersManager_2FA")),9,Wt)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("th",Yt,Object(a["toDisplayString"])(e.translate("UsersManager_LastSeen")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("th",Xt,[Object(a["createElementVNode"])("div",null,Object(a["toDisplayString"])(e.translate("General_Actions")),1)])])]),Object(a["createElementVNode"])("tbody",null,[e.isAllCheckboxSelected&&e.users.length&&e.users.length<e.totalEntries?(Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",Kt,[Object(a["createElementVNode"])("td",Qt,[e.areAllResultsSelected?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Zt,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.translate("UsersManager_TheDisplayedUsersAreSelected","<strong>".concat(e.users.length,"</strong>"))),style:{"margin-right":"3.5px"}},null,8,en),Object(a["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.translate("UsersManager_ClickToSelectAll","<strong>".concat(e.totalEntries,"</strong>")))},null,8,tn)])),e.areAllResultsSelected?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",nn,[Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.translate("UsersManager_AllUsersAreSelected","<strong>".concat(e.totalEntries,"</strong>"))),style:{"margin-right":"3.5px"}},null,8,sn),Object(a["createElementVNode"])("a",{class:"toggle-select-all-in-search",href:"#",onClick:t[11]||(t[11]=Object(a["withModifiers"])((function(t){return e.areAllResultsSelected=!e.areAllResultsSelected}),["prevent"])),innerHTML:e.$sanitize(e.translate("UsersManager_ClickToSelectDisplayedUsers","<strong>".concat(e.users.length,"</strong>")))},null,8,rn)])):Object(a["createCommentVNode"])("",!0)])])):Object(a["createCommentVNode"])("",!0),(Object(a["openBlock"])(!0),Object(a["createElementBlock"])(a["Fragment"],null,Object(a["renderList"])(e.users,(function(n,s){return Object(a["openBlock"])(),Object(a["createElementBlock"])("tr",{id:"row".concat(s),key:n.login},[Object(a["createElementVNode"])("td",on,[Object(a["createElementVNode"])("span",ln,[Object(a["createElementVNode"])("label",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("input",{type:"checkbox",id:"paged_users_select_row".concat(s),"onUpdate:modelValue":function(t){return e.selectedRows[s]=t},onClick:t[12]||(t[12]=function(t){return e.onRowSelected()})},null,8,cn),[[a["vModelCheckbox"],e.selectedRows[s]]]),dn])])]),Object(a["createElementVNode"])("td",un,Object(a["toDisplayString"])(n.login),1),Object(a["createElementVNode"])("td",mn,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{"model-value":n.role,"onUpdate:modelValue":function(t){e.userToChange=n,e.roleToChangeTo=t,e.showAccessChangeConfirm()},disabled:"superuser"===n.role,uicontrol:"select",options:"anonymous"!==n.login?e.accessLevels:e.anonymousAccessLevels},null,8,["model-value","onUpdate:modelValue","disabled","options"])])]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",bn,Object(a["toDisplayString"])(n.email),1)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",pn,[n.uses_2fa?(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",hn)):Object(a["createCommentVNode"])("",!0),n.uses_2fa?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("span",gn))])):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("td",fn,Object(a["toDisplayString"])(n.last_seen?"".concat(n.last_seen," ago"):"-"),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("td",On,["anonymous"!==n.login?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:0,class:"edituser table-action",title:"Edit",onClick:function(t){return e.$emit("editUser",{user:n})}},Cn,8,jn)):Object(a["createCommentVNode"])("",!0),"superuser"===e.currentUserRole&&"anonymous"!==n.login?(Object(a["openBlock"])(),Object(a["createElementBlock"])("button",{key:1,class:"deleteuser table-action",title:"Delete",onClick:function(t){e.userToChange=n,e.showDeleteConfirm()}},Un,8,Sn)):Object(a["createCommentVNode"])("",!0)])],8,an)})),128))])],2),[[m]])]})),_:1}),Object(a["createElementVNode"])("div",yn,[Object(a["createElementVNode"])("div",En,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.translate("UsersManager_DeleteUserConfirmSingle","<strong>".concat(e.userToChange.login,"</strong>")))},null,8,Vn)):Object(a["createCommentVNode"])("",!0),e.userToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:1,innerHTML:e.$sanitize(e.translate("UsersManager_DeleteUserConfirmMultiple","<strong>".concat(e.affectedUsersCount,"</strong>")))},null,8,kn))]),Object(a["createElementVNode"])("div",An,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[13]||(t[13]=Object(a["withModifiers"])((function(t){return e.deleteRequestedUsers()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[14]||(t[14]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512),Object(a["createElementVNode"])("div",wn,[Object(a["createElementVNode"])("div",Tn,[e.userToChange?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",{key:0,innerHTML:e.$sanitize(e.deleteUserPermConfirmSingleText)},null,8,Mn)):Object(a["createCommentVNode"])("",!0),e.userToChange&&"anonymous"===e.userToChange.login&&"view"===e.roleToChangeTo?(Object(a["openBlock"])(),Object(a["createElementBlock"])("h3",Bn,[Object(a["createElementVNode"])("em",null,[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("General_Note"))+": ",1),Object(a["createElementVNode"])("span",{innerHTML:e.$sanitize(e.translate("UsersManager_AnonymousUserRoleChangeWarning","anonymous",e.getRoleDisplay(e.roleToChangeTo)))},null,8,Dn)])])):Object(a["createCommentVNode"])("",!0),e.userToChange?Object(a["createCommentVNode"])("",!0):(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",{key:2,innerHTML:e.$sanitize(e.deleteUserPermConfirmMultipleText)},null,8,_n))]),Object(a["createElementVNode"])("div",Ln,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[15]||(t[15]=Object(a["withModifiers"])((function(t){return e.changeUserRole()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Yes")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[16]||(t[16]=Object(a["withModifiers"])((function(t){e.userToChange=null,e.roleToChangeTo=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_No")),1)])],512)],2)}var xn=window,Pn=xn.$,Fn=Object(a["defineComponent"])({props:{initialSiteId:{type:[String,Number],required:!0},initialSiteName:{type:String,required:!0},currentUserRole:String,isLoadingUsers:Boolean,accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0},totalEntries:Number,users:{type:Array,required:!0},searchParams:{type:Object,required:!0}},components:{Field:g["Field"],ActivityIndicator:i["ActivityIndicator"],Notification:i["Notification"],ContentBlock:i["ContentBlock"]},directives:{DropdownMenu:i["DropdownMenu"],ContentTable:i["ContentTable"]},data:function(){return{areAllResultsSelected:!1,selectedRows:{},isAllCheckboxSelected:!1,isBulkActionsDisabled:!0,userToChange:null,roleToChangeTo:null,accessLevelFilter:null,isRoleHelpToggled:!1,userTextFilter:"",permissionsForSite:{id:this.initialSiteId,name:this.initialSiteName}}},emits:["editUser","changeUserRole","deleteUser","searchChange"],created:function(){this.onUserTextFilterChange=Object(i["debounce"])(this.onUserTextFilterChange,300)},watch:{users:function(){this.clearSelection()}},methods:{onPermissionsForUpdate:function(e){this.permissionsForSite=e,this.changeSearch({idSite:this.permissionsForSite.id})},clearSelection:function(){this.selectedRows={},this.areAllResultsSelected=!1,this.isBulkActionsDisabled=!0,this.isAllCheckboxSelected=!1,this.userToChange=null},onAllCheckboxChange:function(){if(this.isAllCheckboxSelected){for(var e=0;e!==this.users.length;e+=1)this.selectedRows[e]=!0;this.isBulkActionsDisabled=!1}else this.clearSelection()},changeUserRole:function(){this.$emit("changeUserRole",{users:this.userOperationSubject,role:this.roleToChangeTo})},onRowSelected:function(){var e=this;setTimeout((function(){var t=e.selectedCount;e.isBulkActionsDisabled=0===t,e.isAllCheckboxSelected=t===e.users.length}))},deleteRequestedUsers:function(){this.$emit("deleteUser",{users:this.userOperationSubject})},showDeleteConfirm:function(){Pn(this.$refs.deleteUserConfirmModal).modal({dismissible:!1}).modal("open")},showAccessChangeConfirm:function(){Pn(this.$refs.changeUserRoleConfirmModal).modal({dismissible:!1}).modal("open")},getRoleDisplay:function(e){var t=null;return this.accessLevels.forEach((function(n){n.key===e&&(t=n.value)})),t},changeSearch:function(e){var t=Object.assign(Object.assign({},this.searchParams),e);this.$emit("searchChange",{params:t})},gotoPreviousPage:function(){this.changeSearch({offset:Math.max(0,this.searchParams.offset-this.searchParams.limit)})},gotoNextPage:function(){var e=this.searchParams.offset+this.searchParams.limit;e>=this.totalEntries||this.changeSearch({offset:e})},onUserTextFilterChange:function(e){this.userTextFilter=e,this.changeSearch({filter_search:e,offset:0})}},computed:{paginationLowerBound:function(){return this.searchParams.offset+1},paginationUpperBound:function(){if(null===this.totalEntries)return"?";var e=this.searchParams;return Math.min(e.offset+e.limit,this.totalEntries)},userOperationSubject:function(){return this.userToChange?[this.userToChange]:this.areAllResultsSelected?"all":this.selectedUsers},selectedUsers:function(){var e=this,t=this.users,n=[];return Object.keys(this.selectedRows).forEach((function(s){var r=parseInt(s,10);e.selectedRows[s]&&t[r]&&n.push(t[r])})),n},rolesHelpText:function(){var e="https://matomo.org/faq/general/faq_70/",t="https://matomo.org/faq/general/faq_69/";return Object(i["translate"])("UsersManager_RolesHelp",'<a href="'.concat(e,'" target="_blank" rel="noreferrer noopener">'),"</a>",'<a href="'.concat(t,'" target="_blank" rel="noreferrer noopener">'),"</a>")},affectedUsersCount:function(){return this.areAllResultsSelected?this.totalEntries||0:this.selectedCount},selectedCount:function(){var e=this,t=0;return Object.keys(this.selectedRows).forEach((function(n){e.selectedRows[n]&&(t+=1)})),t},deleteUserPermConfirmSingleText:function(){var e,t;return Object(i["translate"])("UsersManager_DeleteUserPermConfirmSingle","<strong>".concat((null===(e=this.userToChange)||void 0===e?void 0:e.login)||"","</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"),"<strong>".concat(i["Matomo"].helper.htmlEntities((null===(t=this.permissionsForSite)||void 0===t?void 0:t.name)||""),"</strong>"))},deleteUserPermConfirmMultipleText:function(){var e;return Object(i["translate"])("UsersManager_DeleteUserPermConfirmMultiple","<strong>".concat(this.affectedUsersCount,"</strong>"),"<strong>".concat(this.getRoleDisplay(this.roleToChangeTo),"</strong>"),"<strong>".concat(i["Matomo"].helper.htmlEntities((null===(e=this.permissionsForSite)||void 0===e?void 0:e.name)||""),"</strong>"))},bulkActionAccessLevels:function(){return this.accessLevels.filter((function(e){return"noaccess"!==e.key&&"superuser"!==e.key}))},anonymousAccessLevels:function(){return this.accessLevels.filter((function(e){return"noaccess"===e.key||"view"===e.key}))}}});Fn.render=Rn;var Hn=Fn,In=(Object(i["createAngularJsAdapter"])({component:Hn,scope:{onEditUser:{angularJsBind:"&",vue:"editUser"},onChangeUserRole:{angularJsBind:"&",vue:"changeUserRole"},onDeleteUser:{angularJsBind:"&",vue:"deleteUser"},onSearchChange:{angularJsBind:"&",vue:"searchChange"},initialSiteId:{angularJsBind:"<"},initialSiteName:{angularJsBind:"<"},currentUserRole:{angularJsBind:"<"},isLoadingUsers:{angularJsBind:"<"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"},totalEntries:{angularJsBind:"<"},users:{angularJsBind:"<"},searchParams:{angularJsBind:"<"}},directiveName:"piwikPagedUsersList",restrict:"E"}),{class:"usersManager"}),Jn={key:0},qn={key:1},$n={class:"row add-user-container"},Gn={class:"col s12"},zn={class:"input-field",style:{"margin-right":"3.5px"}},Wn={key:0,class:"input-field"},Yn={key:0},Xn={class:"add-existing-user-modal modal",ref:"addExistingUserModal"},Kn={class:"modal-content"},Qn={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function Zn(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("EnrichedHeadline"),l=Object(a["resolveComponent"])("PagedUsersList"),c=Object(a["resolveComponent"])("UserEditForm"),d=Object(a["resolveComponent"])("Field"),u=Object(a["resolveDirective"])("content-intro"),m=Object(a["resolveDirective"])("tooltips");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",In,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("h2",null,[Object(a["createVNode"])(o,{"help-url":"https://matomo.org/docs/manage-users/","feature-name":"Users Management"},{default:Object(a["withCtx"])((function(){return[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_ManageUsers")),1)]})),_:1})]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",Jn,Object(a["toDisplayString"])(e.translate("UsersManager_ManageUsersDesc")),1)):Object(a["createCommentVNode"])("",!0),"admin"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",qn,Object(a["toDisplayString"])(e.translate("UsersManager_ManageUsersAdminDesc")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Gn,[Object(a["createElementVNode"])("div",$n,[Object(a["createElementVNode"])("div",Wn,[Object(a["createElementVNode"])("a",{class:"btn add-new-user",onClick:t[0]||(t[0]=function(t){return e.onAddNewUser()})},Object(a["toDisplayString"])(e.translate("UsersManager_AddUser")),1)]),"superuser"!==e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",zn,[Object(a["createElementVNode"])("a",{class:"btn add-existing-user",onClick:t[1]||(t[1]=function(t){return e.showAddExistingUserModal()})},Object(a["toDisplayString"])(e.translate("UsersManager_AddExistingUser")),1)])):Object(a["createCommentVNode"])("",!0)])]),Object(a["createVNode"])(l,{onEditUser:t[2]||(t[2]=function(t){return e.onEditUser(t.user)}),onChangeUserRole:t[3]||(t[3]=function(t){return e.onChangeUserRole(t.users,t.role)}),onDeleteUser:t[4]||(t[4]=function(t){return e.onDeleteUser(t.users)}),onSearchChange:t[5]||(t[5]=function(t){e.searchParams=t.params,e.fetchUsers()}),"initial-site-id":e.initialSiteId,"initial-site-name":e.initialSiteName,"is-loading-users":e.isLoadingUsers,"current-user-role":e.currentUserRole,"access-levels":e.accessLevels,"filter-access-levels":e.actualFilterAccessLevels,"search-params":e.searchParams,users:e.users,"total-entries":e.totalEntries},null,8,["initial-site-id","initial-site-name","is-loading-users","current-user-role","access-levels","filter-access-levels","search-params","users","total-entries"])],512),[[u]])],512),[[a["vShow"],!e.isEditing]]),e.isEditing?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Yn,[Object(a["createVNode"])(c,{onDone:t[6]||(t[6]=function(t){return e.onDoneEditing(t.isUserModified)}),user:e.userBeingEdited,"current-user-role":e.currentUserRole,"access-levels":e.accessLevels,"filter-access-levels":e.actualFilterAccessLevels,"initial-site-id":e.initialSiteId,"initial-site-name":e.initialSiteName,onUpdated:t[7]||(t[7]=function(t){return e.userBeingEdited=t.user})},null,8,["user","current-user-role","access-levels","filter-access-levels","initial-site-id","initial-site-name"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Xn,[Object(a["createElementVNode"])("div",Kn,[Object(a["createElementVNode"])("h3",null,Object(a["toDisplayString"])(e.translate("UsersManager_AddExistingUser")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_EnterUsernameOrEmail"))+":",1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(d,{modelValue:e.addNewUserLoginEmail,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.addNewUserLoginEmail=t}),name:"add-existing-user-email",uicontrol:"text"},null,8,["modelValue"])])]),Object(a["createElementVNode"])("div",Qn,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.addExistingUser()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Add")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.addNewUserLoginEmail=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])],512)],512)),[[m]])}function es(e){return rs(e)||ss(e)||ns(e)||ts()}function ts(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ns(e,t){if(e){if("string"===typeof e)return is(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?is(e,t):void 0}}function ss(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function rs(e){if(Array.isArray(e))return is(e)}function is(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,s=new Array(t);n<t;n++)s[n]=e[n];return s}var as=20,os=window,ls=os.$,cs=Object(a["defineComponent"])({props:{currentUserRole:{type:String,required:!0},initialSiteName:{type:String,required:!0},initialSiteId:{type:String,required:!0},accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0}},components:{EnrichedHeadline:i["EnrichedHeadline"],PagedUsersList:Hn,UserEditForm:vt,Field:h["Field"]},directives:{ContentIntro:i["ContentIntro"],Tooltips:i["Tooltips"]},data:function(){return{isEditing:!!i["MatomoUrl"].urlParsed.value.showadduser,isCurrentUserSuperUser:!0,users:[],totalEntries:null,searchParams:{offset:0,limit:as,filter_search:"",filter_access:"",idSite:this.initialSiteId},isLoadingUsers:!1,userBeingEdited:null,addNewUserLoginEmail:""}},created:function(){this.fetchUsers()},watch:{limit:function(){this.fetchUsers()}},methods:{onEditUser:function(e){i["Matomo"].helper.lazyScrollToContent(),this.isEditing=!0,this.userBeingEdited=e},onDoneEditing:function(e){this.isEditing=!1,e&&this.fetchUsers()},showAddExistingUserModal:function(){ls(this.$refs.addExistingUserModal).modal({dismissible:!1}).modal("open")},onChangeUserRole:function(e,t){var n=this;this.isLoadingUsers=!0,Promise.resolve().then((function(){return"all"===e?n.getAllUsersInSearch():e})).then((function(e){return e.filter((function(e){return"superuser"!==e.role})).map((function(e){return e.login}))})).then((function(e){var s=e.map((function(e){return{method:"UsersManager.setUserAccess",userLogin:e,access:t,idSites:n.searchParams.idSite,ignoreSuperusers:1}}));return i["AjaxHelper"].fetch(s,{createErrorNotification:!0})})).catch((function(){})).then((function(){return n.fetchUsers()}))},getAllUsersInSearch:function(){return i["AjaxHelper"].fetch({method:"UsersManager.getUsersPlusRole",filter_search:this.searchParams.filter_search,filter_access:this.searchParams.filter_access,idSite:this.searchParams.idSite,filter_limit:"-1"})},onDeleteUser:function(e){var t=this;this.isLoadingUsers=!0,Promise.resolve().then((function(){return"all"===e?t.getAllUsersInSearch():e})).then((function(e){return e.map((function(e){return e.login}))})).then((function(e){var t=e.map((function(e){return{method:"UsersManager.deleteUser",userLogin:e}}));return i["AjaxHelper"].fetch(t,{createErrorNotification:!0})})).catch((function(){})).then((function(){return t.fetchUsers()}))},fetchUsers:function(){var e=this;return this.isLoadingUsers=!0,i["AjaxHelper"].fetch(Object.assign(Object.assign({},this.searchParams),{},{method:"UsersManager.getUsersPlusRole"}),{returnResponseObject:!0}).then((function(t){var n=t.getRequestHandle();e.totalEntries=parseInt(n.getResponseHeader("x-matomo-total-results")||"0",10),e.users=n.responseJSON,e.isLoadingUsers=!1})).catch((function(){e.isLoadingUsers=!1}))},addExistingUser:function(){var e=this;return this.isLoadingUsers=!0,i["AjaxHelper"].fetch({method:"UsersManager.userExists",userLogin:this.addNewUserLoginEmail}).then((function(t){return t&&t.value?e.addNewUserLoginEmail:i["AjaxHelper"].fetch({method:"UsersManager.getUserLoginFromUserEmail",userEmail:e.addNewUserLoginEmail}).then((function(e){return e.value}))})).then((function(t){return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:t,access:"view",idSites:e.searchParams.idSite})})).then((function(){return e.fetchUsers()})).catch((function(){e.isLoadingUsers=!1}))},onAddNewUser:function(){var e={isAllowed:!0};i["Matomo"].postEvent("UsersManager.initAddUser",e),e&&!e.isAllowed||(this.isEditing=!0,this.userBeingEdited=null)}},computed:{actualFilterAccessLevels:function(){return"superuser"===this.currentUserRole?[].concat(es(this.filterAccessLevels),[{key:"superuser",value:"Superuser"}]):this.filterAccessLevels}}});cs.render=Zn;var ds=cs,us=(Object(i["createAngularJsAdapter"])({component:ds,scope:{currentUserRole:{angularJsBind:"<"},initialSiteName:{angularJsBind:"@"},initialSiteId:{angularJsBind:"@"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"}},directiveName:"piwikUsersManager",restrict:"E"}),{key:0,class:"alert alert-info"}),ms={key:1};
+ */function Zn(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("EnrichedHeadline"),l=Object(a["resolveComponent"])("PagedUsersList"),c=Object(a["resolveComponent"])("UserEditForm"),d=Object(a["resolveComponent"])("Field"),u=Object(a["resolveDirective"])("content-intro"),m=Object(a["resolveDirective"])("tooltips");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",In,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["withDirectives"])(Object(a["createElementVNode"])("div",null,[Object(a["createElementVNode"])("h2",null,[Object(a["createVNode"])(o,{"help-url":"https://matomo.org/docs/manage-users/","feature-name":"Users Management"},{default:Object(a["withCtx"])((function(){return[Object(a["createTextVNode"])(Object(a["toDisplayString"])(e.translate("UsersManager_ManageUsers")),1)]})),_:1})]),"superuser"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",Jn,Object(a["toDisplayString"])(e.translate("UsersManager_ManageUsersDesc")),1)):Object(a["createCommentVNode"])("",!0),"admin"===e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("p",qn,Object(a["toDisplayString"])(e.translate("UsersManager_ManageUsersAdminDesc")),1)):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",$n,[Object(a["createElementVNode"])("div",Gn,[Object(a["createElementVNode"])("div",zn,[Object(a["createElementVNode"])("a",{class:"btn add-new-user",onClick:t[0]||(t[0]=function(t){return e.onAddNewUser()})},Object(a["toDisplayString"])(e.translate("UsersManager_AddUser")),1)]),"superuser"!==e.currentUserRole?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Wn,[Object(a["createElementVNode"])("a",{class:"btn add-existing-user",onClick:t[1]||(t[1]=function(t){return e.showAddExistingUserModal()})},Object(a["toDisplayString"])(e.translate("UsersManager_AddExistingUser")),1)])):Object(a["createCommentVNode"])("",!0)])]),Object(a["createVNode"])(l,{onEditUser:t[2]||(t[2]=function(t){return e.onEditUser(t.user)}),onChangeUserRole:t[3]||(t[3]=function(t){return e.onChangeUserRole(t.users,t.role)}),onDeleteUser:t[4]||(t[4]=function(t){return e.onDeleteUser(t.users)}),onSearchChange:t[5]||(t[5]=function(t){e.searchParams=t.params,e.fetchUsers()}),"initial-site-id":e.initialSiteId,"initial-site-name":e.initialSiteName,"is-loading-users":e.isLoadingUsers,"current-user-role":e.currentUserRole,"access-levels":e.accessLevels,"filter-access-levels":e.actualFilterAccessLevels,"search-params":e.searchParams,users:e.users,"total-entries":e.totalEntries},null,8,["initial-site-id","initial-site-name","is-loading-users","current-user-role","access-levels","filter-access-levels","search-params","users","total-entries"])],512),[[u]])],512),[[a["vShow"],!e.isEditing]]),e.isEditing?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Yn,[Object(a["createVNode"])(c,{onDone:t[6]||(t[6]=function(t){return e.onDoneEditing(t.isUserModified)}),user:e.userBeingEdited,"current-user-role":e.currentUserRole,"access-levels":e.accessLevels,"filter-access-levels":e.actualFilterAccessLevels,"initial-site-id":e.initialSiteId,"initial-site-name":e.initialSiteName,onUpdated:t[7]||(t[7]=function(t){return e.userBeingEdited=t.user})},null,8,["user","current-user-role","access-levels","filter-access-levels","initial-site-id","initial-site-name"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Xn,[Object(a["createElementVNode"])("div",Kn,[Object(a["createElementVNode"])("h3",null,Object(a["toDisplayString"])(e.translate("UsersManager_AddExistingUser")),1),Object(a["createElementVNode"])("p",null,Object(a["toDisplayString"])(e.translate("UsersManager_EnterUsernameOrEmail"))+":",1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(d,{modelValue:e.addNewUserLoginEmail,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.addNewUserLoginEmail=t}),name:"add-existing-user-email",uicontrol:"text"},null,8,["modelValue"])])]),Object(a["createElementVNode"])("div",Qn,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close btn",onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.addExistingUser()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Add")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.addNewUserLoginEmail=null}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])],512)],512)),[[m]])}function es(e){return rs(e)||ss(e)||ns(e)||ts()}function ts(){throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function ns(e,t){if(e){if("string"===typeof e)return is(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);return"Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n?Array.from(e):"Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)?is(e,t):void 0}}function ss(e){if("undefined"!==typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}function rs(e){if(Array.isArray(e))return is(e)}function is(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,s=new Array(t);n<t;n++)s[n]=e[n];return s}var as=20,os=window,ls=os.$,cs=Object(a["defineComponent"])({props:{currentUserRole:{type:String,required:!0},initialSiteName:{type:String,required:!0},initialSiteId:{type:String,required:!0},accessLevels:{type:Array,required:!0},filterAccessLevels:{type:Array,required:!0}},components:{EnrichedHeadline:i["EnrichedHeadline"],PagedUsersList:Hn,UserEditForm:vt,Field:g["Field"]},directives:{ContentIntro:i["ContentIntro"],Tooltips:i["Tooltips"]},data:function(){return{isEditing:!!i["MatomoUrl"].urlParsed.value.showadduser,isCurrentUserSuperUser:!0,users:[],totalEntries:null,searchParams:{offset:0,limit:as,filter_search:"",filter_access:"",idSite:this.initialSiteId},isLoadingUsers:!1,userBeingEdited:null,addNewUserLoginEmail:""}},created:function(){this.fetchUsers()},watch:{limit:function(){this.fetchUsers()}},methods:{onEditUser:function(e){i["Matomo"].helper.lazyScrollToContent(),this.isEditing=!0,this.userBeingEdited=e},onDoneEditing:function(e){this.isEditing=!1,e&&this.fetchUsers()},showAddExistingUserModal:function(){ls(this.$refs.addExistingUserModal).modal({dismissible:!1}).modal("open")},onChangeUserRole:function(e,t){var n=this;this.isLoadingUsers=!0,Promise.resolve().then((function(){return"all"===e?n.getAllUsersInSearch():e})).then((function(e){return e.filter((function(e){return"superuser"!==e.role})).map((function(e){return e.login}))})).then((function(e){var s=e.map((function(e){return{method:"UsersManager.setUserAccess",userLogin:e,access:t,idSites:n.searchParams.idSite,ignoreSuperusers:1}}));return i["AjaxHelper"].fetch(s,{createErrorNotification:!0})})).catch((function(){})).then((function(){return n.fetchUsers()}))},getAllUsersInSearch:function(){return i["AjaxHelper"].fetch({method:"UsersManager.getUsersPlusRole",filter_search:this.searchParams.filter_search,filter_access:this.searchParams.filter_access,idSite:this.searchParams.idSite,filter_limit:"-1"})},onDeleteUser:function(e){var t=this;this.isLoadingUsers=!0,Promise.resolve().then((function(){return"all"===e?t.getAllUsersInSearch():e})).then((function(e){return e.map((function(e){return e.login}))})).then((function(e){var t=e.map((function(e){return{method:"UsersManager.deleteUser",userLogin:e}}));return i["AjaxHelper"].fetch(t,{createErrorNotification:!0})})).catch((function(){})).then((function(){return t.fetchUsers()}))},fetchUsers:function(){var e=this;return this.isLoadingUsers=!0,i["AjaxHelper"].fetch(Object.assign(Object.assign({},this.searchParams),{},{method:"UsersManager.getUsersPlusRole"}),{returnResponseObject:!0}).then((function(t){var n=t.getRequestHandle();e.totalEntries=parseInt(n.getResponseHeader("x-matomo-total-results")||"0",10),e.users=n.responseJSON,e.isLoadingUsers=!1})).catch((function(){e.isLoadingUsers=!1}))},addExistingUser:function(){var e=this;return this.isLoadingUsers=!0,i["AjaxHelper"].fetch({method:"UsersManager.userExists",userLogin:this.addNewUserLoginEmail}).then((function(t){return t&&t.value?e.addNewUserLoginEmail:i["AjaxHelper"].fetch({method:"UsersManager.getUserLoginFromUserEmail",userEmail:e.addNewUserLoginEmail}).then((function(e){return e.value}))})).then((function(t){return i["AjaxHelper"].post({method:"UsersManager.setUserAccess"},{userLogin:t,access:"view",idSites:e.searchParams.idSite})})).then((function(){return e.fetchUsers()})).catch((function(){e.isLoadingUsers=!1}))},onAddNewUser:function(){var e={isAllowed:!0};i["Matomo"].postEvent("UsersManager.initAddUser",e),e&&!e.isAllowed||(this.isEditing=!0,this.userBeingEdited=null)}},computed:{actualFilterAccessLevels:function(){return"superuser"===this.currentUserRole?[].concat(es(this.filterAccessLevels),[{key:"superuser",value:"Superuser"}]):this.filterAccessLevels}}});cs.render=Zn;var ds=cs,us=(Object(i["createAngularJsAdapter"])({component:ds,scope:{currentUserRole:{angularJsBind:"<"},initialSiteName:{angularJsBind:"@"},initialSiteId:{angularJsBind:"@"},accessLevels:{angularJsBind:"<"},filterAccessLevels:{angularJsBind:"<"}},directiveName:"piwikUsersManager",restrict:"E"}),{key:0,class:"alert alert-info"}),ms={key:1};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function bs(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("ContentBlock"),d=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(c,{"content-title":e.title},{default:Object(a["withCtx"])((function(){return[0===e.anonymousSites.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",us,Object(a["toDisplayString"])(e.translate("UsersManager_NoteNoAnonymousUserAccessSettingsWontBeUsed2")),1)):Object(a["createCommentVNode"])("",!0),e.anonymousSites.length>0?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ms,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"anonymousDefaultReport",modelValue:e.defaultReport,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.defaultReport=t}),introduction:e.translate("UsersManager_WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess"),options:e.defaultReportOptions},null,8,["modelValue","introduction","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"anonymousDefaultReportWebsite",modelValue:e.defaultReportWebsite,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.defaultReportWebsite=t}),options:e.anonymousSites},null,8,["modelValue","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"anonymousDefaultDate",modelValue:e.defaultDate,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.defaultDate=t}),introduction:e.translate("UsersManager_ForAnonymousUsersReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(l,{saving:e.loading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])],512)),[[d]]):Object(a["createCommentVNode"])("",!0)]})),_:1},8,["content-title"])}var ps=Object(a["defineComponent"])({props:{title:{type:String,required:!0},anonymousSites:{type:Array,required:!0},anonymousDefaultReport:{type:[String,Number],required:!0},anonymousDefaultSite:{type:String,required:!0},anonymousDefaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0},defaultReportOptions:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:h["SaveButton"],Field:h["Field"]},directives:{Form:h["Form"]},data:function(){return{loading:!1,defaultReport:"".concat(this.anonymousDefaultReport),defaultReportWebsite:this.anonymousDefaultSite,defaultDate:this.anonymousDefaultDate}},methods:{save:function(){var e=this,t={anonymousDefaultReport:"1"===this.defaultReport?this.defaultReportWebsite:this.defaultReport,anonymousDefaultDate:this.defaultDate};this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordAnonymousUserSettings",format:"json"},t,{withTokenInUrl:!0}).then((function(){var e=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"anonymousUserSettings",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.loading=!1}))}}});ps.render=bs;var gs=ps,hs=(Object(i["createAngularJsAdapter"])({component:gs,scope:{title:{angularJsBind:"<"},anonymousSites:{angularJsBind:"<"},anonymousDefaultReport:{angularJsBind:"<"},anonymousDefaultSite:{angularJsBind:"<"},anonymousDefaultDate:{angularJsBind:"<"},availableDefaultDates:{angularJsBind:"<"},defaultReportOptions:{angularJsBind:"<"}},directiveName:"matomoAnonymousSettings"}),{id:"newsletterSignup"});
+ */function bs(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("ContentBlock"),d=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(c,{"content-title":e.title},{default:Object(a["withCtx"])((function(){return[0===e.anonymousSites.length?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",us,Object(a["toDisplayString"])(e.translate("UsersManager_NoteNoAnonymousUserAccessSettingsWontBeUsed2")),1)):Object(a["createCommentVNode"])("",!0),e.anonymousSites.length>0?Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",ms,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"anonymousDefaultReport",modelValue:e.defaultReport,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.defaultReport=t}),introduction:e.translate("UsersManager_WhenUsersAreNotLoggedInAndVisitPiwikTheyShouldAccess"),options:e.defaultReportOptions},null,8,["modelValue","introduction","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"anonymousDefaultReportWebsite",modelValue:e.defaultReportWebsite,"onUpdate:modelValue":t[1]||(t[1]=function(t){return e.defaultReportWebsite=t}),options:e.anonymousSites},null,8,["modelValue","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"anonymousDefaultDate",modelValue:e.defaultDate,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.defaultDate=t}),introduction:e.translate("UsersManager_ForAnonymousUsersReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(l,{saving:e.loading,onConfirm:t[3]||(t[3]=function(t){return e.save()})},null,8,["saving"])],512)),[[d]]):Object(a["createCommentVNode"])("",!0)]})),_:1},8,["content-title"])}var ps=Object(a["defineComponent"])({props:{title:{type:String,required:!0},anonymousSites:{type:Array,required:!0},anonymousDefaultReport:{type:[String,Number],required:!0},anonymousDefaultSite:{type:String,required:!0},anonymousDefaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0},defaultReportOptions:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:g["SaveButton"],Field:g["Field"]},directives:{Form:g["Form"]},data:function(){return{loading:!1,defaultReport:"".concat(this.anonymousDefaultReport),defaultReportWebsite:this.anonymousDefaultSite,defaultDate:this.anonymousDefaultDate}},methods:{save:function(){var e=this,t={anonymousDefaultReport:"1"===this.defaultReport?this.defaultReportWebsite:this.defaultReport,anonymousDefaultDate:this.defaultDate};this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordAnonymousUserSettings",format:"json"},t,{withTokenInUrl:!0}).then((function(){var e=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"anonymousUserSettings",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(e)})).finally((function(){e.loading=!1}))}}});ps.render=bs;var hs=ps,gs=(Object(i["createAngularJsAdapter"])({component:hs,scope:{title:{angularJsBind:"<"},anonymousSites:{angularJsBind:"<"},anonymousDefaultReport:{angularJsBind:"<"},anonymousDefaultSite:{angularJsBind:"<"},anonymousDefaultDate:{angularJsBind:"<"},availableDefaultDates:{angularJsBind:"<"},defaultReportOptions:{angularJsBind:"<"}},directiveName:"matomoAnonymousSettings"}),{id:"newsletterSignup"});
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function fs(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("ContentBlock");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",hs,[Object(a["createVNode"])(c,{"content-title":e.translate("UsersManager_NewsletterSignupTitle")},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"checkbox",name:"newsletterSignupCheckbox",id:"newsletterSignupCheckbox",modelValue:e.newsletterSignupCheckbox,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.newsletterSignupCheckbox=t}),"full-width":!0,title:e.signupTitleText},null,8,["modelValue","title"])]),Object(a["createVNode"])(l,{id:"newsletterSignupBtn",onConfirm:t[1]||(t[1]=function(t){return e.signupForNewsletter()}),disabled:!e.newsletterSignupCheckbox,value:e.newsletterSignupButtonTitle,saving:e.isProcessingNewsletterSignup},null,8,["disabled","value","saving"])]})),_:1},8,["content-title"])],512)),[[a["vShow"],e.showNewsletterSignup]])}var Os=Object(a["defineComponent"])({data:function(){return{showNewsletterSignup:!0,newsletterSignupCheckbox:!1,isProcessingNewsletterSignup:!1,newsletterSignupButtonTitle:Object(i["translate"])("General_Save")}},components:{ContentBlock:i["ContentBlock"],SaveButton:h["SaveButton"],Field:h["Field"]},computed:{signupTitleText:function(){return Object(i["translate"])("UsersManager_NewsletterSignupMessage",'<a href="https://matomo.org/privacy-policy/" target="_blank">',"</a>")}},methods:{signupForNewsletter:function(){var e=this;this.newsletterSignupButtonTitle=Object(i["translate"])("General_Loading"),this.isProcessingNewsletterSignup=!0,i["AjaxHelper"].fetch({module:"API",method:"UsersManager.newsletterSignup"},{withTokenInUrl:!0}).then((function(){e.isProcessingNewsletterSignup=!1,e.showNewsletterSignup=!1;var t=i["NotificationsStore"].show({message:Object(i["translate"])("UsersManager_NewsletterSignupSuccessMessage"),id:"newslettersignup",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t)})).catch((function(){e.isProcessingNewsletterSignup=!1;var t=i["NotificationsStore"].show({message:Object(i["translate"])("UsersManager_NewsletterSignupFailureMessage"),id:"newslettersignup",context:"error",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.newsletterSignupButtonTitle=Object(i["translate"])("General_PleaseTryAgain")}))}}});Os.render=fs;var js=Os,vs=(Object(i["createAngularJsAdapter"])({component:js,scope:{},directiveName:"matomoNewsletterSettings"}),{id:"userSettingsTable"}),Cs={key:0},Ss={id:"languageHelp",class:"inline-help-node"},Ns={target:"_blank",rel:"noreferrer noopener",href:"https://matomo.org/translations/"},Us={class:"sites_autocomplete"},ys={class:"modal",id:"confirmChangesWithPassword",ref:"confirmChangesWithPasswordModal"},Vs={class:"modal-content"},Es={class:"modal-footer"};
+ */function fs(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SaveButton"),c=Object(a["resolveComponent"])("ContentBlock");return Object(a["withDirectives"])((Object(a["openBlock"])(),Object(a["createElementBlock"])("div",gs,[Object(a["createVNode"])(c,{"content-title":e.translate("UsersManager_NewsletterSignupTitle")},{default:Object(a["withCtx"])((function(){return[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"checkbox",name:"newsletterSignupCheckbox",id:"newsletterSignupCheckbox",modelValue:e.newsletterSignupCheckbox,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.newsletterSignupCheckbox=t}),"full-width":!0,title:e.signupTitleText},null,8,["modelValue","title"])]),Object(a["createVNode"])(l,{id:"newsletterSignupBtn",onConfirm:t[1]||(t[1]=function(t){return e.signupForNewsletter()}),disabled:!e.newsletterSignupCheckbox,value:e.newsletterSignupButtonTitle,saving:e.isProcessingNewsletterSignup},null,8,["disabled","value","saving"])]})),_:1},8,["content-title"])],512)),[[a["vShow"],e.showNewsletterSignup]])}var Os=Object(a["defineComponent"])({data:function(){return{showNewsletterSignup:!0,newsletterSignupCheckbox:!1,isProcessingNewsletterSignup:!1,newsletterSignupButtonTitle:Object(i["translate"])("General_Save")}},components:{ContentBlock:i["ContentBlock"],SaveButton:g["SaveButton"],Field:g["Field"]},computed:{signupTitleText:function(){return Object(i["translate"])("UsersManager_NewsletterSignupMessage",'<a href="https://matomo.org/privacy-policy/" target="_blank">',"</a>")}},methods:{signupForNewsletter:function(){var e=this;this.newsletterSignupButtonTitle=Object(i["translate"])("General_Loading"),this.isProcessingNewsletterSignup=!0,i["AjaxHelper"].fetch({module:"API",method:"UsersManager.newsletterSignup"},{withTokenInUrl:!0}).then((function(){e.isProcessingNewsletterSignup=!1,e.showNewsletterSignup=!1;var t=i["NotificationsStore"].show({message:Object(i["translate"])("UsersManager_NewsletterSignupSuccessMessage"),id:"newslettersignup",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t)})).catch((function(){e.isProcessingNewsletterSignup=!1;var t=i["NotificationsStore"].show({message:Object(i["translate"])("UsersManager_NewsletterSignupFailureMessage"),id:"newslettersignup",context:"error",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.newsletterSignupButtonTitle=Object(i["translate"])("General_PleaseTryAgain")}))}}});Os.render=fs;var js=Os,vs=(Object(i["createAngularJsAdapter"])({component:js,scope:{},directiveName:"matomoNewsletterSettings"}),{id:"userSettingsTable"}),Cs={key:0},Ss={id:"languageHelp",class:"inline-help-node"},Ns={target:"_blank",rel:"noreferrer noopener",href:"https://matomo.org/translations/"},Us={class:"sites_autocomplete"},ys={class:"modal",id:"confirmChangesWithPassword",ref:"confirmChangesWithPasswordModal"},Es={class:"modal-content"},Vs={class:"modal-footer"};
/*!
* Matomo - free/libre analytics platform
*
* @link https://matomo.org
* @license http://www.gnu.org/licenses/gpl-3.0.html GPL v3 or later
- */function ks(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SiteSelector"),c=Object(a["resolveComponent"])("SaveButton"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{"content-title":e.title,feature:"true"},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("form",vs,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"text",name:"username",title:e.translate("General_Username"),disabled:!0,modelValue:e.username,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.username=t}),"inline-help":e.translate("UsersManager_YourUsernameCannotBeChanged")},null,8,["title","modelValue","inline-help"])]),e.isUsersAdminEnabled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Cs,[Object(a["createVNode"])(o,{uicontrol:"text",name:"email","model-value":e.email,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.email=t,e.doesRequirePasswordConfirmation=!0}),maxlength:100,title:e.translate("UsersManager_Email")},null,8,["model-value","title"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Ss,[Object(a["createElementVNode"])("a",Ns,Object(a["toDisplayString"])(e.translate("LanguagesManager_AboutPiwikTranslations")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"language",modelValue:e.language,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.language=t}),title:e.translate("General_Language"),options:e.languageOptions,"inline-help":"#languageHelp"},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"timeformat",modelValue:e.timeformat,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.timeformat=t}),title:e.translate("General_TimeFormat"),options:e.timeFormats},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultReport",modelValue:e.theDefaultReport,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theDefaultReport=t}),introduction:e.translate("UsersManager_ReportToLoadByDefault"),title:e.translate("General_AllWebsitesDashboard"),options:e.defaultReportOptions},null,8,["modelValue","introduction","title","options"])]),Object(a["createElementVNode"])("div",Us,[Object(a["createVNode"])(l,{modelValue:e.site,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.site=t}),"show-selected-site":!0,"switch-site-on-select":!1,"show-all-sites-item":!1,showselectedsite:!0,id:"defaultReportSiteSelector"},null,8,["modelValue"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultDate",modelValue:e.theDefaultDate,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.theDefaultDate=t}),introduction:e.translate("UsersManager_ReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(c,{onConfirm:t[7]||(t[7]=function(t){return e.save()}),saving:e.loading},null,8,["saving"]),Object(a["createElementVNode"])("div",ys,[Object(a["createElementVNode"])("div",Vs,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"password",name:"currentPassword",autocomplete:!1,modelValue:e.passwordCurrent,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.passwordCurrent=t}),"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",Es,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action btn",onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.save()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Ok")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.passwordCurrent=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])],512)],512),[[u]])]})),_:1},8,["content-title"])}var As=window,ws=As.$,Ts=Object(a["defineComponent"])({props:{isUsersAdminEnabled:{type:Boolean,required:!0},title:{type:String,required:!0},userLogin:{type:String,required:!0},userEmail:{type:String,required:!0},currentLanguageCode:{type:String,required:!0},languageOptions:{type:Object,required:!0},currentTimeformat:{type:Number,required:!0},timeFormats:{type:Object,required:!0},defaultReport:{type:[String,Number],required:!0},defaultReportOptions:{type:Object,required:!0},defaultReportIdSite:{type:[String,Number],required:!0},defaultReportSiteName:{type:String,required:!0},defaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:h["SaveButton"],Field:h["Field"],SiteSelector:i["SiteSelector"]},directives:{Form:h["Form"]},data:function(){return{doesRequirePasswordConfirmation:!1,username:this.userLogin,email:this.userEmail,language:this.currentLanguageCode,timeformat:this.currentTimeformat,theDefaultReport:this.defaultReport,site:{id:this.defaultReportIdSite,name:i["Matomo"].helper.htmlDecode(this.defaultReportSiteName)},theDefaultDate:this.defaultDate,loading:!1,passwordCurrent:""}},methods:{save:function(){var e=this;if(!this.doesRequirePasswordConfirmation||this.passwordCurrent){var t=M.Modal.getInstance(this.$refs.confirmChangesWithPasswordModal);t&&t.close();var n={email:this.email,defaultReport:"MultiSites"===this.theDefaultReport?this.theDefaultReport:this.site.id,defaultDate:this.theDefaultDate,language:this.language,timeformat:this.timeformat};this.passwordCurrent&&(n.passwordConfirmation=this.passwordCurrent),this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordUserSettings",format:"json"},n,{withTokenInUrl:!0}).then((function(){var t=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"PersonalSettingsSuccess",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.doesRequirePasswordConfirmation=!1,e.passwordCurrent="",e.loading=!1})).catch((function(){e.loading=!1,e.passwordCurrent=""}))}else ws(this.$refs.confirmChangesWithPasswordModal).modal({dismissible:!1,ready:function(){ws(".modal.open #currentPassword").focus()}}).modal("open")}}});Ts.render=ks;var Ms=Ts;
+ */function ks(e,t,n,s,r,i){var o=Object(a["resolveComponent"])("Field"),l=Object(a["resolveComponent"])("SiteSelector"),c=Object(a["resolveComponent"])("SaveButton"),d=Object(a["resolveComponent"])("ContentBlock"),u=Object(a["resolveDirective"])("form");return Object(a["openBlock"])(),Object(a["createBlock"])(d,{"content-title":e.title,feature:"true"},{default:Object(a["withCtx"])((function(){return[Object(a["withDirectives"])(Object(a["createElementVNode"])("form",vs,[Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"text",name:"username",title:e.translate("General_Username"),disabled:!0,modelValue:e.username,"onUpdate:modelValue":t[0]||(t[0]=function(t){return e.username=t}),"inline-help":e.translate("UsersManager_YourUsernameCannotBeChanged")},null,8,["title","modelValue","inline-help"])]),e.isUsersAdminEnabled?(Object(a["openBlock"])(),Object(a["createElementBlock"])("div",Cs,[Object(a["createVNode"])(o,{uicontrol:"text",name:"email","model-value":e.email,"onUpdate:modelValue":t[1]||(t[1]=function(t){e.email=t,e.doesRequirePasswordConfirmation=!0}),maxlength:100,title:e.translate("UsersManager_Email")},null,8,["model-value","title"])])):Object(a["createCommentVNode"])("",!0),Object(a["createElementVNode"])("div",Ss,[Object(a["createElementVNode"])("a",Ns,Object(a["toDisplayString"])(e.translate("LanguagesManager_AboutPiwikTranslations")),1)]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"language",modelValue:e.language,"onUpdate:modelValue":t[2]||(t[2]=function(t){return e.language=t}),title:e.translate("General_Language"),options:e.languageOptions,"inline-help":"#languageHelp"},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"select",name:"timeformat",modelValue:e.timeformat,"onUpdate:modelValue":t[3]||(t[3]=function(t){return e.timeformat=t}),title:e.translate("General_TimeFormat"),options:e.timeFormats},null,8,["modelValue","title","options"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultReport",modelValue:e.theDefaultReport,"onUpdate:modelValue":t[4]||(t[4]=function(t){return e.theDefaultReport=t}),introduction:e.translate("UsersManager_ReportToLoadByDefault"),title:e.translate("General_AllWebsitesDashboard"),options:e.defaultReportOptions},null,8,["modelValue","introduction","title","options"])]),Object(a["createElementVNode"])("div",Us,[Object(a["createVNode"])(l,{modelValue:e.site,"onUpdate:modelValue":t[5]||(t[5]=function(t){return e.site=t}),"show-selected-site":!0,"switch-site-on-select":!1,"show-all-sites-item":!1,showselectedsite:!0,id:"defaultReportSiteSelector"},null,8,["modelValue"])]),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"radio",name:"defaultDate",modelValue:e.theDefaultDate,"onUpdate:modelValue":t[6]||(t[6]=function(t){return e.theDefaultDate=t}),introduction:e.translate("UsersManager_ReportDateToLoadByDefault"),options:e.availableDefaultDates},null,8,["modelValue","introduction","options"])]),Object(a["createVNode"])(c,{onConfirm:t[7]||(t[7]=function(t){return e.save()}),saving:e.loading},null,8,["saving"]),Object(a["createElementVNode"])("div",ys,[Object(a["createElementVNode"])("div",Es,[Object(a["createElementVNode"])("h2",null,Object(a["toDisplayString"])(e.translate("UsersManager_ConfirmWithPassword")),1),Object(a["createElementVNode"])("div",null,[Object(a["createVNode"])(o,{uicontrol:"password",name:"currentPassword",autocomplete:!1,modelValue:e.passwordCurrent,"onUpdate:modelValue":t[8]||(t[8]=function(t){return e.passwordCurrent=t}),"full-width":!0,title:e.translate("UsersManager_YourCurrentPassword")},null,8,["modelValue","title"])])]),Object(a["createElementVNode"])("div",Vs,[Object(a["createElementVNode"])("a",{href:"",class:"modal-action btn",onClick:t[9]||(t[9]=Object(a["withModifiers"])((function(t){return e.save()}),["prevent"])),style:{"margin-right":"3.5px"}},Object(a["toDisplayString"])(e.translate("General_Ok")),1),Object(a["createElementVNode"])("a",{href:"",class:"modal-action modal-close modal-no",onClick:t[10]||(t[10]=Object(a["withModifiers"])((function(t){return e.passwordCurrent=""}),["prevent"]))},Object(a["toDisplayString"])(e.translate("General_Cancel")),1)])],512)],512),[[u]])]})),_:1},8,["content-title"])}var As=window,ws=As.$,Ts=Object(a["defineComponent"])({props:{isUsersAdminEnabled:{type:Boolean,required:!0},title:{type:String,required:!0},userLogin:{type:String,required:!0},userEmail:{type:String,required:!0},currentLanguageCode:{type:String,required:!0},languageOptions:{type:Object,required:!0},currentTimeformat:{type:Number,required:!0},timeFormats:{type:Object,required:!0},defaultReport:{type:[String,Number],required:!0},defaultReportOptions:{type:Object,required:!0},defaultReportIdSite:{type:[String,Number],required:!0},defaultReportSiteName:{type:String,required:!0},defaultDate:{type:String,required:!0},availableDefaultDates:{type:Object,required:!0}},components:{ContentBlock:i["ContentBlock"],SaveButton:g["SaveButton"],Field:g["Field"],SiteSelector:i["SiteSelector"]},directives:{Form:g["Form"]},data:function(){return{doesRequirePasswordConfirmation:!1,username:this.userLogin,email:this.userEmail,language:this.currentLanguageCode,timeformat:this.currentTimeformat,theDefaultReport:this.defaultReport,site:{id:this.defaultReportIdSite,name:i["Matomo"].helper.htmlDecode(this.defaultReportSiteName)},theDefaultDate:this.defaultDate,loading:!1,passwordCurrent:""}},methods:{save:function(){var e=this;if(!this.doesRequirePasswordConfirmation||this.passwordCurrent){var t=M.Modal.getInstance(this.$refs.confirmChangesWithPasswordModal);t&&t.close();var n={email:this.email,defaultReport:"MultiSites"===this.theDefaultReport?this.theDefaultReport:this.site.id,defaultDate:this.theDefaultDate,language:this.language,timeformat:this.timeformat};this.passwordCurrent&&(n.passwordConfirmation=this.passwordCurrent),this.loading=!0,i["AjaxHelper"].post({module:"UsersManager",action:"recordUserSettings",format:"json"},n,{withTokenInUrl:!0}).then((function(){var t=i["NotificationsStore"].show({message:Object(i["translate"])("CoreAdminHome_SettingsSaveSuccess"),id:"PersonalSettingsSuccess",context:"success",type:"transient"});i["NotificationsStore"].scrollToNotification(t),e.doesRequirePasswordConfirmation=!1,e.passwordCurrent="",e.loading=!1})).catch((function(){e.loading=!1,e.passwordCurrent=""}))}else ws(this.$refs.confirmChangesWithPasswordModal).modal({dismissible:!1,ready:function(){ws(".modal.open #currentPassword").focus()}}).modal("open")}}});Ts.render=ks;var Ms=Ts;
/*!
* Matomo - free/libre analytics platform
*
diff --git a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
index 6fbb4f3324..8ac9e8e4fa 100644
--- a/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
+++ b/plugins/UsersManager/vue/src/PagedUsersList/PagedUsersList.vue
@@ -144,7 +144,7 @@
type="persistent"
:noclear="true"
>
- <span v-html="rolesHelpText"></span>
+ <span v-html="$sanitize(rolesHelpText)"></span>
</Notification>
</div>
<ContentBlock>
@@ -211,37 +211,37 @@
<td colspan="8">
<div v-if="!areAllResultsSelected">
<span
- v-html="translate(
+ v-html="$sanitize(translate(
'UsersManager_TheDisplayedUsersAreSelected',
`<strong>${users.length}</strong>`,
- )"
+ ))"
style="margin-right:3.5px"
></span>
<a
class="toggle-select-all-in-search"
href="#"
@click.prevent="areAllResultsSelected = !areAllResultsSelected"
- v-html="translate(
+ v-html="$sanitize(translate(
'UsersManager_ClickToSelectAll',
`<strong>${totalEntries}</strong>`,
- )"
+ ))"
></a>
</div>
<div v-if="areAllResultsSelected">
- <span v-html="translate(
+ <span v-html="$sanitize(translate(
'UsersManager_AllUsersAreSelected',
`<strong>${totalEntries}</strong>`,
- )"
+ ))"
style="margin-right:3.5px"
></span>
<a
class="toggle-select-all-in-search"
href="#"
@click.prevent="areAllResultsSelected = !areAllResultsSelected"
- v-html="translate(
+ v-html="$sanitize(translate(
'UsersManager_ClickToSelectDisplayedUsers',
`<strong>${users.length}</strong>`,
- )"
+ ))"
></a>
</div>
</td>
@@ -328,17 +328,17 @@
<div class="modal-content">
<h3
v-if="userToChange"
- v-html="translate(
+ v-html="$sanitize(translate(
'UsersManager_DeleteUserConfirmSingle',
`<strong>${userToChange.login}</strong>`,
- )"
+ ))"
></h3>
<p
v-if="!userToChange"
- v-html="translate(
+ v-html="$sanitize(translate(
'UsersManager_DeleteUserConfirmMultiple',
`<strong>${affectedUsersCount}</strong>`,
- )"
+ ))"
></p>
</div>
<div class="modal-footer">
@@ -363,17 +363,17 @@
></h3>
<h3 v-if="userToChange && userToChange.login === 'anonymous' && roleToChangeTo === 'view'">
<em>{{ translate('General_Note') }}:
- <span v-html="translate(
+ <span v-html="$sanitize(translate(
'UsersManager_AnonymousUserRoleChangeWarning',
'anonymous',
getRoleDisplay(roleToChangeTo),
- )">
+ ))">
</span>
</em>
</h3>
<p
v-if="!userToChange"
- v-html="deleteUserPermConfirmMultipleText"
+ v-html="$sanitize(deleteUserPermConfirmMultipleText)"
></p>
</div>
<div class="modal-footer">
@@ -406,6 +406,7 @@ import {
debounce,
translate,
SiteRef,
+ Matomo,
} from 'CoreHome';
import { Field } from 'CorePluginsAdmin';
import User from '../User';
@@ -651,7 +652,7 @@ export default defineComponent({
'UsersManager_DeleteUserPermConfirmSingle',
`<strong>${this.userToChange?.login || ''}</strong>`,
`<strong>${this.getRoleDisplay(this.roleToChangeTo)}</strong>`,
- `<strong>${this.permissionsForSite?.name || ''}</strong>`,
+ `<strong>${Matomo.helper.htmlEntities(this.permissionsForSite?.name || '')}</strong>`,
);
},
deleteUserPermConfirmMultipleText() {
@@ -659,7 +660,7 @@ export default defineComponent({
'UsersManager_DeleteUserPermConfirmMultiple',
`<strong>${this.affectedUsersCount}</strong>`,
`<strong>${this.getRoleDisplay(this.roleToChangeTo)}</strong>`,
- `<strong>${this.permissionsForSite?.name || ''}</strong>`,
+ `<strong>${Matomo.helper.htmlEntities(this.permissionsForSite?.name || '')}</strong>`,
);
},
bulkActionAccessLevels() {
diff --git a/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue b/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue
index e926909676..406f8ced69 100644
--- a/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue
+++ b/plugins/UsersManager/vue/src/UserEditForm/UserEditForm.vue
@@ -270,7 +270,7 @@
</div>
<div class="change-password-modal modal" ref="changePasswordModal">
<div class="modal-content">
- <h2 v-html="changePasswordTitle"></h2>
+ <h2 v-html="$sanitize(changePasswordTitle)"></h2>
<p>{{ translate('UsersManager_ConfirmWithPassword') }}</p>
<div>
<Field
diff --git a/plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue b/plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue
index 655ee0db66..79ad0ec68d 100644
--- a/plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue
+++ b/plugins/UsersManager/vue/src/UserPermissionsEdit/UserPermissionsEdit.vue
@@ -196,7 +196,7 @@
</th>
<th>{{ translate('General_Name') }}</th>
<th class="role_header">
- <span v-html="`${translate('UsersManager_Role')} `"></span>
+ <span v-html="$sanitize(`${translate('UsersManager_Role')} `)"></span>
<a
href=""
class="helpIcon"
@@ -207,7 +207,7 @@
</a>
</th>
<th class="capabilities_header">
- <span v-html="`${translate('UsersManager_Capabilities')} `"></span>
+ <span v-html="$sanitize(`${translate('UsersManager_Capabilities')} `)"></span>
<a
href=""
class="helpIcon"
diff --git a/plugins/VisitFrequency/lang/ga.json b/plugins/VisitFrequency/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/VisitFrequency/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/VisitFrequency/lang/id.json b/plugins/VisitFrequency/lang/id.json
index 3a822fb1a3..506d9a6346 100644
--- a/plugins/VisitFrequency/lang/id.json
+++ b/plugins/VisitFrequency/lang/id.json
@@ -1,25 +1,39 @@
{
"VisitFrequency": {
"ColumnActionsByNewVisits": "Tindakan berdasarkan Kunjungan Baru",
- "ColumnActionsByReturningVisits": "Tindakan oleh Kunjungan Kembali",
- "ColumnAverageVisitDurationForReturningVisitors": "Rerata Waktu Kunjungan Pengunjung Kembali (dalam detik)",
- "ColumnAvgActionsPerReturningVisit": "Rerata Tindakan tiap Kunjungan Kembali",
- "ColumnBounceCountForReturningVisits": "Jumlah pentalan untuk Kunjungan Kembali",
- "ColumnBounceRateForReturningVisits": "Tingkat pentalan Kunjungan Kembali",
- "ColumnMaxActionsInReturningVisit": "Aksi maksimal dalam kunjungan kembali",
- "ColumnNbReturningVisitsConverted": "Jumlah kunjungan kembali terkonversi",
+ "ColumnActionsByReturningVisits": "Tindakan berdasarkan Kunjungan Kembali",
+ "ColumnAverageVisitDurationForNewVisitors": "Rata-rata Durasi Kunjungan Baru (dalam detik)",
+ "ColumnAverageVisitDurationForReturningVisitors": "Rata-rata Durasi Kunjungan Kembali (dalam detik)",
+ "ColumnAvgActionsPerNewVisit": "Rata-rata Tindakan per Kunjungan Baru",
+ "ColumnAvgActionsPerReturningVisit": "Rata-rata Tindakan per Kunjungan Kembali",
+ "ColumnBounceCountForReturningVisits": "Jumlah pantulan untuk Kunjungan Kembali",
+ "ColumnBounceRateForNewVisits": "Rasio Pantulan untuk Kunjungan Baru",
+ "ColumnBounceRateForReturningVisits": "Rasio pantulan untuk Kunjungan Kembali",
+ "ColumnMaxActionsInReturningVisit": "Tindakan maksimal dalam satu kunjungan kembali",
+ "ColumnNbReturningVisitsConverted": "Jumlah kunjungan kembali yang dikonversi",
+ "ColumnNewUsers": "Pengguna Baru",
"ColumnNewVisits": "Kunjungan Baru",
- "ColumnReturningUsers": "Penguna kembali",
+ "ColumnReturningUsers": "Pengguna yang Kembali",
"ColumnReturningVisits": "Kunjungan Kembali",
- "ColumnSumVisitLengthReturning": "Jumlah waktu digunakan oleh pengunjung kembali (dalam detik)",
- "ColumnUniqueNewVisitors": "Pengunjung baru unik",
- "ColumnUniqueReturningVisitors": "Pengnjung kembali unik",
+ "ColumnSumVisitLengthReturning": "Total waktu yang dihabiskan oleh pengunjung yang kembali (dalam detik)",
+ "ColumnUniqueNewVisitors": "Pengunjung baru yang unik",
+ "ColumnUniqueReturningVisitors": "Pengunjung kembali yang unik",
+ "NewActions": "tindakan berdasarkan kunjungan baru",
+ "NewAverageVisitDuration": "durasi kunjungan rata-rata untuk pengunjung baru",
+ "NewAvgActions": "tindakan per kunjungan baru",
+ "NewBounceRate": "kunjungan baru telah terpantul (meninggalkan situs web setelah satu halaman)",
"NewVisits": "kunjungan baru",
- "PluginDescription": "Laporan matriks mengenai pengunjung baru dan pengunjung kembali.",
- "ReturningVisitDocumentation": "Kunjungan kembali (lawan dari kunjungan baru) dibuat oleh seseorang yang telah mengunjungi situs sekali sebelumnya.",
- "ReturningVisitsDocumentation": "Ini merupakan iktisar kujungan kembali.",
+ "PluginDescription": "Melaporkan metrik tentang pengunjung baru dan pengunjung kembali.",
+ "ReturnActions": "tindakan berdasarkan kunjungan yang kembali",
+ "ReturnAverageVisitDuration": "durasi kunjungan rata-rata untuk pengunjung yang kembali",
+ "ReturnAvgActions": "tindakan per kunjungan yang kembali",
+ "ReturnBounceRate": "kunjungan kembali telah terpantul (meninggalkan situs web setelah satu halaman)",
+ "ReturnVisits": "kunjungan kembali",
+ "ReturningVisitDocumentation": "Kunjungan kembali adalah (sebagai lawan dari kunjungan baru) kunjungan yang dilakukan oleh seseorang yang telah mengunjungi situs web setidaknya sekali sebelumnya.",
+ "ReturningVisitsDocumentation": "Ini adalah gambaran umum dari kunjungan yang kembali.",
"SubmenuFrequency": "Frekuensi",
+ "VisitFrequencyReportDocumentation": "Laporan ini menunjukkan metrik umum seperti kunjungan untuk pengunjung yang kembali secara berdampingan dengan metrik yang sama untuk pengunjung baru. Pelajari bagaimana kinerja pengunjung yang kembali secara keseluruhan dibandingkan dengan pengunjung baru.",
"WidgetGraphReturning": "Grafik kunjungan kembali",
- "WidgetOverview": "Iktisar Frekuensi"
+ "WidgetOverview": "Ikhtisar Frekuensi"
}
}
diff --git a/plugins/VisitTime/Reports/GetVisitInformationPerServerTime.php b/plugins/VisitTime/Reports/GetVisitInformationPerServerTime.php
index 33bb4aa017..85cca6163c 100644
--- a/plugins/VisitTime/Reports/GetVisitInformationPerServerTime.php
+++ b/plugins/VisitTime/Reports/GetVisitInformationPerServerTime.php
@@ -22,8 +22,8 @@ class GetVisitInformationPerServerTime extends Base
{
parent::init();
$this->dimension = new VisitFirstActionTime();
- $this->name = Piwik::translate('VisitTime_ServerTime');
- $this->documentation = Piwik::translate('VisitTime_WidgetServerTimeDocumentation', array('<strong>', '</strong>'));
+ $this->name = Piwik::translate('VisitTime_SiteTime');
+ $this->documentation = Piwik::translate('VisitTime_WidgetSiteTimeDocumentation', array('<strong>', '</strong>'));
$this->constantRowsCount = true;
$this->hasGoalMetrics = true;
$this->order = 20;
diff --git a/plugins/VisitTime/lang/ca.json b/plugins/VisitTime/lang/ca.json
index ed1ca8bc84..24983e316d 100644
--- a/plugins/VisitTime/lang/ca.json
+++ b/plugins/VisitTime/lang/ca.json
@@ -6,6 +6,8 @@
"ColumnServerHour": "Hora del servidor - hora",
"ColumnServerMinute": "Hora del servidor - minut",
"ColumnServerTime": "Hora del servidor",
+ "ColumnSiteHour": "Temps del lloc - hora",
+ "ColumnUTCMinute": "Hora en UTC - minut",
"ColumnVisitEndServerDate": "Hora del servidor - data (instant de l'última acció)",
"ColumnVisitEndServerDayOfMonth": "Hora del servidor - dia del mes (instant de l'última acció)",
"ColumnVisitEndServerDayOfWeek": "Hora del servidor - dia de la setmana (instant de l'última acció)",
@@ -17,13 +19,27 @@
"ColumnVisitEndServerSecond": "Hora del servidor - segon (instant de l'última acció)",
"ColumnVisitEndServerWeekOfYear": "Hora del servidor - setmana de l'any (instant de l'última acció)",
"ColumnVisitEndServerYear": "Hora del servidor - any (instant de l'última acció)",
+ "ColumnVisitEndSiteHour": "Temps del lloc - hora (de l'última acció)",
+ "ColumnVisitEndUTCDate": "Hora en UTC - data (hora de l'última acció)",
+ "ColumnVisitEndUTCDayOfMonth": "Hora en UTC - dia del mes (hora de l'última acció)",
+ "ColumnVisitEndUTCDayOfWeek": "Hora en UTC - dia de la setmana (hora de l'última acció)",
+ "ColumnVisitEndUTCDayOfYear": "Hora en UTC - dia de l'any (hora de l'última acció)",
+ "ColumnVisitEndUTCMinute": "Hora en UTC - minut (hora de l'última acció)",
+ "ColumnVisitEndUTCMonth": "Hora en UTC - mes (hora de l'última acció)",
+ "ColumnVisitEndUTCQuarter": "Hora en UTC - trimestre (hora de l'última acció)",
+ "ColumnVisitEndUTCSecond": "Hora en UTC - segon (hora de l'última acció)",
+ "ColumnVisitEndUTCWeekOfYear": "Hora en UTC - setmana de l'any (hora de l'última acció)",
+ "ColumnVisitEndUTCYear": "Hora en UTC - any (hora de l'última acció)",
"ColumnVisitStartServerHour": "Hora del servidor - hora (inici de la visita)",
"ColumnVisitStartServerMinute": "Hora del servidor - minut (inici de la visita)",
+ "ColumnVisitStartSiteHour": "Hora del lloc - hora (inici de la visita)",
+ "ColumnVisitStartUTCMinute": "Hora en UTC - minut (inici de la visita)",
"DayOfWeek": "Dia de la setmana",
"LocalTime": "Visites segons l'hora local",
"NHour": "%sh",
"PluginDescription": "Informa de l'hora local i l'hora del servidor quan els vostres visitants veuen el vostre lloc web o aplicació.",
"ServerTime": "Visites segons l'hora del servidor",
+ "SiteTime": "Visites per hora a la zona horària del lloc",
"SubmenuTimes": "Hores",
"TimesSubcategoryHelp": "La secció Times us mostra quan la gent visita el vostre lloc. Podeu veure les hores locals més populars durant les quals us visiten els vostres usuaris, de manera que pugueu entendre on encaixa el vostre lloc a la seva vida. A més mostra els temps de servidor més populars, que poden revelar les demandes de la vostra pila de tecnologia.",
"VisitsByDayOfWeek": "Visites per día de la setmana",
@@ -31,6 +47,7 @@
"WidgetLocalTime": "Visites segons l'hora local",
"WidgetLocalTimeDocumentation": "Aquest gràfic mostra a quina hora era a %1$s la zona horària del visitant %2$s durant la seva visita.",
"WidgetServerTime": "Visites segons l'hora del servidor",
- "WidgetServerTimeDocumentation": "Aquest gràfic quina hora era a la %1$s zona horària del servidor %2$s durant la visita."
+ "WidgetServerTimeDocumentation": "Aquest gràfic quina hora era a la %1$s zona horària del servidor %2$s durant la visita.",
+ "WidgetSiteTimeDocumentation": "Aquest gràfic mostra quina hora era a la %1$szona horària del lloc %2$s durant les visites."
}
}
diff --git a/plugins/VisitTime/lang/de.json b/plugins/VisitTime/lang/de.json
index 9b6039aef0..6c0c2c4957 100644
--- a/plugins/VisitTime/lang/de.json
+++ b/plugins/VisitTime/lang/de.json
@@ -6,6 +6,7 @@
"ColumnServerHour": "Serverzeit - Stunde",
"ColumnServerMinute": "Serverzeit - Minute",
"ColumnServerTime": "Server-Zeit",
+ "ColumnUTCMinute": "Zeit in UTC - Minute",
"ColumnVisitEndServerDate": "Serverzeit - Datum (Zeit der letzten Aktion)",
"ColumnVisitEndServerDayOfMonth": "Serverzeit - Tag des Monats (Zeit der letzten Aktion)",
"ColumnVisitEndServerDayOfWeek": "Serverzeit - Wochentag (Zeit der letzten Aktion)",
@@ -17,13 +18,25 @@
"ColumnVisitEndServerSecond": "Serverzeit - Sekunde (Zeit der letzten Aktion)",
"ColumnVisitEndServerWeekOfYear": "Serverzeit - Woche des Jahres (Zeit der letzten Aktion)",
"ColumnVisitEndServerYear": "Serverzeit - Jahr (Zeit der letzten Aktion)",
+ "ColumnVisitEndUTCDate": "Zeit in UTC - Datum (Zeitpunkt der letzten Aktion)",
+ "ColumnVisitEndUTCDayOfMonth": "Zeit in UTC - Tag des Monats (Zeitpunkt der letzten Aktion)",
+ "ColumnVisitEndUTCDayOfWeek": "Zeit in UTC - Wochentag (Zeitpunkt der letzten Aktion)",
+ "ColumnVisitEndUTCDayOfYear": "Zeit in UTC - Tag des Jahres (Zeitpunkt der letzten Aktion)",
+ "ColumnVisitEndUTCMinute": "Zeit in UTC - Minute (Zeit der letzten Aktion)",
+ "ColumnVisitEndUTCMonth": "Zeit in UTC - Monat (Zeitpunkt der letzten Aktion)",
+ "ColumnVisitEndUTCQuarter": "Zeit in UTC - Quartal (Zeit der letzten Aktion)",
+ "ColumnVisitEndUTCSecond": "Zeit in UTC - Sekunde (Zeitpunkt der letzten Aktion)",
+ "ColumnVisitEndUTCWeekOfYear": "Zeit in UTC - Woche des Jahres (Zeitpunkt der letzten Aktion)",
+ "ColumnVisitEndUTCYear": "Zeit in UTC - Jahr (Zeitpunkt der letzten Aktion)",
"ColumnVisitStartServerHour": "Serverzeit - Stunde (Start des Besuchs)",
"ColumnVisitStartServerMinute": "Serverzeit - Minute (Start des Besuchs)",
+ "ColumnVisitStartUTCMinute": "Zeit in UTC - Minute (Beginn des Besuchs)",
"DayOfWeek": "Wochentag",
"LocalTime": "Besuche nach lokaler Zeit",
"NHour": "%sh",
"PluginDescription": "Liefert die lokale Zeit und die Serverzeit, an der Ihre Besucher Ihre Webseite oder App verwenden.",
"ServerTime": "Besuche nach Server-Zeit",
+ "SiteTime": "Besuche pro Stunde in der Zeitzone der Website",
"SubmenuTimes": "Zeiten",
"TimesSubcategoryHelp": "Der Zeitbereich zeigt Ihnen wann Leute Ihre Seite besuchen. Sie können die populärsten lokalen Zeiten sehen, an denen Ihre Besucher die Seite besuchen, damit Sie verstehen wo Ihre Seite in deren Leben passt. Zusätzlich zeigt es die beliebtesten Serverzeiten, welche Bedürfnisse für Ihre technologische Infrastruktur aufdecken könnte.",
"VisitsByDayOfWeek": "Besuche nach Wochentagen",
@@ -31,6 +44,7 @@
"WidgetLocalTime": "Besuche nach lokaler Zeit",
"WidgetLocalTimeDocumentation": "Dieser Graph zeigt, wie viel Uhr es %1$s in der Zeitzone des Besuchers %2$s war, als er die Seite besuchte.",
"WidgetServerTime": "Besuche nach Server-Zeit",
- "WidgetServerTimeDocumentation": "Dieser Graph zeigt, wie viel Uhr es %1$s in der Zeitzone des Servers %2$s war, als die Seite besucht wurde."
+ "WidgetServerTimeDocumentation": "Dieser Graph zeigt, wie viel Uhr es %1$s in der Zeitzone des Servers %2$s war, als die Seite besucht wurde.",
+ "WidgetSiteTimeDocumentation": "Dieser Graph zeigt wie viel Uhr es in der %1$s Zeitzone der Website %2$s während der Besuche war."
}
}
diff --git a/plugins/VisitTime/lang/el.json b/plugins/VisitTime/lang/el.json
index 0c83c5d55c..f4c192647c 100644
--- a/plugins/VisitTime/lang/el.json
+++ b/plugins/VisitTime/lang/el.json
@@ -6,24 +6,40 @@
"ColumnServerHour": "Ώρα διακομιστή - ώρα",
"ColumnServerMinute": "Ώρα διακομιστή - λεπτό",
"ColumnServerTime": "Χρόνος διακομιστή",
+ "ColumnSiteHour": "Χρόνος - ώρα ιστοτόπου",
+ "ColumnUTCMinute": "Χρόνος σε UTC - λεπτό",
"ColumnVisitEndServerDate": "Ώρα διακομιστή - ημερομηνία (Χρον. στιγμή τελευταίας ενέργειας)",
"ColumnVisitEndServerDayOfMonth": "Ώρα διακομιστή - ημέρα του μήνα (Χρον. στιγμή τελευταίας ενέργειας)",
- "ColumnVisitEndServerDayOfWeek": "Ώρα διακομιστή - ημέρα της εβδομάδας (Χρον. στιγμή τελευταίας ενέργειας)",
- "ColumnVisitEndServerDayOfYear": "Ώρα διακομιστή - ημέρα του έτους (Χρον. στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndServerDayOfWeek": "Ώρα διακομιστή - ημέρα της εβδομάδας (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndServerDayOfYear": "Ώρα διακομιστή - ημέρα του έτους (Χρονική στιγμή τελευταίας ενέργειας)",
"ColumnVisitEndServerHour": "Ώρα διακομιστή - ώρα (Χρον. στιγμή τελευταίας ενέργειας)",
"ColumnVisitEndServerMinute": "Ώρα διακομιστή - λεπτό (Χρον. στιγμή τελευταίας ενέργειας)",
- "ColumnVisitEndServerMonth": "Ώρα διακομιστή - μήνας (Χρον. στιγμή τελευταίας ενέργειας)",
- "ColumnVisitEndServerQuarter": "Ώρα διακομιστή - τρίμηνο (Χρον. στιγμή τελευταίας ενέργειας)",
- "ColumnVisitEndServerSecond": "Ώρα διακομιστή - δευτερόλεπτο (Χρον. στιγμή τελευταίας ενέργειας)",
- "ColumnVisitEndServerWeekOfYear": "Ώρα διακομιστή - εβδομάδα του έτους (Χρον. στιγμή τελευταίας ενέργειας)",
- "ColumnVisitEndServerYear": "Ώρα διακομιστή - έτος (Χρον. στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndServerMonth": "Ώρα διακομιστή - μήνας (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndServerQuarter": "Ώρα διακομιστή - τρίμηνο (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndServerSecond": "Ώρα διακομιστή - δευτερόλεπτο (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndServerWeekOfYear": "Ώρα διακομιστή - εβδομάδα του έτους (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndServerYear": "Ώρα διακομιστή - έτος (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndSiteHour": "Χρόνος - ώρα ιστοτόπου (Ώρα τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCDate": "Χρόνος σε UTC - ημερομηνία (Ώρα τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCDayOfMonth": "Χρόνος σε UTC - ημέρα του μήνα (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCDayOfWeek": "Χρόνος σε UTC - ημέρα της εβδομάδας (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCDayOfYear": "Χρόνος σε UTC - ημέρα του έτους (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCMinute": "Χρόνος σε UTC - λεπτό (Ώρα τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCMonth": "Χρόνος σε UTC - μήνας (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCQuarter": "Χρόνος σε UTC - τεταρτημόριο (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCSecond": "Χρόνος σε UTC - δευτερόλεπτα (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCWeekOfYear": "Χρόνος σε UTC - ημέρα της εβδομάδας (Χρονική στιγμή τελευταίας ενέργειας)",
+ "ColumnVisitEndUTCYear": "Χρόνος σε UTC - έτος (Χρονική στιγμή τελευταίας ενέργειας)",
"ColumnVisitStartServerHour": "Ώρα διακομιστή - ώρα (Έναρξη επίσκεψης)",
"ColumnVisitStartServerMinute": "Ώρα διακομιστή - λεπτό (Έναρξη επίσκεψης)",
+ "ColumnVisitStartSiteHour": "Χρόνος - ώρα ιστοτόπου (Έναρξη της επίσκεψης)",
+ "ColumnVisitStartUTCMinute": "Ώρα σε UTC - λεπτό (Έναρξη της επίσκεψης)",
"DayOfWeek": "Ημέρα της εβδομάδας",
"LocalTime": "Επισκέψεις ανά τοπική ώρα",
"NHour": "%sω",
"PluginDescription": "Αναφέρει την τοπική ώρα και την ώρα του διακομιστή όταν οι επισκέπτες βλέπουν την ιστοσελίδα ή την εφαρμογή σας.",
"ServerTime": "Επισκέψεις ανά ώρα διακομιστή",
+ "SiteTime": "Επισκέψεις ανά ώρα στην ώρα ζώνης του ιστοτόπου",
"SubmenuTimes": "Χρόνοι",
"TimesSubcategoryHelp": "Το τμήμα Χρονομετρών εμφανίζει πότε οι άνθρωποι επισκέπτονται τον ιστοτόπο σας. Μπορείτε να δείτε τις δημοφιλέστερες τοπικές ώρες που οι χρήστες σας επισκέπτονται, ώστε να κατανοήσετε πώς ταιριάζει ο ιστοτόπος σας μέσα στη ζωή τους. Επιπρόσθετα, δείχνει τις δημοφιλέστερες ώρες του διακομιστή, γεγονός που μπορεί να αποκαλύψει απαιτήσεις στην τεχνολογική υποδομή σας.",
"VisitsByDayOfWeek": "Επισκέψεις ανά Ημέρα της Εβδομάδας",
@@ -31,6 +47,7 @@
"WidgetLocalTime": "Επισκέψεις ανά τοπική ώρα",
"WidgetLocalTimeDocumentation": "Το γράφημα δείχνει την ακριβή ώρα στην %1$s ώρα ζώνης των επισκεπτών %2$s κατά την διάρκεια της επίσκεψής τους.",
"WidgetServerTime": "Επισκέψεις ανά ώρα διακομιστή",
- "WidgetServerTimeDocumentation": "Το γράφημα δείχνει την ακριβή ώρα στην %1$s ώρα ζώνης του διακομιστή %2$s κατά την διάρκεια των επισκέψεων."
+ "WidgetServerTimeDocumentation": "Το γράφημα δείχνει την ακριβή ώρα στην %1$s ώρα ζώνης του διακομιστή %2$s κατά την διάρκεια των επισκέψεων.",
+ "WidgetSiteTimeDocumentation": "Το γράφημα δείχνει τι ώρα ήταν στην %1$sώρα ζώνης του ιστοτόπου%2$s κατά τη διάρκεια των επισκέψεων."
}
}
diff --git a/plugins/VisitTime/lang/en.json b/plugins/VisitTime/lang/en.json
index c81aa794ee..d5dc99db8a 100644
--- a/plugins/VisitTime/lang/en.json
+++ b/plugins/VisitTime/lang/en.json
@@ -5,25 +5,41 @@
"ColumnLocalMinute": "Local time - minute (Start of visit)",
"ColumnServerTime": "Server time",
"ColumnServerHour": "Server time - hour",
+ "ColumnSiteHour": "Site time - hour",
"ColumnVisitEndServerHour": "Server time - hour (Time of last action)",
+ "ColumnVisitEndSiteHour": "Site time - hour (Time of last action)",
"ColumnVisitEndServerMinute": "Server time - minute (Time of last action)",
+ "ColumnVisitEndUTCMinute": "Time in UTC - minute (Time of last action)",
"ColumnVisitStartServerHour": "Server time - hour (Start of visit)",
+ "ColumnVisitStartSiteHour": "Site time - hour (Start of visit)",
"ColumnVisitStartServerMinute": "Server time - minute (Start of visit)",
+ "ColumnVisitStartUTCMinute": "Time in UTC - minute (Start of visit)",
"ColumnVisitEndServerDate": "Server time - date (Time of last action)",
+ "ColumnVisitEndUTCDate": "Time in UTC - date (Time of last action)",
"ColumnVisitEndServerDayOfMonth": "Server time - day of month (Time of last action)",
+ "ColumnVisitEndUTCDayOfMonth": "Time in UTC - day of month (Time of last action)",
"ColumnVisitEndServerDayOfWeek": "Server time - day of week (Time of last action)",
+ "ColumnVisitEndUTCDayOfWeek": "Time in UTC - day of week (Time of last action)",
"ColumnVisitEndServerDayOfYear": "Server time - day of year (Time of last action)",
+ "ColumnVisitEndUTCDayOfYear": "Time in UTC - day of year (Time of last action)",
"ColumnVisitEndServerQuarter": "Server time - quarter (Time of last action)",
+ "ColumnVisitEndUTCQuarter": "Time in UTC - quarter (Time of last action)",
"ColumnVisitEndServerSecond": "Server time - second (Time of last action)",
+ "ColumnVisitEndUTCSecond": "Time in UTC - second (Time of last action)",
"ColumnVisitEndServerWeekOfYear": "Server time - week of year (Time of last action)",
+ "ColumnVisitEndUTCWeekOfYear": "Time in UTC - week of year (Time of last action)",
"ColumnVisitEndServerMonth": "Server time - month (Time of last action)",
+ "ColumnVisitEndUTCMonth": "Time in UTC - month (Time of last action)",
"ColumnVisitEndServerYear": "Server time - year (Time of last action)",
+ "ColumnVisitEndUTCYear": "Time in UTC - year (Time of last action)",
"ColumnServerMinute": "Server time - minute",
+ "ColumnUTCMinute": "Time in UTC - minute",
"DayOfWeek": "Day of the week",
"LocalTime": "Visits per local time",
"NHour": "%sh",
"PluginDescription": "Reports the local time and the server time when your visitors view your website or app.",
"ServerTime": "Visits per server time",
+ "SiteTime": "Visits per hour in the site's timezone",
"SubmenuTimes": "Times",
"VisitsByDayOfWeek": "Visits by Day of Week",
"WidgetByDayOfWeekDocumentation": "This graph shows the number of visits your website received on each day of the week.",
@@ -31,6 +47,7 @@
"WidgetLocalTimeDocumentation": "This graph shows what time it was in the %1$s visitors' time zones %2$s during their visits.",
"WidgetServerTime": "Visits by Server Time",
"WidgetServerTimeDocumentation": "This graph shows what time it was in the %1$s server's time zone %2$s during the visits.",
+ "WidgetSiteTimeDocumentation": "This graph shows what time it was in the %1$s site's time zone %2$s during the visits.",
"TimesSubcategoryHelp": "The Times section shows you when people are visiting your site. You can see the most popular local times your users visit at, so you can understand where your site fits into their life. Additionally, it shows the most popular server times, which can reveal demands on your technology stack."
}
} \ No newline at end of file
diff --git a/plugins/VisitTime/lang/ga.json b/plugins/VisitTime/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/VisitTime/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/VisitTime/lang/pt-br.json b/plugins/VisitTime/lang/pt-br.json
index ed94ade4c5..b908f1cbc3 100644
--- a/plugins/VisitTime/lang/pt-br.json
+++ b/plugins/VisitTime/lang/pt-br.json
@@ -6,6 +6,8 @@
"ColumnServerHour": "Horário do servidor - hora",
"ColumnServerMinute": "Horário do servidor - minuto",
"ColumnServerTime": "Horário do servidor",
+ "ColumnSiteHour": "Horário do Site - hora",
+ "ColumnUTCMinute": "Horário em UTC - minuto",
"ColumnVisitEndServerDate": "Tempo do servidor - data (Tempo da última ação)",
"ColumnVisitEndServerDayOfMonth": "Tempo do servidor - dia do mês (Tempo da última ação)",
"ColumnVisitEndServerDayOfWeek": "Tempo do servidor - dia da semana (Tempo da última ação)",
@@ -17,13 +19,27 @@
"ColumnVisitEndServerSecond": "Tempo do servidor - segundo (Tempo da última ação)",
"ColumnVisitEndServerWeekOfYear": "Tempo do servidor - semana do ano (Tempo da última ação)",
"ColumnVisitEndServerYear": "Tempo do servidor - ano (Tempo da última ação)",
+ "ColumnVisitEndSiteHour": "Horário do Site - hora (Horário da última ação)",
+ "ColumnVisitEndUTCDate": "Horário em UTC - data (Horário da última ação)",
+ "ColumnVisitEndUTCDayOfMonth": "Horário em UTC - dia do mês (Horário da última ação)",
+ "ColumnVisitEndUTCDayOfWeek": "Horário em UTC - dia da semana (Horário da última ação)",
+ "ColumnVisitEndUTCDayOfYear": "Horário em UTC - dia do ano (Horário da última ação)",
+ "ColumnVisitEndUTCMinute": "Horário em UTC - minutos (Horário da última ação)",
+ "ColumnVisitEndUTCMonth": "Horário em UTC - mês (Horário da última ação)",
+ "ColumnVisitEndUTCQuarter": "Horário em UTC - trimestre (Horário da última ação)",
+ "ColumnVisitEndUTCSecond": "Horário em UTC - segundos (Horário da última ação)",
+ "ColumnVisitEndUTCWeekOfYear": "Horário em UTC - semana do ano (Horário da última ação)",
+ "ColumnVisitEndUTCYear": "Horário em UTC - ano (Horário da última ação)",
"ColumnVisitStartServerHour": "Horário do servidor - hora (Início da visita)",
"ColumnVisitStartServerMinute": "Horário do servidor - minuto (Início da visita)",
+ "ColumnVisitStartSiteHour": "Horário do Site - hora (Início da visita)",
+ "ColumnVisitStartUTCMinute": "Horário em UTC - minuto (Início da visita)",
"DayOfWeek": "Dia da semana",
"LocalTime": "Visitas pelo horário local",
"NHour": "%sh",
"PluginDescription": "Informa a hora local e a hora do servidor quando seus visitantes visualizam seu site ou aplicativo.",
"ServerTime": "Visitas pelo horário do servidor",
+ "SiteTime": "Visitas por hora no fuso horário",
"SubmenuTimes": "Horários",
"TimesSubcategoryHelp": "A seção Times mostra quando as pessoas estão visitando seu site. Você pode ver os horários locais mais populares em que seus usuários visitam, para entender onde seu site se encaixa na vida deles. Além disso, mostra os horários de servidor mais populares, o que pode revelar demandas em sua pilha de tecnologia.",
"VisitsByDayOfWeek": "Visitas por dia da semana",
@@ -31,6 +47,7 @@
"WidgetLocalTime": "Visitas pelo horário local",
"WidgetLocalTimeDocumentation": "Este gráfico mostra o tempo que estava no %1$s fuso horário dos visitantes %2$s durante suas visitas.",
"WidgetServerTime": "Visitas pelo horário do servidor",
- "WidgetServerTimeDocumentation": "Este gráfico mostra o tempo que estava no %1$s fuso horário do servidor %2$s durante as visitas."
+ "WidgetServerTimeDocumentation": "Este gráfico mostra o tempo que estava no %1$s fuso horário do servidor %2$s durante as visitas.",
+ "WidgetSiteTimeDocumentation": "Este gráfico mostra o que estava no %1$s do site do horário de zona %2$s durante as visitas."
}
}
diff --git a/plugins/VisitTime/lang/tr.json b/plugins/VisitTime/lang/tr.json
index cbf086fe2b..3d8489dc9f 100644
--- a/plugins/VisitTime/lang/tr.json
+++ b/plugins/VisitTime/lang/tr.json
@@ -6,6 +6,8 @@
"ColumnServerHour": "Sunucu zamanı - saat",
"ColumnServerMinute": "Sunucu zamanı - dakika",
"ColumnServerTime": "Sunucu zamanı",
+ "ColumnSiteHour": "Site süresi - saat",
+ "ColumnUTCMinute": "UTC olarak zaman - dakika",
"ColumnVisitEndServerDate": "Sunucu zamanı - tarih (Son etkinlik zamanı)",
"ColumnVisitEndServerDayOfMonth": "Sunucu zamanı - ayın günü (Son etkinlik zamanı)",
"ColumnVisitEndServerDayOfWeek": "Sunucu zamanı - haftanın günü (Son etkinlik zamanı)",
@@ -17,13 +19,27 @@
"ColumnVisitEndServerSecond": "Sunucu zamanı - saniye (Son etkinlik zamanı)",
"ColumnVisitEndServerWeekOfYear": "Sunucu zamanı - yılın haftası (Son etkinlik zamanı)",
"ColumnVisitEndServerYear": "Sunucu zamanı - yıl (Son etkinlik zamanı)",
+ "ColumnVisitEndSiteHour": "Site süresi - saat (son işlem zamanı)",
+ "ColumnVisitEndUTCDate": "UTC olarak zaman - tarih (son işlem zamanı)",
+ "ColumnVisitEndUTCDayOfMonth": "UTC olarak zaman - ayın günü (son işlem zamanı)",
+ "ColumnVisitEndUTCDayOfWeek": "UTC olarak zaman - haftanın günü (son işlem zamanı)",
+ "ColumnVisitEndUTCDayOfYear": "UTC olarak zaman - yılın günü (son işlem zamanı)",
+ "ColumnVisitEndUTCMinute": "UTC olarak zaman - dakika (son işlem zamanı)",
+ "ColumnVisitEndUTCMonth": "UTC olarak zaman - ay (son işlem zamanı)",
+ "ColumnVisitEndUTCQuarter": "UTC olarak zaman - çeyrek (son işlem zamanı)",
+ "ColumnVisitEndUTCSecond": "UTC olarak zaman - saniye (son işlem zamanı)",
+ "ColumnVisitEndUTCWeekOfYear": "UTC olarak zaman - yılın haftası (son işlem zamanı)",
+ "ColumnVisitEndUTCYear": "UTC olarak zaman - yıl (son işlem zamanı)",
"ColumnVisitStartServerHour": "Sunucu zamanı - saat (Ziyaret başlangıcı)",
"ColumnVisitStartServerMinute": "Sunucu zamanı - dakika (Ziyaret başlangıcı)",
+ "ColumnVisitStartSiteHour": "Site süresi - saat (ziyaret başlangıcı)",
+ "ColumnVisitStartUTCMinute": "UTC olarak zaman - dakika (ziyaret başlangıcı)",
"DayOfWeek": "Haftanın günü",
"LocalTime": "Yerel zaman başına düşen ziyaret sayısı",
"NHour": "%ss",
"PluginDescription": "Ziyaretçinin web sitesi ya da uygulamayı görüntülediği andaki yerel ve sunucu zamanının bildirilmesini sağlar.",
"ServerTime": "Sunucu zamanı başına düşen ziyaret sayısı",
+ "SiteTime": "Sitenin saat diliminde saatlik ziyaretler",
"SubmenuTimes": "Zamanlar",
"TimesSubcategoryHelp": "Zamanlar bölümü, kullanıcıların siteyi ziyaret etme zamanlarını içerir. Kullanıcı ziyaretlerinin yoğunlaştığı yerel saatleri görerek, sitenin ziyaretçilerin yaşantısındaki yeri anlaşılabilir. Ayrıca teknoloji alt yapısının yoğun istekleri yanıtlaması gereken yoğun sunucu zamanları da görülebilir.",
"VisitsByDayOfWeek": "Haftanın günlerine göre ziyaretler",
@@ -31,6 +47,7 @@
"WidgetLocalTime": "Yerel zamana göre ziyaretler",
"WidgetLocalTimeDocumentation": "Bu çizelgede ziyaret süresince %1$sziyaretçinin saat diliminde%2$s saatin kaç olduğu görüntülenir.",
"WidgetServerTime": "Sunucu zamanına göre ziyaretler",
- "WidgetServerTimeDocumentation": "Bu çizelgede ziyaret süresince %1$ssunucunun saat diliminde%2$s saatin kaç olduğu görüntülenir."
+ "WidgetServerTimeDocumentation": "Bu çizelgede ziyaret süresince %1$ssunucunun saat diliminde%2$s saatin kaç olduğu görüntülenir.",
+ "WidgetSiteTimeDocumentation": "Bu çizelge, ziyaretlerin %1$s sitenin saat diliminde %2$s hangi saatlerde yapıldığını gösterir."
}
}
diff --git a/plugins/VisitorGenerator b/plugins/VisitorGenerator
-Subproject 83eee2f109bf1d2c94d33fa7bb484ab5031d1e8
+Subproject c426336d0e8df5b0557bdcf0d30635ca29bff38
diff --git a/plugins/VisitorInterest/lang/ga.json b/plugins/VisitorInterest/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/VisitorInterest/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/VisitorInterest/lang/id.json b/plugins/VisitorInterest/lang/id.json
index e0da34950e..9ab0c5f8c2 100644
--- a/plugins/VisitorInterest/lang/id.json
+++ b/plugins/VisitorInterest/lang/id.json
@@ -13,9 +13,9 @@
"VisitsPerDuration": "Kunjungan tiap waktu kunjungan",
"VisitsPerNbOfPages": "Kunjungan tiap jumlah halaman",
"WidgetLengths": "Waktu Kunjungan",
- "WidgetLengthsDocumentation": "Dalam laporan ini, Anda dapat mengetahui berapa banyak kunjungan memiliki total lama kunjungan tertentu. Awalnya, laporan tersebut ditampilkan sebagai etiket awan, jangka waktu yang lebih umum ditampilkan dalam huruf yang lebih besar.",
+ "WidgetLengthsDocumentation": "Dalam laporan ini, Anda dapat mengetahui berapa banyak kunjungan memiliki total lama kunjungan tertentu. Awalnya, laporan tersebut ditampilkan sebagai tag awan, jangka waktu yang lebih umum ditampilkan dalam huruf yang lebih besar.",
"WidgetPages": "Halaman tiap kunjungan",
- "WidgetPagesDocumentation": "Dalam laporan ini, Anda dapat melihat berapa banyak kunjungan yang terlibat sejumlah tampilan halaman. Awalnya, laporan tersebut ditampilkan sebagai etiket awan, jumlah lebih umum dari halaman ditampilkan dalam huruf yang lebih besar.",
+ "WidgetPagesDocumentation": "Dalam laporan ini, Anda dapat melihat berapa banyak kunjungan yang terlibat sejumlah tampilan halaman. Awalnya, laporan tersebut ditampilkan sebagai tag awan, jumlah lebih umum dari halaman ditampilkan dalam huruf yang lebih besar.",
"WidgetVisitsByDaysSinceLast": "Kunjungan berdasar Hari sejak Kunjungan Terakhir",
"WidgetVisitsByDaysSinceLastDocumentation": "Di laporan ini, Anda dapat melihat berapa banyak kunjungan dari pengunjung beberapa hari yang lalu.",
"WidgetVisitsByNumDocumentation": "Di laporan ini, Anda dapat melihat jumlah kunjungan ke-N, misalnya, siapa pengunjung yang mengunjungi situs Anda dalam N waktu terakhir.",
diff --git a/plugins/VisitsSummary/lang/ga.json b/plugins/VisitsSummary/lang/ga.json
new file mode 100644
index 0000000000..0967ef424b
--- /dev/null
+++ b/plugins/VisitsSummary/lang/ga.json
@@ -0,0 +1 @@
+{}
diff --git a/plugins/VisitsSummary/lang/id.json b/plugins/VisitsSummary/lang/id.json
index 50f425a32c..f86767198a 100644
--- a/plugins/VisitsSummary/lang/id.json
+++ b/plugins/VisitsSummary/lang/id.json
@@ -19,7 +19,7 @@
"NbUsersDescription": "pengguna",
"NbVisitsBounced": "kunjungan telah terpental (meninggalkan situs web setelah satu halaman)",
"NbVisitsDescription": "kunjungan",
- "PluginDescription": "Melaporkan metrik analitik umum: kunjungan, pengunjung unik, jumlah tindakan, rasio pentalan, dll.",
+ "PluginDescription": "Melaporkan metrik analitik umum: kunjungan, pengunjung unik, jumlah tindakan, rasio pantulan, dll.",
"VisitsSummary": "Rangkuman Kunjungan",
"VisitsSummaryDocumentation": "Ini merupakan iktisar perkembangan kunjungan.",
"VisitsSummaryReportDocumentation": "Laporan ini memberikan gambaran yang sangat umum tentang bagaimana pengunjung Anda berperilaku.",
diff --git a/plugins/WebsiteMeasurable/lang/id.json b/plugins/WebsiteMeasurable/lang/id.json
index 391a4ef98f..687f738570 100644
--- a/plugins/WebsiteMeasurable/lang/id.json
+++ b/plugins/WebsiteMeasurable/lang/id.json
@@ -1,7 +1,7 @@
{
"WebsiteMeasurable": {
- "Website": "Website",
+ "Website": "Situs web",
"WebsiteDescription": "Sebuah situs web terdiri dari halaman web yang biasanya disajikan dari satu domain web.",
- "Websites": "Situs"
+ "Websites": "Situs web"
}
}
diff --git a/plugins/Widgetize/lang/id.json b/plugins/Widgetize/lang/id.json
index d3c81c720b..ae2b960926 100644
--- a/plugins/Widgetize/lang/id.json
+++ b/plugins/Widgetize/lang/id.json
@@ -1,8 +1,8 @@
{
"Widgetize": {
"OpenInNewWindow": "Buka di jendela baru",
- "PluginDescription": "Tampilkan laporan Matomo apa pun di situs web atau aplikasi Anda dengan tag HTML \"sematkan\" sederhana.",
- "TooHighAccessLevel": "Pengguna ini memiliki akses super-user. Menyematkan widget dengan autentikasi token super-user tidak diperbolehkan. %1$sPeriksa FAQ untuk melihat info lebih lanjut.%2$s",
+ "PluginDescription": "Tampilkan laporan Matomo apa pun di situs web atau aplikasi Anda dengan \"penyematan\" tag HTML sederhana.",
+ "TooHighAccessLevel": "Pengguna ini memiliki akses pengguna super. Menyematkan widget dengan autentikasi token pengguna super tidak diperbolehkan. %1$sPeriksa FAQ untuk info lebih lanjut.%2$s",
"TopLinkTooltip": "Ekspor laporan Matomo sebagai widget dan sematkan dalam dasbor di aplikasi Anda sebagai iframe.",
"ViewAccessRequired": "Pengguna ini memiliki setidaknya beberapa akses tulis. Hanya token pengguna yang hanya memiliki akses lihat yang dapat digunakan. Periksa %1$s untuk melihat info lebih lanjut."
}
diff --git a/tests/PHPUnit/Fixtures/LatestStableInstall.php b/tests/PHPUnit/Fixtures/LatestStableInstall.php
index 4c15b8e847..515e7c9204 100644
--- a/tests/PHPUnit/Fixtures/LatestStableInstall.php
+++ b/tests/PHPUnit/Fixtures/LatestStableInstall.php
@@ -79,16 +79,6 @@ class LatestStableInstall extends Fixture
}
shell_exec('mv "' . $installSubdirectory . '"/piwik/* "' . $installSubdirectory . '"');
-
- /**
- * The additional permissions check was added within Matomo 4.8 development. Therefor the OneClickUpdate UI tests
- * would not already perform this check, as it uses the latest stable version to perform an update the the git checkout.
- * As soon as 4.8 has been release, which should include the permission check, this won't be needed anymore.
- *
- * @todo remove this after Matomo 4.8 has been released
- */
- shell_exec('curl https://raw.githubusercontent.com/matomo-org/matomo/4.x-dev/plugins/CoreUpdater/Updater.php > ' . $installSubdirectory . '/plugins/CoreUpdater/Updater.php');
- shell_exec('curl https://raw.githubusercontent.com/matomo-org/matomo/4.x-dev/plugins/CoreUpdater/lang/en.json > ' . $installSubdirectory . '/plugins/CoreUpdater/lang/en.json');
}
private function installSubdirectoryInstall()
diff --git a/tests/PHPUnit/Integration/DataAccess/ArchiveInvalidatorTest.php b/tests/PHPUnit/Integration/DataAccess/ArchiveInvalidatorTest.php
index 42c065d24b..c3f16ca7a6 100644
--- a/tests/PHPUnit/Integration/DataAccess/ArchiveInvalidatorTest.php
+++ b/tests/PHPUnit/Integration/DataAccess/ArchiveInvalidatorTest.php
@@ -498,12 +498,14 @@ class ArchiveInvalidatorTest extends IntegrationTestCase
$this->rememberReportsForManySitesAndDates();
// site does not match
- $this->invalidator->forgetRememberedArchivedReportsToInvalidate(10, Date::factory('2014-04-05'));
+ $hasDeleted = $this->invalidator->forgetRememberedArchivedReportsToInvalidate(10, Date::factory('2014-04-05'));
+ $this->assertFalse($hasDeleted);
$reports = $this->invalidator->getRememberedArchivedReportsThatShouldBeInvalidated();
$this->assertSameReports($this->getRememberedReportsByDate(), $reports);
// date does not match
- $this->invalidator->forgetRememberedArchivedReportsToInvalidate(7, Date::factory('2012-04-05'));
+ $hasDeleted = $this->invalidator->forgetRememberedArchivedReportsToInvalidate(7, Date::factory('2012-04-05'));
+ $this->assertFalse($hasDeleted);
$reports = $this->invalidator->getRememberedArchivedReportsThatShouldBeInvalidated();
$this->assertSameReports($this->getRememberedReportsByDate(), $reports);
}
@@ -512,7 +514,8 @@ class ArchiveInvalidatorTest extends IntegrationTestCase
{
$this->rememberReportsForManySitesAndDates();
- $this->invalidator->forgetRememberedArchivedReportsToInvalidate(2, Date::factory('2014-04-05'));
+ $hasDeleted = $this->invalidator->forgetRememberedArchivedReportsToInvalidate(2, Date::factory('2014-04-05'));
+ $this->assertTrue($hasDeleted);
$reports = $this->invalidator->getRememberedArchivedReportsThatShouldBeInvalidated();
$expected = array(
@@ -526,7 +529,8 @@ class ArchiveInvalidatorTest extends IntegrationTestCase
unset($expected['2014-05-08']);
- $this->invalidator->forgetRememberedArchivedReportsToInvalidate(7, Date::factory('2014-05-08'));
+ $hasDeleted = $this->invalidator->forgetRememberedArchivedReportsToInvalidate(7, Date::factory('2014-05-08'));
+ $this->assertTrue($hasDeleted);
$reports = $this->invalidator->getRememberedArchivedReportsThatShouldBeInvalidated();
$this->assertSameReports($expected, $reports);
}
diff --git a/tests/PHPUnit/Integration/ReleaseCheckListTest.php b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
index f11f977ed6..7994026a63 100644
--- a/tests/PHPUnit/Integration/ReleaseCheckListTest.php
+++ b/tests/PHPUnit/Integration/ReleaseCheckListTest.php
@@ -38,7 +38,7 @@ class ReleaseCheckListTest extends \PHPUnit\Framework\TestCase
parent::setUp();
}
-
+
public function test_TestCaseHasSetGroupsMethod()
{
// refs https://github.com/matomo-org/matomo/pull/16615 ensures setGroups method still exists in phpunit
@@ -614,7 +614,7 @@ class ReleaseCheckListTest extends \PHPUnit\Framework\TestCase
// Don't run the test on local dev machine, as we may have other files (not in GIT) that would fail this test
$this->markTestSkipped("Skipped this test on local dev environment.");
}
- $maximumTotalFilesizesExpectedInMb = 55;
+ $maximumTotalFilesizesExpectedInMb = 56;
$minimumTotalFilesizesExpectedInMb = 38;
$minimumExpectedFilesCount = 7000;
@@ -696,6 +696,31 @@ class ReleaseCheckListTest extends \PHPUnit\Framework\TestCase
. implode(', ', $filesThatDoNotExist));
}
+ public function test_noVueHtmlWithoutSanitize()
+ {
+ $command = 'grep -r "v-html=" ' . PIWIK_INCLUDE_PATH . '/plugins --include=*.vue | grep -v "v-html=[\'\\"]\\$sanitize"';
+ $output = shell_exec($command);
+
+ $errorMessage = "";
+ if (!empty($output)) {
+ $lines = explode("\n", $output);
+
+ $files = [];
+ foreach ($lines as $line) {
+ if (empty(trim($line))) {
+ continue;
+ }
+
+ list($file, $match) = explode(':', $line);
+ $files[] = '- ' . trim($file);
+ }
+
+ $errorMessage = "Found uses of v-html without \$sanitize:\n" . implode("\n", $files);
+ }
+
+ $this->assertEmpty($output, $errorMessage);
+ }
+
/**
* @param $file
* @return bool
diff --git a/tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric_constantRowsCountShouldKeepEmptyRows__API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric_constantRowsCountShouldKeepEmptyRows__API.getProcessedReport_day.xml
index b7b29ce5a6..7942cf7654 100644
--- a/tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric_constantRowsCountShouldKeepEmptyRows__API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_ManyVisitorsOneWebsiteTest_sortByProcessedMetric_constantRowsCountShouldKeepEmptyRows__API.getProcessedReport_day.xml
@@ -5,11 +5,11 @@
<metadata>
<category>Visitors</category>
<subcategory>Times</subcategory>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<module>VisitTime</module>
<action>getVisitInformationPerServerTime</action>
- <dimension>Server time - hour (Start of visit)</dimension>
- <documentation>This graph shows what time it was in the &lt;strong&gt; server's time zone &lt;/strong&gt; during the visits.</documentation>
+ <dimension>Site time - hour (Start of visit)</dimension>
+ <documentation>This graph shows what time it was in the &lt;strong&gt; site's time zone &lt;/strong&gt; during the visits.</documentation>
<metrics>
<nb_visits>Visits</nb_visits>
<nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
@@ -43,7 +43,7 @@
<uniqueId>VisitTime_getVisitInformationPerServerTime</uniqueId>
</metadata>
<columns>
- <label>Server time - hour (Start of visit)</label>
+ <label>Site time - hour (Start of visit)</label>
<nb_visits>Visits</nb_visits>
<nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
<nb_actions>Actions</nb_actions>
diff --git a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumnsWithProcessedMetrics___API.getProcessedReport_day.xml b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumnsWithProcessedMetrics___API.getProcessedReport_day.xml
index 723a4768cf..5f45d94cf4 100644
--- a/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumnsWithProcessedMetrics___API.getProcessedReport_day.xml
+++ b/tests/PHPUnit/System/expected/test_OneVisitorTwoVisits_showColumnsWithProcessedMetrics___API.getProcessedReport_day.xml
@@ -5,11 +5,11 @@
<metadata>
<category>Visitors</category>
<subcategory>Times</subcategory>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<module>VisitTime</module>
<action>getVisitInformationPerServerTime</action>
- <dimension>Server time - hour (Start of visit)</dimension>
- <documentation>This graph shows what time it was in the &lt;strong&gt; server's time zone &lt;/strong&gt; during the visits.</documentation>
+ <dimension>Site time - hour (Start of visit)</dimension>
+ <documentation>This graph shows what time it was in the &lt;strong&gt; site's time zone &lt;/strong&gt; during the visits.</documentation>
<metrics>
<nb_visits>Visits</nb_visits>
</metrics>
@@ -28,7 +28,7 @@
<uniqueId>VisitTime_getVisitInformationPerServerTime</uniqueId>
</metadata>
<columns>
- <label>Server time - hour (Start of visit)</label>
+ <label>Site time - hour (Start of visit)</label>
<nb_visits>Visits</nb_visits>
<revenue>Revenue</revenue>
</columns>
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_and_graph__ScheduledReports.generateReport_month.original.html b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_and_graph__ScheduledReports.generateReport_month.original.html
index 7695088143..6f2ab18cc8 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_and_graph__ScheduledReports.generateReport_month.original.html
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_and_graph__ScheduledReports.generateReport_month.original.html
@@ -145,7 +145,7 @@
</li>
<li style="font-size:15px;line-height:24px;">
<a href="#VisitTime_getVisitInformationPerServerTime" style="text-decoration:none; color: #0d0d0d;">
- Visits per server time
+ Visits per hour in the site&#039;s timezone
</a>
</li>
<li style="font-size:15px;line-height:24px;">
@@ -2819,7 +2819,7 @@
</a></p>
<h2 id="VisitTime_getVisitInformationPerServerTime" style=" color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif; font-size: 24pt; font-weight:normal; margin:45px 0 30px 0;">
- Visits per server time
+ Visits per hour in the site&#039;s timezone
</h2>
<img alt=""
@@ -2834,7 +2834,7 @@
<table style="border-collapse:collapse; border:1px solid rgb(231,231,231); padding:5px;">
<thead style="background-color: #f2f2f2;">
<th style="border-bottom:1px solid rgb(231,231,231);font-size: 15px;text-align: left;font-weight:normal;padding:13px 0 13px 10px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
- &nbsp;Server time - hour (Start of visit)&nbsp;&nbsp;
+ &nbsp;Site time - hour (Start of visit)&nbsp;&nbsp;
</th>
<th style="border-bottom:1px solid rgb(231,231,231);font-size: 15px;text-align: left;font-weight:normal;padding:13px 0 13px 10px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif; text-align:right;">
&nbsp;Visits&nbsp;&nbsp;
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_only__ScheduledReports.generateReport_month.original.html b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_only__ScheduledReports.generateReport_month.original.html
index 4231ed9c3c..b8dcd11ea3 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_only__ScheduledReports.generateReport_month.original.html
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_html_tables_only__ScheduledReports.generateReport_month.original.html
@@ -145,7 +145,7 @@
</li>
<li style="font-size:15px;line-height:24px;">
<a href="#VisitTime_getVisitInformationPerServerTime" style="text-decoration:none; color: #0d0d0d;">
- Visits per server time
+ Visits per hour in the site&#039;s timezone
</a>
</li>
<li style="font-size:15px;line-height:24px;">
@@ -2679,7 +2679,7 @@
</a></p>
<h2 id="VisitTime_getVisitInformationPerServerTime" style=" color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif; font-size: 24pt; font-weight:normal; margin:45px 0 30px 0;">
- Visits per server time
+ Visits per hour in the site&#039;s timezone
</h2>
@@ -2687,7 +2687,7 @@
<table style="border-collapse:collapse; border:1px solid rgb(231,231,231); padding:5px;">
<thead style="background-color: #f2f2f2;">
<th style="border-bottom:1px solid rgb(231,231,231);font-size: 15px;text-align: left;font-weight:normal;padding:13px 0 13px 10px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif;">
- &nbsp;Server time - hour (Start of visit)&nbsp;&nbsp;
+ &nbsp;Site time - hour (Start of visit)&nbsp;&nbsp;
</th>
<th style="border-bottom:1px solid rgb(231,231,231);font-size: 15px;text-align: left;font-weight:normal;padding:13px 0 13px 10px;color:#0d0d0d;font-family:-apple-system, BlinkMacSystemFont, &#039;Segoe UI&#039;, Roboto, Oxygen-Sans, Cantarell, &#039;Helvetica Neue&#039;, sans-serif; text-align:right;">
&nbsp;Visits&nbsp;&nbsp;
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_csv__ScheduledReports.generateReport_month.original.csv b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_csv__ScheduledReports.generateReport_month.original.csv
index 397c5d903d..adb71400d4 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_csv__ScheduledReports.generateReport_month.original.csv
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_csv__ScheduledReports.generateReport_month.original.csv
@@ -126,7 +126,7 @@ label,nb_visits,nb_actions,conversion_rate,nb_actions_per_visit,avg_time_on_site
22,0,0,0%,0,00:00:00,0%
23,0,0,0%,0,00:00:00,0%
-Visits per server time
+Visits per hour in the site's timezone
label,nb_visits,nb_actions,nb_actions_per_visit,avg_time_on_site,bounce_rate,revenue
00,1,1,1,00:00:00,100%,$0
01,0,0,0,00:00:00,0%,$0
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_month.original.pdf b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_month.original.pdf
index 5fb1170b3b..b5822da4b3 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_month.original.pdf
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_pdf_tables_only__ScheduledReports.generateReport_month.original.pdf
Binary files differ
diff --git a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_tsv__ScheduledReports.generateReport_month.original.tsv b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_tsv__ScheduledReports.generateReport_month.original.tsv
index daced499ae..1bb5cc38c3 100644
--- a/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_tsv__ScheduledReports.generateReport_month.original.tsv
+++ b/tests/PHPUnit/System/expected/test_TwoVisitors_twoWebsites_differentDays_schedrep_in_tsv__ScheduledReports.generateReport_month.original.tsv
@@ -126,7 +126,7 @@ label nb_visits nb_actions conversion_rate nb_actions_per_visit avg_time_on_site
22 0 0 0% 0 00:00:00 0%
23 0 0 0% 0 00:00:00 0%
-Visits per server time
+Visits per hour in the site's timezone
label nb_visits nb_actions nb_actions_per_visit avg_time_on_site bounce_rate revenue
00 1 1 1 00:00:00 100% $0
01 0 0 0 00:00:00 0% $0
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getGlossaryReports.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getGlossaryReports.xml
index 307b5e8712..99e01d349a 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getGlossaryReports.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getGlossaryReports.xml
@@ -315,12 +315,12 @@
<documentation>In this report, you can see how many visits were from visitors whose last visit was a certain number of days ago.</documentation>
</row>
<row>
- <name>Visits per local time (Visitors)</name>
- <documentation>This graph shows what time it was in the &lt;strong&gt; visitors' time zones &lt;/strong&gt; during their visits.</documentation>
+ <name>Visits per hour in the site's timezone (Visitors)</name>
+ <documentation>This graph shows what time it was in the &lt;strong&gt; site's time zone &lt;/strong&gt; during the visits.</documentation>
</row>
<row>
- <name>Visits per server time (Visitors)</name>
- <documentation>This graph shows what time it was in the &lt;strong&gt; server's time zone &lt;/strong&gt; during the visits.</documentation>
+ <name>Visits per local time (Visitors)</name>
+ <documentation>This graph shows what time it was in the &lt;strong&gt; visitors' time zones &lt;/strong&gt; during their visits.</documentation>
</row>
<row>
<name>Visits to Conversion (Goals)</name>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
index 569a8762ed..b226f97c25 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportMetadata_day.xml
@@ -805,11 +805,11 @@
<row>
<category>Visitors</category>
<subcategory>Times</subcategory>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<module>VisitTime</module>
<action>getVisitInformationPerServerTime</action>
- <dimension>Server time - hour (Start of visit)</dimension>
- <documentation>This graph shows what time it was in the &lt;strong&gt; server's time zone &lt;/strong&gt; during the visits.</documentation>
+ <dimension>Site time - hour (Start of visit)</dimension>
+ <documentation>This graph shows what time it was in the &lt;strong&gt; site's time zone &lt;/strong&gt; during the visits.</documentation>
<metrics>
<nb_visits>Visits</nb_visits>
<nb_uniq_visitors>Unique visitors</nb_uniq_visitors>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
index 7382ccd6b2..02d685ffdf 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getReportPagesMetadata.xml
@@ -1178,7 +1178,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<module>VisitTime</module>
<action>getVisitInformationPerServerTime</action>
<order>120</order>
@@ -2064,7 +2064,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<category>
<id>Goals by User attribute</id>
<name>Goals by User attribute</name>
@@ -2742,7 +2742,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<category>
<id>Goals by User attribute</id>
<name>Goals by User attribute</name>
@@ -3420,7 +3420,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<category>
<id>Goals by User attribute</id>
<name>Goals by User attribute</name>
@@ -3715,7 +3715,7 @@
<id>General_Overview</id>
<name>Overview</name>
<order>2</order>
- <help>&lt;p&gt;The Goals Overview reports on the performance of the goals defined for your website. You can access your goal&#x2019;s conversion percentages, amount of revenue generated and full reports for each.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/tracking-goals-web-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in our Goals guide here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Goals Overview reports on the performance of the goals defined for your website. You can access your goal’s conversion percentages, amount of revenue generated and full reports for each.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/tracking-goals-web-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in our Goals guide here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -4088,7 +4088,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<category>
<id>Goals by User attribute</id>
<name>Goals by User attribute</name>
@@ -4443,7 +4443,7 @@
<id>General_Overview</id>
<name>Overview</name>
<order>2</order>
- <help>&lt;p&gt;The Ecommerce Overview section is the best place to get a high-level view of your online store&#x2019;s performance. At a glance, you can see how many sales you&#x2019;re making, how much revenue you are generating, and your website&#x2019;s conversion rate.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/ecommerce-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in our Ecommerce guide here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Ecommerce Overview section is the best place to get a high-level view of your online store’s performance. At a glance, you can see how many sales you’re making, how much revenue you are generating, and your website’s conversion rate.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/ecommerce-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in our Ecommerce guide here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<widgets>
<row>
@@ -4963,7 +4963,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<category>
<id>Sales by User attribute</id>
<name>Sales by User attribute</name>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
index 2033a7f476..e579fe47e2 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getSegmentsMetadata.xml
@@ -193,91 +193,91 @@
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - date (Time of last action)</name>
- <segment>visitEndServerDate</segment>
- <acceptedValues>2018-12-31, 2018-03-20, ...</acceptedValues>
+ <name>Site time - hour (Start of visit)</name>
+ <segment>visitStartServerHour</segment>
+ <acceptedValues>0, 1, 2, 3, ..., 20, 21, 22, 23</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - day of month (Time of last action)</name>
- <segment>visitEndServerDayOfMonth</segment>
- <acceptedValues>0, 1, 2, 3, ..., 29, 30, 31</acceptedValues>
+ <name>Site time - hour (Time of last action)</name>
+ <segment>visitServerHour</segment>
+ <acceptedValues>0, 1, 2, 3, ..., 20, 21, 22, 23</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - day of week (Time of last action)</name>
- <segment>visitEndServerDayOfWeek</segment>
- <acceptedValues>1, 2, 3, 4, 5, 6, 7</acceptedValues>
+ <name>Time in UTC - date (Time of last action)</name>
+ <segment>visitEndServerDate</segment>
+ <acceptedValues>2018-12-31, 2018-03-20, ...</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - day of year (Time of last action)</name>
- <segment>visitEndServerDayOfYear</segment>
- <acceptedValues>1, 2, 3, 4, ..., 365, 366</acceptedValues>
+ <name>Time in UTC - day of month (Time of last action)</name>
+ <segment>visitEndServerDayOfMonth</segment>
+ <acceptedValues>0, 1, 2, 3, ..., 29, 30, 31</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - hour (Start of visit)</name>
- <segment>visitStartServerHour</segment>
- <acceptedValues>0, 1, 2, 3, ..., 20, 21, 22, 23</acceptedValues>
+ <name>Time in UTC - day of week (Time of last action)</name>
+ <segment>visitEndServerDayOfWeek</segment>
+ <acceptedValues>1, 2, 3, 4, 5, 6, 7</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - hour (Time of last action)</name>
- <segment>visitServerHour</segment>
- <acceptedValues>0, 1, 2, 3, ..., 20, 21, 22, 23</acceptedValues>
+ <name>Time in UTC - day of year (Time of last action)</name>
+ <segment>visitEndServerDayOfYear</segment>
+ <acceptedValues>1, 2, 3, 4, ..., 365, 366</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - minute (Start of visit)</name>
+ <name>Time in UTC - minute (Start of visit)</name>
<segment>visitStartServerMinute</segment>
<acceptedValues>0, 1, 2, 3, ..., 56, 57, 58, 59</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - minute (Time of last action)</name>
+ <name>Time in UTC - minute (Time of last action)</name>
<segment>visitEndServerMinute</segment>
<acceptedValues>0, 1, 2, 3, ..., 56, 57, 58, 59</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - month (Time of last action)</name>
+ <name>Time in UTC - month (Time of last action)</name>
<segment>visitEndServerMonth</segment>
<acceptedValues>1, 2, 3, ..., 11, 12</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - quarter (Time of last action)</name>
+ <name>Time in UTC - quarter (Time of last action)</name>
<segment>visitEndServerQuarter</segment>
<acceptedValues>1, 2, 3, 4</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - second (Time of last action)</name>
+ <name>Time in UTC - second (Time of last action)</name>
<segment>visitEndServerSecond</segment>
<acceptedValues>0, 1, 2, 3, ..., 58, 59</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - week of year (Time of last action)</name>
+ <name>Time in UTC - week of year (Time of last action)</name>
<segment>visitEndServerWeekOfYear</segment>
<acceptedValues>1, 2, 3, 4, ..., 51, 52, 53</acceptedValues>
</row>
<row>
<type>dimension</type>
<category>Visitors</category>
- <name>Server time - year (Time of last action)</name>
+ <name>Time in UTC - year (Time of last action)</name>
<segment>visitEndServerYear</segment>
<acceptedValues>2016, 2017, 2018, ..., 9998, 9999</acceptedValues>
</row>
@@ -684,13 +684,13 @@
<row>
<type>dimension</type>
<category>Behaviour</category>
- <name>Server time - hour</name>
+ <name>Site time - hour</name>
<segment>actionServerHour</segment>
</row>
<row>
<type>dimension</type>
<category>Behaviour</category>
- <name>Server time - minute</name>
+ <name>Time in UTC - minute</name>
<segment>actionServerMinute</segment>
<acceptedValues>0, 1, 2, 3, ..., 56, 57, 58, 59</acceptedValues>
</row>
@@ -762,12 +762,24 @@
<row>
<type>metric</type>
<category>Ecommerce</category>
+ <name>Order Revenue</name>
+ <segment>revenueOrder</segment>
+ </row>
+ <row>
+ <type>metric</type>
+ <category>Ecommerce</category>
<name>Product Price</name>
<segment>productPrice</segment>
</row>
<row>
<type>metric</type>
<category>Ecommerce</category>
+ <name>Revenue Left In Cart</name>
+ <segment>revenueAbandonedCart</segment>
+ </row>
+ <row>
+ <type>metric</type>
+ <category>Ecommerce</category>
<name>Viewed Product Price</name>
<segment>productViewPrice</segment>
</row>
diff --git a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
index 30839705ed..00fa74c727 100644
--- a/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
+++ b/tests/PHPUnit/System/expected/test_apiGetReportMetadata__API.getWidgetMetadata.xml
@@ -823,7 +823,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Visits per server time</name>
+ <name>Visits per hour in the site's timezone</name>
<category>
<id>General_Visitors</id>
<name>Visitors</name>
@@ -1977,7 +1977,7 @@
<id>General_Overview</id>
<name>Overview</name>
<order>2</order>
- <help>&lt;p&gt;The Ecommerce Overview section is the best place to get a high-level view of your online store&#x2019;s performance. At a glance, you can see how many sales you&#x2019;re making, how much revenue you are generating, and your website&#x2019;s conversion rate.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/ecommerce-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in our Ecommerce guide here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Ecommerce Overview section is the best place to get a high-level view of your online store’s performance. At a glance, you can see how many sales you’re making, how much revenue you are generating, and your website’s conversion rate.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/ecommerce-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in our Ecommerce guide here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
@@ -2787,7 +2787,7 @@
<isReport>1</isReport>
</row>
<row>
- <name>Sales by User attribute: Visits per server time</name>
+ <name>Sales by User attribute: Visits per hour in the site's timezone</name>
<category>
<id>Goals_Ecommerce</id>
<name>Ecommerce</name>
@@ -2831,7 +2831,7 @@
<id>General_Overview</id>
<name>Overview</name>
<order>2</order>
- <help>&lt;p&gt;The Goals Overview reports on the performance of the goals defined for your website. You can access your goal&#x2019;s conversion percentages, amount of revenue generated and full reports for each.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href="https://matomo.org/docs/tracking-goals-web-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides" rel="noreferrer noopener" target="_blank"&gt;Learn more in our Goals guide here.&lt;/a&gt;&lt;/p&gt;</help>
+ <help>&lt;p&gt;The Goals Overview reports on the performance of the goals defined for your website. You can access your goal’s conversion percentages, amount of revenue generated and full reports for each.&lt;/p&gt;&lt;p&gt;Click on an individual metric within the sparkline chart to focus on it within the full-sized evolution graph.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://matomo.org/docs/tracking-goals-web-analytics/?mtm_campaign=App_Help&amp;mtm_source=Matomo_App&amp;mtm_keyword=UserGuides&quot; rel=&quot;noreferrer noopener&quot; target=&quot;_blank&quot;&gt;Learn more in our Goals guide here.&lt;/a&gt;&lt;/p&gt;</help>
</subcategory>
<module>CoreHome</module>
<action>renderWidgetContainer</action>
diff --git a/tests/PHPUnit/Unit/Period/RangeTest.php b/tests/PHPUnit/Unit/Period/RangeTest.php
index bbb0873b87..f4eaf7366f 100644
--- a/tests/PHPUnit/Unit/Period/RangeTest.php
+++ b/tests/PHPUnit/Unit/Period/RangeTest.php
@@ -20,6 +20,12 @@ use Piwik\Period\Year;
*/
class RangeTest extends BasePeriodTest
{
+ public function setUp(): void
+ {
+ parent::setUp();
+ Date::$now = null;
+ }
+
/**
* @dataProvider getDateXPeriodsAgoProvider
*/
@@ -183,6 +189,42 @@ class RangeTest extends BasePeriodTest
}
// test range date1,date2
+ public function testRangeComma4_EndDateIncludesTodayWithTimezone()
+ {
+ Date::$now = strtotime('2020-08-01 03:00:00');
+ $range = new Range('day', '2008-01-01,today', 'Europe/Berlin');
+ $subPeriods = $range->getSubperiods();
+ $this->assertEquals('2008-01-01', $subPeriods[0]->toString());
+ $this->assertEquals('2008-01-02', $subPeriods[1]->toString());
+ $this->assertEquals('2008-01-03', $subPeriods[2]->toString());
+ $this->assertEquals('2020-08-01', end($subPeriods)->toString());
+ }
+
+ // test range date1,date2
+ public function testRangeComma5_EndDateIncludesTodayWithTimezoneAfterCurrentUTCDate()
+ {
+ Date::$now = strtotime('2020-08-01 03:00:00');
+ $range = new Range('day', '2008-01-01,today', 'Pacific/Auckland');
+ $subPeriods = $range->getSubperiods();
+ $this->assertEquals('2008-01-01', $subPeriods[0]->toString());
+ $this->assertEquals('2008-01-02', $subPeriods[1]->toString());
+ $this->assertEquals('2008-01-03', $subPeriods[2]->toString());
+ $this->assertEquals('2020-08-01', end($subPeriods)->toString());
+ }
+
+ // test range date1,date2
+ public function testRangeComma6_EndDateIncludesTodayWithTimezoneBeforeCurrentUTCDate()
+ {
+ Date::$now = strtotime('2020-08-01 03:00:00');
+ $range = new Range('day', '2008-01-01,today', 'America/New_York');
+ $subPeriods = $range->getSubperiods();
+ $this->assertEquals('2008-01-01', $subPeriods[0]->toString());
+ $this->assertEquals('2008-01-02', $subPeriods[1]->toString());
+ $this->assertEquals('2008-01-03', $subPeriods[2]->toString());
+ $this->assertEquals('2020-07-31', end($subPeriods)->toString());
+ }
+
+ // test range date1,date2
public function testRangeWeekcomma1()
{
$range = new Range('week', '2007-12-22,2008-01-03');
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png b/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png
index 1af9ce0137..5d3c794ecf 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_admin_themes.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:ff3891fec1290b6a16642fece4733e425f9db19a6531177a30e6d6124f179ad9
-size 80187
+oid sha256:cac88819a84a83aff3f3a0f440ca5a3e4a267dacdd4d57f917dc6844bf2fab77
+size 79035
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
index 15a5381be2..c4d5109be1 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard3.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:841bb4c3b9258bd5d9295992db55ebc3adc8e8d8e1d165f2b27e0ef83a90297e
-size 712598
+oid sha256:8bcf8a489ad8472043257c77f58c7dc73315dd57d88f17f1c0c0535e0387ba5f
+size 712570
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png
index 30feda5051..cba8bc6837 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_dashboard4.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e4fe2749dc6f463ee29676cd12dca28bb0acf095ffd65a02e78b3a238331a15a
-size 321283
+oid sha256:ec13a0de49442a798b3e907c07818e1aa1e5a6ee068fc7250fc8a9fe4430fcfb
+size 325350
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_sales.png b/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_sales.png
index 9d72a008b4..724245a5e2 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_sales.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_ecommerce_sales.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:38dfa069a8115a3c109796f1531f547c89eea7dae408a174e4797c6601b93d76
-size 94117
+oid sha256:73bd4fe223d07eade43e36edf3a46f42070ab03146e76b2549cf7804aa61d6c9
+size 96159
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png b/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png
index 91034e2299..53a1483f68 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_email_reports_editor.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:c914006f7cd524b75795688ce7dd4a29f20251e40fa199eeb82f6a2bed142d2c
-size 481387
+oid sha256:fca1c222e32c5f1218690b6658c65354a5d7eaaaa5da31fbdcfa2adc35d63ea9
+size 482378
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png b/tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png
index 326750797b..b54a22a315 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_period_select_date_range_click.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:e76c06924a9f9ad5c65ea00efb2d431e36aab88bb4945098b825fcdbe8cf70cc
-size 79529
+oid sha256:a236b402c7df053beec85010e1f5dcc017dc926175431344dca095d63539f9a4
+size 81183
diff --git a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_times.png b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_times.png
index 29583bcc56..b33a31a9b7 100644
--- a/tests/UI/expected-screenshots/UIIntegrationTest_visitors_times.png
+++ b/tests/UI/expected-screenshots/UIIntegrationTest_visitors_times.png
@@ -1,3 +1,3 @@
version https://git-lfs.github.com/spec/v1
-oid sha256:d5d1ccb0e87ee30abe8628405a42dafc8eb8442c1e12e6e688e5f040188df4ed
-size 23727
+oid sha256:953e1b47024bf275d21d2b6afe046a51fa1a0666b9867e14bf476c0d6d34ba48
+size 25489
diff --git a/tests/UI/specs/UIIntegration_spec.js b/tests/UI/specs/UIIntegration_spec.js
index e635ff0c3e..5655a10558 100644
--- a/tests/UI/specs/UIIntegration_spec.js
+++ b/tests/UI/specs/UIIntegration_spec.js
@@ -812,7 +812,7 @@ describe("UIIntegrationTest", function () { // TODO: Rename to Piwik?
await page.goto("?" + generalParams + "&module=MobileMessaging&action=index");
await page.waitForNetworkIdle();
- pageWrap = await page.$('.pageWrap');
+ const pageWrap = await page.$('.pageWrap');
expect(await pageWrap.screenshot()).to.matchImage('admin_settings_mobilemessaging');
})
@@ -820,7 +820,9 @@ describe("UIIntegrationTest", function () { // TODO: Rename to Piwik?
await page.evaluate(function () {
$('[name=smsProviders]').val('string:Clockwork').trigger('change');
});
+ await page.waitForTimeout(200);
await page.waitForNetworkIdle();
+ await page.waitForTimeout(200);
pageWrap = await page.$('.pageWrap');
expect(await pageWrap.screenshot()).to.matchImage('admin_settings_mobilemessaging_provider');
diff --git a/tests/javascript/index.php b/tests/javascript/index.php
index 0d77932c0f..5a8c081c66 100644
--- a/tests/javascript/index.php
+++ b/tests/javascript/index.php
@@ -5208,7 +5208,7 @@ if ($mysql) {
tracker.hook.test._beforeUnloadHandler();
stopTime = new Date();
var msSinceStarted = (stopTime.getTime() - startTime.getTime());
- ok( msSinceStarted < 510, 'beforeUnloadHandler(): ' + msSinceStarted + ' was greater than 510 ' );
+ ok( msSinceStarted < 520, 'beforeUnloadHandler(): ' + msSinceStarted + ' was greater than 520 ' );
tracker.disableAlwaysUseSendBeacon();
tracker.setLinkTrackingTimer(2000);
diff --git a/tsconfig.json b/tsconfig.json
index c288f4a0ee..4b2257761b 100644
--- a/tsconfig.json
+++ b/tsconfig.json
@@ -22,7 +22,8 @@
"jquery",
"jqueryui",
"materialize-css",
- "mousetrap"
+ "mousetrap",
+ "dotdotdot"
],
"paths": {
"*": ["@types/*", "*"]
diff --git a/vue.config.js b/vue.config.js
index 2ec902126e..18c0cbfa5c 100644
--- a/vue.config.js
+++ b/vue.config.js
@@ -89,6 +89,10 @@ module.exports = {
// disable asset size warnings
config.performance.hints(false);
+ config.watchOptions({
+ ignored: /node_modules/,
+ });
+
// override config so we can generate type definitions for plugin libraries
// see https://github.com/vuejs/vue-cli/issues/6543
if (process.env.NODE_ENV !== 'development') {